Obsidian via notesmd-cli:让 agent 直接读写 Obsidian 库

前言

本地 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 。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜