Skip to content

rybaier/obsidian-chat-splitter

Repository files navigation

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

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

MIT

About

chat-splitter for Obsidian Notes software

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors