Obsidian 笔记库管理工具
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @zcwl/obsidian-1-0-0。
技能介绍
Obsidian 的库(vault)本质上是磁盘上的一个普通文件夹,笔记是纯文本 Markdown,这是它的优点也是麻烦的根源。当你用脚本批量维护笔记时,直接操作文件会遇到两个具体问题:一是多库场景下笔记到底在哪并不明确(iCloud 同步库、工作库、个人库并存,mv 一条命令写死了路径就再也换不回来);二是 Obsidian 的 [[wikilinks]] 和 Markdown 链接分散在整个库中,文件改名后这些引用不会自动更新,留下的全是断链。
它如何解决
核心思路是不要猜路径,而是读 Obsidian 自己维护的配置文件。
- 定位活动库:Obsidian 桌面端把已打开的库记录在
~/Library/Application Support/obsidian/obsidian.json,这是唯一可信来源(source of truth)。 - 解析库名:每个条目的库名通常是文件夹路径的后缀部分。
- 默认库:执行一次
obsidian-cli set-default后,就可以用print-default --path-only直接拿到路径,适合脚本调用。
拿到路径之后,剩下的操作都围绕笔记生命周期展开:
- 查找:
search搜文件名,search-content搜笔记正文并返回命中片段和行号。 - 创建:
create "Folder/New note" --content "..." --open,会通过 Obsidian URI(obsidian://...)打开新笔记。 - 改名:
move "old/path/note" "new/path/note",重点在于它会同步更新整个库中的[[wikilinks]]和常见 Markdown 链接。这是它相比裸mv最实际的价值。 - 删除:
delete按路径删除笔记。
至于更细碎的编辑,直接打开 .md 文件修改即可,Obsidian 下次刷新时会读到变更,没必要每次都走命令行。
适用边界与注意点
- 多库是常态:不要把路径硬编码进脚本,优先读配置或使用
print-default。否则库迁移、机器切换时脚本会直接失效。 - 创建笔记依赖 URI handler:
create --open要求 Obsidian 已安装且obsidian://协议可用,命令行环境下失败通常意味着 Obsidian 没在运行或没注册协议。 - 不要往隐藏目录写:通过 URI 创建隐藏 dot-folder(例如
.something/...)下的笔记,Obsidian 可能会拒绝,这类文件放在库外更稳妥。 - 别碰
.obsidian/:这个目录存放工作区和插件配置,脚本一般不需要写入,改坏了会导致插件或布局异常。 - Canvas 不是 Markdown:
*.canvas是 JSON 文件,附件(图片、PDF)位置由设置决定。本工具操作的是笔记本身,不理解 canvas 结构,批量改 canvas 需要另行处理。
一句话总结:它把「打开 Obsidian → 手动改名 → 手动修链接」这套流程压缩成一条命令,代价是需要接受它的路径解析逻辑,而不是自建一套。
使用场景
- 拥有多个 Obsidian 库,脚本需要先读 obsidian.json 才能定位笔记路径
- 重命名笔记并自动更新全库 wikilinks 和 Markdown 链接
- 通过 obsidian-cli search-content 按关键词搜索笔记正文并获取行号
- 在脚本中执行 create 创建笔记并打开,需确保 URI handler 可用
适合人员
- 使用 Obsidian 管理个人知识库、需要批量迁移或整理笔记的开发者
- 编写脚本自动化笔记流程、希望避免硬编码 vault 路径的工程师
- 维护大量 wikilinks、需要安全重命名笔记而不破坏链接的技术作者
- 希望在终端搜索笔记正文并定位到具体行号的极客用户