前言¶
本地 Markdown 笔记库想交给 agent 处理时,常见做法是让它自己猜目录结构、自己写脚本拼文件路径。猜错了就在错误的位置建笔记,改错了还不知道哪些 [[wikilinks]] 会断。
这个 Skill 的思路不同:笔记库本身就是磁盘上的普通文件夹,不需要插件或 API,直接调 notesmd-cli 的现有命令即可。它把「找库、建笔记、改 frontmatter、改名时同步链接」这些动作收敛成一条条确定的命令,agent 拿到的是可复现的调用,而不是一套需要重新推导的规则。
下面介绍这个 Skill。
这是什么¶
Obsidian via notesmd-cli(坐标 @clawhub_bassshang/obsidian-notesmd-cli)是一个基于通用 SKILL.md 格式的 Skill,当前版本 1.0.0,分类 knowledge-management,由 bassshang 发布,来源 clawhub,上游仓库在 https://clawhub.ai/bassshang/obsidian-notesmd-cli ,许可证 MIT-0。
它的定位很窄:操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。也就是说,它不负责做笔记内容本身,负责的是让 agent 可靠地对库做读写和重组。
SkillHub 页面给出的统计是评分 100000、下载 6271、安装 115(数据来自页面抓取结果,会随时间变化)。标签 requires_api_key=false,不需要额外配置密钥。
核心功能¶
1、按 Obsidian 自身的约定定位库。vault 在磁盘上就是一个普通文件夹,通常包含 Notes/*.md、.obsidian/、*.canvas 和 Obsidian 设置里指定的附件目录。桌面端把已打开的库记录在下面这个文件里,notesmd-cli 从这里解析:
~/Library/Application Support/obsidian/obsidian.json
2、设定并查询默认库。一次设定后,后续命令不必再传路径。
3、搜索。一个按笔记标题模糊搜索,一个在笔记内容里搜索并返回片段和行号。前者会遵循 Obsidian 里配置的排除文件。
4、创建笔记与日记。可以直接写磁盘,不需要 Obsidian 处于运行状态。
5、Frontmatter 增删改。按 key 读取、写入、删除,不需要整篇重写文件。
6、安全改名。这是它相对系统 mv 的主要收益:改名或移动笔记时,会同步更新全库的 [[wikilinks]] 和常见 Markdown 链接。
7、删除与打开。删除指定路径的笔记;打开笔记到 Obsidian 或 $EDITOR。
安装与启用¶
官方页面给出的安装命令是:
openclaw skills install @bassshang/obsidian-notesmd-cli
安装完成后,Skill 读的是它所在目录下的 SKILL.md,调用的是本机已安装的 notesmd-cli,不需要在笔记库里放插件,也不需要配置 token。
需要说明一点:官方资料只给出了上面的 openclaw 安装命令。Cursor、Codex CLI、Claude Code 各自的安装方式,资料里没有对应条目,这里不写,避免给出未经核实的步骤。
典型用法¶
第一次使用时先选定默认库和打开方式:
notesmd-cli set-default "<vault-folder-name>"
notesmd-cli set-default --open-type editor
第一行把 vault 设为默认,第二行把默认打开方式设为终端里的 $EDITOR,而不是拉起 Obsidian 应用。不设置时走 Obsidian 应用。
确认当前默认值:
notesmd-cli print-default
notesmd-cli print-default --path-only
--path-only 只输出路径,适合脚本里拿变量。
搜索与新建:
notesmd-cli search
notesmd-cli search-content "query"
notesmd-cli create "Folder/New note" --content "..."
notesmd-cli create "New note" --open
前两行分别按标题和按内容搜索。create 直接在磁盘上写文件;--open 建完顺便打开,headless 环境里也能用,因为它读的是磁盘,Obsidian 不必在运行。新建笔记的位置会参考 .obsidian/app.json 里的默认配置。
日常笔记:
notesmd-cli daily
在磁盘上创建或打开今天的日记,folder、格式和模板取自 .obsidian/daily-notes.json。
Frontmatter:
notesmd-cli frontmatter "NoteName" --print
notesmd-cli frontmatter "NoteName" --edit --key "status" --value "done"
notesmd-cli frontmatter "NoteName" --delete --key "draft"
移动或改名:
notesmd-cli move "old/path/note" "new/path/note"
会更新全库的 [[wikilinks]] 和常见 Markdown 链接。如果只是想改某个文件的内容,更直接的方式是开到编辑器里改:
notesmd-cli open "note" --editor
Obsidian 会自动识别磁盘上的变化。
适用场景与注意¶
适合这几类情况:笔记库已经放在磁盘上、希望 agent 批量整理或迁移笔记、需要按模板生成日记、需要在做重组时保证链接不断裂。
需要注意的点:
1、vault 定位依赖桌面端写下的 obsidian.json,资料里给出的是 macOS 路径。其他平台路径未在资料中给出,用之前先确认本机上这个文件的实际位置。
2、move 只处理 [[wikilinks]] 和常见 Markdown 链接,不处理别的引用形式,比如 Obsidian 的嵌入语法或第三方插件生成的链接。
3、headless 场景下 Obsidian 不需要运行,但新建笔记的位置取决于 .obsidian/app.json,如果库里改过这些默认值,结果会跟着变。
4、.obsidian/ 目录本身不建议从脚本里改,那是工作区和插件设置。
结尾¶
这个 Skill 的价值在于把 Obsidian 库当作普通 Markdown 目录来操作,同时补上了改名时同步链接这个最容易出错、也最费手工的环节。需要 agent 读写本地笔记库的话,可以从官方页面开始:https://www.skillhub.cn/skills/clawhub_bassshang/obsidian-notesmd-cli ,上游仓库 https://clawhub.ai/bassshang/obsidian-notesmd-cli 。