--- name: openakita/skills@obsidian-skills description: Manage Obsidian vaults with full support for Obsidian Flavored Markdown — wikilinks, embeds, callouts, YAML properties, Dataview queries, Canvas, and Bases. Organize notes using MOCs (Maps of Content), atomic note principles, and consistent folder/tag taxonomies. Always ask the user where to save before creating notes. license: MIT metadata: author: openakita version: "1.0.0" upstream: kepano/obsidian-skills --- # Obsidian 笔记管理技能 帮助用户在 Obsidian 知识库中创建、组织和管理笔记,遵循 Obsidian Flavored Markdown(OFM)规范和知识管理最佳实践。 --- ## 核心原则 1. **创建笔记前必须询问保存位置** — 永远不要自行假设路径,先确认用户的 Vault 结构和目标文件夹。 2. **遵循 Obsidian Flavored Markdown** — 使用 wikilinks、嵌入、callouts 等 OFM 专有语法。 3. **原子笔记** — 每条笔记聚焦一个概念,通过链接建立知识网络。 4. **元数据驱动** — 使用 YAML frontmatter properties 保证笔记可被检索和查询。 --- ## Obsidian Flavored Markdown 语法参考 ### Wikilinks(内部链接) Obsidian 使用 `[[]]` 语法进行内部链接,这是与标准 Markdown 最重要的区别。 ```markdown [[笔记名称]] # 链接到同名笔记 [[笔记名称|显示文本]] # 自定义显示文本 [[笔记名称#标题]] # 链接到特定标题 [[笔记名称#^block-id]] # 链接到特定块 [[笔记名称#标题|显示文本]] # 标题链接 + 自定义文本 ``` **最佳实践:** - 笔记名称应具有描述性且唯一,避免使用特殊字符 `[ ] # ^ | \` - 优先使用笔记全名链接而非路径链接,Obsidian 会自动解析 - 使用别名(alias)而不是 `|显示文本` 来处理频繁使用的缩写 ### 嵌入(Embeds) 使用 `![[]]` 语法将其他笔记或资源直接嵌入当前笔记。 ```markdown ![[笔记名称]] # 嵌入整篇笔记 ![[笔记名称#标题]] # 嵌入特定章节 ![[笔记名称#^block-id]] # 嵌入特定块 ![[图片.png]] # 嵌入图片 ![[图片.png|300]] # 指定宽度 ![[音频.mp3]] # 嵌入音频 ![[视频.mp4]] # 嵌入视频 ![[文档.pdf]] # 嵌入 PDF ![[文档.pdf#page=3]] # 嵌入 PDF 特定页 ``` ### Callouts(提示框) 基于 Markdown blockquote 语法扩展,用于高亮重要信息。 ```markdown > [!note] 标题 > 笔记内容 > [!tip] 提示 > 有用的建议 > [!warning] 警告 > 需要注意的事项 > [!important] 重要 > 关键信息 > [!info] 信息 > 补充说明 > [!question] 问题 > 需要进一步探讨的问题 > [!example] 示例 > 具体的例子 > [!abstract] 摘要 > 概述或总结 > [!todo] 待办 > 需要完成的任务 > [!quote] 引用 > 引用来源文字 ``` **折叠 Callout:** ```markdown > [!tip]- 点击展开 # 默认折叠 > 隐藏内容 > [!tip]+ 点击折叠 # 默认展开 > 可折叠内容 ``` **嵌套 Callout:** ```markdown > [!note] 外层 > 外层内容 >> [!tip] 内层 >> 内层内容 ``` ### 标签(Tags) ```markdown #标签名 # 行内标签 #父标签/子标签 # 嵌套标签 ``` 在 frontmatter 中声明标签: ```yaml tags: - 项目管理 - 知识管理/PKM ``` ### 注释 ```markdown %%这是 Obsidian 注释,不会在预览模式中显示%% %% 多行注释 也是可以的 %% ``` ### 数学公式 ```markdown 行内公式:$E = mc^2$ 块级公式: $$ \int_0^\infty e^{-x^2} dx = \frac{\sqrt{\pi}}{2} $$ ``` ### Mermaid 图表 ````markdown ```mermaid graph TD A[开始] --> B{判断} B -->|是| C[执行] B -->|否| D[结束] ``` ```` --- ## YAML Frontmatter Properties 每条笔记应以 YAML frontmatter 开头,定义结构化元数据。 ### 标准属性 ```yaml --- title: 笔记标题 aliases: - 别名1 - 别名2 tags: - 标签1 - 父标签/子标签 date: 2026-03-01 created: 2026-03-01T10:30:00 modified: 2026-03-01T14:20:00 author: 作者名 status: draft | in-progress | reviewed | published type: note | moc | reference | project | daily cssclasses: - custom-class publish: true --- ``` ### 自定义属性(面向 Dataview) 根据笔记类型添加自定义字段,供 Dataview 查询使用: ```yaml --- # 读书笔记 book_title: "深度工作" book_author: "Cal Newport" rating: 4 started: 2026-01-15 finished: 2026-02-20 category: 生产力 --- ``` ```yaml --- # 项目笔记 project: OpenAkita priority: high deadline: 2026-06-30 stakeholders: - Alice - Bob --- ``` ```yaml --- # 会议笔记 meeting_type: standup | review | planning participants: - 张三 - 李四 decisions: - 决策内容 action_items: - "[ ] 待办事项" --- ``` ### 属性类型 Obsidian 支持以下 property 类型: - **Text**: 普通文本 - **List**: 数组值 - **Number**: 数值 - **Checkbox**: `true`/`false` - **Date**: `YYYY-MM-DD` - **Date & time**: `YYYY-MM-DDTHH:mm:ss` - **Aliases**: 别名列表(内置) - **Tags**: 标签列表(内置) --- ## 文件夹结构与命名规范 ### 推荐的 Vault 结构 ``` MyVault/ ├── 00 - Inbox/ # 快速捕获,待整理 ├── 01 - Projects/ # 活跃项目 │ ├── ProjectA/ │ └── ProjectB/ ├── 02 - Areas/ # 持续关注的领域 │ ├── 健康/ │ ├── 财务/ │ └── 职业发展/ ├── 03 - Resources/ # 参考资料 │ ├── 读书笔记/ │ ├── 文章剪藏/ │ └── 课程笔记/ ├── 04 - Archive/ # 已完成/不活跃 ├── 05 - Templates/ # 模板 ├── 06 - Daily Notes/ # 日记 ├── 07 - MOCs/ # Maps of Content ├── Attachments/ # 附件(图片、PDF 等) └── Canvas/ # Canvas 文件 ``` ### 文件命名规范 | 类型 | 命名格式 | 示例 | |------|---------|------| | 普通笔记 | 描述性名称 | `原子笔记方法论.md` | | 日记 | `YYYY-MM-DD` | `2026-03-01.md` | | 会议笔记 | `YYYY-MM-DD 会议主题` | `2026-03-01 产品评审会.md` | | MOC | `MOC - 主题` | `MOC - 知识管理.md` | | 模板 | `Template - 类型` | `Template - 读书笔记.md` | | 项目主页 | `项目名 - Home` | `OpenAkita - Home.md` | **命名原则:** - 避免特殊字符:`/ \ : * ? " < > |` - 使用空格而非下划线(Obsidian 对空格友好) - 名称应具有自描述性,无需借助文件夹路径理解含义 --- ## MOC(Maps of Content) MOC 是连接相关笔记的导航枢纽,起到"目录"和"思维地图"的作用。 ### MOC 模板 ```markdown --- title: MOC - 知识管理 type: moc tags: - MOC - 知识管理 date: 2026-03-01 --- # 知识管理 > [!abstract] 概述 > 关于个人知识管理(PKM)的核心概念、方法论和工具。 ## 核心概念 - [[卡片盒笔记法]] - [[原子笔记]] - [[渐进式总结]] - [[常青笔记]] ## 方法论 - [[PARA 方法]] - [[Zettelkasten 方法]] - [[Building a Second Brain]] - [[CODE 方法]] ## 工具与实践 - [[Obsidian 使用技巧]] - [[Dataview 查询食谱]] - [[模板系统设计]] ## 相关 MOC - [[MOC - 生产力]] - [[MOC - 学习方法]] - [[MOC - 写作]] ``` ### MOC 最佳实践 1. **层级结构** — MOC 可以嵌套,顶层 MOC 链接子主题 MOC 2. **动态更新** — 新建笔记后检查是否需要加入相关 MOC 3. **分类灵活** — 同一笔记可出现在多个 MOC 中 4. **简要注释** — 每个链接可附加一行说明,解释与当前主题的关系 --- ## Dataview 兼容性 确保笔记的 frontmatter 属性与 Dataview 查询兼容。 ### 常用 Dataview 查询模式 **表格查询:** ````markdown ```dataview TABLE rating, book_author, finished FROM "03 - Resources/读书笔记" WHERE rating >= 4 SORT finished DESC ``` ```` **列表查询:** ````markdown ```dataview LIST FROM #项目管理 AND -"04 - Archive" WHERE status = "in-progress" SORT priority ASC ``` ```` **任务查询:** ````markdown ```dataview TASK FROM "01 - Projects" WHERE !completed GROUP BY file.link ``` ```` **行内查询:** ```markdown 今天是 `= date(today)`,本库共有 `= length(file.lists)` 条列表项。 ``` ### Dataview 友好的属性设计 - 使用英文属性名(中文属性名在某些查询中可能出问题) - 日期使用 `YYYY-MM-DD` 格式 - 布尔值使用 `true`/`false` - 列表属性使用 YAML 数组语法 --- ## Canvas 支持 Obsidian Canvas 是可视化组织笔记关系的画布工具。 ### Canvas 文件格式 Canvas 文件为 `.canvas` 后缀的 JSON 文件,包含节点(nodes)和边(edges)。 ```json { "nodes": [ { "id": "node1", "type": "text", "text": "核心概念", "x": 0, "y": 0, "width": 250, "height": 60 }, { "id": "node2", "type": "file", "file": "03 - Resources/原子笔记.md", "x": 300, "y": 0, "width": 250, "height": 60 } ], "edges": [ { "id": "edge1", "fromNode": "node1", "toNode": "node2", "label": "包含" } ] } ``` ### Canvas 节点类型 | 类型 | 说明 | 关键属性 | |------|------|---------| | `text` | 纯文本卡片 | `text` | | `file` | 链接到 Vault 中的文件 | `file` | | `link` | 嵌入网页 | `url` | | `group` | 分组容器 | `label` | ### 创建 Canvas 时的注意事项 - 节点坐标以画布中心为原点 - 建议节点宽度 200–400px - 使用 `group` 节点对相关卡片分组 - 边可以包含 `label` 描述关系 --- ## Bases 支持 Obsidian Bases 是 Obsidian 1.8+ 引入的内置数据库视图功能。 ### Bases 概述 - Bases 文件以 `.base` 为后缀,存储在 Vault 中 - 自动从笔记的 frontmatter properties 提取结构化数据 - 支持表格视图、筛选、排序、分组 - 无需 Dataview 插件即可实现结构化查询 ### 创建 Bases 时的建议 1. **统一属性** — 同一类型的笔记使用相同的 frontmatter 属性集 2. **属性类型** — 在 Obsidian 设置中预定义属性类型,确保数据一致性 3. **筛选条件** — 使用文件夹或标签限定数据来源 4. **视图配置** — 选择合适的列、排序和分组方式 --- ## 笔记模板 ### 日记模板 ```markdown --- title: "{{date:YYYY-MM-DD}}" type: daily date: {{date:YYYY-MM-DD}} tags: - daily --- # {{date:YYYY-MM-DD dddd}} ## 今日计划 - [ ] ## 笔记与想法 ## 今日回顾 ### 完成了什么 ### 明天的重点 ``` ### 读书笔记模板 ```markdown --- title: "{{title}}" type: reference book_title: "" book_author: "" category: "" rating: started: {{date:YYYY-MM-DD}} finished: status: in-progress tags: - 读书笔记 --- # {{title}} > [!info] 书籍信息 > - **作者**: > - **出版年份**: > - **ISBN**: ## 核心观点 ## 章节笔记 ### 第一章 ## 关键引用 > ## 我的思考 ## 行动项 - [ ] ## 相关笔记 - [[]] ``` ### 项目笔记模板 ```markdown --- title: "{{title}}" type: project project: "" status: active priority: medium deadline: stakeholders: [] tags: - 项目 --- # {{title}} > [!abstract] 项目概述 > ## 目标 ## 里程碑 | 里程碑 | 截止日期 | 状态 | |--------|---------|------| | | | 🔴 | ## 任务 - [ ] ## 会议记录 - [[]] ## 参考资料 - [[]] ## 复盘笔记 ``` --- ## 工作流程 ### 创建笔记的标准流程 1. **询问保存位置** — 始终先确认用户期望的文件夹路径 2. **选择或创建模板** — 根据笔记类型使用对应模板 3. **填写 frontmatter** — 确保所有必需属性完整 4. **编写内容** — 使用 OFM 语法 5. **建立链接** — 添加 wikilinks 连接相关笔记 6. **更新 MOC** — 如有对应 MOC,将新笔记加入其中 ### 整理 Inbox 的流程 1. 浏览 `00 - Inbox/` 中的笔记 2. 为每条笔记添加或完善 frontmatter 3. 移动到合适的文件夹 4. 建立与现有笔记的链接 5. 更新相关 MOC ### 重构知识库 1. 识别孤立笔记(无入链和出链) 2. 合并重复概念 3. 拆分过长的笔记为原子笔记 4. 更新失效链接 5. 归档不活跃内容到 `04 - Archive/` --- ## 注意事项 - **不要自行决定保存路径** — 永远先问用户 - **保持笔记原子性** — 一条笔记一个核心概念 - **优先使用 wikilinks** — 而非标准 Markdown 链接 - **YAML frontmatter 必须是文件第一行** — 前面不能有空行 - **属性名使用英文** — 确保 Dataview 和 Bases 兼容 - **图片等附件放在专用文件夹** — 如 `Attachments/` - **定期维护链接** — 重命名笔记后检查链接是否自动更新 - **备份 Vault** — 建议使用 Git 或 Obsidian Sync