An Obsidian plugin that synthesizes multiple notes by identifying overlapping sections and unique insights. Perfect for integrating information across technical documents, research notes, and knowledge bases.
- Multi-note synthesis: Select 2+ markdown files and generate an integrated summary
- Overlap detection: Automatically identifies and merges redundant content
- Unique insights highlighting: Preserves original perspectives from each source
- Flexible API support: Works with Claude API (default) or any OpenAI-compatible endpoint
- Advanced configuration: Full control over API endpoint, model selection, and output length
- Encrypted key storage: API keys stored securely in Obsidian settings
- Cross-platform: Works on Windows, macOS, and Linux
- Open Obsidian Settings → Community Plugins
- Search for "Note Synthesizer"
- Click Install
- Enable the plugin
- Download the latest release from GitHub Releases
- Extract the zip file
- Copy the folder to
VaultFolder/.obsidian/plugins/note-synthesizer/ - Reload Obsidian or restart the app
- Enable "Note Synthesizer" in Settings → Community Plugins
git clone https://github.com/TX-220/note-synthesizer.git
cd note-synthesizer
npm install
npm run devThen copy the plugin folder to your vault's .obsidian/plugins/ directory.
-
Configure API Settings
- Open Obsidian Settings → Note Synthesizer
- Enter your API key
- (Optional) Adjust model, endpoint, and summary length
-
Run Synthesis
- Press
Ctrl+P(orCmd+Pon Mac) to open command palette - Search for "Synthesize Notes"
- Select 2 or more markdown files from your vault
- Click "Synthesize"
- A new timestamped note is created with the synthesis
- Press
-
Review Output
- The generated note includes source file list and synthesis timestamp
- Copy/edit as needed in your workflow
- Default:
https://api.anthropic.com/v1/messages(Anthropic Claude) - For local LLM:
http://localhost:11434/v1/messages(Ollama format) - Custom: Any OpenAI-compatible endpoint
- Claude (Anthropic):
claude-3-5-sonnet-20241022,claude-3-opus-20240229 - Local (Ollama):
llama2,mistral,neural-chat, etc. - Fully customizable—enter any model your endpoint supports
- Encrypted in Obsidian settings
- Required for any API call
- Does NOT store in plaintext
- Brief: 2-3 paragraphs (default)
- Medium: 1-2 pages
- Comprehensive: Detailed with subsections
Endpoint: https://api.anthropic.com/v1/messages
Model: claude-3-5-sonnet-20241022
API Key: sk-ant-... (from https://console.anthropic.com)
Endpoint: http://localhost:11434/v1/messages
Model: llama2 (or mistral, neural-chat, etc.)
API Key: (can be empty or any string)
The plugin:
- Reads all selected markdown files
- Combines their content into a single document
- Sends to your configured API with a synthesis prompt
- Prompt instructs the model to:
- Identify overlapping sections and merge them
- Extract unique insights from each source
- Format output according to selected length
- Creates a new timestamped note with the synthesis
- Opens the note in your active editor
- claude-3-5-sonnet-20241022 (recommended for balance)
- claude-3-opus-20240229 (best quality, slower)
- claude-3-haiku-20240307 (fastest, lower quality)
- llama2
- mistral
- neural-chat
- phi
- Any model your local setup supports
- Settings → Note Synthesizer
- Enter your API key in the "API Key" field
- Save and retry
- Check your API key is correct
- Verify it has API access permissions
- For Anthropic: https://console.anthropic.com/account/keys
- Verify API endpoint URL is correct
- If using local LLM, ensure it's running:
ollama serve - Check model name matches your endpoint
- Ensure file exists and is readable
- Check file is valid markdown (.md)
- Retry operation
- Node.js 16+
- npm or yarn
- Obsidian installed (for testing)
npm run build # Production build (minified)
npm run dev # Development build (watch mode)- Create a test vault with sample markdown files
- Copy the built plugin to
.obsidian/plugins/note-synthesizer/ - Enable the plugin in Obsidian Settings
- Run "Synthesize Notes" command with test files
main.ts
├── NoteSynthesizerPlugin (main plugin class)
│ ├── Command: "Synthesize Notes"
│ ├── File Picker Modal
│ ├── Synthesis API caller
│ └── Output note generator
├── FilePickerModal (UI for file selection)
└── NoteSynthesizerSettingTab (settings UI)
- API keys are stored in Obsidian's secure data store (encrypted at rest)
- No API calls are made without explicit user action
- No telemetry or external tracking
- Open source—audit the code anytime
TX-220 — Concept, design, direction. Claude (Anthropic) — Implementation. Claude Code & Claude Desktop — Development.
MIT — See LICENSE file for details.
Found a bug or have a feature request?
- Multi-note file picker
- Synthesis with overlap detection
- Configurable API endpoint and model
- Encrypted API key storage
- Summary length options
- Cross-platform support (Windows, macOS, Linux)
This was an experimental project developed with Claude (Haiku). Later improved significantly with Grok.