Obsidian CLI
對於需要依賴 Obsidian 應用程式本身的行為(如索引、設定、命令註冊或開發者執行環境),請使用此 CLI。一般的檔案操作則使用標準的檔案系統工具。
解析與探測 CLI
切勿假設只存在一個可執行檔名稱。Obsidian 的註冊和打包方式會因平台與版本而異,且無關的第三方二進制檔可能使用相同名稱。僅在候選程式的 version 探測成功時,才選用它。
在 macOS/Linux 上:
resolve_obsidian_cli() {
local candidate
for candidate in \
"${COPILOT_OBSIDIAN_CLI:-}" \
/Applications/Obsidian.app/Contents/MacOS/obsidian-cli \
"$(command -v obsidian 2>/dev/null || true)" \
"$(command -v obsidian-cli 2>/dev/null || true)"
do
[[ -n "$candidate" && -x "$candidate" ]] || continue
if "$candidate" version >/dev/null 2>&1; then
printf '%s\n' "$candidate"
return 0
fi
done
return 1
}
OBSIDIAN_CLI=$(resolve_obsidian_cli) || {
echo "Obsidian CLI 不可用" >&2
exit 1
}
"$OBSIDIAN_CLI" version
在 PowerShell 上:
$candidates = @(
$env:COPILOT_OBSIDIAN_CLI,
(Get-Command obsidian -ErrorAction SilentlyContinue).Source,
(Get-Command obsidian-cli -ErrorAction SilentlyContinue).Source
) | Where-Object { $_ }
$OBSIDIAN_CLI = $candidates | Where-Object {
try { & $_ version *> $null; $LASTEXITCODE -eq 0 } catch { $false }
} | Select-Object -First 1
if (-not $OBSIDIAN_CLI) { throw "Obsidian CLI 不可用" }
& $OBSIDIAN_CLI version
如果探測失敗,請要求使用者開啟相容的 Obsidian 版本,啟用 設定 > 一般 > 命令列介面,完成註冊,然後重新啟動終端機。請勿在未經使用者明確同意下安裝 Obsidian、修改 PATH 或註冊 CLI。
在所有參考範例中,請使用已解析的可執行檔取代 obsidian:
"$OBSIDIAN_CLI" vaults
"$OBSIDIAN_CLI" help search
精確鎖定目標保管庫
只要知道目標,就應使用 vault="<名稱或ID>"。請勿在此技能中嵌入個人保管庫名稱或機器路徑。
"$OBSIDIAN_CLI" vault="<保管庫名稱>" search query="專案截止日" format=json
"$OBSIDIAN_CLI" vault="<保管庫名稱>" backlinks path="Projects/Plan.md" format=json
對於精確的保管庫相對路徑使用 path=。僅當需要 Obsidian 的 wiki 連結風格名稱解析時才使用 file=。請對包含空格或 Shell 特殊字元的值加上引號。在依賴某個語法前,請先檢視已安裝版本的即時說明:
"$OBSIDIAN_CLI" help <command>
核心操作
# 讀取與寫入
"$OBSIDIAN_CLI" vault="<保管庫名稱>" read path="Projects/Roadmap.md"
"$OBSIDIAN_CLI" vault="<保管庫名稱>" append path="Journal.md" content="- 新條目"
# 搜尋與元資料
"$OBSIDIAN_CLI" vault="<保管庫名稱>" search query="API" limit=10 format=json
"$OBSIDIAN_CLI" vault="<保管庫名稱>" properties path="Projects/Roadmap.md"
# 已設定的每日筆記與索引任務
"$OBSIDIAN_CLI" vault="<保管庫名稱>" daily:append content="- 下午2點:打電話" silent
"$OBSIDIAN_CLI" vault="<保管庫名稱>" tasks all todo
# 即時工作區
"$OBSIDIAN_CLI" vault="<保管庫名稱>" tabs ids
"$OBSIDIAN_CLI" vault="<保管庫名稱>" workspace ids
保留主機會話
切勿從代理工作階段重新載入或重新啟動 Obsidian 應用程式/視窗。切勿重新載入、停用或解除安裝託管目前代理工作階段的插件。避免執行等效的命令、JavaScript 或開發者工具操作。這些動作可能終止工作階段並遺失正在進行的工作。
在進行永久刪除、本機歷史記錄或 Sync 還原、發佈或取消發佈、安裝或移除插件/主題、變更限制模式,或執行會變更之 JavaScript/開發者呼叫前,需先取得使用者的明確意圖。優先使用可復原的操作。命令參考文件僅說明功能,並非授權進行變動。
參考指南
僅閱讀與該任務相關的指南。將其範例中的 obsidian 視為已解析的 $OBSIDIAN_CLI 可執行檔,並在已知目標時加入 vault="<名稱或ID>"。
| 任務 | 參考文件 |
|---|---|
| 筆記操作、大綱、字數統計、唯一筆記 | references/note-operations.md |
| 搜尋、標籤、屬性、反向連結、孤立筆記、未解析連結 | references/search-metadata.md |
| 每日筆記、任務、範本 | references/daily-tasks-templates.md |
| 保管庫、工作區、書籤、插件、主題、Sync、Publish、Bases、開發者工具 | references/vault-management.md |