Split long AI chat transcripts and documents into organized, topic-specific Obsidian notes.
Chat Splitter takes a sprawling multi-topic conversation from ChatGPT or Claude -- or any long-form document -- and breaks it into individual notes, one per topic or section, with auto-generated titles, tags, summaries, key points, bidirectional wikilinks, and an index (Map of Content) note tying everything together.
- Multi-format import -- paste text or import JSON/ZIP/Markdown files
- ChatGPT + Claude support -- paste format, JSON export, and ZIP archives
- Document import -- paste or import any long-form document; headings become section boundaries with paragraph-group fallback
- Heuristic topic segmentation -- 6 weighted signals detect topic boundaries offline, no API keys needed
- Key info extraction -- each note gets a summary, key points, and reference links in callout blocks
- Auto-tagging -- domain-aware tags (coding, database, web, design, writing, real-estate, finance, immigration, travel, health, ai-ml)
- 4-strategy title generation -- comparison detection, entity + kernel, cleaned sentence, keyword fallback
- Bidirectional wikilinks -- prev/next/parent navigation in both frontmatter and footer
- Index / MOC note -- one Map of Content per conversation with topics table and summaries
- Optional Ollama enhancement -- use a local LLM for improved segmentation quality
- Segment preview/edit -- review, merge, split, and rename segments before creating notes
- 4 speaker styles -- callouts (default), blockquotes, bold labels, or plain (no labels)
- Per-import configuration -- folder, tags, granularity, style adjustable each import from Step 1
- Download
main.js,manifest.json, andstyles.cssfrom the latest release - Create a folder in your vault:
.obsidian/plugins/chat-splitter/ - Copy the three files into that folder
- Open Obsidian Settings > Community plugins > enable "Chat Splitter"
git clone https://github.com/rybaier/obsidian-chat-analyze-plugin.git
cd obsidian-chat-analyze-plugin
npm install
npm run buildThen copy main.js, manifest.json, and styles.css into your vault's .obsidian/plugins/chat-splitter/ folder.
- Open the command palette and run Chat Splitter: Import from clipboard
- Paste your conversation text (or any long-form document) into the textarea
- The format is auto-detected (ChatGPT paste, Claude paste, generic markdown, or document)
- Set target folder and tag prefix (optional, also configurable in Step 2)
- Click Analyze to parse and segment
- Configure granularity, speaker style, and other options
- Click Create N Notes to write notes to your vault
Documents with headings are automatically split at heading boundaries. Documents without headings fall back to paragraph-group splitting. The format badge shows "Document" when non-chat content is detected, and plain speaker style is auto-selected.
- Open the command palette and run Chat Splitter: Import from file
- Select a
.json,.zip, or.mdfile - For multi-conversation ChatGPT exports, select which conversation to import
- Same configuration and creation flow as paste import
Click "Preview segments..." before creating notes to review the auto-detected topics. In preview mode you can:
- Rename segment titles
- Merge adjacent segments
- Split a segment at any message boundary
- Single-level undo for merge/split operations
Enable "Always preview" in settings to open preview mode by default.
| Setting | Default | Description |
|---|---|---|
| Default folder | AI Chats |
Base folder for imported conversations |
| Naming template | {{topic}} |
Template for note filenames ({{date}}, {{conversation_title}}, {{topic}}, {{source}}, {{segment}}, {{segment_total}}) |
| Tag prefix | ai-chat |
Prefix for auto-generated tags |
| Folder structure | Nested | Nested (per-conversation folder) or Flat |
| Default granularity | Medium | Coarse / Medium / Fine segmentation |
| Speaker style | Callouts | Callouts / Blockquotes / Bold / Plain |
| Keep full transcript | Off | Also create a single unsplit transcript note |
| Enable Ollama | Off | Use local Ollama for LLM-enhanced segmentation |
| Custom frontmatter | (empty) | Additional YAML fields added to every note |
| Debug logging | Off | Log detailed info to console with [Chat Splitter] prefix |
| Format | Method | Notes |
|---|---|---|
| ChatGPT paste | Paste | "You said:" / "ChatGPT said:" format |
| ChatGPT JSON export | File | Single or multi-conversation .json files |
| ChatGPT ZIP export | File | ZIP archives containing conversations.json |
| Claude paste | Paste | "Human:" / "Assistant:" format |
| Claude JSON export | File | chat_messages array format |
| Generic markdown | Paste/File | Heading-based or bold-label speaker patterns |
| Documents | Paste/File | Any long-form text; splits at headings or paragraph groups |