add claude-obsidian
Tests / Hermetic test suite (push) Has been cancelled
Tests / Skill frontmatter validation (push) Has been cancelled

This commit is contained in:
김경종
2026-05-28 10:57:16 +09:00
parent 1b07531a45
commit 72dad72703
205 changed files with 41703 additions and 80 deletions
@@ -0,0 +1,293 @@
{
"nodes": [
{
"id": "title-hero-1744041601",
"type": "text",
"text": "# claude-obsidian\n\n**Claude Code × Obsidian** — Persistent, compounding knowledge base.\nEvery source you add makes the wiki smarter. No vector DB. No embeddings. Just markdown.\n\n*Skills: /wiki · /wiki-ingest · /wiki-query · /wiki-lint · /autoresearch · /canvas*",
"x": -960, "y": -3420, "width": 600, "height": 200, "color": "6"
},
{
"id": "img-cover-16x9-1744041602",
"type": "file",
"file": "wiki/meta/claude-obsidian-cover-16x9.png",
"x": -330, "y": -3420, "width": 420, "height": 236
},
{
"id": "img-gif-cover-1744041603",
"type": "file",
"file": "wiki/meta/claude-obsidian-gif-cover-16x9.gif",
"x": 130, "y": -3420, "width": 420, "height": 236
},
{
"id": "img-gif-1x1-1744041604",
"type": "file",
"file": "wiki/meta/claude-obsidian-gif-1x1.gif",
"x": 590, "y": -3420, "width": 200, "height": 200
},
{
"id": "zone-hero-1744041605",
"type": "group",
"label": "Hero",
"x": -980, "y": -3440, "width": 1820, "height": 280, "color": "6"
},
{
"id": "zone-overview-1744041606",
"type": "group",
"label": "What Is claude-obsidian",
"x": -980, "y": -3110, "width": 1820, "height": 420, "color": "5"
},
{
"id": "text-what-1744041607",
"type": "text",
"text": "## What Is It?\n\nAn LLM wiki that **compounds** with every source you add. Originated by Andrej Karpathy.\n\nInstead of re-deriving from raw documents on every query (RAG), Claude reads each source, extracts what matters, and integrates it into a structured wiki — updating entity pages, noting contradictions, strengthening the synthesis.",
"x": -960, "y": -3090, "width": 520, "height": 200, "color": "5"
},
{
"id": "text-layers-1744041608",
"type": "text",
"text": "## Three Layers\n\n```\n.raw/ Layer 1 — immutable sources\nwiki/ Layer 2 — LLM knowledge base\nCLAUDE.md Layer 3 — maintenance schema\n```\n\nThe LLM owns Layer 2 entirely. It creates pages, updates them, maintains cross-references, and keeps everything consistent.",
"x": -400, "y": -3090, "width": 460, "height": 200, "color": "5"
},
{
"id": "text-why-1744041609",
"type": "text",
"text": "## Why It Works\n\nLLMs don't get bored.\n\nThe tedious part of maintaining a wiki is bookkeeping: cross-references, contradictions, stale summaries. Humans abandon wikis because maintenance cost grows faster than value.\n\n**With Claude: maintenance cost is near zero.**\nKnowledge compounds over time.",
"x": 100, "y": -3090, "width": 420, "height": 200, "color": "5"
},
{
"id": "note-llm-wiki-pattern-1744041610",
"type": "file",
"file": "wiki/concepts/LLM Wiki Pattern.md",
"x": 560, "y": -3090, "width": 240, "height": 100
},
{
"id": "note-compounding-1744041611",
"type": "file",
"file": "wiki/concepts/Compounding Knowledge.md",
"x": 560, "y": -2960, "width": 240, "height": 100
},
{
"id": "note-hot-cache-1744041612",
"type": "file",
"file": "wiki/concepts/Hot Cache.md",
"x": 560, "y": -2830, "width": 240, "height": 100
},
{
"id": "zone-skills-1744041613",
"type": "group",
"label": "Skills — Six Sub-Commands",
"x": -980, "y": -2640, "width": 1820, "height": 600, "color": "4"
},
{
"id": "text-skills-header-1744041614",
"type": "text",
"text": "## Six Skills\n\n`/wiki` · `/wiki-ingest` · `/wiki-query` · `/wiki-lint` · `/autoresearch` · `/canvas`\n\nEach skill is a focused operation on the vault. Together they form a full knowledge lifecycle.",
"x": -960, "y": -2620, "width": 1780, "height": 80, "color": "4"
},
{
"id": "img-wiki-ingest-1744041615",
"type": "file",
"file": "_attachments/images/canvas/skill-wiki-ingest.png",
"x": -960, "y": -2510, "width": 400, "height": 225
},
{
"id": "img-wiki-query-1744041616",
"type": "file",
"file": "_attachments/images/canvas/skill-wiki-query.png",
"x": -520, "y": -2510, "width": 400, "height": 225
},
{
"id": "img-autoresearch-1744041617",
"type": "file",
"file": "_attachments/images/canvas/skill-autoresearch.png",
"x": -80, "y": -2510, "width": 400, "height": 225
},
{
"id": "img-wiki-canvas-1744041618",
"type": "file",
"file": "_attachments/images/canvas/skill-wiki-canvas.png",
"x": 360, "y": -2510, "width": 400, "height": 225
},
{
"id": "text-ingest-desc-1744041619",
"type": "text",
"text": "**WIKI INGEST**\nDrop a source in `.raw/`, Claude reads it, extracts entities + concepts, updates 815 wiki pages, logs the ingest.",
"x": -960, "y": -2255, "width": 400, "height": 100
},
{
"id": "text-query-desc-1744041620",
"type": "text",
"text": "**WIKI QUERY**\nAsk any question. Claude reads the index, finds relevant pages, synthesizes with citations. Good answers get filed back.",
"x": -520, "y": -2255, "width": 400, "height": 100
},
{
"id": "text-autoresearch-desc-1744041621",
"type": "text",
"text": "**AUTORESEARCH**\nAutonomous web research loop. Searches, fetches, synthesizes, files. Based on Karpathy's autoresearch pattern.",
"x": -80, "y": -2255, "width": 400, "height": 100
},
{
"id": "text-canvas-desc-1744041622",
"type": "text",
"text": "**WIKI CANVAS**\nVisual layer. Add images, PDFs, and wiki notes to Obsidian canvas files with auto-positioning and zone management.",
"x": 360, "y": -2255, "width": 400, "height": 100
},
{
"id": "zone-architecture-1744041623",
"type": "group",
"label": "Architecture & Workflow",
"x": -980, "y": -2090, "width": 1820, "height": 500, "color": "2"
},
{
"id": "text-arch-header-1744041624",
"type": "text",
"text": "## Lifecycle Flow\n\n```\nDrop source → /wiki-ingest → Wiki updated\n ↓\n /wiki-lint ←→ /wiki-query\n ↓\n /autoresearch\n ↓\n /canvas (visual)\n```",
"x": -960, "y": -2070, "width": 560, "height": 260, "color": "2"
},
{
"id": "img-workflow-loop-1744041625",
"type": "file",
"file": "wiki/meta/workflow-loop.gif",
"x": -360, "y": -2070, "width": 420, "height": 236
},
{
"id": "text-hot-cache-1744041626",
"type": "text",
"text": "## Hot Cache\n\n`wiki/hot.md` — a ~500-word context file updated after every ingest and session.\n\nLoaded automatically at conversation start. Gives Claude instant context without reading the full index.\n\n**Pattern:** hot → index → domain → page",
"x": 100, "y": -2070, "width": 420, "height": 200, "color": "2"
},
{
"id": "img-graph-view-1744041627",
"type": "file",
"file": "wiki/meta/image-example-graph-view.png",
"x": 560, "y": -2070, "width": 420, "height": 236
},
{
"id": "text-arch-stats-1744041628",
"type": "text",
"text": "**One source → 815 wiki pages touched**\n\nEntities, concepts, comparisons, questions — all updated in a single ingest pass.",
"x": -960, "y": -1780, "width": 500, "height": 80
},
{
"id": "img-wiki-graph-grow-1744041629",
"type": "file",
"file": "wiki/meta/wiki-graph-grow.gif",
"x": -420, "y": -1780, "width": 420, "height": 236
},
{
"id": "zone-comparison-1744041630",
"type": "group",
"label": "Wiki vs RAG — When to Use Which",
"x": -980, "y": -1490, "width": 1820, "height": 440, "color": "1"
},
{
"id": "img-wiki-vs-rag-1744041631",
"type": "file",
"file": "_attachments/images/canvas/wiki-vs-rag-chart.svg",
"x": -960, "y": -1470, "width": 800, "height": 420
},
{
"id": "text-comparison-table-1744041632",
"type": "text",
"text": "## When Wiki Wins\n\n| Metric | LLM Wiki | RAG |\n|---|---|---|\n| Infrastructure | Markdown files | Vector DB |\n| Cost | Tokens only | Compute + storage |\n| Maintenance | Run a lint | Re-embed |\n| Scale limit | ~1000 pages | Millions |\n| Compounding | ✅ Yes | ❌ No |\n\n**Verdict:** Wiki wins at <1000 pages.\nFor millions of documents, use RAG.",
"x": -120, "y": -1470, "width": 480, "height": 360
},
{
"id": "note-wiki-vs-rag-1744041633",
"type": "file",
"file": "wiki/comparisons/Wiki vs RAG.md",
"x": 400, "y": -1470, "width": 380, "height": 100
},
{
"id": "zone-demos-1744041634",
"type": "group",
"label": "Visual Demos",
"x": -980, "y": -990, "width": 1820, "height": 520, "color": "3"
},
{
"id": "text-demos-header-1744041635",
"type": "text",
"text": "## See It In Action",
"x": -960, "y": -970, "width": 300, "height": 50, "color": "3"
},
{
"id": "img-welcome-canvas-1744041636",
"type": "file",
"file": "wiki/meta/welcome-canvas.gif",
"x": -960, "y": -900, "width": 420, "height": 236
},
{
"id": "img-wiki-map-1744041637",
"type": "file",
"file": "wiki/meta/image-example-wiki-map-view.png",
"x": -500, "y": -900, "width": 420, "height": 236
},
{
"id": "img-cover-square-1744041638",
"type": "file",
"file": "wiki/meta/claude-obsidian-cover-square.png",
"x": -40, "y": -900, "width": 280, "height": 280
},
{
"id": "text-install-1744041639",
"type": "text",
"text": "## Install\n\n```bash\nclaude plugin marketplace add \\\n AI-Marketing-Hub/claude-obsidian\n\nclaude plugin install claude-obsidian\n```\n\nRepo: `github.com/AI-Marketing-Hub/claude-obsidian`",
"x": 280, "y": -900, "width": 480, "height": 200, "color": "3"
},
{
"id": "text-canvas-label-1744041640",
"type": "text",
"text": "Canvas Demo",
"x": -960, "y": -630, "width": 420, "height": 40
},
{
"id": "text-wikimap-label-1744041641",
"type": "text",
"text": "Wiki Map View",
"x": -500, "y": -630, "width": 420, "height": 40
},
{
"id": "text-cover-label-1744041642",
"type": "text",
"text": "Plugin Cover",
"x": -40, "y": -600, "width": 280, "height": 40
}
],
"edges": [
{
"id": "e-ingest-query-1744041650",
"fromNode": "img-wiki-ingest-1744041615",
"fromSide": "right",
"toNode": "img-wiki-query-1744041616",
"toSide": "left",
"toEnd": "arrow",
"label": "builds",
"color": "4"
},
{
"id": "e-query-auto-1744041651",
"fromNode": "img-wiki-query-1744041616",
"fromSide": "right",
"toNode": "img-autoresearch-1744041617",
"toSide": "left",
"toEnd": "arrow",
"label": "grows",
"color": "4"
},
{
"id": "e-auto-canvas-1744041652",
"fromNode": "img-autoresearch-1744041617",
"fromSide": "right",
"toNode": "img-wiki-canvas-1744041618",
"toSide": "left",
"toEnd": "arrow",
"label": "visualizes",
"color": "4"
}
]
}
+72
View File
@@ -0,0 +1,72 @@
{
"nodes": [
{
"id": "zone-wiki-pages-1744033999",
"type": "group",
"x": -400,
"y": 320,
"width": 1000,
"height": 320,
"color": "2",
"label": "Wiki Pages"
},
{
"id": "zone-default",
"type": "group",
"x": -400,
"y": -140,
"width": 800,
"height": 400,
"color": "4",
"label": "General"
},
{
"id": "note-llm-wiki-1744033901",
"type": "file",
"file": "wiki/concepts/LLM Wiki Pattern.md",
"x": 80,
"y": -120,
"width": 300,
"height": 100
},
{
"id": "text-insight-1744033945",
"type": "text",
"text": "## Key insight\n\nKnowledge compounds like interest.\nEvery ingest enriches 815 pages.",
"x": 80,
"y": 0,
"width": 300,
"height": 220,
"color": "5"
},
{
"id": "484d32f71e442aa0",
"type": "file",
"file": "Cosmic Brain Cover.png",
"x": -360,
"y": 360,
"width": 400,
"height": 206
},
{
"id": "a8f6d861b3c08664",
"type": "file",
"file": "Cosmic Brain Clean.gif",
"x": 80,
"y": 360,
"width": 400,
"height": 206
},
{
"id": "title",
"type": "text",
"text": "# Visual Reference\n\nDrop images, PDFs, and notes here.",
"x": -440,
"y": -360,
"width": 400,
"height": 120,
"color": "6"
}
],
"edges": []
}
+209
View File
@@ -0,0 +1,209 @@
{
"nodes": [
{
"id": "zone-input",
"type": "group",
"x": -680,
"y": -360,
"width": 560,
"height": 560,
"color": "4",
"label": "1 · Drop Your Sources"
},
{
"id": "zone-output",
"type": "group",
"x": 480,
"y": -360,
"width": 560,
"height": 560,
"color": "6",
"label": "3 · Your Brain (Vault) Grows"
},
{
"id": "zone-process",
"type": "group",
"x": -60,
"y": -360,
"width": 480,
"height": 560,
"color": "2",
"label": "2 · I Process Everything"
},
{
"id": "gif-workflow",
"type": "file",
"file": "wiki/meta/workflow-loop.gif",
"x": -40,
"y": -340,
"width": 440,
"height": 440
},
{
"id": "main-title",
"type": "text",
"text": "# 🧠 Claude Obsidian\n### Drop anything. I'll build your knowledge base.",
"x": -340,
"y": -620,
"width": 840,
"height": 110
},
{
"id": "sub-title",
"type": "text",
"text": "Images · PDFs · Markdown · Transcripts · URLs — drag, drop, or paste. I handle the rest.",
"x": -340,
"y": -500,
"width": 840,
"height": 54,
"color": "5"
},
{
"id": "text-drop-images",
"type": "text",
"text": "## 📸 Paste any image here\n\nHere you can paste any images and I will take care of the rest.",
"x": -660,
"y": -340,
"width": 520,
"height": 110,
"color": "4"
},
{
"id": "text-drop-pdf",
"type": "text",
"text": "## 📄 Or drop PDF & Markdown files\n\nJust easy drag & drop — I'll extract everything.",
"x": -660,
"y": 60,
"width": 520,
"height": 100,
"color": "4"
},
{
"id": "72b304484d8afa75",
"type": "file",
"file": "Cosmic Brain Clean.gif",
"x": -668,
"y": -216,
"width": 536,
"height": 276
},
{
"id": "text-process",
"type": "text",
"text": "Reads sources → extracts entities & concepts → cross-references everything → files it all automatically.",
"x": -40,
"y": 110,
"width": 440,
"height": 80,
"color": "2"
},
{
"id": "callout-1",
"type": "text",
"text": "💡 **815 wiki pages**\nper source ingested",
"x": -680,
"y": 440,
"width": 260,
"height": 80,
"color": "4"
},
{
"id": "callout-2",
"type": "text",
"text": "⚡ **Hot cache**\ninstant session context",
"x": -400,
"y": 440,
"width": 260,
"height": 80,
"color": "2"
},
{
"id": "callout-3",
"type": "text",
"text": "🔍 **Query anything**\nyou've ever added",
"x": -120,
"y": 440,
"width": 260,
"height": 80,
"color": "5"
},
{
"id": "callout-4",
"type": "text",
"text": "🕸️ **Visual map**\nFibonacci graph layout",
"x": 160,
"y": 440,
"width": 260,
"height": 80,
"color": "6"
},
{
"id": "text-brain",
"type": "text",
"text": "## 🧠 I'll create a full map/brain for you\n\nEvery source compounds the knowledge base.",
"x": 500,
"y": -340,
"width": 520,
"height": 100,
"color": "6"
},
{
"id": "text-result",
"type": "text",
"text": "Cross-referenced. Searchable. Gets richer every session.",
"x": 500,
"y": 200,
"width": 520,
"height": 50,
"color": "6"
},
{
"id": "gif-graph",
"type": "file",
"file": "wiki/meta/wiki-graph-grow.gif",
"x": 568,
"y": -225,
"width": 385,
"height": 385
},
{
"id": "cta-start",
"type": "text",
"text": "## 👉 Start here\n\n1. Read [[getting-started]] for a quick walkthrough\n2. Run `/wiki` in Claude Code to scaffold your vault\n3. Drop your first source into `.raw/` and say `ingest [filename]`",
"x": -140,
"y": 267,
"width": 560,
"height": 140,
"color": "5"
},
{
"id": "025be16f290f1830",
"x": 501,
"y": 280,
"width": 520,
"height": 293,
"type": "file",
"file": "2026-04-07 14-19-00.mkv"
}
],
"edges": [
{
"id": "arrow-1",
"fromNode": "zone-input",
"fromSide": "right",
"toNode": "zone-process",
"toSide": "left",
"color": "4",
"label": "ingest"
},
{
"id": "arrow-2",
"fromNode": "zone-process",
"fromSide": "right",
"toNode": "zone-output",
"toSide": "left",
"color": "6",
"label": "builds"
}
]
}
+251
View File
@@ -0,0 +1,251 @@
{
"nodes": [
{
"id": "zone-1", "type": "group", "label": "Beat 1 — Hook",
"x": 0, "y": 0, "width": 1920, "height": 1080, "color": "1"
},
{
"id": "z1-gif", "type": "file", "file": "claude-obsidian-gif-cover-16x9.gif",
"x": 20, "y": 20, "width": 960, "height": 540
},
{
"id": "z1-hook", "type": "text",
"text": "# Your AI forgets everything.\n\nEvery new chat starts from zero.\n\nYou re-explain the same context.\nAgain. And again.\n\n> [!warning] The real cost\n> Tokens burned. Momentum lost.\n> Good answers buried in chat history.",
"x": 1000, "y": 20, "width": 900, "height": 540, "color": "1"
},
{
"id": "z1-bridge", "type": "text",
"text": "## What if Claude just... knew?\n\nAnd got smarter every session?\n\nThat is what **claude-obsidian** does.",
"x": 20, "y": 580, "width": 1880, "height": 480, "color": "3"
},
{
"id": "z1-ref", "type": "text",
"text": "## SCRIPT — Beat 1: Hook (0:000:35)\n\n**Opening line:** \"Your AI forgets everything. Every single chat starts from zero.\"\n\n**Show:** animated GIF playing. Let it loop 2-3x.\n\n**Say:**\n- \"You know the feeling. You explain your project, your stack, your goals. Every. Single. Time.\"\n- \"What if Claude just knew? And got smarter every session?\"\n- \"That is what claude-obsidian does. Let me show you.\"\n\n**Transition:** pan down to Beat 2",
"x": 1960, "y": 0, "width": 600, "height": 1080, "color": "6"
},
{
"id": "zone-2", "type": "group", "label": "Beat 2 — How it works",
"x": 0, "y": 1180, "width": 1920, "height": 1080, "color": "3"
},
{
"id": "z2-title", "type": "text",
"text": "# A wiki Claude writes for itself.",
"x": 20, "y": 1200, "width": 1880, "height": 80, "color": "3"
},
{
"id": "z2-img-a", "type": "file", "file": "_attachments/youtube/how-it-works.png",
"x": 20, "y": 1300, "width": 940, "height": 528
},
{
"id": "z2-img-b", "type": "file", "file": "_attachments/youtube/how-it-works-B.png",
"x": 980, "y": 1300, "width": 920, "height": 528
},
{
"id": "z2-flow-a", "type": "text",
"text": "## 💬 You chat\n\nAsk questions.\nWork on projects.\nExplore ideas.",
"x": 20, "y": 1848, "width": 580, "height": 192, "color": "5"
},
{
"id": "z2-flow-b", "type": "text",
"text": "## 📄 Claude files it\n\nPicks the note type.\nWrites wikilinks.\nUpdates the index.",
"x": 620, "y": 1848, "width": 580, "height": 192, "color": "4"
},
{
"id": "z2-flow-c", "type": "text",
"text": "## 💬 Next session\n\nClaude reads the wiki first.\nZero re-explaining.\nSmarter from the start.",
"x": 1220, "y": 1848, "width": 680, "height": 192, "color": "5"
},
{
"id": "z2-layers", "type": "text",
"text": "> [!tip] Key idea\n> **🔥 hot.md** — ~500 words, loaded every session automatically. Nearly free.\n> **🗂️ index.md** — full map of every page. Read when hot.md is not enough.\n> **📚 wiki/ pages** — the real knowledge. Only the relevant pages get read each session.",
"x": 20, "y": 2060, "width": 1880, "height": 180
},
{
"id": "z2-ref", "type": "text",
"text": "## SCRIPT — Beat 2: How it works (0:351:30)\n\n**Opening line:** \"Here is how it works.\"\n\n**Show:** the three-layer diagram image on the right\n\n**Say:**\n- \"claude-obsidian turns Obsidian into a wiki that Claude writes for itself.\"\n- \"Every chat you have, the good stuff gets filed. Next session Claude reads it first.\"\n- \"Three layers: hot.md loads every session — about 500 words, nearly free. Then index.md for the full map. Then individual wiki pages, only the ones that matter.\"\n- \"You stay in budget. The wiki keeps growing.\"\n\n**Show:** open wiki/hot.md — show it is small and focused\n\n**Transition:** \"So how do you actually build this wiki? Three commands.\"\n\n**Files to show:** `wiki/hot.md`, `wiki/index.md`",
"x": 1960, "y": 1180, "width": 600, "height": 1080, "color": "6"
},
{
"id": "zone-3", "type": "group", "label": "Beat 3 — /save",
"x": 0, "y": 2360, "width": 1920, "height": 1080, "color": "4"
},
{
"id": "z3-title", "type": "text",
"text": "# /save — File the conversation into the wiki.",
"x": 20, "y": 2380, "width": 1880, "height": 80, "color": "4"
},
{
"id": "z3-img-a", "type": "file", "file": "_attachments/youtube/save-A.png",
"x": 20, "y": 2480, "width": 940, "height": 530
},
{
"id": "z3-img-b", "type": "file", "file": "_attachments/youtube/save-B.png",
"x": 980, "y": 2480, "width": 920, "height": 530
},
{
"id": "z3-bullets", "type": "text",
"text": "## What it does\n\n- Reads the full current chat\n- Picks the right note type: concept, question, source, or decision\n- Writes frontmatter and wikilinks automatically\n- Files the note in the correct wiki folder\n- Updates index.md, the session log, and hot.md\n\n> [!tip] Result\n> Good answers stop disappearing.",
"x": 20, "y": 3030, "width": 920, "height": 390
},
{
"id": "z3-example", "type": "text",
"text": "> [!example] Try it\n> `/save`\n>\n> or just: *save this as a concept note*\n\nClaude picks the type, writes the note,\nfiles it, and cross-links it. One command.",
"x": 960, "y": 3030, "width": 940, "height": 390, "color": "4"
},
{
"id": "z3-ref", "type": "text",
"text": "## SCRIPT — Beat 3: /save (1:302:45)\n\n**Opening line:** \"Command one: /save.\"\n\n**Show:** type `/save` in the terminal while on a chat with good content\n\n**Say:**\n- \"One command. Claude reads the whole conversation.\"\n- \"It picks the right note type — concept, question, decision, source. Writes frontmatter. Adds wikilinks to related pages. Files it in the right folder.\"\n- \"It also updates the index and the hot cache, so next session it's already loaded.\"\n- \"Good answers stop disappearing.\"\n\n**Show:** the new note open in Obsidian — show frontmatter and wikilinks\n\n**Transition:** \"But what if you want Claude to go do the research for you?\"\n\n**Files to show:** fresh page in `wiki/concepts/`\n**Skill source:** `skills/save/SKILL.md`",
"x": 1960, "y": 2360, "width": 600, "height": 1080, "color": "6"
},
{
"id": "zone-4", "type": "group", "label": "Beat 4 — /autoresearch",
"x": 0, "y": 3540, "width": 1920, "height": 1080, "color": "4"
},
{
"id": "z4-title", "type": "text",
"text": "# /autoresearch — Autonomous research loop.",
"x": 20, "y": 3560, "width": 1880, "height": 80, "color": "4"
},
{
"id": "z4-img-a", "type": "file", "file": "_attachments/youtube/autoresearch-A.png",
"x": 20, "y": 3660, "width": 940, "height": 530
},
{
"id": "z4-img-b", "type": "file", "file": "_attachments/youtube/autoresearch-B.png",
"x": 980, "y": 3660, "width": 920, "height": 530
},
{
"id": "z4-bullets", "type": "text",
"text": "## What it does\n\n- Breaks the topic into 3 to 5 research angles\n- Runs web searches and fetches the best sources\n- Extracts claims, entities, and concepts\n- Runs a second pass to fill in the gaps it noticed\n- Files a synthesis page + source pages + concept pages, all cross-linked\n\n> [!tip] Result\n> Research that becomes a wiki, not a tab graveyard.",
"x": 20, "y": 4210, "width": 920, "height": 390
},
{
"id": "z4-example", "type": "text",
"text": "> [!example] Try it\n> `/autoresearch LLM wiki pattern`\n>\n> Output: 5 to 15 wiki pages, cross-linked, with citations.\n\nClaude works autonomously.\nYou get coffee.",
"x": 960, "y": 4210, "width": 940, "height": 390, "color": "4"
},
{
"id": "z4-ref", "type": "text",
"text": "## SCRIPT — Beat 4: /autoresearch (2:454:15)\n\n**Opening line:** \"Command two: /autoresearch. This one feels like magic.\"\n\n**Show:** type `/autoresearch claude-obsidian best practices` — let it start running\n\n**Say:**\n- \"It breaks the topic into research angles. Searches the web. Fetches real sources. Pulls out the key claims.\"\n- \"Then it runs a second pass to fill in the gaps it noticed the first time.\"\n- \"End result: 5 to 15 wiki pages. Cross-linked. With citations. In about 3 minutes.\"\n- \"You do not get a chat bubble that disappears. You get a permanent knowledge base.\"\n\n**Show:** Obsidian sidebar filling up with new pages while it runs\n\n**Transition:** \"And the third command is what you are actually watching right now.\"\n\n**Files to show:** `wiki/sources/`, `wiki/concepts/`\n**Skill source:** `skills/autoresearch/SKILL.md`",
"x": 1960, "y": 3540, "width": 600, "height": 1080, "color": "6"
},
{
"id": "zone-5", "type": "group", "label": "Beat 5 — /canvas",
"x": 0, "y": 4720, "width": 1920, "height": 1080, "color": "4"
},
{
"id": "z5-title", "type": "text",
"text": "# /canvas — The visual layer of the wiki.",
"x": 20, "y": 4740, "width": 1880, "height": 80, "color": "4"
},
{
"id": "z5-img-a", "type": "file", "file": "_attachments/youtube/canvas-A.png",
"x": 20, "y": 4840, "width": 940, "height": 530
},
{
"id": "z5-img-b", "type": "file", "file": "_attachments/youtube/canvas-B.png",
"x": 980, "y": 4840, "width": 920, "height": 530
},
{
"id": "z5-bullets", "type": "text",
"text": "## What it does\n\n- Creates infinite visual boards inside Obsidian\n- Drops in images, text cards, PDFs, and wiki notes\n- Positions nodes automatically inside named zones\n- Uses JSON Canvas 1.0 — open standard, portable and future-proof\n- Pairs with /banana for AI-generated images on any beat\n\n> [!key-insight] Meta moment\n> This canvas you are watching right now was built with /canvas.",
"x": 20, "y": 5390, "width": 920, "height": 390
},
{
"id": "z5-example", "type": "text",
"text": "> [!example] Try it\n> `/canvas new youtube-video`\n> `/canvas add note LLM Wiki Pattern`\n> `/canvas add image _attachments/youtube/save-A.png`\n\nInstant visual board.\nObsidian-native. Shareable.",
"x": 960, "y": 5390, "width": 940, "height": 390, "color": "4"
},
{
"id": "z5-ref", "type": "text",
"text": "## SCRIPT — Beat 5: /canvas (4:155:30)\n\n**Opening line:** \"Command three: /canvas. And what you are watching right now is it.\"\n\n**Show:** zoom out on this full canvas — let them see all 7 zones laid out\n\n**Say:**\n- \"This is /canvas. It gives the wiki a visual layer.\"\n- \"Drop in images, text cards, wiki notes, PDFs. Claude positions everything automatically.\"\n- \"You can build explainers, mood boards, project maps, video scripts — like this one.\"\n- \"This canvas? Every zone, every node — built with /canvas.\"\n\n**Show live:** type `/canvas add note LLM Wiki Pattern` — watch a node appear\n\n**Transition:** \"So that is the three commands. Let me quickly show you how the memory system behind them works.\"\n\n**Skill source:** `skills/canvas/SKILL.md`",
"x": 1960, "y": 4720, "width": 600, "height": 1080, "color": "6"
},
{
"id": "zone-6", "type": "group", "label": "Beat 6 — Under the hood",
"x": 0, "y": 5900, "width": 1920, "height": 1080, "color": "3"
},
{
"id": "z6-title", "type": "text",
"text": "# Under the hood — why token cost stays low as the wiki grows.",
"x": 20, "y": 5920, "width": 1880, "height": 80, "color": "3"
},
{
"id": "z6-graph", "type": "file", "file": "image-example-graph-view.png",
"x": 20, "y": 6020, "width": 920, "height": 518
},
{
"id": "z6-wikimap", "type": "file", "file": "image-example-wiki-map-view.png",
"x": 960, "y": 6020, "width": 940, "height": 518
},
{
"id": "z6-hot", "type": "text",
"text": "## 🔥 hot.md\nLoaded automatically every session.\n~500 words. Near-zero token cost.\nRecent context. What is coming next.",
"x": 20, "y": 6558, "width": 600, "height": 200, "color": "1"
},
{
"id": "z6-index", "type": "text",
"text": "## 🗂️ index.md\nOne-line summary of every wiki page.\nRead when hot.md is not enough.\nThe full map, compactly.",
"x": 640, "y": 6558, "width": 620, "height": 200, "color": "3"
},
{
"id": "z6-pages", "type": "text",
"text": "## 📚 wiki/ pages\nConcepts. Sources. Decisions. People.\nOnly the relevant pages get read.\nDeep knowledge, on demand.",
"x": 1280, "y": 6558, "width": 620, "height": 200, "color": "4"
},
{
"id": "z6-insight", "type": "text",
"text": "> [!key-insight] The wiki can grow to thousands of pages. Your token cost per session barely moves.",
"x": 20, "y": 6778, "width": 1880, "height": 162
},
{
"id": "z6-ref", "type": "text",
"text": "## SCRIPT — Beat 6: Under the hood (5:306:30)\n\n**Opening line:** \"So how does Claude actually remember things without blowing your token budget?\"\n\n**Show:** pan across — graph view left, wiki map right, three layers below\n\n**Say:**\n- \"Three layers. That is the whole system.\"\n- \"hot.md loads every session — about 500 words. Recent context. Nearly free.\"\n- \"index.md is the full map: one line per page. Claude reads it when hot.md is not enough.\"\n- \"Then the actual wiki pages — only the ones that matter for that session.\"\n- \"The wiki can grow to thousands of pages. Your bill barely moves.\"\n\n**Show:** `wiki/hot.md` and `wiki/index.md` briefly\n\n**Transition:** pan down to install",
"x": 1960, "y": 5900, "width": 600, "height": 1080, "color": "6"
},
{
"id": "zone-7", "type": "group", "label": "Beat 7 — Install + CTA",
"x": 0, "y": 7080, "width": 1920, "height": 1080, "color": "5"
},
{
"id": "z7-title", "type": "text",
"text": "# Install in 2 lines — Free. Open source. Works with Claude Code today.",
"x": 20, "y": 7100, "width": 1880, "height": 80, "color": "5"
},
{
"id": "z7-gif", "type": "file", "file": "claude-obsidian-gif-1x1.gif",
"x": 20, "y": 7200, "width": 480, "height": 480
},
{
"id": "z7-cover", "type": "file", "file": "claude-obsidian-cover-16x9.png",
"x": 520, "y": 7200, "width": 1380, "height": 480
},
{
"id": "z7-cmd", "type": "text",
"text": "```bash\nclaude plugin marketplace add AgriciDaniel/claude-obsidian\nclaude plugin install claude-obsidian@agricidaniel-claude-obsidian\n```",
"x": 20, "y": 7700, "width": 920, "height": 160
},
{
"id": "z7-links", "type": "text",
"text": "## Links\n\n- **GitHub**: github.com/AgriciDaniel/claude-obsidian\n- **Community**: skool.com/ai-marketing-hub-pro\n- **Website**: agricidaniel.com\n\n> [!tip] Subscribe\n> More Claude Code builds every week.",
"x": 960, "y": 7700, "width": 940, "height": 440, "color": "5"
},
{
"id": "z7-ref", "type": "text",
"text": "## SCRIPT — Beat 7: Install + CTA (6:308:00)\n\n**Opening line:** \"Installing takes literally two lines.\"\n\n**Show:** terminal — type both install commands live, slowly\n\n**Say:**\n- \"Copy these two lines. Paste. Done.\"\n- \"claude-obsidian is free, open source, and works with Claude Code right now.\"\n- \"GitHub link is in the description. Come join the Skool community — free tier, live sessions every week.\"\n- \"If this was useful, hit subscribe. I build with Claude Code every week.\"\n\n**End:** let the animated GIF loop while you close out.\n\n**Do NOT rush this beat.**",
"x": 1960, "y": 7080, "width": 600, "height": 1080, "color": "6"
}
],
"edges": [
{"id": "e-flow-ab", "fromNode": "z2-flow-a", "fromSide": "right", "toNode": "z2-flow-b", "toSide": "left", "fromEnd": "none", "toEnd": "arrow"},
{"id": "e-flow-bc", "fromNode": "z2-flow-b", "fromSide": "right", "toNode": "z2-flow-c", "toSide": "left", "fromEnd": "none", "toEnd": "arrow"},
{"id": "e-hot-index", "fromNode": "z6-hot", "fromSide": "right", "toNode": "z6-index", "toSide": "left", "fromEnd": "none", "toEnd": "arrow"},
{"id": "e-index-pages", "fromNode": "z6-index", "fromSide": "right", "toNode": "z6-pages", "toSide": "left", "fromEnd": "none", "toEnd": "arrow"}
]
}