vault-ingest
Skill1 starsChanged 7 months agoMITView on GitHub
Autonomously ingest any content into an Obsidian-style knowledge graph vault. Accepts URLs, pasted text, uploaded files (.md, .txt, .pdf, .html, .docx). Outputs entry notes, atomic concept notes, and MOC updates written directly into the vault. Use this skill when the user says "ingest this", "add to vault", "add to knowledge graph", "capture this", "save this article", "save this to my second brain", "process this into my vault", "add this to obsidian", or pastes a URL/article text and asks to save, capture, or process it, or uploads a document and asks to add it to their knowledge graph.
4 other projects use a version of this.
Adopted by
Most recently taken up by
- Yassinekrn/claude-setuptheir own version, first seen Nov 1, 2026
- Lucioway/way-stacktheir own version, first seen Aug 31, 2026
- 2233admin/obsidian-vault-bridgetheir own version, first seen Apr 8, 2026
- pass-agent/loomkintheir own version, first seen Apr 3, 2026
Other versions4 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 4
- pass-agent/loomkin★ 179same name
- Yassinekrn/claude-setup★ 2same name
- 2233admin/obsidian-vault-bridge★ 0same name
- Lucioway/way-stack★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository5 other files it gives its agents.
- company-researchSkill
- investigate-signup-spikeSkill
- meta-chainSkill
- mobile-app-builderSkill
- website-builderSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
33 rules. 0 are common, 20 are distinctive, and 13 are very specific to this project.
0
Common
Most of the 4 edited versions we read keep these.
20
Distinctive
This author's own choices. Worth a look.
13
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 28
Ask how they want it processed:
- Distinctive: line 36
Ask what they want to add:
- Distinctive: line 46
Create a new vault in the current working directory
- Very specific: line 60
Search for an existing vault index: Look for _vault_index.json in the working directory and common locations.
- Distinctive: line 62
If found: Read it. Proceed to Step 2.
- Very specific: line 76
Create the initial _vault_index.json:
- Distinctive: line 90
Create empty MOC files with headers:
- Distinctive: line 95
Read a few existing files to understand conventions (folder names, frontmatter fields, link style, naming patterns)
- Very specific: line 97
Create _vault_index.json for state tracking
- Distinctive: line 123
If the vault is new or the vocabulary is empty, start building it organically.
- Very specific: line 124
Use lowercase, hyphenated tags (e.g., #product-design, #behavioral-economics).
- Distinctive: line 125
Add new tags ONLY if no existing tag fits.
- Distinctive: line 130
Use Title Case for new concepts.
- Distinctive: line 131
Prefer specific over generic (e.g., "Baader-Meinhof Effect" not "Psychology Bias").
- Very specific: line 140
Read last_entry_number from _vault_index.json
- Very specific: line 143
If the vault uses a different naming convention (check entry_prefix field), match it
- Very specific: line 220
Sanitize filenames: Remove characters: < > : " / \ | ?
- Distinctive: line 227
Read the existing concept file
- Very specific: line 228
Add the new entry to ## Appears in
- Very specific: line 229
Add the entry ID to the entries: frontmatter list
- Distinctive: line 230
Do NOT duplicate entries that are already listed
- Very specific: line 245
Add [[{prefix}-{ID}]] under "Entries:"
- Distinctive: line 246
Add any new concepts under "Concepts:"
- Very specific: line 255
Add new entries to existing_entries
- Very specific: line 256
Add new concepts to existing_concepts (and increment concept_count)
- Very specific: line 257
Add any new tags to existing_tags
- Distinctive: line 268
If a new vault was bootstrapped, briefly explain the folder structure
- Distinctive: line 274
ASK FIRST: Always clarify what the user wants before starting work.
- Distinctive: line 275
FACTUAL ONLY: Never add, interpret, or hallucinate content.
- Distinctive: line 276
REUSE BEFORE CREATING: Always check existing concepts and tags before making new ones.
- Distinctive: line 277
KEEP THE AUTHOR'S VOICE: When extracting thoughts, use the source's own words and phrasing.
- Distinctive: line 278
ONE CONCEPT = ONE FILE: Never merge multiple concepts into one note.
- Distinctive: line 281
RESPECT EXISTING VAULTS: If the user has an existing Obsidian vault with different conventions, adapt to their structure rather than …
“Common” is measured: kept by at least 6 in 10 of the 4 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Vault Ingest -- Obsidian Knowledge Graph Builder
Autonomously ingest any content into an Obsidian-style knowledge graph vault.
Accepts: URLs, pasted text, uploaded files (.md, .txt, .pdf, .html, .docx) Outputs: Entry notes, atomic concept notes, MOC updates -- written directly into the vault.
Step 0: Clarify the ingestion request
Before doing any work, ask the user what they need. Adapt based on what they already provided.
If the user provided content (URL, text, file):
Ask how they want it processed:
- Quick capture -- extract key thoughts and links, auto-tag
- Deep capture -- extract thoughts, links, and create detailed concept notes with related connections
- Bulk mode -- multiple sources, process them all sequentially
- Custom -- user picks the tags and concepts themselves
If the user said "ingest" or "capture" but gave no content:
Ask what they want to add:
- A URL / web article
- Text / notes (pasted or typed)
- A file (.md, .txt, .pdf, .docx)
- An original idea or thought
- Multiple sources (batch)
If no vault exists yet (no _vault_index.json found):
Ask first:
- Create a new vault in the current working directory
- Let the user specify a folder
- Point to an existing Obsidian vault
Then continue with the content question.
If the user chose "Custom":
Present extracted thoughts, suggested tags, and suggested concepts before writing any files. Let them approve, modify, or reject each.
Step 1: Detect or bootstrap the vault
- Search for an existing vault index. Look for
_vault_index.jsonin the working directory and common locations. This file tracks vault state: last entry number, existing concepts, tags, folder paths. - If found: Read it. Proceed to Step 2.
- If NOT found and user chose to create a new vault: Bootstrap the vault structure:
{vault_root}/
entries/ -- one .md file per ingested source
concepts/ -- one .md file per concept (atomic notes)
MOC-Entries.md -- hub linking all entries
MOC-Tags.md -- hub grouping concepts by category tag
_vault_index.jsonCreate the initial _vault_index.json:
{
"vault_path": "{absolute path}",
"last_entry_number": 0,
"entry_count": 0,
"concept_count": 0,
"existing_tags": [],
"existing_concepts": [],
"existing_entries": [],
"entry_prefix": "Entry"
}Create empty MOC files with headers:
MOC-Entries.md:# Map of Content -- EntriesMOC-Tags.md:# Map of Content -- Tags
- If user pointed to an existing Obsidian vault:
- Read a few existing files to understand conventions (folder names, frontmatter fields, link style, naming patterns)
- Adapt output format to match their conventions instead of imposing this template
- Create
_vault_index.jsonfor state tracking - Confirm the adapted structure with the user before writing
Step 2: Extract source content
| Input | Action |
| URL | Fetch the page content. Extract: title, date, main text, links. Strip nav/ads/boilerplate. |
| Pasted text | Use directly. Ask for a title if not obvious from the content. |
| Uploaded file | Read it. For PDFs, extract text (use the pdf skill if available). For .docx, use the docx skill if available. For .md/.txt/.html, read directly. |
| Multiple sources | Process each as a separate entry with sequential IDs. |
Step 3: Analyze and tag
Extract thoughts / key ideas
- Break the content into 2-5 distinct ideas or takeaways.
- Each thought should be a self-contained insight.
- Keep the author's original voice and words where possible.
- FACTUAL ONLY. Never add, interpret, editorialize, or hallucinate. Only extract what is explicitly stated.
Assign category tags
- Pick 1-3 tags per thought from the vault's existing tag vocabulary (from
_vault_index.json). - If the vault is new or the vocabulary is empty, start building it organically.
- Use lowercase, hyphenated tags (e.g.,
#product-design,#behavioral-economics). - Add new tags ONLY if no existing tag fits. Reuse aggressively to build graph density.
Extract concepts
- Identify 2-5 concepts per thought.
- Check
existing_conceptsfrom the index first. Reuse exact names to link to existing nodes. This is critical for graph connectivity. - Use Title Case for new concepts.
- Prefer specific over generic (e.g., "Baader-Meinhof Effect" not "Psychology Bias").
Extract links
- Any URLs mentioned in or related to the content, with descriptive text.
Step 4: Determine entry ID
- Read
last_entry_numberfrom_vault_index.json - New entry ID =
last_entry_number + 1 - For multiple sources, increment sequentially
- If the vault uses a different naming convention (check
entry_prefixfield), match it
Step 5: Write entry file
Write to {vault_path}/entries/{prefix}-{ID}.md:
---
entry: {ID}
title: "{title}"
date: {YYYY-MM-DD}
source_type: {article|book-note|podcast-note|video-note|idea|newsletter|tweet-thread}
source_url: "{url if applicable}"
tags: [{comma-separated tags}]
concepts:
- "{Concept 1}"
- "{Concept 2}"
---
# {prefix} {ID}
**{title}** | {date}
## Thoughts
### [{ID}.a]
#{tag1} #{tag2} [[Concept 1]] [[Concept 2]]
{Thought text -- factual, author's voice preserved.}
### [{ID}.b]
#{tag1} #{tag2} [[Concept 3]] [[Concept 4]]
{Second thought.}
## Links
- [{link text}]({url}) | #{tag} [[Concept]]
## Source
{source_type}: [{title}]({url}) (accessed {date})
---
Previous: [[{prefix}-{prev}]] | Next: [[{prefix}-{next}]]
[[MOC-Entries]] | [[MOC-Tags]]Step 6: Write concept files (NEW concepts only)
For each concept NOT already in existing_concepts, write to {vault_path}/concepts/{Concept Name}.md:
---
type: concept
tags: [{relevant tags}]
entries: [{entry ID}]
---
# {Concept Name}
## Appears in
- [[{prefix}-{ID}]] (thought {a/b/etc})
## Related
- [[{Co-occurring concept from same entry}]]
---
[[MOC-Tags]] | [[MOC-Entries]]Sanitize filenames: Remove characters: < > : " / \ | ? *
Step 7: Update EXISTING concept files
For concepts already in the vault that appear in the new content:
- Read the existing concept file
- Add the new entry to
## Appears in - Add the entry ID to the
entries:frontmatter list - Do NOT duplicate entries that are already listed
Step 8: Append to MOC files
MOC-Entries.md -- append:
### [[{prefix}-{ID}]] | {date}
{First 80 chars of first thought}...
Concepts: [[Concept 1]], [[Concept 2]], ...MOC-Tags.md -- for each tag used:
- Find the
## #{tag}section (create it if this is a new tag) - Add
[[{prefix}-{ID}]]under "Entries:" - Add any new concepts under "Concepts:"
Step 9: Update vault index
Update _vault_index.json:
- Set
last_entry_numberto the new highest ID - Increment
entry_count - Add new entries to
existing_entries - Add new concepts to
existing_concepts(and incrementconcept_count) - Add any new tags to
existing_tags
Step 10: Confirm to user
Report back:
- Entry ID and title created
- Number of new concepts added vs. existing concepts linked
- Which tags were used (new vs. reused)
- Sample
[[wikilinks]]showing connections to existing vault content - If a new vault was bootstrapped, briefly explain the folder structure
Rules
- ASK FIRST. Always clarify what the user wants before starting work.
- FACTUAL ONLY. Never add, interpret, or hallucinate content. Only extract what is explicitly in the source.
- REUSE BEFORE CREATING. Always check existing concepts and tags before making new ones. Graph density comes from reuse.
- KEEP THE AUTHOR'S VOICE. When extracting thoughts, use the source's own words and phrasing.
- ONE CONCEPT = ONE FILE. Never merge multiple concepts into one note.
- BIDIRECTIONAL LINKING. Entry files link to concepts via
[[wikilinks]]. Concept files link back to entries. MOCs link to both. - IDEMPOTENT. Running the skill twice on the same source must not create duplicates. Check
existing_entriesfor the source URL or title before writing. - RESPECT EXISTING VAULTS. If the user has an existing Obsidian vault with different conventions, adapt to their structure rather than imposing this template.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

