wiki-ingest

star 3

Use when the user wants to ingest external sources into the vault — PDFs, markdown files, transcripts, Readwise exports, or any document. Triggers on "ingest", "process document", "import into vault", "distill this", "add to vault", or "extract knowledge from".

thoreinstein By thoreinstein schedule Updated 4/7/2026

name: wiki-ingest description: >- Use when the user wants to ingest external sources into the vault — PDFs, markdown files, transcripts, Readwise exports, or any document. Triggers on "ingest", "process document", "import into vault", "distill this", "add to vault", or "extract knowledge from".

Wiki Ingest

Distill external sources into vault-native notes following VAULT_CONVENTIONS, with provenance tracking and deduplication.

Workflow

1. Identify Sources

Accept one or more source paths from the user. Sources can be:

  • Files on disk (markdown, PDF, text, transcripts)
  • Vault-internal notes (Readwise highlights, working notes to promote)
  • A directory to scan for ingestible files

For vault-internal sources, use obsidian_read_note. For external files, use the Read tool.

2. Check Manifest

Read .manifest.json from the vault root using Read tool.

For each source path, check if it exists in sources:

  • Not present → new source, proceed to extract
  • Present but source modified since ingested_at → re-ingest
  • Present and unchanged → skip (tell user "already ingested, use --force to re-process")

3. Extract Knowledge

Read the source content. Identify:

  • Patterns — reusable approaches, techniques, or practices
  • Traps — pitfalls, anti-patterns, things that went wrong
  • Decisions — architectural or design choices with rationale
  • Concepts — definitions, mental models, frameworks

For each extraction, classify its provenance:

  • Extracted (unmarked) — directly stated in the source
  • Inferred ^[inferred] — synthesized, generalized, or implied but not stated
  • Ambiguous ^[ambiguous] — source is unclear or contradicts other sources

4. Deduplicate

For each extracted concept, search the vault:

  1. Call obsidian_rag_query with the concept name/summary, limit: 5
  2. If a strong match exists, read the existing note with obsidian_read_note
  3. Decide: merge into existing note or create new note

Merge when: the existing note covers the same concept and the new source adds information. Create when: no existing note covers this concept, or the angle is sufficiently different.

5. Present Plan

Before creating or modifying any notes, present the plan to the user:

## Ingest Plan for: <source name>

### New Notes
- Engineering/Patterns/<name>.md — <one-line summary>
- Engineering/Traps/<name>.md — <one-line summary>

### Merge Into Existing
- Engineering/Patterns/<existing>.md — adding: <what's new>

### Skipped
- <concept> — already covered in [[existing-note]]

Wait for user confirmation before proceeding.

6. Write Notes

For new notes, use obsidian_create_note with content following VAULT_CONVENTIONS templates:

  • Set type: to pattern, trap, or decision
  • Set project: to the source project or "general"
  • Set tags: from content
  • Set created: to today's date
  • Set provenance: fractions based on inline marker counts
  • Include ## Links section with [[wikilinks]] to related vault notes
  • Add ## Sources section citing the ingested source

For merges, use obsidian_insert_at_heading or obsidian_replace_section to add new content to existing notes. Update the provenance: frontmatter if the mix changed, using obsidian_update_frontmatter.

7. Placement Rules

  • Cross-project patterns/traps/decisions → Engineering/Patterns/, Engineering/Traps/, Engineering/Decisions/
  • Project-specific knowledge → working/<project>/knowledge/
  • If unclear, ask the user

8. Update Manifest

After all notes are written, update .manifest.json:

For each processed source, add/update an entry in sources:

{
  "<source-path>": {
    "ingested_at": "<ISO8601 now>",
    "size_bytes": <file size>,
    "modified_at": "<source file mtime>",
    "source_type": "document",
    "pages_created": ["Engineering/Patterns/foo.md"],
    "pages_updated": ["Engineering/Traps/bar.md"]
  }
}

Update stats.total_sources_ingested and stats.total_pages. Set last_updated to now.

Write the updated manifest back using the Write tool.

9. Suggest MOC Updates

For each new Engineering/ note created, check which thematic MOCs it belongs in. Suggest additions but don't auto-edit MOCs — use /moc-update for that.

Arguments

  • Source path(s): /wiki-ingest ~/Documents/paper.pdf
  • Optional project scope: /wiki-ingest working/appiary/knowledge/auth-notes.md
  • Optional force flag: /wiki-ingest --force <path> to re-ingest unchanged sources

Tips

  • Run /index first if obsidian_rag_query returns poor results
  • For Readwise books, ingest the book's highlight file (e.g., Readwise/Books/<title>.md)
  • Large sources may yield many extractions — review the plan carefully before confirming
  • Provenance fractions don't need to be exact; approximate to the nearest 0.05
Install via CLI
npx skills add https://github.com/thoreinstein/obsidian-rag --skill wiki-ingest
Repository Details
star Stars 3
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator
thoreinstein
thoreinstein Explore all skills →