Obsidian CLI
Obsidian 1.9+ 內建的命令列工具——讓任何外部程式(特別是 Claude Code)以 wikilink-aware、frontmatter-aware 的方式對 vault 動手,遠比裸 Read / Edit 強。
跟「直接拿 Read / Edit / Write 操作 vault 檔」對照:
| 維度 | 裸 Read/Edit | Obsidian CLI |
|---|
wikilink 解析(file=X 不需 path) | ❌ 要自己算 | ✅ 跟 Obsidian 同 resolver |
| frontmatter 修改 | ❌ 自己 parse YAML | ✅ property:set 一行 |
| Daily note 路徑 | ❌ 要自己算當天 | ✅ daily:append 直接 |
| 即時生效(Obsidian UI 同步) | ❌ 需 reload | ✅ 自動 |
| 跑 Obsidian command(譬如執行 plugin) | ❌ 不可能 | ✅ command id=... |
任意 JS(操作 app.vault API) | ❌ 不可能 | ✅ eval code=... |
→ 結論:vault 維護的所有寫入動作,優先用 Obsidian CLI;Read / Grep 仍用原生工具(更快)。
安裝 / 啟動
需 Obsidian 1.9+ 開著。CLI 通過 IPC 跟正在跑的 Obsidian 講話,Obsidian 沒開 = CLI 無作用。
# macOS(Homebrew)
brew install obsidian-cli
# 確認
obsidian version
obsidian vault # 顯示當前 vault 名稱 + 路徑 + 檔數
命令分類速查(v1.12.7,~70 commands)
📖 讀取
| 命令 | 用途 |
|---|
obsidian read file="X" | 讀檔內容 |
obsidian backlinks file="X" | 該頁的 inlinks |
obsidian links file="X" | 該頁的 outlinks |
obsidian outline | 當前檔的標題大綱 |
obsidian wordcount file="X" | 字數 / 字元統計 |
🔍 搜尋 / 列舉
| 命令 | 用途 |
|---|
obsidian search query="..." | 全文搜尋 |
obsidian search:context query="..." | 含 context 的搜尋 |
obsidian files / obsidian folders | 列檔 / 列資料夾 |
obsidian orphans / obsidian deadends | 孤兒頁 / 終點頁 |
obsidian unresolved | vault 內 broken wikilink |
obsidian tags / obsidian properties | tag / property 列表 |
✏️ 寫入
| 命令 | 用途 |
|---|
obsidian create name="X" content="..." silent | 建新檔 |
obsidian append file="X" content="..." | 追加 |
obsidian prepend file="X" content="..." | 前綴插入 |
obsidian rename / obsidian move / obsidian delete | 改名 / 移動 / 刪除 |
🏷 frontmatter(property)
| 命令 | 用途 |
|---|
obsidian property:set name=status value=stable file="X" | 設 property |
obsidian property:read name=status file="X" | 讀 property |
obsidian property:remove name=status file="X" | 刪 property |
📅 Daily note
| 命令 | 用途 |
|---|
obsidian daily:read | 讀今日 daily |
obsidian daily:append content="..." | 追加 |
obsidian daily:path | 取今日 daily 路徑 |
✅ Tasks
| 命令 | 用途 |
|---|
obsidian tasks | 列全 vault tasks |
obsidian task | 看 / 改某個 task |
🔌 Plugin / Theme / Snippet
| 命令 | 用途 |
|---|
obsidian plugin:reload id=X | 重載 plugin(dev cycle 必用) |
obsidian plugin:enable / disable / install | plugin 管理 |
obsidian theme:set / obsidian snippet:enable | UI 個人化 |
🛠 Dev(plugin / theme 開發者用)
| 命令 | 用途 |
|---|
obsidian dev:errors | 看捕捉到的錯誤 |
obsidian dev:console | 看 console output |
obsidian dev:screenshot path=... | 視覺驗證 |
obsidian dev:dom selector=... | DOM 查詢 |
obsidian dev:css | CSS 規則 inspect |
obsidian eval code="app.vault.getFiles().length" | 任意 JS |
📚 其他高用價值
| 命令 | 用途 |
|---|
obsidian command id=X | 跑任意 Obsidian command(包括 plugin command) |
obsidian commands filter=X | 列可用 command(找 id 用) |
obsidian hotkey / hotkeys | 看快捷鍵 |
obsidian recents | 最近開過的檔 |
obsidian random | 隨機開檔 |
obsidian sync:status | Obsidian Sync 狀態 |
Claude Code 操作 Obsidian Vault 描述了 LLM 透過檔案系統操作 vault 的範式。Obsidian CLI 補上最後一里路:
| 場景 | 沒 CLI | 有 CLI |
|---|
ingest 後 bump entity 的 updated: | 自己 sed YAML(易壞) | property:set name=updated value=2026-05-03 file="X" |
批次找 status: draft 升 stable | 找全 vault → parse YAML → 改 | eval 跑 Dataview-like JS 一次處理 |
| 寫今日 daily(CLAUDE §15 v1.3.5 規則) | 算 wiki/daily/YYYY/MM/YYYY-MM-DD.md 路徑 | daily:append content="..." |
開發 karpathy-wiki-pattern plugin 改 code | reload 要手動 | plugin:reload id=karpathy-wiki-pattern |
| 確認 vault 整體孤兒 | 自己 grep | obsidian orphans 或 unresolved |
→ 配合 CLAUDE.md(專案手冊):把「優先用 obsidian CLI」寫進 vault rules,未來 Claude session 自動採用。
限制 / 反模式
- ❌ Obsidian 沒開:CLI 全部失效(IPC 連不上)。腳本需先檢查
obsidian vault 是否回應
- ❌ 大量讀取:CLI 比直接 fs Read 慢(多一層 IPC)。讀 → 用 Read;寫 → 用 CLI
- ❌ 跑長腳本:每個 command 是獨立 IPC call。批次操作要避開 N×IPC overhead,改用
eval 寫 JS 一次處理
- ❌ vault 切換頻繁:用
vault=<name> 明確指定,否則跑到錯 vault 上
已知坑
- plugin:reload 後 hot reload 不總是徹底:偶爾要
restart 整個 Obsidian
- eval 有 sandbox:能存取
app 但不能 import,複雜邏輯要先寫成 plugin
property:set 對複雜 YAML(list / nested):簡單 string / number / bool 沒問題,深層結構建議直接 Edit YAML
相關概念
強連結
推斷連結
- Obsidian Dataview ?? — 跟 CLI 的
eval / search 互補(Dataview = inline query;CLI = batch script)
karpathy-wiki-pattern plugin 開發 ?? — vault wiki plugin 測試用得上 dev:* 系列
深入閱讀(外部資源)
← 回到 wiki