Borrowing it
Nothing to install: this file belongs to levi-qiao/obsidian-llm-wiki. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/levi-qiao/obsidian-llm-wiki/main/.claude/skills/ingest/SKILL.mdgit clone --depth 1 https://github.com/levi-qiao/obsidian-llm-wikiWrote 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.
[](https://agentmods.dev/skills/levi-qiao/obsidian-llm-wiki/ingest)<a href="https://agentmods.dev/skills/levi-qiao/obsidian-llm-wiki/ingest"><img src="https://agentmods.dev/badge/skills/levi-qiao/obsidian-llm-wiki/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.
<a href="https://agentmods.dev/skills/levi-qiao/obsidian-llm-wiki/ingest"><img src="https://agentmods.dev/badge/skills/levi-qiao/obsidian-llm-wiki/ingest.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00114 | $0.03419 |
| Opus 5.5 | $0.00046 | $0.01368 |
| Sonnet 5.5 | $0.00023 | $0.00684 |
| Haiku 4.5 | $0.00011 | $0.00342 |
Grade A, and why
ingest scanned grade A with 0 findings 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 1mo 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.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 327 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Ingest 技能
核心目标
你正在维护一个 LLM Wiki(Obsidian 知识库)。raw/ 目录是"待处理收件箱",wiki/ 是"编译输出层"。本技能负责将原始资料编译到知识库中,并自动归档。
目录结构
raw/— 用户自定义的分类结构(可动态调整)raw/09-archive/— 已处理文件的归档目录,禁止读取(固定,写死)wiki/concepts/— 概念(框架、方法论、理论)wiki/entities/— 实体(人物、公司、工具、产品)wiki/sources/— 资料摘要wiki/syntheses/— 综合研究报告
触发条件
- 用户执行
/ingest— 扫描raw/所有子目录(排除09-archive/),找出待处理文件 - 用户执行
/ingest <path>— 仅处理指定文件 - 隐式触发 — 用户说"把这个资料摄入知识库"、"导入这篇文章"时,自动执行
工作流程
前置检查:扫描待处理文件
关键准则:
- 使用 Glob 扫描
raw/**/*.{md,pdf,txt}(自动排除raw/09-archive/) - 读取
raw/.processed.json,识别已处理的文件 - 为每个待处理文件创建处理清单,确保不遗漏任何文件
- 按文件名字母顺序处理,便于追踪进度
处理清单示例:
📋 待处理文件清单:
- [ ] raw/01-articles/文件A.md (ID: file-a)
- [ ] raw/01-articles/文件B.md (ID: file-b)
- [ ] raw/02-papers/文件C.pdf (ID: file-c)
重要:在开始处理前,向用户展示这个清单,让用户确认要处理的文件列表。
对每个待处理源文件,严格按以下步骤执行:
步骤 1:读取源文件
- 如果是
.md文件:使用 Read 工具完整读取内容 - 如果是
.pdf文件:使用 Read 工具尝试提取文本。如果无法提取或内容为空,改为记录文件元信息(文件名、页数) - 检查点 ✓:确认文件内容已完整读取,记录文件路径和字数
步骤 2:内容分析与 ID 生成
生成稳定 ID:
- 从文件名提取(去除扩展名和路径)
- 转换为 kebab-case
- 示例:
raw/01-articles/Attention Is All You Need.md→ ID:attention-is-all-you-need - 检查点 ✓:确认 ID 已生成,且在
.processed.json中不存在(避免重复处理)
从源文件中提取:
- 核心主旨 — 这段资料讲什么(1-2句话)
- 实体 — 人物、公司、工具、产品等具体名词(列出所有实体)
- 概念 — 框架、方法论、理论等抽象名词(列出所有概念)
- 关键标签 — 3-5个细粒度标签(优先复用 index.md 标签云中的现有标签)
如果是非中文内容,则翻译成中文。
检查点 ✓:确认已提取实体列表、概念列表、标签列表
步骤 3:知识网络化(动态 Top-K)
读取总索引:
Read wiki/index.md
智能定位候选页面:
- 用步骤 2 提取的实体、概念、标签作为关键词
- 在 index.md 中匹配相关页面(不限数量)
- 按相关性排序,动态决定更新数量:
- 简单博客/短文(< 1000 字):2-5 个页面
- 技术文章/论文(1000-5000 字):5-15 个页面
- 书籍章节/长文(> 5000 字):15-30 个页面
- 如果需要更新超过 20 个页面 → 询问用户是否批量处理
只读取 Top-K 页面的内容(避免全量扫描)
对于步骤 2 提取的每个实体和概念:
目标目录:
- 实体 →
wiki/entities/ - 概念 →
wiki/concepts/
处理逻辑:
- 页面不存在 → 按照 CLAUDE.md 的 Frontmatter 规范创建新页面
- 页面已存在 → 读取现有内容,增量合并新信息
- 发现冲突 → 根据冲突类型处理:
- 时间性冲突(旧版本 vs 新版本)→ 直接更新,在页面中标注
## 历史版本 - 观点性冲突(A 说法 vs B 说法)→ 在页面中新建
## 知识冲突区块 - 复杂冲突(无法判断)→ 在
wiki/_conflicts/创建冲突文件,暂停并询问用户
- 时间性冲突(旧版本 vs 新版本)→ 直接更新,在页面中标注
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.
- 1mo ago First seen · 327 lines · 114 tokens per session scan A 6327395b4ad4
ingest is a skill published in the GitHub repository levi-qiao/obsidian-llm-wiki (10 stars, last pushed 2mo ago), licensed MIT. It adds 114 tokens to every session and 3,419 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
kb-index
Update Knowledge Base indexes. Smart mode detects changes and updates only what's needed. Full rebuild available with --full flag. Use after adding/moving documents or when indexes feel stale.
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…
ingest
A tool for adding a URL, file, text, or Inbox item to the LLM Wiki. It checks the material's purpose, preserves the original source, compiles a wiki page, updates indexes and logs, and reviews the result.
wiki-ingest
Ingest a file from /brain/raw/ into the wiki. Extract key concepts and entities, create or update pages in /brain/wiki/pages/, add cross-references, append to log.md. Use when the user says "/wiki-ingest", "ingest raw/...", or drops a file in raw/ and asks to process it.
wiki-save
Persist a synthesized answer (from /brain-query, /wiki-query, or mid-conversation) as a new wiki page at /brain/wiki/pages/. Writes frontmatter (title, lastupdated, tags), requires at least one cross-reference, updates index.md, appends to log.md, and embeds the new page into brainwiki. Use when the user says…
knap
Render Markdown from templates and structured data using Knap CLI. Use when the user asks to apply a Knap template, turn JSON or CSV data into notes, batch-generate Markdown files, or format Defuddle output into a note.