Chat Splitter
unlistedby Ryan Baier
Split long AI chat transcripts into organized, topic-specific notes.
Chat Splitter
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.
Features
- 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
Installation
Manual install
- 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"
Build from source
git clone https://github.com/rybaier/obsidian-chat-analyze-plugin.git
cd obsidian-chat-analyze-plugin
npm install
npm run build
Then copy main.js, manifest.json, and styles.css into your vault's .obsidian/plugins/chat-splitter/ folder.
Usage
Paste import
- 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.
File import
- 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
Preview mode
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.
Settings
| 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 |
Supported Formats
| 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 |
License
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.