Analyze external written content (articles, Substacks, blog posts, essays) and integrate into the vault's knowledge network. Creates richly linked article notes, concept notes, and framework notes. Use when the user says 'ingest article', 'process article', 'add this article', 'ingest substack', 'process blog post', or 'ingest essay'.
!obsidian search query="categories: Articles" vault="{{VAULT_NAME}}" limit=20 2>/dev/null || echo "(Could not search articles)"
Analyze the content at $ARGUMENTS. Create an article note plus any warranted concept or framework notes. Present an integration plan before making any vault changes.
Parse $ARGUMENTS to determine input type and acquire the content:
URL (starts with http:// or https://):
defuddle parse "$ARGUMENTS" --md to extract clean markdown contentdefuddle parse "$ARGUMENTS" -p titledefuddle parse "$ARGUMENTS" -p domainWebFetchVault note (no URL prefix):
obsidian read file="$ARGUMENTS" vault="{{VAULT_NAME}}"obsidian read path="$ARGUMENTS" vault="{{VAULT_NAME}}"obsidian search query="$ARGUMENTS" vault="{{VAULT_NAME}}"File path (contains / but not http):
Extract metadata from the content: title, author, source URL (if applicable), and source-type. Infer source-type from context:
substackarticleblog-postsubstack-notearticleRead the full content and extract everything with potential integration value:
1. Core concepts — key ideas, frameworks, mental models presented
2. Practical insights — actionable takeaways, techniques, methods
3. Frameworks — structured models for thinking about a topic
4. Author context — who wrote this and why it matters
5. Cross-references — connections to existing vault notes
mcp__qmd__query with vec sub-queries to find semantic connections6. Developmental observations — how this content relates to the user's current projects or interests
Not every category will yield results. Flag empty categories without making it feel like a failure.
Structure the plan with checkbox items for user approval:
## Integration Plan: [Article Title]
### Context
Author: [name] | Source: [URL] | Type: [source-type]
Relevance: [1-2 sentence summary of why this matters]
### Article Note
- [ ] **[Title]** -> References/ | categories: [[Articles]] | areas: [appropriate] | author: "[name]" | source-url: "[url]" | source-type: "[type]"
### Concept Notes (X items)
- [ ] **[Concept]** -> Notes/ | categories: [[Evergreen]] | [New or update [[existing note]]]
[Brief description of the concept and its relevance]
### Framework Updates (X items)
- [ ] **[Framework]** -> Update [[existing note]] or new note in Notes/
### Cross-Links (X items)
- [ ] **[[Note A]]** <-> **[[Note B]]** | [Rationale for connection]
### Author Note
- [ ] **[Author name]** -> References/ | categories: [[People]] | [New or update existing]
Pause here. Ask the user which items to execute, modify, or skip. Wait for their input before proceeding.
For each approved item:
References/ with full Article template frontmatter (categories: ["[[Articles]]"], author, source-url, source-type, areas, tags, created). Fill Summary, Key Concepts, Quotes, and Related Notes sections.Notes/ with categories: ["[[Evergreen]]"]. Minimum 3 outgoing wikilinks.References/ with categories: ["[[People]]"] — check for existing author note first to avoid duplicates.Follow the proactive linking checklist throughout: frontmatter, areas, project links, related notes, category verification.
Commit all changes:
cd "{{VAULT_PATH}}"
git add <specific files>
git commit -m "Ingest article: [Article Title]"
git push
author, source-url, source-type in article frontmatterReturn to the main conversation: