obsidian-ingest

obsidian-ingest is a skill for Claude Code, Codex from isorensen/lox-brain. It costs 40 tokens per session (2,537 once invoked), scanned A, original, MIT.

A workflow for adding web pages, files, images, and text to an Obsidian vault, a folder of linked personal notes.

In plain words
What is it for?
It helps ingest source material and organize it into notes, meeting notes, fleeting notes, tags, clippings, and attachments using the vault's configured structure.
Why use it?
It reduces manual copying, filing, and duplicate-note decisions when collecting information for the vault.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: mentions Claude Code.

Good fit It helps ingest source material and organize it into notes, meeting notes, fleeting notes, tags, clippings, and attachments using the vault's configured structure.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/isorensen/lox-brain/obsidian-ingest
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add isorensen/lox-brain --skill obsidian-ingest
Clone the repo
git clone --depth 1 https://github.com/isorensen/lox-brain

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for obsidian-ingest

README.md
[![agentmods](https://agentmods.dev/badge/skills/isorensen/lox-brain/obsidian-ingest/github.svg)](https://agentmods.dev/skills/isorensen/lox-brain/obsidian-ingest)
Your own site
<a href="https://agentmods.dev/skills/isorensen/lox-brain/obsidian-ingest"><img src="https://agentmods.dev/badge/skills/isorensen/lox-brain/obsidian-ingest/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for obsidian-ingest

Your own site · 80×15
<a href="https://agentmods.dev/skills/isorensen/lox-brain/obsidian-ingest"><img src="https://agentmods.dev/badge/skills/isorensen/lox-brain/obsidian-ingest.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 40 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,537 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00040 $0.02537
Opus 5 $0.00020 $0.01269
Sonnet 5 $0.00008 $0.00507
Haiku 4.5 $0.00004 $0.00254

Measured 12d ago against content hash ffaac584af87, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-12, from the pricing page.

Security

Grade A, and why

obsidian-ingest scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Runs shell commandslowCapability

Expected in a hook, worth knowing in a rule or an instructions file.

result = subprocess.run(['python3', '-c',
skills/obsidian-ingest/SKILL.md · 240 lines

How it starts

The opening of the file, as written. The whole thing — 240 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Obsidian Ingest — Knowledge Base Pipeline

Configuration

This skill reads your Lox configuration from ~/.lox/config.json:

  • vault.preset: determines folder structure (zettelkasten or para)
  • vault.local_path: path to your Obsidian vault (default: ~/Obsidian/Lox)

The skill adapts folder routing based on your preset. See the folder mapping table below.

Folder Mapping by Preset

Folder role zettelkasten para
Atomic notes 6 - Atomic Notes/ 4 - Resources/Notes/
Source material 2 - Source Material/ 4 - Resources/Sources/
Meeting notes 7 - Meeting Notes/ 2 - Projects/Meetings/
Fleeting notes 1 - Fleeting Notes/ 1 - Inbox/
Tags (MOCs) 3 - Tags/ 4 - Resources/Tags/
Attachments attachments/ attachments/
Clippings Clippings/ 1 - Inbox/Clippings/

Vault Access

The primary interface is the lox-brain MCP server, which already knows the vault path and provides safe read/write/search operations. Use MCP tools for everything except binary files (images, PDFs).

MCP Tools (primary)

Tool Use for
mcp__lox-brain__write_note Write/overwrite a note. Pass file_path (relative, e.g. 6 - Atomic Notes/My Note.md) and content with the full formatted note. Do NOT pass tags — the vault uses inline tags, not YAML frontmatter.
mcp__lox-brain__search_semantic Check for duplicates before creating notes (superior to text search)
mcp__lox-brain__search_text Find existing tags, specific terms, or exact matches
mcp__lox-brain__read_note Read an existing note's content
mcp__lox-brain__list_recent See recently modified notes for context

Filesystem (fallback only)

Use direct filesystem access (read vault.local_path from ~/.lox/config.json) only for:

  • Copying binary files (images, PDFs) to attachments/
  • Listing directory contents when MCP doesn't cover it
  • Bulk operations where MCP would be too slow

Read the full file on GitHub · 240 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 12d ago First seen · 240 lines · 40 tokens per session scan A ffaac584af87

Subscribe to this mod's changes

obsidian-ingest is a skill published in the GitHub repository isorensen/lox-brain (2 stars, last pushed 5d ago), licensed MIT. It adds 40 tokens to every session and 2,537 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

setup-vault-types

Use when configuring which document types a vault tracks: after installing ai-brain-starter, when a new kind of note appears (journals, books, meetings, clients, podcasts, travel, WhatsApp/Slack/iMessage exports), when extraction skips files because no extractor matches their type, or to add, list, or remove a custom…

mycelium-hq/ai-brain-starter · 114 tokens

ingest-health

Use when the user says /ingest-health, asks to import, sync, ingest, or load Apple Health / Apple Watch / HealthKit data, has a fresh export.zip from the iPhone Health app, a Simple Health Export CSV folder, or a Health Auto Export TCP live feed, or when health-mcp queries return empty because no data was ever…

mycelium-hq/ai-brain-starter · 107 tokens

wiki-ingest

File a new source into the LLM Wiki — create its Sources page, append a log entry, apply the proposed cross-reference edits. Use when the user says "ingest this", "file this source", "add this to the wiki", drops a URL/PDF/clipped article, or pastes notes they want captured. Never auto-applies cross-refs without…

bezata/kObsidian · 82 tokens

granola-sync

Pull fresh meetings from Granola (summaries, transcripts, participants) into an Obsidian vault over the official API. Incremental and idempotent by note id and updatedat, so re-runs make no duplicates. Triggers: "/granola-sync", "pull granola", "refresh meetings".

tonydzi/second-brain-starter-kit · 67 tokens

query

Interactive knowledge assistant via Telegram. Can read, create, and modify documents. Destructive actions require user approval.

Yrzhe/pagefly · 24 tokens

google-workspace

Gmail, Calendar, Drive, Contacts, Sheets, and Docs — through Hermes-managed OAuth and a thin CLI wrapper. When gws is installed, the skill uses it as the execution backend for broader Google Workspace coverage; otherwise it falls back to the bundled Python client implementation.

AtlasOmnia/hermes-custom-pack · 24 tokens