Obsidian CLI
从终端操控 Obsidian:创建笔记、检索管道、AI 集成接口,以及自动化工作流示例。
一直以来,Obsidian 是一个”窗口里的世界”——你得打开应用、点击菜单、敲下命令面板。可在终端原生统治的自动化与 AI 时代,能不能让 Obsidian 也听话于命令行?
Obsidian CLI 正是为此而生(见 help.obsidian.md/cli)。官方一句话点明它的野心:Anything you can do in Obsidian you can do from the command line.——Obsidian 里能做的事,命令行里都能做。创建笔记、检索内容、追加任务、管理属性、发布站点,乃至调用开发者工具,全部可在终端完成。
启用前提
Obsidian CLI 需要 1.12 安装器(installer)。启用方式很简单:
- 进入 Settings → General。
- 打开 Command line interface 开关。
- 按提示完成
obsidian命令的注册。
注意:CLI 依赖 Obsidian 应用保持运行——如果应用没开,第一条命令会先把应用启动起来。若你需要在无桌面环境的服务器上使用,官方还提供了 Headless 模式。
两种用法:单命令与交互终端
CLI 支持两种工作方式。其一是单命令,跑完即走:
obsidian help
其二是终端用户界面(TUI),输入 obsidian 进入交互模式,之后无需重复前缀,支持自动补全、命令历史和 Ctrl+R 反向搜索,体验堪比一个迷你 shell:
obsidian # 进入 TUI
help # 之后直接敲命令
日常命令速览
CLI 把 Obsidian 的核心能力搬到了终端。以下都是真实可用的命令:
# 打开今天的日记
obsidian daily
# 往日记里追加一条任务
obsidian daily:append content="- [ ] 买菜"
# 全库搜索
obsidian search query="会议笔记"
# 读取当前文件内容
obsidian read
# 列出日记里的所有任务
obsidian tasks daily
# 用模板新建笔记
obsidian create name="巴黎之行" template=Travel
# 列出全库标签及计数
obsidian tags counts
# 比较文件的两个版本
obsidian diff file=README from=1 to=3
命令的参数用 参数=值 传递,含空格的值用引号包裹;**标志(flag)**则是无值的开关,写上即开启。比如 open、overwrite 是标志:
obsidian create name=笔记 content="Hello" open overwrite
多行内容用 \n 表示换行,\t 表示制表符。任何命令都可以加 --copy 把输出复制到剪贴板,方便接力处理。
定位文件有两种方式:file=名称 按 wikilink 规则模糊匹配(不用写全路径),path=路径 则要求从库根开始的精确路径。要切换库,用 vault=名称 作为首个参数。
管道与检索:让笔记可被”流式处理”
CLI 的命令输出是纯文本,这意味着它能无缝接入 Unix 管道。search、files、backlinks、tags 等命令都支持 format=json|tsv|csv,方便被 jq、grep、awk 等工具二次加工。
一个实用的例子——找出所有含 “TODO” 的笔记并复制结果:
obsidian search query="TODO" --copy
又如,列出所有反向链接为零的”孤儿笔记”,顺手清理:
obsidian orphans
CLI 还提供了链接洞察:backlinks 看谁引用了某篇,links 看某篇引用了谁,unresolved 找出所有断链,deadends 找出没有出链的”死胡同”笔记。这些原本要靠图谱视图肉眼扫描的信息,现在一行命令就能拿到结构化输出。
与 AI 工具集成的接口意义
CLI 最深远的价值,在于它把 Obsidian 变成了一个可被外部程序调用的服务——这对 AI 与 agentic 编码工具至关重要。
开发者命令让这层能力更加通透:
# 打开开发者工具
obsidian devtools
# 重载正在开发的插件
obsidian plugin:reload id=my-plugin
# 给应用截图
obsidian dev:screenshot path=screenshot.png
# 在应用控制台执行 JavaScript
obsidian eval code="app.vault.getFiles().length"
eval 尤其强大——它能让 AI 编码代理直接查询 Obsidian 内部状态、操作 vault、验证插件行为。官方文档明确指出,这些命令”让 agentic 编码工具能够自动测试和调试”。这意味着 AI 代理可以:写一个插件 → 用 plugin:reload 热加载 → 用 eval 验证逻辑 → 用 dev:screenshot 检查渲染——全程无需人工点鼠标。
一个自动化工作流示例
把 CLI 串进 shell 脚本,就能自动化日常重复劳动。比如每天清晨的”知识简报”:
#!/bin/bash
# 追加今日待办到日记
obsidian daily:append content="- [ ] 复习昨天的笔记"
# 搜索近期待办并汇总
obsidian search query="TODO" --copy
# 用 CLI 检查发布状态,准备同步到 Publish
obsidian publish:status
配合 cron 定时任务或 AI 代理,这套流程能自己跑起来——Obsidian 不再只是你手动的工具,而是自动化链条上主动的一环。
命令行的尽头,是无限的组合
从 obsidian create 的一行笔记,到 publish:add 的一键上线,CLI 把 Obsidian 的每个动作都暴露成了可组合的原子。终端原生的管道、脚本、定时任务,乃至 AI 代理的函数调用,都能驱动这些原子各司其职。
当笔记可以被命令创建、被管道检索、被脚本编排、被 AI 调用,它就不再只是一份静态文档,而是一个会自己生长的系统。这正是数字花园的终极形态——不只是你浇水,整个生态都在帮你灌溉。