Ingests files, URLs, and images into Obsidian wiki vault by extracting entities/concepts, creating/updating cross-referenced Markdown pages, and logging via manifest. Supports batch and delta tracking.
From claude-obsidiannpx claudepluginhub agricidaniel/claude-obsidian --plugin claude-obsidianThis skill uses the workspace's default tool permissions.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Uses ctx7 CLI to fetch current library docs, manage AI coding skills (install/search/generate), and configure Context7 MCP for AI editors.
Read the source. Write the wiki. Cross-reference everything. A single source typically touches 8-15 wiki pages.
Syntax standard: Write all Obsidian Markdown using proper Obsidian Flavored Markdown. Wikilinks as [[Note Name]], callouts as > [!type] Title, embeds as ![[file]], properties as YAML frontmatter. If kepano/obsidian-skills is installed, its obsidian-markdown skill is the authoritative syntax reference.
Before ingesting any file, check .raw/.manifest.json to avoid re-processing unchanged sources.
# Check if manifest exists
[ -f .raw/.manifest.json ] && echo "exists" || echo "no manifest yet"
Manifest format (create if missing):
{
"sources": {
".raw/articles/article-slug-2026-04-08.md": {
"hash": "abc123",
"ingested_at": "2026-04-08",
"pages_created": ["wiki/sources/article-slug.md", "wiki/entities/Person.md"],
"pages_updated": ["wiki/index.md"]
}
}
}
Before ingesting a file:
md5sum [file] | cut -d' ' -f1 (or sha256sum on Linux)..manifest.json with the same hash.force to re-ingest."After ingesting a file:
{hash, ingested_at, pages_created, pages_updated} in .manifest.json.Skip delta checking if the user says "force ingest" or "re-ingest".
Trigger: user passes a URL starting with https://.
Steps:
defuddle is available (which defuddle 2>/dev/null), run defuddle [url] to strip ads, nav, and clutter. Typically saves 40-60% tokens. Fall back to raw WebFetch output if not installed..raw/articles/[slug]-[YYYY-MM-DD].md with a frontmatter header:
---
source_url: [url]
fetched: [YYYY-MM-DD]
---
.raw/).Trigger: user passes an image file path (.png, .jpg, .jpeg, .gif, .webp, .svg, .avif).
Steps:
.raw/images/[slug]-[YYYY-MM-DD].md:
---
source_type: image
original_file: [original path]
fetched: YYYY-MM-DD
---
# Image: [slug]
[Full description of image contents, transcribed text, entities visible, etc.]
_attachments/images/[slug].[ext] if it's not already in the vault.Use cases: whiteboard photos, screenshots, diagrams, infographics, document scans.
Trigger: user drops a file into .raw/ or pastes content.
Steps:
wiki/sources/. Use the source frontmatter schema from references/frontmatter.md._index.md sub-indexes.wiki/overview.md if the big picture changed.wiki/index.md. Add entries for all new pages.wiki/hot.md with this ingest's context.wiki/log.md (new entries at the TOP):
## [YYYY-MM-DD] ingest | Source Title
- Source: `.raw/articles/filename.md`
- Summary: [[Source Title]]
- Pages created: [[Page 1]], [[Page 2]]
- Pages updated: [[Page 3]], [[Page 4]]
- Key insight: One sentence on what is new.
> [!contradiction] callouts on both pages.Trigger: user drops multiple files or says "ingest all of these."
Steps:
Batch ingest is less interactive. For 30+ sources, expect significant processing time. Check in with the user after every 10 sources.
Token budget matters. Follow these rules during ingest:
wiki/hot.md first. If it contains the relevant context, don't re-read full pages.wiki/index.md to find existing pages before creating new ones./search/simple/) to find specific content without reading full pages.[!note] Custom callout dependency The
[!contradiction]callout type used below is a custom callout defined in.obsidian/snippets/vault-colors.css(auto-installed by/wikiscaffold). It renders with reddish-brown styling and an alert-triangle icon when the snippet is enabled. If the snippet is missing, Obsidian falls back to default callout styling, so the page still works without the visual flourish. See [[skills/wiki/references/css-snippets.md]] for the four custom callouts (contradiction,gap,key-insight,stale).
When new info contradicts an existing wiki page:
On the existing page, add:
> [!contradiction] Conflict with [[New Source]]
> [[Existing Page]] claims X. [[New Source]] says Y.
> Needs resolution. Check dates, context, and primary sources.
On the new source summary, reference it:
> [!contradiction] Contradicts [[Existing Page]]
> This source says Y, but existing wiki says X. See [[Existing Page]] for details.
Do not silently overwrite old claims. Flag and let the user decide.
.raw/. These are immutable source documents.