Obsidian 集成:自动保存计划到笔记库
学完你能做什么
- 自动将批准或拒绝的计划保存到 Obsidian vault
- 理解 frontmatter 和标签的生成机制
- 自定义保存路径和文件夹
- 利用 backlink 构建知识图谱
你现在的困境
你在 Plannotator 中评审 AI 生成的计划,批准后这些计划就"消失"了。你希望把这些有价值的计划保存到 Obsidian,方便后续回顾和查找,但手动复制粘贴太麻烦,而且格式会乱。
什么时候用这一招
- 你使用 Obsidian 作为知识管理工具
- 你希望长期保存和回顾 AI 生成的实施计划
- 你想利用 Obsidian 的 graph view 和标签系统组织计划
核心思路
Plannotator 的 Obsidian 集成功能会在你批准或拒绝计划时,自动将计划内容保存到你的 Obsidian vault。系统会:
- 检测 vaults:自动从 Obsidian 配置文件读取所有 vault
- 生成 frontmatter:包含创建时间、来源和标签
- 提取标签:从计划标题和代码块语言自动提取标签
- 添加 backlink:插入
[[Plannotator Plans]]链接,方便构建知识图谱
什么是 Obsidian?
Obsidian 是一款本地优先的双向链接笔记应用,支持 Markdown 格式,可通过图视图可视化笔记之间的关系。
🎒 开始前的准备
确保已安装并配置好 Obsidian。Plannotator 会自动检测系统中的 vaults,但你至少需要有一个 vault 才能使用此功能。
跟我做
第 1 步:打开设置面板
在 Plannotator 界面中,点击右上角的齿轮图标打开设置面板。
你应该看到设置对话框,包含多个配置选项。
第 2 步:启用 Obsidian 集成
在设置面板中找到"Obsidian Integration"部分,点击开关启用该功能。
启用后,Plannotator 会自动检测系统中的 Obsidian vaults。
你应该看到下拉菜单中列出检测到的 vaults(例如 My Vault、Work Notes)。
第 3 步:选择 vault 和文件夹
从下拉菜单中选择你希望保存计划的 vault。如果没有检测到 vault,可以:
- 选择"Custom path..."选项
- 在文本框中输入 vault 的完整路径
然后在"Folder"字段中设置保存文件夹的名称(默认为 plannotator)。
你应该看到下方的预览路径,显示计划将保存的位置。
第 4 步:批准或拒绝计划
配置完成后,正常评审 AI 生成的计划。当你点击"Approve"或"Send Feedback"时,计划会自动保存到配置的 vault 中。
你应该在 Obsidian 中看到新创建的文件,文件名格式为 Title - Jan 2, 2026 2-30pm.md。
第 5 步:查看保存的文件
在 Obsidian 中打开保存的文件,你会看到以下内容:
---
created: 2026-01-24T14:30:00.000Z
source: plannotator
tags: [plan, authentication, typescript, sql]
---
[[Plannotator Plans]]
## Implementation Plan: User Authentication
...你应该注意到文件顶部有 YAML frontmatter,包含创建时间、来源和标签。
检查点 ✅
- [ ] 设置面板中 Obsidian Integration 已启用
- [ ] 已选择 vault(或输入了自定义路径)
- [ ] 已设置文件夹名称
- [ ] 批准或拒绝计划后,Obsidian 中出现新文件
- [ ] 文件包含 frontmatter 和
[[Plannotator Plans]]backlink
Frontmatter 和标签详解
Frontmatter 结构
每个保存的计划都包含以下 frontmatter 字段:
| 字段 | 值示例 | 说明 |
|---|---|---|
created | 2026-01-24T14:30:00.000Z | ISO 8601 格式的创建时间戳 |
source | plannotator | 固定值,标识来源 |
tags | [plan, authentication, typescript] | 自动提取的标签数组 |
标签生成规则
Plannotator 使用以下规则自动提取标签:
- 默认标签:总是包含
plannotator标签 - 项目名标签:从 git 仓库名或目录名自动提取
- 标题关键词:从第一个 H1 标题中提取有意义的词(排除常见停用词)
- 代码语言标签:从代码块的语言标识符提取(例如
typescript、sql)。通用配置语言(如json、yaml、markdown)会被自动过滤。
停用词列表(不会作为标签):
the,and,for,with,this,that,from,intoplan,implementation,overview,phase,step,steps
标签数量限制:最多 7 个标签,按提取顺序排列。
文件名格式
文件名采用可读性强的格式:Title - Jan 2, 2026 2-30pm.md
| 部分 | 示例 | 说明 |
|---|---|---|
| 标题 | User Authentication | 从 H1 提取,限制 50 字符 |
| 日期 | Jan 2, 2026 | 当前日期 |
| 时间 | 2-30pm | 当前时间(12 小时制) |
Backlink 机制
每个计划文件底部都会插入 [[Plannotator Plans]] 链接。这个 backlink 的作用:
- 知识图谱连接:在 Obsidian 的 graph view 中,所有计划都与同一个节点连接
- 快速导航:点击
[[Plannotator Plans]]可以创建一个索引页面,汇总所有保存的计划 - 双向链接:在索引页面中使用反向链接查看所有计划
跨平台支持
Plannotator 自动检测不同操作系统的 Obsidian 配置文件位置:
| 操作系统 | 配置文件路径 |
|---|---|
| macOS | ~/Library/Application Support/obsidian/obsidian.json |
| Windows | %APPDATA%\obsidian/obsidian.json |
| Linux | ~/.config/obsidian/obsidian.json |
如果自动检测失败,可以手动输入 vault 路径。
踩坑提醒
问题 1:检测不到 vaults
症状:下拉菜单显示"Detecting..."但没有结果
原因:Obsidian 配置文件不存在或格式错误
解决方案:
- 确认 Obsidian 已安装并至少打开过一次
- 检查配置文件是否存在(参考上表路径)
- 使用"Custom path..."手动输入 vault 路径
问题 2:保存后找不到文件
症状:批准计划后,Obsidian 中没有新文件
原因:vault 路径错误或 Obsidian 未刷新
解决方案:
- 检查设置面板中的预览路径是否正确
- 在 Obsidian 中点击"Reload vault"或按
Cmd+R(macOS)/Ctrl+R(Windows/Linux) - 检查是否选择了正确的 vault
问题 3:文件名包含特殊字符
症状:文件名中出现 _ 或其他替换字符
原因:标题包含文件系统不支持的字符(< > : " / \ | ? *)
解决方案:这是预期行为,Plannotator 会自动替换这些字符以避免文件系统错误。
本课小结
Obsidian 集成功能让你的计划评审流程与知识管理无缝连接:
- ✅ 自动保存批准或拒绝的计划
- ✅ 智能提取标签,方便后续检索
- ✅ 生成 frontmatter,统一元数据格式
- ✅ 添加 backlink,构建知识图谱
配置一次后,每次评审都会自动归档,不再需要手动复制粘贴。
下一课预告
下一课我们学习 Bear 集成。
你会学到:
- 如何将计划保存到 Bear 笔记应用
- Bear 集成与 Obsidian 集成的区别
- 使用 x-callback-url 自动创建笔记
附录:源码参考
点击展开查看源码位置
更新时间:2026-01-24
| 功能 | 文件路径 | 行号 |
|---|---|---|
| 检测 Obsidian vaults | packages/server/integrations.ts | 135-175 |
| 保存计划到 Obsidian | packages/server/integrations.ts | 180-227 |
| 提取标签 | packages/server/integrations.ts | 34-74 |
| 生成 frontmatter | packages/server/integrations.ts | 81-89 |
| 生成文件名 | packages/server/integrations.ts | 111-127 |
| Obsidian 设置存储 | packages/ui/utils/obsidian.ts | 36-43 |
| Settings UI 组件 | packages/ui/components/Settings.tsx | 387-491 |
关键函数:
detectObsidianVaults():读取 Obsidian 配置文件,返回可用的 vault 路径列表saveToObsidian(config):将计划保存到指定 vault,包含 frontmatter 和 backlinkextractTags(markdown):从计划内容提取标签(标题关键词、代码语言、项目名)generateFrontmatter(tags):生成 YAML frontmatter 字符串generateFilename(markdown):生成可读的文件名
业务规则:
- 标签数量最多 7 个(L73)
- 文件名限制 50 字符(L102)
- 支持跨平台配置文件路径检测(L141-149)
- 自动创建不存在的文件夹(L208)