Skip to content

Repository files navigation

Spider

GitHub release (latest) GitHub downloads License Obsidian min version Obsidian Community

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

spider screenshot

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.


πŸ€” Why Spider?

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

⚑ 30-Second Quick Start

  1. Install: Settings β†’ Community plugins β†’ Browse β†’ search Spider β†’ Install β†’ Enable
  2. Configure your API key: Settings β†’ Spider β†’ fill in apiBaseUrl + apiKey + model (any OpenAI-compatible endpoint)
  3. Create your first map: Click the Spider ribbon icon (or run command Spider: New Spider map) β†’ start chatting
  4. Try Tab-branching: Select any text in an AI response, press Tab β€” that's it

✨ Features

🌳 Infinite-Depth Branching Chat

  • No depth limit: drill down as deep as you need; the graph grows with you
  • Optional parent context: child node requests automatically include parent title / summary / anchor
  • Streaming responses: typewriter-style real-time rendering with Markdown & code-block highlighting
  • Select-to-branch: highlight any text in an AI response β†’ Tab β†’ the child's "anchor" is that exact highlight
  • Selection hint: selecting AI answer text shows a clickable β€œTab Create branch” hint; clearing the selection hides it
  • Return to source: parent and breadcrumb navigation restore your reading position and briefly highlight the source passage; other node switches retain their position for this session
  • Auxiliary actions: retry, summarize, AI auto-title

πŸ•ΈοΈ Interactive Knowledge Graph

  • Full-tab canvas powered by React Flow
  • Click a node to switch context; the chat panel follows automatically
  • Collapse / expand subtrees to keep large maps clean
  • Auto-layout via Dagre algorithm with active-path highlighting
  • Drag nodes β€” positions persist, the canvas looks the way you left it
  • Personal node notes β€” hover the pencil for a preview, click to pin and edit with autosave

πŸ“¦ One-Click Structured Export

Spider 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
  • Canvas nodes are color-coded by state (purple = root / green = understood / gray = archived / blue = open)
  • Canvas cards show concept titles, short previews, and links to full notes, with generous spacing
  • Follow arrows to explore branches; source anchors stay in the notes instead of overlapping the graph
  • SVG keeps card titles and previews visible at any zoom, with the same spacious layout
  • Repeated exports create numbered snapshot folders, preserving earlier exports and handwritten additions
  • Markdown files cross-link parent / child / index β€” backlinks wire up the full thinking chain

πŸ”Œ Works with Any OpenAI-Compatible API

  • Official OpenAI (https://api.openai.com/v1)
  • DeepSeek / Moonshot / Qwen / GLM (OpenAI-compatible mode)
  • OpenRouter / Together / Groq (aggregator APIs)
  • Local LLMs: Ollama, vLLM, LM Studio β€” all expose OpenAI-compatible endpoints
  • Anthropic Claude via proxy

πŸ’‘ Because it's the OpenAI Chat Completions spec, you just need a base URL + key + any model name that endpoint supports.

πŸ” Privacy & Network Disclosure

  • The plugin requires network to call AI, but you fully control which endpoint
  • API key stays local (Obsidian's plugin data.json); never uploaded
  • Never reads unrelated vault notes β€” AI requests only include the current branch plus the context options you enable
  • Maps are 100% local: stored as .spider/maps/*.json, syncable via Obsidian Sync
  • Offline-capable: knowledge graph, navigation, export, history β€” everything works offline. Only "send message" needs network.

🌐 Bilingual UI

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


⌨️ Keyboard Shortcuts

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

βš™οΈ Settings

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

πŸ“₯ Installation

From Community Plugins (recommended)

Open Settings β†’ Community plugins β†’ Browse, search for Spider, then select Install β†’ Enable. Configure your API key and model under Settings β†’ Spider.

From GitHub Release (manual installation)

  1. Download main.js, manifest.json, and styles.css from the latest release
  2. Create <vault>/.obsidian/plugins/spider/
  3. Copy the three files into that directory
  4. Restart Obsidian, enable Spider under Settings β†’ Community plugins, then configure your API key and model

From Source (development)

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.


πŸ›  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

Project Structure

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

🧭 Roadmap (running list)

  • Multi-select nodes + batch operations
  • Node backlinks (auto-track "which nodes reference me")
  • Custom system prompts
  • Optional AI summary attached to export package

πŸ“œ License

MIT


πŸ™ Credits

About

Obsidian plugin for Tab-driven AI branch chats as a knowledge map.

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages