huangtao606 downloadsAI chat branches as an interactive knowledge map. Tab to drill down, arrow keys to navigate, structured exports.
🌏 Other languages: 中文文档
AI conversations that branch like a spider's web — press Tab to spin off a deep-dive from any answer. Explore, compare, and trace back without losing context.
An Obsidian plugin that turns ChatGPT / Claude / DeepSeek / any OpenAI-compatible API into a branching knowledge map. Read an AI answer, hit an unfamiliar term, select the text, press Tab — a child node appears, ready for the next question. Infinite depth, instant backtrack, one-click export to Obsidian Canvas / Markdown / Mermaid mindmap.

The screenshot shows the Chinese interface. Spider follows Obsidian's language on first install, and you can switch between Chinese and English at any time.
| Scenario | Plain AI chat | Spider |
|---|---|---|
| Mid-answer, want to drill into a term | Copy-paste → new window → lose the original thread | Select text → Tab → child node carries the context |
| Want to compare 3 phrasings of the same question | Open 3 tabs and alt-tab | Same parent, 3 children, side-by-side |
| Done exploring, want it as notes | Copy-paste into a note, links break | Add personal node notes, then export Markdown + Canvas |
| Want AI to live inside your docs, not a separate tab | Constant window switching | Stay in Obsidian the entire time |
Spider → Install → EnableapiBaseUrl + apiKey + model (any OpenAI-compatible endpoint)Spider: New Spider map) → start chattingTab — that's itTab → the child's "anchor" is that exact highlightSpider Maps/
├── index.md # Obsidian entry-point note
├── brief.md # Findings, open questions, and progress
├── nodes/ # One Markdown file per node
├── map.canvas # Editable knowledge map
└── map.svg # Sharp, shareable knowledge map image
https://api.openai.com/v1)💡 Because it's the OpenAI Chat Completions spec, you just need a base URL + key + any model name that endpoint supports.
.spider/maps/*.json, syncable via Obsidian SyncSpider follows Obsidian's language on first install. You can switch between Chinese and English at any time, and newly generated export artifacts use the current Spider interface language.
| Key | Action |
|---|---|
Tab |
With text selected in an AI response → create a branch from that source. On the focused map canvas → create an empty branch. |
Shift + Tab |
On the focused map canvas → go to the parent branch |
← → |
On the focused map canvas → parent ↔ first child |
↑ ↓ |
On the focused map canvas → move between sibling nodes |
Enter |
Send message (inside composer) |
Shift + Enter |
Newline (inside composer) |
Esc |
Clear current selection |
Delete / Backspace |
On the focused map canvas → delete the current non-root node |
| Setting | Description | Default |
|---|---|---|
| API Base URL | OpenAI-compatible endpoint | https://api.openai.com/v1 |
| API Key | Your API key (password input, stored locally) | — |
| Model | Any model name your endpoint supports | gpt-4o-mini |
| Interface Language | Chinese / English | Follows Obsidian |
| Include parent context | Send parent title/summary/anchor with child requests | ✅ on |
| Include full context | Also send other map branches as reference (more tokens) | ❌ off |
| Stream responses | Stream tokens as they arrive | ✅ on |
| Tab to create child nodes | Enable the Tab shortcut | ✅ on |
| Auto-summarize nodes | AI auto-summarizes each node | ❌ off |
| Default export folder | Where export packages go | Spider Maps |
Open Settings → Community plugins → Browse, search for Spider, then select Install → Enable. Configure your API key and model under Settings → Spider.
main.js, manifest.json, and styles.css from the latest release<vault>/.obsidian/plugins/spider/git clone https://github.com/111pointer111/spider
cd spider
npm install
npm run build
# Copy main.js, manifest.json, styles.css into
# <vault>/.obsidian/plugins/spider/
# Then enable the plugin in Obsidian
Or use npm run link to symlink the build output to your vault and pair with npm run dev for live-reload during development.
npm install # install dependencies
npm run dev # watch mode (esbuild)
npm run build # production build (runs tsc --noEmit first)
npm test # run vitest tests
npm run test:browser # open the local URL and click Run source navigation checks (mock Obsidian API, no vault access)
npm run link # symlink build output into your vault
src/
ai/ OpenAI-compatible API provider (streaming + sync + summarize)
domain/ ChatMap immutable factories + tree ops + guards + Dagre layout
export/ Markdown / Mermaid / Canvas / SVG / JSON exporters
state/ Multi-view session store + per-session ViewState
storage/ Vault JSON persistence (backward-compatible with old directory)
ui/ React components (graph, chat panel, gallery, modals)
utils/ ID generation, path handling, activeDocument shim
tests/ vitest unit tests (domain + export + AI layers)
__mocks__/ Obsidian API stub for vitest