ingest
Ingest
The vault root. Resolve it once, before anything else: VAULT_ROOT from the environment, defaulting to ~/Obsidian when unset (echo "${VAULT_ROOT:-$HOME/Obsidian}"). Every vault path below is built from $VAULT_ROOT, as shorthand: shell state does not persist between commands, so substitute the resolved path it printed into every command and file path, never the bare $VAULT_ROOT. If that directory does not exist, stop and say so — never create a vault.
Processes one source into the Library ($VAULT_ROOT/Library/). Read $VAULT_ROOT/Library/CLAUDE.md (the wiki schema), $VAULT_ROOT/CONTEXT.md, and $VAULT_ROOT/CONVENTIONS.md (formatting) first.
Source types
-
Article — a URL or clipped text.
WebFetchthe URL. -
Video — fetch the transcript, no download:
uvx yt-dlp --skip-download --write-auto-sub --sub-lang en '<url>'The raw VTT carries YouTube's rolling captions, so dedupe it before reading: strip the WEBVTT header, cue timings and inline
<c>tags, then drop each line that is a prefix of, or identical to, the line before it. Nothing to install —uvis present. If extraction fails on a missing JS runtime,brew install deno. -
Book — file the PDF into
Library/raw/;Readhandles PDFs directly. Ingest once per chapter or sitting, not once per book. Oneentities/page for the book; each pass writes intoconcepts/.