ingest · diff

git:20260928.5e9067f to git:20261007.e522be7

64 added, 111 removed. Audit A to A.

---
name: ingest
description: >-
- Source synthesis for Obsidian: ingest an article, URL, video, book note, or selected Inbox source
- into durable Resources notes after discussing the key ideas. Use when the user asks to ingest a
- source, add source material to the wiki, synthesize an article, or runs /ingest.
- disable-model-invocation: true
+ Discuss and synthesize an article, URL, video, book note, or selected Inbox source into the
+ Obsidian LLM Wiki. Use when the user asks to ingest, synthesize, or add source material to the
+ knowledge base.
+ user-invocable: true
---
# Ingest
- Synthesize source material into the vault's knowledge layer. Ingesting without synthesis just
- creates noise — the value is the conversation that happens before anything gets written.
-
- Boundaries: use `process-inbox` for PARA triage of raw inbox notes, and `save-note` for saving the
- current conversation answer as a standalone wiki page.
-
- **Rule: always discuss before writing.** Never silently file a note.
-
- ## Step 1 — Find the Source
-
- If the user specified a file or URL, use that directly.
-
- Otherwise, list the Web Clipper inbox:
-
- ```bash
- obsidian files folder="0 - Inbox/web-clippers/" format=json
- ```
-
- If multiple items, ask which one to process (or process all in sequence).
-
- ## Step 2 — Read the Source
-
- ```bash
- obsidian read path="0 - Inbox/web-clippers/[filename]"
- ```
-
- For URLs or web content: fetch the content directly.
-
- ## Step 3 — Discuss Before Writing (required)
-
- Surface for conversation — don't skip this step:
-
- 1. **2–3 most important ideas** from the source, in your own words
- 2. **Existing wiki pages this connects to** — search for related notes:
- ```bash
- qmd query "<key concept>" --json -n 8 2>/dev/null
- ```
- 3. **Any contradictions** with existing knowledge worth flagging
-
- Present these and wait for Chris to confirm:
+ Turn one raw source into durable, connected knowledge. Preserve the Karpathy LLM Wiki layers:
+ immutable raw source, LLM-maintained wiki, and the schema/index/log that connect them.
- - Which ideas to capture
- - Whether to update existing pages or create new ones
- - Which subfolder in `3 - Resources/` to target
+ Use `process-inbox` for general PARA triage. Use `save-note` when the source is the current
+ conversation synthesis rather than external material.
- ## Step 4 — Write/Update Wiki Pages
+ ## 1. Resolve and read one source
- Based on similarity to existing notes:
+ Use a supplied file or URL. Otherwise list the schema-defined raw Inbox and ask the user to choose
+ one item. Read the complete source; fetch URL content directly when needed. Record whether the raw
+ source already exists in the vault or must be archived from an external URL or file.
- **Update existing page** (score ≥ 0.7 match):
+ Do not batch an entire Inbox unless the user explicitly requests repeated one-at-a-time processing.
- ```bash
- obsidian read path="3 - Resources/<subfolder>/<existing-page>.md"
- # Then append a dated section:
- obsidian append path="3 - Resources/<subfolder>/<existing-page>.md" \
- content="\n## Update — $(date +%Y-%m-%d)\n\n<synthesized content>"
- ```
+ Completion: one source, its type and provenance, and its raw-source archival state are known, and its
+ content has been read.
- **Ambiguous match** (score 0.5–0.7): show the candidate pages and ask whether to append, create a
- distinct page, or cancel. Do not decide silently.
+ ## 2. Discuss before writing
- **Create new page** (score < 0.5, genuinely new territory):
+ Search root `index.md` first for connected wiki pages. Use qmd when the catalog is ambiguous or the
+ relevant language may occur only in page bodies. Read likely pages rather than reasoning from search
+ snippets.
- ```bash
- obsidian create path="3 - Resources/<subfolder>/<new-page>.md" content="..."
- ```
+ Present:
- New page frontmatter:
+ 1. two or three important ideas in your own words;
+ 2. existing pages each idea could enrich;
+ 3. contradictions or uncertainty worth preserving;
+ 4. proposed new pages, updates, raw-source destination, and index changes.
- ```yaml
- ---
- source: claude-memory
- created: YYYY-MM-DD
- aliases: [<acronyms, alternate names, spelling/casing variants>]
- tags: [claude-memory, <topic-tags>]
- ---
- ```
+ Wait for the user to confirm emphasis and destinations. Discussion is mandatory; silent filing is
+ not ingestion.
- Generate 2–6 `aliases`: the off-title terms someone would search to find this page (acronyms,
- alternate names, "X vs Y" framings). This is what makes the page recall-able from queries that don't
- match the title verbatim. Skip only when the title is the sole term anyone would use.
+ Completion: the user approved what knowledge to preserve and whether each item creates or enriches a
+ page.
- Write in wiki style: neutral, reference-focused, no "I learned that..." framing. This is reference
- material, not a diary. Target 3–10 pages per source — focus on durable concepts, not summaries of
- the source itself.
+ ## 3. Prepare the wiki changes
- **Source type → subfolder mapping:**
+ Treat search scores as clues, not decisions. Inspect candidates and choose create versus enrich from
+ their actual scope, ownership, and content.
- - article → `3 - Resources/Articles/`
- - tweet → `3 - Resources/Tweets/`
- - video → `3 - Resources/Videos/`
- - book → `3 - Resources/Books/`
+ Follow metadata, writable directories, naming, aliases, tags, and source-citation rules from
+ `AGENTS.md`. Write focused reference pages in neutral wiki voice. Every non-obvious claim must trace
+ to the raw source; preserve contradictions rather than silently choosing a side.
- ## Step 5 — Update Index and Log
+ A rich source may touch several relevant entity or concept pages. The current schema may define a
+ target range; quality and relevance matter more than reaching a quota.
- **Add to index** under the right category heading (`Articles` / `Tweets` / `Videos` / `Books` /
- `Concept notes`). The CLI has no `patch`, so the entry can't be inserted under a specific section
- directly — ask the user: use the MCP `obsidian_patch_content` tool (target the heading,
- `operation: append`) or `read` + `create ... overwrite`. Entry format:
+ Completion: each proposed page has a destination, ownership permission, source link, and complete
+ content or exact section change.
- ```
- - **<Title>** ($(date +%Y-%m-%d)) — [[<stem>]] (<path>) · from <hostname>. _<summary>_
- ```
+ ## 4. Preview and write safely
- **Append to log** (chronological — append is fine):
+ Show the complete write set before mutating the vault. After approval:
- ```bash
- obsidian append path="3 - Resources/log.md" content="\n## $(date +%Y-%m-%d)\ningest | <title>"
- ```
+ 1. when the source is external, archive and verify its raw-source artifact before creating claims
+ that cite it;
+ 2. create or update wiki pages using the `vault` safe-write flow;
+ 3. reread every affected page;
+ 4. update root `index.md` under its current schema-defined sections;
+ 5. append one ingest operation to root `log.md`;
+ 6. verify the index links and log entry.
- ## Step 6 — Move the Source
+ Never interpolate generated Markdown into shell commands. Do not modify human-owned pages or
+ already-filed immutable sources.
- After confirming the write succeeded:
+ ## 5. File the raw source
- ```bash
- obsidian move path="0 - Inbox/web-clippers/[filename]" \
- to="3 - Resources/[Type]/[filename]"
- ```
+ Include the raw-source operation in the approved write set:
- Never delete inbox items — always move to the appropriate Resources subfolder.
+ - **Inbox source:** after the wiki, index, and log verify, move it to the schema-defined immutable
+ source directory rather than deleting it.
+ - **External URL or file:** before writing wiki pages, create the raw-source artifact in the
+ schema-defined immutable directory. Preserve the fetched original content or transcript, canonical
+ URL, title, author/publisher when known, retrieval date, and source type. Clearly mark unavailable
+ original content instead of substituting the synthesis.
+ - **Already filed source:** leave it unchanged and verify its path.
- ## What NOT to do
+ Execute the operation through the safe-write or move flow and verify the artifact. After filing,
+ treat it as immutable. If filing fails, preserve the original, stop dependent writes, and report the
+ partial state.
- - Don't silently file without discussing — synthesis is the whole point
- - Don't process a whole inbox queue — use `process-inbox` for PARA triage
- - Don't save the current conversation answer — use `save-note`
- - Don't create duplicate pages — always search first
- - Don't use diary voice in wiki pages — write for reference, not narrative
- - Don't move the source before the knowledge is captured
+ Completion: approved wiki pages, root index, root log, and one verified immutable raw-source artifact
+ all exist, or every partial failure is explicit.
## References
| Priority | Load when | Reference |
| --- | --- | --- |
- | 1 — High | Creating or linking wiki pages — block refs, aliases, evergreen structure | `references/advanced-workflows.md` |
- | 2 — Medium | User wants Dataview queries or dynamic MOC views inside a note | `references/dataview-patterns.md` |
- | 3 — Medium | Creating a MOC or deciding MOC vs standalone note | `references/moc-advanced.md` |
+ | 1 — High | Creating interconnected pages or using block references and aliases | `references/advanced-workflows.md` |