1. 项目概述:为你的AI助手装上Obsidian的“手”
如果你和我一样,是个重度Obsidian用户,同时又对AI辅助工作流充满好奇,那你肯定遇到过这样的场景:你让Claude或Codex帮你整理笔记、生成大纲,结果它给你吐出来一堆标准的Markdown,你回头还得手动把双链链接[[ ]]、属性key:: value、甚至是Canvas画布的JSON结构给补上。这个过程就像让一个顶级厨师只负责切菜,炒菜还得你自己来,效率大打折扣。
kepano/obsidian-skills这个项目,就是为了解决这个“最后一公里”的问题。它本质上是一套标准化的“技能包”,专门用来教会那些支持Agent Skills规范的AI助手(比如Claude Code、Codex CLI、OpenCode等)如何以“原生”的方式理解和操作Obsidian。想象一下,你的AI助手不再只是一个文本生成器,而是变成了一个真正懂你知识库结构的“数字园丁”,它能直接创建带有正确语法的双链笔记,能帮你搭建Bases视图,甚至能生成复杂的JSON Canvas文件。
这套技能遵循了开放的 Agent Skills规范 ,这意味着它不是一个封闭的黑盒。它的设计哲学是“一次编写,多处运行”。你为Claude Code编写的技能,理论上也能被其他任何兼容此规范的AI代理使用。这为我们构建一个统一、可移植的AI-知识库交互层提供了可能。对于开发者、内容创作者和知识管理者来说,这意味着我们可以将重复性的、格式化的Obsidian操作任务,放心地交给AI去完成,而我们自己则可以专注于更高层次的思考与创造。
2. 核心技能包深度解析
这套技能包目前包含了四个核心技能,每一个都针对Obsidian生态中一个特定的、高频的使用场景。理解每个技能能做什么、不能做什么,是高效利用它们的前提。
2.1 obsidian-markdown:不止于标准Markdown
这是最基础,也最常用的技能。它的目标不是生成普通的Markdown,而是生成“Obsidian风味Markdown”。这中间有巨大的差别。
- 双链与嵌入:这是Obsidian的灵魂。
obsidian-markdown技能确保AI生成的链接是[[目标笔记]]这样的wiki链接格式,而不是普通的[链接文本](目标笔记.md)。它还能生成正确的嵌入语法![[目标笔记]]或![[目标笔记#特定标题]]。AI在整理知识图谱时,可以自动为相关的概念建立链接,这比事后手动补链要高效得多。 - 属性(Properties):Obsidian的属性系统是元数据管理的核心。该技能让AI能够以正确的YAML前置元数据格式或行内属性格式来添加属性。例如,当你让AI总结一篇论文时,它可以自动为生成的笔记添加
tags:: [论文, 机器学习]、author:: John Doe、publish-date:: 2023-10-01等属性,便于后续用Dataview或Bases进行筛选和查询。 - 标注块(Callouts):在笔记中高亮提示、警告、摘要等信息时,标注块比简单的加粗或引用更清晰。该技能让AI能够生成如
> [!info] 关键点或> [!warning] 注意这样的语法,使生成的笔记结构更友好。 - 其他Obsidian语法:包括脚注、高亮、注释等。AI在整理资料时,可以恰当地使用
==高亮==来标记重点,或者用%%注释%%来添加不显示的备注。
实操心得:不要指望AI一开始就能完美地使用所有语法。最好的方式是先给它一个“范例”。你可以在对话中先提供一小段包含你常用语法的Obsidian笔记样本,告诉AI:“请参考以下格式和语法来生成内容。” 这样AI技能才能发挥出最佳效果。
2.2 obsidian-bases:让AI成为你的数据看板助手
Obsidian Bases是近年来一个革命性的功能,它允许用户以类似数据库的视图(表格、看板、日历等)来组织和呈现笔记。然而,编写Bases的查询和视图配置有一定学习成本。obsidian-bases技能的出现,极大地降低了这个门槛。
- 视图创建:你可以用自然语言描述你想要的数据看板。例如,告诉AI:“为我
Projects文件夹下的所有笔记创建一个表格视图,显示status(状态)、priority(优先级)和due-date(截止日期)三列,并按截止日期排序。” AI利用该技能可以生成对应的.base文件内容。 - 过滤器(Filters)与公式:这是Bases强大的核心。你可以让AI编写复杂的过滤条件,比如“筛选出所有
status为进行中且priority为高的笔记”。或者,让AI帮你写一个计算字段的公式,例如“创建一个新列剩余天数,其值为due-date减去今天”。 - 摘要与分组:让AI自动为你的视图添加摘要行,如计算任务总数、按状态分组计数等。
这个技能的价值在于,它将结构化的数据操作从“编写查询语言”变成了“描述需求”。对于项目管理、研究跟踪、内容规划等场景,你可以快速让AI搭建出初始的数据视图框架,然后再进行微调。
2.3 json-canvas:可视化思维的AI协作者
Obsidian Canvas是一个无限画布工具,适合用于头脑风暴、绘制关系图、项目规划。但其底层是JSON文件(.canvas格式),手动编辑非常繁琐。json-canvas技能让AI能够直接生成或修改Canvas文件。
- 节点(Nodes)创建:AI可以根据你的描述,在画布上创建文本节点、链接节点(指向内部或外部笔记)、文件节点、图片节点等,并为其设置初始位置、大小和内容。
- 连接线(Edges)绘制:这是体现思维关联的关键。AI可以在你指定的节点之间建立连接线,你甚至可以描述连接线的标签和样式。
- 群组(Groups)管理:让AI将一系列相关的节点自动放入一个群组中,并设置群组标题和颜色,使画布结构更清晰。
想象一下这个工作流:你正在研究一个复杂课题,有几十篇相关的文献笔记。你可以让AI:“读取Literature文件夹下的所有笔记,提取它们的标题和核心标签,然后在Canvas上为每篇笔记创建一个文本节点,并根据标签相似性用连接线将它们链接起来,相同标签的节点用群组框起来。” 几分钟内,一个可视化的知识关联图就诞生了。
2.4 obsidian-cli 与 defuddle:效率工具组合
这两个技能偏向于开发和高级工作流,但同样威力巨大。
- obsidian-cli:这个技能封装了Obsidian官方的命令行接口。这意味着AI可以帮你执行一些自动化操作,例如:
- 插件与主题开发:在开发模式下,让AI运行
obsidian plugin dev命令来启动热重载服务器。 - 仓库操作:执行
obsidian vault相关的命令来管理仓库。 - 自动化脚本:结合其他脚本,实现定时备份、批量修改笔记属性等复杂操作。AI可以为你编写这些脚本的框架。
- 插件与主题开发:在开发模式下,让AI运行
- defuddle:这是一个独立的工具技能,用于网页内容提取。它的核心价值是“节省Token”。当你让AI阅读一个网页并总结时,如果直接喂给它完整的HTML,会消耗大量宝贵的上下文Token(尤其是对于长文章)。Defuddle的作用是先对网页进行“净化”,剔除导航栏、广告、侧边栏等无关内容,只提取核心的正文文本,并将其转换为干净的Markdown。这样再交给AI处理,效率更高,成本更低。你可以让AI:“用Defuddle处理这个URL,然后提取核心观点为我生成一个Obsidian笔记草稿。”
3. 安装与配置全指南
官方提供了几种安装方式,选择哪一种取决于你主要使用的AI代理平台。下面我会详细拆解每一步,并补充一些官方文档可能没提到的细节和避坑点。
3.1 通过插件市场安装(适用于OpenCode等)
这是最“傻瓜式”的安装方法,前提是你的AI代理平台提供了类似的插件或技能市场。
/plugin marketplace add kepano/obsidian-skills /plugin install obsidian@obsidian-skills操作解析:
add命令是将这个技能仓库添加到你的市场源中。这就像在手机应用商店里搜索一个应用。install命令是实际安装指定名称和版本的技能包。这里的obsidian@obsidian-skills很可能是一个唯一的包标识符。
注意事项:这种方式高度依赖于平台的支持。目前看来,这可能是OpenCode这类较新平台的首选方式。在执行前,最好先在你的AI代理环境中运行
help或marketplace命令,确认其插件管理系统的具体语法。
3.2 使用npx skills命令行工具
这是跨平台、比较通用的一种方式,尤其适合喜欢在终端里操作的用户。
npx skills add git@github.com:kepano/obsidian-skills.git操作解析:
npx是Node.js的包执行器,它允许你直接运行托管在npm仓库里的工具,而无需先全局安装。这保证了你能总是使用最新版本的skills工具。skills add是这个工具的一个子命令,专门用于添加技能。- 后面的Git仓库地址指明了技能的来源。
实操步骤与可能的问题:
- 环境准备:确保你的系统已经安装了Node.js(版本建议在16以上)。可以在终端输入
node -v和npm -v来检查。 - 执行安装:直接在终端粘贴上述命令并回车。
npx会自动下载skills工具,并用它来克隆指定的Git仓库到本地一个标准化的技能目录(通常是~/.skills或类似路径)。 - 权限问题:如果你使用SSH地址(
git@...)且没有配置好GitHub的SSH密钥,可能会失败。此时可以尝试使用HTTPS地址:npx skills add https://github.com/kepano/obsidian-skills.git。 - 安装后:工具通常会自动将技能路径配置到你的AI代理环境中。如果不生效,你可能需要手动检查AI代理的配置文件(如
~/.codex/config.json),看看skillsPath或类似配置项是否包含了新添加的技能目录。
3.3 手动安装:针对不同AI代理的定制化操作
手动安装提供了最大的灵活性,也让你更清楚技能文件到底放在了哪里。
3.3.1 针对Claude Code
Claude Code期望技能存放在一个特定的.claude目录中。
- 定位你的Obsidian仓库根目录。打开Obsidian,进入你的目标仓库。
- 在仓库根目录下创建
.claude文件夹。注意,在大多数文件系统中,以点开头的文件夹是隐藏的。你可以在终端使用mkdir .claude命令,或在文件管理器中开启显示隐藏文件选项。 - 获取技能文件:你需要将
kepano/obsidian-skills这个Git仓库里所有内容复制到刚刚创建的/.claude文件夹里。最简单的方法是克隆整个仓库:
或者,如果你已经克隆到别处,就复制整个文件夹过来。# 假设你的仓库路径是 /Users/YourName/Documents/MyVault cd /Users/YourName/Documents/MyVault git clone https://github.com/kepano/obsidian-skills.git .claude - 验证:完成后,你的目录结构应该类似于:
/MyVault/.claude/skills/obsidian-markdown/SKILL.md。
核心要点:Claude Code的技能是按仓库(Vault)配置的。这意味着你在不同的Obsidian仓库中,可以拥有不同的技能集。这对于管理多个不同性质的项目非常有用。
3.3.2 针对Codex CLI
Codex CLI通常使用一个全局的技能目录。
- 找到Codex的技能目录。默认路径通常是
~/.codex/skills(在用户主目录下)。你可以在终端输入ls -la ~/.codex/来确认这个文件夹是否存在。 - 复制技能文件夹:这次不需要复制整个Git仓库,只需要复制仓库里的
skills/目录下的内容。你需要将obsidian-skills/skills/这个文件夹,复制到~/.codex/skills/目录下。# 假设你将obsidian-skills克隆到了 ~/Downloads 目录 cp -r ~/Downloads/obsidian-skills/skills/* ~/.codex/skills/ - 验证:完成后,路径应类似于:
~/.codex/skills/obsidian-markdown/SKILL.md。重启你的Codex CLI,技能就应该可用了。
3.3.3 针对OpenCode
OpenCode的机制很简洁,它支持自动发现技能。
- 找到OpenCode技能目录:通常是
~/.opencode/skills/。 - 克隆整个仓库:注意,这里的要求是克隆整个仓库到技能目录下,而不是只复制
skills/子文件夹。这是为了保持Git仓库的完整性,方便后续更新。
执行后,目录结构应为:git clone https://github.com/kepano/obsidian-skills.git ~/.opencode/skills/obsidian-skills~/.opencode/skills/obsidian-skills/(包含.git文件夹),其下才是skills/obsidian-markdown/SKILL.md。 - 自动发现:OpenCode会递归扫描
~/.opencode/skills/目录下的所有SKILL.md文件。无需修改任何配置文件。 - 重启生效:重启OpenCode应用或服务,新技能就会被加载。
避坑指南:手动安装时最常见的错误就是目录结构不对。务必对照上文检查最终
SKILL.md文件的路径。另一个常见问题是权限,确保你的AI代理进程有权限读取你放置技能的目录。
4. 实战应用:构建你的AI增强型知识工作流
安装好技能只是第一步,如何将它们融入日常的工作流,才是释放其价值的关键。下面我结合几个具体场景,展示如何给AI下“指令”。
4.1 场景一:每日阅读摘要与知识入库
目标:快速处理每天阅读的3-5篇文章,提取核心观点,并以结构化的方式存入Obsidian。
传统做法:复制文章内容到Obsidian -> 手动格式化 -> 提炼要点 -> 手动添加标签、链接到相关笔记。
AI增强工作流:
- 内容提取:将文章链接扔给AI,并附上指令:“请使用defuddle技能处理以下文章链接,提取纯净的Markdown正文。”
- 摘要与结构化:继续指令:“基于提取的正文,为我撰写一份Obsidian笔记。要求如下:
- 标题为文章核心论点。
- 在YAML区域添加属性:
source-url:: [链接],tags:: [主题1, 主题2],read-date:: {{date:YYYY-MM-DD}}。 - 笔记正文先用一个
> [!summary] 摘要标注块总结全文核心(200字内)。 - 然后分点列出3-5个关键论据或发现,使用
- [ ]任务列表格式,方便我后续深入思考。 - 最后,添加一个
## 关联想法章节,根据内容推测可能与我的哪些现有笔记相关(列出笔记标题即可,用[[ ]]双链格式)。”
- 执行与微调:AI会调用
obsidian-markdown技能,生成一份格式完美的草稿。你只需要快速浏览,调整一下标签的准确性,确认双链是否合理,然后保存。整个过程从“阅读-处理-归档”可能只需要5-10分钟。
4.2 场景二:项目管理看板自动化更新
目标:管理一个包含数十个任务的项目,每个任务是一个Obsidian笔记,有status、priority、due-date等属性。
传统做法:手动打开每个任务笔记更新状态 -> 打开Bases视图查看整体进展。
AI增强工作流:
- 周会同步:在周会结束后,直接告诉AI:“根据以下会议记录更新我的项目任务状态:
- 任务‘设计用户界面’已完成,将其
status属性改为‘已完成’,并添加属性completed-date:: {{date:YYYY-MM-DD}}。 - 任务‘编写API文档’遇到阻碍,将其
status改为‘阻塞’,priority改为‘高’,并在笔记末尾添加一个> [!warning] 阻塞原因标注块,内容为‘等待后端接口定稿’。 - 新建一个任务笔记,标题为‘进行用户测试’,属性为
status:: 待办,priority:: 中,due-date:: 2023-12-15,assignee:: 我。”
- 任务‘设计用户界面’已完成,将其
- 视图生成:你可以进一步指令:“基于我
Projects/Active文件夹下的所有笔记,使用obsidian-bases技能生成一个新的Bases文件(.base),要求包含一个表格视图,显示title(标题)、status、priority、due-date、assignee列,并按priority(高>中>低)和due-date(升序)排序。再生成一个看板视图,按status分组。” AI会生成对应的.base文件代码,你只需创建一个新文件,粘贴进去即可。 - 状态报告:甚至可以每周让AI自动分析:“统计当前所有任务中,
status为‘进行中’且due-date在未来7天内的任务数量,并列出它们的标题。” AI可以通过查询属性来快速给出答案。
4.3 场景三:研究课题的可视化图谱构建
目标:对一个新领域进行调研,快速建立核心概念、关键人物、重要文献之间的关系图。
AI增强工作流:
- 收集种子:先手动或让AI帮忙创建10-15个核心概念的笔记(例如,“机器学习”、“神经网络”、“Transformer”、“注意力机制”等),每个笔记包含简单的定义和属性
topic:: [AI, 研究]。 - 画布生成:指令AI:“读取
Concepts文件夹下的所有笔记。使用json-canvas技能,创建一个新的Canvas。为每个笔记创建一个文本节点,节点内容显示笔记标题和第一行摘要。根据笔记中共同出现的topic属性,将相同topic的节点在画布上聚集放置,并用不同颜色的群组(Group)框起来。如果两个笔记的标题在我的知识库中彼此有双链引用,则在它们的节点之间创建一条连接线。” - 迭代丰富:打开AI生成的Canvas,你得到了一个初步的视觉图谱。你可以手动拖动节点调整布局,然后继续指令AI:“在当前Canvas的‘Transformer’节点附近,添加三个新的文本节点,内容分别是‘Encoder’, ‘Decoder’, ‘Self-Attention’。并将它们与‘Transformer’节点连接起来。” 如此往复,像搭积木一样快速构建复杂的知识网络。
5. 高级技巧与排坑实录
在实际使用中,你肯定会遇到一些问题和瓶颈。下面是我踩过的一些坑和总结的经验。
5.1 如何让AI更准确地使用技能?
- 提供上下文(Context):这是最重要的技巧。AI技能本质上是给AI的“工具说明书”,但AI需要知道“当前在什么环境下使用这个工具”。在对话开始时,就明确告诉AI:“我的Obsidian仓库路径是
/Users/me/Documents/MyKnowledgeBase。” 或者 “我们接下来要操作的文件都在Projects/2024-Q4这个文件夹下。” - 使用具体示例:与其说“创建一个双链”,不如说“创建一个指向名为‘项目管理方法论’的笔记的双链,链接文本就用‘项目管理方法论’”。更佳的做法是,先给AI看一段你笔记中典型的双链用法。
- 分步指令:对于复杂操作,不要试图在一个指令中完成所有事。拆解成“第一步:用defuddle获取内容;第二步:用obsidian-markdown技能格式化;第三步:检查并建议相关的双链”。
- 指定技能:虽然AI会自动匹配技能,但在指令中明确提及技能名可以避免歧义。例如:“请使用
obsidian-bases技能,帮我生成一个……”
5.2 常见问题与解决方案
| 问题现象 | 可能原因 | 排查与解决思路 |
|---|---|---|
| AI回复“我不知道如何操作Obsidian”或技能未生效。 | 1. 技能未正确安装或路径不对。 2. AI代理未加载或识别技能。 3. 当前对话上下文未激活技能。 | 1.检查安装:按照第3章的方法,确认SKILL.md文件是否存在于AI代理预期的目录下。2.重启代理:重启Claude Code、Codex CLI或OpenCode。 3.验证技能:在AI对话中尝试一个简单的指令,如“列出你可用的技能”或“你能帮我创建一个Obsidian双链吗?”,看AI如何回应。 |
| AI生成的Markdown语法有误(如双链格式不对)。 | 1. AI未能正确理解“Obsidian风味Markdown”与标准Markdown的区别。 2. 技能描述可能不够清晰。 | 1.提供范例:在对话中粘贴一小段正确的Obsidian笔记代码作为示例。 2.明确指定:在指令中强调“使用Obsidian原生的wiki链接语法 [[ ]]”。3.事后修正:可以将AI出错的语法反馈给它,让它学习更正。 |
| 使用obsidian-bases技能生成的查询不工作。 | 1. 笔记的属性(Properties)名称或格式与查询不匹配。 2. Bases查询语法有误。 | 1.检查属性:确认你的笔记中确实存在查询所指定的属性,且格式正确(如tags: [a, b]或status: 进行中)。2.简化查询:先让AI生成一个最简单的视图(如只按一个标签过滤),确认基础功能正常,再增加复杂度。 3.手动调试:将AI生成的 .base文件内容复制到Obsidian中新建的Base里,Obsidian通常会给出更具体的错误提示。 |
| defuddle提取网页内容效果差,残留很多垃圾信息。 | 1. 目标网页结构复杂,defuddle的解析规则不适用。 2. 网页是动态加载(大量JavaScript),defuddle无法处理。 | 1.尝试其他工具:可以先用浏览器插件(如“简悦”、“SingleFile”)将网页保存为干净的HTML或Markdown,再将文件内容交给AI处理。 2.指定区域:如果网页有明确的主内容区ID或类名,可以尝试在指令中告诉AI“主要内容在 #article-content这个div里”,但defuddle技能本身可能不支持如此精细的控制。 |
| 在Claude Code中,技能只对特定仓库有效。 | 这是Claude Code的设计特性。技能安装在哪个仓库的.claude目录下,就只对那个仓库有效。 | 多仓库策略:如果你有多个需要AI辅助的仓库,需要在每个仓库的根目录下都单独安装一套技能。可以考虑写一个简单的Shell脚本来自动化这个克隆过程。 |
5.3 性能与成本考量
- Token消耗:让AI执行复杂技能(尤其是处理长文档、生成复杂Canvas)会消耗大量上下文Token。合理规划你的指令,将大任务拆解。先让AI用defuddle精简内容,可以显著节省Token。
- 响应速度:涉及文件系统操作(如通过obsidian-cli)的技能,响应速度取决于你的本地磁盘IO和AI代理的实现方式,可能会比纯文本生成慢。
- 技能组合:最强大的用法是将多个技能组合在一个工作流中。例如,
defuddle -> obsidian-markdown -> json-canvas,实现从网页到可视化图谱的一键转换。在设计工作流时,考虑好数据在不同技能间的传递格式。
6. 未来展望与自定义技能开发
kepano/obsidian-skills项目目前提供的四个技能覆盖了核心场景,但Obsidian的生态远不止于此。真正的力量在于这个开放的Agent Skills 规范。这意味着你可以为你常用的插件开发自定义技能。
例如,如果你重度使用Dataview插件,你可以开发一个obsidian-dataview技能,让AI能够编写复杂的Dataview查询语句。如果你使用Templater插件,可以开发技能让AI根据模板动态生成内容。社区已经有一些萌芽,比如有人尝试为Excalidraw(画图插件)创建技能。
开发一个技能并不需要你是全栈工程师。根据规范,一个技能本质上就是一个包含SKILL.md文件的文件夹。这个Markdown文件里,你需要用结构化的方式描述:
- 技能名称和描述:这个技能是干什么的。
- 输入/输出规范:它接受什么样的指令,会返回什么结果。
- 示例:提供几个清晰的使用例子,这是AI学习如何调用该技能的关键。
当你把自己常用的、重复性的Obsidian操作封装成技能后,你就拥有了一个高度定制化的AI数字助理。它不再是一个通用的聊天机器人,而是真正融入你个人知识工作流的生产力伙伴。从被动地回答你的问题,变为主动地帮你打理知识花园,这或许才是人机协同进化的下一个里程碑。