Chat Splitter

unlisted

by Ryan Baier

Split long AI chat transcripts into organized, topic-specific notes.

Updated 1mo agoMIT
View on GitHub

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

  1. Download main.js, manifest.json, and styles.css from the latest release
  2. Create a folder in your vault: .obsidian/plugins/chat-splitter/
  3. Copy the three files into that folder
  4. 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

  1. Open the command palette and run Chat Splitter: Import from clipboard
  2. Paste your conversation text (or any long-form document) into the textarea
  3. The format is auto-detected (ChatGPT paste, Claude paste, generic markdown, or document)
  4. Set target folder and tag prefix (optional, also configurable in Step 2)
  5. Click Analyze to parse and segment
  6. Configure granularity, speaker style, and other options
  7. 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

  1. Open the command palette and run Chat Splitter: Import from file
  2. Select a .json, .zip, or .md file
  3. For multi-conversation ChatGPT exports, select which conversation to import
  4. 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

SettingDefaultDescription
Default folderAI ChatsBase folder for imported conversations
Naming template{{topic}}Template for note filenames ({{date}}, {{conversation_title}}, {{topic}}, {{source}}, {{segment}}, {{segment_total}})
Tag prefixai-chatPrefix for auto-generated tags
Folder structureNestedNested (per-conversation folder) or Flat
Default granularityMediumCoarse / Medium / Fine segmentation
Speaker styleCalloutsCallouts / Blockquotes / Bold / Plain
Keep full transcriptOffAlso create a single unsplit transcript note
Enable OllamaOffUse local Ollama for LLM-enhanced segmentation
Custom frontmatter(empty)Additional YAML fields added to every note
Debug loggingOffLog detailed info to console with [Chat Splitter] prefix

Supported Formats

FormatMethodNotes
ChatGPT pastePaste"You said:" / "ChatGPT said:" format
ChatGPT JSON exportFileSingle or multi-conversation .json files
ChatGPT ZIP exportFileZIP archives containing conversations.json
Claude pastePaste"Human:" / "Assistant:" format
Claude JSON exportFilechat_messages array format
Generic markdownPaste/FileHeading-based or bold-label speaker patterns
DocumentsPaste/FileAny long-form text; splits at headings or paragraph groups

License

MIT

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.