ObsidianDataWeave: NotebookLM, Atomization, and LLM Wiki · git:20260704.135f674 · 2026-07-04 · sha256 c8e1aeaab966495f
ObsidianDataWeave: NotebookLM, Atomization, and LLM Wiki git:20260704.135f674A
Immutable. This exact content never changes and is served at /api/v1/blob/c8e1aeaab966495f.
--- id: obsidian-dataweave name: 'ObsidianDataWeave: NotebookLM, Atomization, and LLM Wiki' summary: >- KISA's skill: turns Claude Code / Codex into a NotebookLM control panel + .docx import with Zettelkasten atomization + a compiled LLM Wiki layer + FTS5 memory across the whole Obsidian vault. All programmatic, all into your vault, with no external search dependencies. type: skill author: kisa recommended: false added: 2026-07-04 tags: [obsidian, notebooklm, zettelkasten, llm-wiki, fts5, memory, notes] source: https://github.com/howdeploy/ObsidianDataWeave description: >- Use when the user wants to control NotebookLM programmatically, import .docx into an Obsidian vault as atomic Zettelkasten notes, build a compiled LLM Wiki layer, or full-text-search the whole vault. Claude Code and Codex both supported. license: MIT --- # ObsidianDataWeave Turns Claude Code and Codex into a full control panel for NotebookLM and your Obsidian vault. You run deep research, manage sources, and pull notes out of notebooks — all with a single natural-language command. In parallel, it imports `.docx` from Google Drive and atomizes them into Zettelkasten notes with a MOC, tags, and wikilinks. On top — an isolated **LLM Wiki** layer (a compiled base in the Karpathy style), and **FTS5 memory** — a full-text index of the entire vault without a single external dependency. Public: `howdeploy/ObsidianDataWeave`, MIT. Both clients are supported: Claude Code (skill) and Codex (`AGENTS.md`). ## Four Layers 1. **NotebookLM → Obsidian.** Programmatic control of NotebookLM through `notebooklm-py` as a library (not the CLI — strictly one-shot, no retry duplication). Deep/fast research, source management, dedup, note extraction, and atomization into the vault. 2. **.docx → Obsidian.** Import from Google Drive (rclone) → parse → atomize → write. 3. **LLM Wiki.** A compiled wiki on top of the atomic notes: it accumulates through an explicit merge (not RAG, not a recompute on every query), linked with `[[wikilinks]]`. 4. **FTS5 memory.** A local full-text index of the whole vault on stdlib SQLite, bm25 + snippets, auto-updates after every write. Search for agents. ## Installation ```bash git clone https://github.com/howdeploy/ObsidianDataWeave.git cd ObsidianDataWeave bash install.sh --vault-path "/path/to/your/vault" ``` The installer checks for Python 3.10+, installs the dependencies (`python-docx`, `pyyaml`), creates a `config.toml` with the vault path, registers the skill globally in `~/.claude/skills/obsidian-dataweave/`, and appends a block to `~/.claude/CLAUDE.md`. After installation the skill works from any directory. Modes: `--mode claude` (default), `--mode codex` (checks `AGENTS.md`), `--mode local` (dependencies + config only). Updating is idempotent: `git pull && bash install.sh`. ## How to Use After installation, just tell the agent in natural language: | What to say | What happens | |---|---| | `process MyDocument.docx` | Download → parse → atomize → write into the vault | | `process note "Title"` | Enrich or atomize an existing note | | `process contacts "Contacts"` | A note with contacts → personal cards + Networking MOC | | `run research in notebook "<id>" "<query>"` | Deep research in NotebookLM via the API | | `clean duplicates in notebook "<id>"` | Dedup sources in the notebook | | `create wiki "<slug>"` | Skeleton of a new LLM Wiki space (project/corpus, RU/EN) | | `build wiki "<slug>"` | Compile the raw material into pages (guard on `[[wikilinks]]`) | | `search notes "<query>"` | FTS5 search across the whole vault (bm25 + snippets) | Processing modes: **Enrich** (short note → tags/links/expansion, 1→1), **Atomize** (long → atomic notes + MOC, 1→N), **Contacts** (contacts → cards + Networking MOC). ## LLM Wiki The third knowledge layer is a compiled wiki in the Karpathy style. It lives in the isolated folder `<vault>/LLM Wiki/<slug>/`; atomic notes don't go there. It accumulates through an explicit merge: existing `[[wikilinks]]` must be preserved, otherwise compile fails with `WIKI_LINKS_LOST`. Two modes: **project** (fixed core pages: overview, architecture, components, workflows, glossary…) and **corpus** (only entities/concepts grow). ```bash python3 scripts/wiki_init.py demo --mode project --title "Demo Project" python3 scripts/wiki_ingest.py demo path/to/article.md --kind articles python3 scripts/wiki_compile.py demo --since-last-compile python3 scripts/wiki_lint.py demo --strict ``` All scripts write through a single writer, `vault_writer.py` — the atomic pipelines and the wiki share one write point. ## NotebookLM: First Login The Google session is saved in `~/.notebooklm/storage_state.json` — login is one-time. ```bash python3 -m venv .venv .venv/bin/python scripts/notebooklm_setup.py --skip-login # in a SEPARATE terminal window (needs a real TTY): .venv/bin/notebooklm login # log in to Google in Chromium → come back → ENTER ``` Then: `process_notebook.py <notebook_id>` (id is the last segment of the notebook URL), `research_notebook.py run "<id>" "<query>" --mode deep`. ## Requirements - Python 3.10+ (3.11+ recommended), [rclone](https://rclone.org/) with access to Google Drive (for `.docx`), Claude Code or Codex. - SQLite with FTS5 (stdlib `sqlite3`) — no separate DBMS needed; `doctor.py` checks this. - **Obsidian plugins:** [Local REST API](https://github.com/coddingtonbear/obsidian-local-rest-api) (HTTP interface to the vault) + [MCP Obsidian](https://github.com/MarkusPfundstein/mcp-obsidian) (MCP bridge Claude Code ↔ Obsidian). Related: [NotebookLM++](https://github.com/howdeploy/notebooklmplusplus) — a Chrome extension for bulk-importing sources into NotebookLM (web, YouTube, playlists, PDF snapshots).