obsidian-llm-wiki
v1.0.2个人知识库构建系统 — 基于 Karpathy LLM-Wiki 方法论,结合 obsidian-命令行工具 实现高效的 Obsidian vault 管理。 让 AI 持续构建和维护你的 Obsidian 知识库,支持多种素材源(网页、公众号、知乎、YouTube、PDF、本地文件), 自动整理为结构化的 wiki。触发条件:用户明确提到"知识库"、"wiki"、"消化素材"、"健康检查"、"检查知识库"等。 不要在用户只是要求"总结这篇文章"时触发——必须是明确的知识库管理意图。
运行时依赖
安装命令
点击复制技能文档
⚠️ 产品限制
Obsidian 命令行工具 依赖条件:
Obsidian 命令行工具 必须开启:设置 → 关于 → 命令行界面 → 启用 Obsidian 建议最新版(命令行工具 功能需要较新版本支持) vault 必须用 Obsidian 打开过一次(命令行工具 需要 Obsidian 注册过该 vault) 网络:素材提取可能需要网络访问 obsidian-llm-wiki — 个人知识库构建系统
把碎片化信息变成持续积累、互相链接的知识资产。你只需提供素材,AI 完成所有整理工作。
这个 技能 做什么
obsidian-llm-wiki 帮你构建一个持续增长的 Obsidian 知识库:
你给素材(链接、文件、文本),AI 提取核心知识并整理成互相链接的 wiki 页面 知识库随每次使用变得更加丰富,而不是每次重新开始 所有内容都是本地 markdown 文件,用 Obsidian 实时查看 obsidian-命令行工具 驱动所有 vault 操作,绕过文件锁 核心理念
"这不是 RAG。RAG 每次查询都从原始文档重新推导知识。而 wiki 是编译一次,然后持续维护。"
原则 含义 Sources are truth raw/ 是不可变的原始素材,AI 只写 wiki/ Compound, don't duplicate 每次 ingest 与已有页面整合,不是孤立总结 Link liberally 交叉引用是 wiki 长期价值的来源 Surface contradictions 用 > ⚠️ Contradiction with [[source]] 标记矛盾 索引 is the entry point 每次查询从 索引.md 开始 Good answers belong in the wiki 有价值的分析应该进入 wiki MAIntenance cost is near zero AI 不会无聊、不会遗忘、不会失去一致性 素材获取插件推荐
Obsidian 官方和社区有多款插件可将网页内容转为 Markdown:
插件 类型 特点 Obsidian 网页 命令行工具pper 浏览器扩展 官方出品,剪藏网页为 Markdown 简悦 (Obsidian8) Obsidian 插件 高亮、标注、剪藏,生态成熟 Obsidian URL 命令行工具pper Obsidian 插件 可视化选择器精准抓取正文 Defuddle 命令行工具/网页 命令行/网页内容提取
推荐组合:Obsidian 网页 命令行工具pper(浏览器扩展)+ Defuddle(命令行工具 提取工具)配合使用。
目录结构 / ├── raw/ # 原始素材 — 不可变,只读 │ ├── articles/ # 网页文章 │ ├── tweets/ # X/Twitter │ ├── wechat/ # 微信公众号 │ ├── xiaohongshu/ # 小红书 │ ├── zhihu/ # 知乎 │ ├── pdfs/ # PDF 文件 │ └── notes/ # 本地笔记 │ ├── learning/ # 学习相关 │ ├── projects/ # 当前项目 │ └── 测试/ # 测试管理 ├── wiki/ # 知识库 — AI 全权维护 │ ├── sources/ # 素材摘要(每篇素材的摘要页) │ ├── entities/ # 实体页(人物、产品、概念、工具) │ ├── topics/ # 主题页(研究领域、知识体系) │ ├── comparisons/ # 对比分析 │ ├── synthesis/ # 综合报告 │ ├── 索引.md # 知识库总索引 │ └── 记录.md # 操作日志 ├── templates/ # 页面模板(entity/topic/source) └── README.md # 知识库说明
obsidian-命令行工具 工具整合
核心发现:obsidian 创建 ... overwrite 在 Obsidian 关闭时也能工作(直接写 vault 文件),完全绕过文件锁问题。
vault 名称
首次使用需确认 vault 名称(Obsidian 打开时执行 obsidian vaults 查看):
vault=""
核心命令速查 场景 推荐命令 备注 新建/覆盖页面 obsidian vault="..." 创建 path="wiki/path/page.md" content="..." silent overwrite path 支持子目录,name 不支持 / 追加到日志 obsidian vault="..." 应用end path="记录.md" content="..." 直接追加 lint:断链检查 obsidian vault="..." unresolved total / verbose 获取断链列表 lint:孤立页面 obsidian vault="..." orphans total / verbose 没有其他页面链接到它 lint:死链页面 obsidian vault="..." deadends total / verbose 没有出站链接 全文搜索 obsidian vault="..." 搜索 查询="关键词" path="wiki" 精准搜索 查看入站链接 obsidian vault="..." backlinks file="页面名" 分析页面关系 查看出站链接 obsidian vault="..." links file="页面名" 分析页面关系 读取页面内容 obsidian vault="..." read path="wiki/xxx.md" 读取文件 读取模板 obsidian vault="..." template:read name="模板名" 需 Obsidian 打开 文件写入策略(重要更新)
⚠️ 经验教训:obsidian-命令行工具 的 content 参数不适合长内容(>500字),会截断!请务必遵循以下策略。
判断标准 内容长度 推荐方式 原因 短内容(<500字) obsidian 创建 content=xxx 命令行工具 写入,绕过文件锁 长内容(>500字) write_to_file 直接写文件,避免截断 追加日志 obsidian 应用end 适合短日志条目 编辑文件中间部分 replace_in_file 精确替换,避免重复 长内容写入流程 # Step 1: 使用 write_to_file 直接写入完整内容 # Step 2: (可选)验证文件是否完整 obsidian vault="" read path="wiki/path/page.md"
短内容写入流程(Obsidian 打开时) # 短内容可以用 命令行工具 写入 obsidian vault="" 创建 path="wiki/path/page.md" content="简短内容" silent overwrite
# 追加日志 obsidian vault="" 应用end path="记录.md" content="## [2026-04-08] 记录 entry"
⚠️ 命令行工具 写入长内容的风险:如果内容包含代码块(反引号)、特殊字符或超过命令行长度限制,会被截断!宁可多用 write_to_file。
何时用 Python/File工具 vs obsidian-命令行工具 任务 推荐方案 说明 新建/覆盖 wiki 页面(长内容) write_to_file 避免截断风险 新建/覆盖 wiki 页面(短内容) obsidian 创建 Obsidian 打开时用 追加日志 obsidian 应用end 适合短条目 编辑文件中间部分 replace_in_file 精确替换 lint 健康检查 obsidian 命令行工具 内置精准命令 全文搜索 obsidian 搜索 内置搜索 页面关系查询 obsidian backlinks/links 内置命令 文件统计 obsidian files folder 内置命令 临时文件管理
如果处理过程中创建了临时文件(如 temp.md),必须及时删除:
# 处理完成后检查并删除临时文件 rm temp_source.md
模板系统
知识库使用固定格式的模板,保证页面结构一致性。
模板文件位置
技能 自带模板(初始化时复制到 vault):
<技能_dir>/templates/ ├── entity-template.md # 实体页模板 ├── topic-template.md # 主题页模板 └── source-template.md # 素材摘要模板
初始化后,模板位于 vault 的 templates/ 目录: ├── entity-template.md # 实体页模板 ├── topic-template.md # 主题页模板 └── source-template.md # 素材摘要模板
页面格式(5段式)
所有 wiki 页面遵循统一格式:
实体页 / 主题页: ```markdown # 标题
类型描述
概述
- 类型:
- 定位:
关键要点
- 要点1(→ [[来源页面]])
- 要点2
关联
- [[相关实体]] — 关联原因
反面论证与空白
- 暂无已记录的局限或待验证点
来源
- [[素材摘要页]]
素材摘要页:
# 标题
来源:raw/...
日期:YYYY-MM-DD
概述
- 类型:
- 来源:
关键要点
关键概念
关联
- [[相关实体/主题]] — 关联原因
来源
- raw/...
模板使用方式 导入 os
技能_DIR = r"C:\Users\<用户名>\.workbuddy\技能s\obsidian-llm-wiki"
def load_template(vault_root, name): # 优先用 vault 本地模板,否则用 技能 内置模板 local = os.path.join(vault_root, "templates", f"{name}-template.md") 技能_tpl = os.path.join(技能_DIR, "templates", f"{name}-template.md") path = local if os.path.exists(local) else 技能_tpl with open(path, "r", encoding="utf-8") as f: return f.read()
def 创建_entity_page(vault_root, title, page_type