--- name: obsidian-helper description: | Obsidian 智能笔记助手。当用户提到 obsidian、日记、笔记、知识库、capture、review 时激活。 【激活后必须执行】: 1. 先完整阅读本 SKILL.md 文件 2. 理解 AI 写入三条硬规矩(00_Inbox/AI/、追加式、白名单字段) 3. 按 STEP 0 → STEP 1 → ... 顺序执行 4. 不要跳过任何步骤,不要自作主张 【禁止行为】: - 禁止不读 SKILL.md 就开始工作 - 禁止跳过用户确认步骤 - 禁止在非 00_Inbox/AI/ 位置创建新笔记(除非用户明确指定) version: 1.4.0 author: Claude Code --- # Obsidian Helper - 智能笔记助手 这是一个与 Obsidian MCP 深度整合的智能助手,提供三大核心功能来提升你的笔记效率。 --- ## ⚡ 首次使用必读:自动检测与配置引导 ### 执行任何功能前,Claude 必须先执行 STEP 0 ``` STEP 0: MCP 连接检测(每次会话首次使用时执行) ├─ 尝试调用 obsidian_list_files_in_vault() ├─ 如果成功 → 继续执行用户请求的功能 └─ 如果失败 → 进入【配置引导流程】 ``` ### 配置引导流程(全中文提示) 当 MCP 连接失败时,Claude 必须向用户显示以下引导信息: --- **检测到 Obsidian MCP 未连接,我来帮你配置!** #### 📋 配置步骤 **第一步:安装 Obsidian 插件** 1. 打开 Obsidian → 设置 → 第三方插件 2. 关闭「安全模式」 3. 点击「浏览」,搜索 **Local REST API** 4. 安装并启用该插件 **第二步:获取 API Key** 1. 在 Obsidian 设置中找到 **Local REST API** 插件设置 2. 点击「Copy API Key」复制你的 API Key 3. 记下端口号(默认是 `27124`) **第三步:配置 Claude Code MCP** 在终端运行以下命令,将 `你的API_KEY` 替换为刚才复制的 Key: ```bash # 创建 MCP 配置目录(如果不存在) mkdir -p ~/.claude # 添加 Obsidian MCP 配置 cat >> ~/.claude/mcp.json << 'EOF' { "mcpServers": { "mcp-obsidian": { "command": "npx", "args": ["-y", "mcp-obsidian"], "env": { "OBSIDIAN_API_KEY": "你的API_KEY", "OBSIDIAN_HOST": "https://127.0.0.1:27124" } } } } EOF ``` **或者手动编辑** `~/.claude/mcp.json`: ```json { "mcpServers": { "mcp-obsidian": { "command": "npx", "args": ["-y", "mcp-obsidian"], "env": { "OBSIDIAN_API_KEY": "你的API_KEY", "OBSIDIAN_HOST": "https://127.0.0.1:27124" } } } } ``` **第四步:重启 Claude Code** ```bash # 完全退出 Claude Code,然后重新启动 claude ``` **第五步:验证连接** 重启后,再次输入你想要的命令(如 `/daily`),我会自动验证连接是否成功。 --- #### ❓ 常见问题 | 问题 | 解决方案 | |------|----------| | 插件找不到 | 确保 Obsidian 版本 ≥ 1.0.0 | | 连接被拒绝 | 检查 Obsidian 是否正在运行 | | API Key 无效 | 重新在插件设置中复制 Key | | 端口冲突 | 在插件设置中修改端口,并更新 mcp.json | **需要帮助?** 告诉我你遇到的具体错误信息,我来帮你解决。 --- ### 连接成功后的提示 当 MCP 连接成功时,Claude 应该简短确认: ``` ✅ Obsidian 已连接!检测到你的知识库,现在开始执行 [功能名称]... ``` --- ## 🎯 核心功能概览 | 命令 | 功能 | 使用场景 | |------|------|----------| | `/daily` | 智能日记助手 | 每日开始时,快速启动一天 | | `/capture <主题>` | 知识捕获 | 随时记录想法、笔记 | | `/review [period]` | 周期回顾 | 定期总结复盘 | --- ## 🏗️ 推荐 Vault 结构(PARA + Zettelkasten) ``` Vault/ ├── 00_Inbox/ # 随手记 │ └── AI/ # 【重要】AI 专用落地区 ├── 10_Projects/ # 有截止时间的项目 ├── 20_Areas/ # 长期领域(学习/健康/职业) ├── 30_Resources/ # 资料库 │ └── Products/ # 产品卡片 ├── 40_Zettels/ # 永久笔记(结论/洞见) ├── 90_Archive/ # 归档 ├── 99_System/Templates/ # 模板 └── Daily Notes/ # 日记 ``` ## ⚠️ AI 写入三条硬规矩 **Claude 必须遵守以下规则:** ### 规则 1: AI 专用落地区 ``` 新建笔记默认位置: 00_Inbox/AI/ 用户确认后才移动到其他位置 ``` ### 规则 2: 追加式写入 ``` ✅ 用 obsidian_append_content 追加 ✅ 用 obsidian_patch_content 在指定标题下追加 ❌ 不要重写整篇笔记 ``` ### 规则 3: Properties 白名单 ```yaml # 只允许写这些字段,不能发明新字段 --- type: note | product | project | zettel title: "" tags: [] status: active | done | archived created: {{date}} --- ``` --- ## 📋 功能一:/daily - 智能日记助手 ### 触发条件 - 用户输入 `/daily` - 用户说「开始今天的日记」「今日日记」「daily note」 ### 执行流程 ``` STEP 0: MCP 连接检测(见上方) STEP 1: 获取日记信息 ├─ 尝试 obsidian_get_periodic_note(period: "daily") ├─ 如果失败,使用 obsidian_list_files_in_dir("Daily Notes") 查找今日文件 ├─ 使用 obsidian_get_recent_periodic_notes 或手动获取昨日日记 └─ 检查日记是否已存在 STEP 2: 分析昨日内容 ├─ 读取昨日日记内容 ├─ 提取未完成的 TODO(正则匹配 `- \[ \]`) ├─ 识别重要事项 └─ 生成简要总结 STEP 3: 生成今日日记 ├─ 如果今日日记不存在,创建新日记 ├─ 使用标准模板结构 ├─ 自动填入: │ ├─ 昨日未完成事项 → 今日待办 │ ├─ 日期和星期(中文格式) │ └─ 基础模板结构 └─ 使用 obsidian_append_content 写入 STEP 4: 向用户报告 ├─ 显示日记创建/更新状态 ├─ 列出继承的未完成任务数量 └─ 询问是否需要补充内容 ``` ### 日记模板结构 ```markdown --- date: {{YYYY-MM-DD}} tags: [daily] --- # {{星期}}, {{月}} {{日}}, {{年}} ## 今日重点 > [!tip] Focus > ## 任务 ### 从昨日继承 {{yesterday_incomplete_todos}} ### 必须完成 - [ ] ### 应该完成 - [ ] ### 可以完成 - [ ] ## 今日笔记 ### 上午 ### 下午 ### 晚间 ## 想法与灵感 ## 今日创建的链接 ## 晚间反思 ### 顺利的地方 ### 可以改进的地方 ### 感恩 ``` ### 使用示例 **用户输入**: `/daily` 或 `开始今日日记` **Claude 执行**: 1. 检测 MCP 连接 ✓ 2. 获取今日日记(如 2026-01-19) 3. 获取昨日日记,提取未完成事项 4. 创建/更新今日日记 5. 回复:「✅ 今日日记已创建!从昨日继承了 X 项未完成任务。」 --- ## 📋 功能二:/capture - 快速知识捕获 ### 触发条件 - 用户输入 `/capture <主题>` 或 `/capture <主题> <内容>` - 用户说「记录一下」「捕获」「添加笔记」「capture」 ### 执行流程 ``` STEP 0: MCP 连接检测 STEP 1: 解析用户输入 ├─ 提取主题关键词(第一个词或引号内容) ├─ 提取要记录的内容(主题之后的所有文本) └─ 如果只有主题没有内容,询问用户要记录什么 STEP 2: 搜索现有笔记 ├─ 使用 obsidian_simple_search(query: 主题) 搜索 ├─ 分析搜索结果的相关性 └─ 按相关度排序 STEP 3: 决策与执行 ├─ 情况A:找到高度相关笔记(标题包含主题) │ ├─ 告诉用户:「找到相关笔记《XXX》,是否追加到此笔记?」 │ ├─ 用户确认后,使用 obsidian_patch_content 追加 │ └─ 追加格式:## {{时间戳}} 捕获\n{{内容}} │ ├─ 情况B:找到部分相关笔记 │ ├─ 列出最相关的 3 个笔记 │ ├─ 询问:「选择追加到哪个笔记,或创建新笔记?」 │ └─ 根据用户选择执行 │ └─ 情况C:未找到相关笔记 ├─ 告诉用户:「未找到相关笔记,将创建新笔记」 ├─ 询问存放位置(列出现有文件夹) └─ 使用 obsidian_append_content 创建 STEP 4: 确认完成 └─ 显示:「✅ 已保存到《XXX》」 ``` ### 捕获内容格式 ```markdown ## 2026-01-19 14:30 捕获 {{用户输入的内容}} --- ``` ### 使用示例 **示例 1**: ``` 用户: /capture API设计 RESTful API 应该使用名词而非动词 ``` Claude: 搜索 → 找到「API设计最佳实践.md」→ 询问确认 → 追加内容 **示例 2**: ``` 用户: /capture 新想法 ``` Claude: 「你想记录什么内容?」→ 用户输入 → 搜索 → 处理 --- ## 📋 功能三:/review - 周期回顾生成器 ### 触发条件 - 用户输入 `/review` 或 `/review weekly` 或 `/review monthly` - 用户说「周回顾」「月度总结」「复盘」「review」 ### 执行流程 ``` STEP 0: MCP 连接检测 STEP 1: 确定回顾周期 ├─ 解析参数:daily / weekly(默认)/ monthly └─ 计算时间范围 STEP 2: 收集数据 ├─ 获取周期内的日记文件 │ ├─ 尝试 obsidian_get_recent_periodic_notes │ └─ 备选:obsidian_list_files_in_dir + 日期过滤 ├─ 使用 obsidian_batch_get_file_contents 批量读取 ├─ 使用 obsidian_get_recent_changes 获取活跃文件 └─ 提取所有相关内容 STEP 3: 分析内容 ├─ 统计任务完成情况 │ ├─ 已完成:匹配 `- \[x\]` │ └─ 未完成:匹配 `- \[ \]` ├─ 提取重要事件和成就 ├─ 识别高频主题词 ├─ 发现知识关联 └─ 生成洞察 STEP 4: 生成报告 ├─ 使用对应周期的模板 ├─ 填充统计数据 ├─ 添加分析内容 ├─ 保存到 Daily Notes/ 文件夹 │ ├─ 周报:YYYY-WXX 周回顾.md │ └─ 月报:YYYY-MM 月度回顾.md └─ 使用 obsidian_append_content 写入 STEP 5: 展示结果 ├─ 显示回顾摘要 ├─ 列出关键数据 └─ 询问是否需要修改或补充 ``` ### 周回顾模板 ```markdown # {{年}}-W{{周}} 周回顾 | {{日期范围}} ## 📊 数据概览 | 指标 | 数值 | |------|------| | 📝 笔记数量 | {{count}} | | ✅ 完成任务 | {{completed}} | | ⏳ 未完成任务 | {{incomplete}} | | 📂 活跃文件 | {{active}} | ## 🏆 本周成就 {{achievements}} ## 📋 任务总结 ### ✅ 已完成 {{completed_list}} ### ⏳ 待继续 {{incomplete_list}} ## 💡 关键洞察 {{insights}} ## 🔗 知识连接 本周涉及的主要主题:{{themes}} ## 🎯 下周重点 1. 2. 3. ## 📝 反思 ### 做得好的地方 ### 可以改进的地方 --- *生成时间: {{timestamp}}* ``` --- ## 🔧 配置选项 用户可以在 Obsidian 库中创建 `_config/obsidian-helper.md` 自定义配置: ```markdown # Obsidian Helper 配置 ## 日记设置 - 日记文件夹: Daily Notes/ - 日记格式: YYYY-MM-DD - 周回顾格式: YYYY-[W]ww ## 捕获设置 - 默认捕获文件夹: Resources/ - 自动添加时间戳: true ## 回顾设置 - 默认回顾周期: weekly - 回顾保存位置: Daily Notes/ ``` Claude 在执行功能前,应检查是否存在此配置文件并读取设置。 --- ## 🛠️ 技术实现 ### 依赖的 MCP 工具 | 工具 | 用途 | 必需 | |------|------|------| | `obsidian_list_files_in_vault` | 检测连接、列出库结构 | ✅ | | `obsidian_list_files_in_dir` | 列出目录文件 | ✅ | | `obsidian_get_file_contents` | 读取文件内容 | ✅ | | `obsidian_batch_get_file_contents` | 批量读取 | ✅ | | `obsidian_simple_search` | 文本搜索 | ✅ | | `obsidian_append_content` | 创建/追加内容 | ✅ | | `obsidian_patch_content` | 精确编辑 | ⚪ | | `obsidian_get_periodic_note` | 获取周期笔记 | ⚪ | | `obsidian_get_recent_periodic_notes` | 最近周期笔记 | ⚪ | | `obsidian_get_recent_changes` | 最近修改 | ⚪ | ### 错误处理策略 | 错误类型 | 处理方式 | |----------|----------| | MCP 未连接 | 显示完整配置引导(见上方) | | 文件不存在 | 自动创建 | | API 不可用 | 使用备选方法(如直接文件操作) | | 搜索无结果 | 提示创建新笔记 | --- ## 📚 快速参考 ``` /daily → 启动今日日记,继承昨日未完成 /capture <主题> → 快速捕获到相关笔记 /capture <主题> <内容> → 捕获指定内容 /review → 生成周回顾(默认) /review daily → 生成日回顾 /review weekly → 生成周回顾 /review monthly → 生成月回顾 ``` --- ## 🆘 帮助命令 当用户输入以下内容时,显示帮助信息: - `obsidian help` - `obsidian 帮助` - `/daily help` - `怎么用 obsidian helper` 显示内容: ``` 📖 Obsidian Helper 使用指南 🗓️ /daily - 智能日记 自动创建今日日记,继承昨日未完成任务 📝 /capture <主题> [内容] - 知识捕获 快速记录想法到相关笔记 示例:/capture API设计 REST要用名词 📊 /review [weekly|monthly] - 周期回顾 自动分析笔记,生成回顾报告 ⚙️ 配置问题? 输入「配置 obsidian」查看 MCP 配置指南 ``` --- *Obsidian Helper v1.1.0 - 让笔记更智能*