huangtao237 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.

🎬 Looking for an animated demo? A GIF should live here — record a 5-second Tab-branch interaction, save as
.github/demo.gif, and replace the image above. See Recording a Demo for tools.
| 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 |
vs Copilot plugin: Copilot is a single-thread chatbot. Spider is a multi-thread knowledge graph — same topic, Copilot gives you one line, Spider gives you one tree.
spider → EnableapiBaseUrl + apiKey + model (any OpenAI-compatible endpoint)Spider: New 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 # Visual knowledge map
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 SyncSwitch between Chinese and English any time in settings. Export artifacts are intentionally hard-coded to Chinese — exports are historical records and shouldn't be retroactively rewritten when the UI language changes.
| Key | Action |
|---|---|
Tab |
With text selected in an AI response → create child node from that anchor. Without selection → create empty child node. |
Shift + Tab |
Jump to parent node |
← → |
Parent ↔ first child |
↑ ↓ |
Move between sibling nodes |
Enter |
Send message (inside composer) |
Shift + Enter |
Newline (inside composer) |
Esc |
Clear current selection |
Delete / Backspace |
Delete current node (non-root, focus not in input) |
| 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 | English |
| Include parent context | Send parent title/summary/anchor with child requests | ✅ on |
| Include full context | Also send parent's full message history (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 |
spider → Install → Enablegit 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 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 / 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
🎬 Want to contribute a demo GIF?
- Record 5–10 seconds with Kap (macOS) / ScreenToGif (Windows) /
ffmpeg(Linux)- Show: open spider → ask a question → select text in AI response → press
Tab→ child node appears → continue asking- Export as GIF, save to
.github/demo.gif- Open a PR; we'll swap the static screenshot above for
