mcpField
O
obsidian-skill

obsidian-skill

github.com/gmickel生产力584 次安装11 周前更新
代码仓库

关于 obsidian-skill

用于在任务依赖 Obsidian 正在运行的应用、索引、设置或命令注册表时操作 Obsidian CLI 的技能。它指导如何查找 CLI、指定目标知识库,并为会话保护及敏感操作设定限制。

主要功能

  1. 01查找并验证 CLI 可执行文件
  2. 02精确指定知识库与路径
  3. 03读取、写入、搜索并检查元数据
  4. 04查阅当前版本帮助与参考指南
  5. 05保护活动会话并限制敏感操作

适用场景

  1. 01在知识库中搜索或读取笔记
  2. 02向指定笔记追加内容
  3. 03检查笔记属性或反向链接
  4. 04确认已安装版本支持的命令

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gmickel/obsidian-skill --skill obsidian-skill

安装后在 Claude Code 中输入/obsidian-skill确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

metadata.json
LICENSE
README.md
.github/
FUNDING.yml
references/
daily-tasks-templates.md
search-metadata.md
note-operations.md
vault-management.md

详细介绍

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 unavailable" >&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 unavailable" }
& $OBSIDIAN_CLI version

如果探测失败,请让用户打开兼容版本的 Obsidian,启用 设置 > 通用 > 命令行界面,完成注册,然后重启终端。未经用户明确同意,不要安装 Obsidian、更改 PATH 或注册 CLI。

在所有参考示例中,使用已定位的可执行文件替代 obsidian:

"$OBSIDIAN_CLI" vaults
"$OBSIDIAN_CLI" help search

精确指定目标库

已知目标库时,请使用 vault="<name-or-id>"。切勿在此技能中嵌入个人库名称或机器路径。

"$OBSIDIAN_CLI" vault="<vault-name>" search query="project deadline" format=json
"$OBSIDIAN_CLI" vault="<vault-name>" backlinks path="Projects/Plan.md" format=json

使用 path= 指定精确的库内相对路径。只有在需要 Obsidian 的维基链接式名称解析时才使用 file=。包含空格或 shell 特殊字符的值需加引号。依赖当前版本未显示的语法前,请先查看实时帮助:

"$OBSIDIAN_CLI" help <command>

核心操作

# Read and write
"$OBSIDIAN_CLI" vault="<vault-name>" read path="Projects/Roadmap.md"
"$OBSIDIAN_CLI" vault="<vault-name>" append path="Journal.md" content="- New entry"

# Search and metadata
"$OBSIDIAN_CLI" vault="<vault-name>" search query="API" limit=10 format=json
"$OBSIDIAN_CLI" vault="<vault-name>" properties path="Projects/Roadmap.md"

# Configured daily note and indexed tasks
"$OBSIDIAN_CLI" vault="<vault-name>" daily:append content="- 2pm: Call" silent
"$OBSIDIAN_CLI" vault="<vault-name>" tasks all todo

# Live workspace
"$OBSIDIAN_CLI" vault="<vault-name>" tabs ids
"$OBSIDIAN_CLI" vault="<vault-name>" workspace ids

保持宿主会话

绝不要在 Agent 会话中重新加载或重启 Obsidian 应用/窗口。绝不要重新加载、禁用或卸载承载当前 Agent 会话的插件。避免执行效果相同的命令、JavaScript 或开发者工具操作。这些操作可能会终止会话并丢弃正在进行的工作。

永久删除、从本地历史记录或 Sync 恢复、发布或取消发布、安装或移除插件/主题、更改受限模式,或执行会修改数据的 JavaScript/开发者调用前,必须获得用户明确同意。优先选择可逆操作。命令参考介绍的是功能,不代表授权执行更改。

参考指南

只阅读与任务相关的指南。将指南示例中的 obsidian 视为已定位的 $OBSIDIAN_CLI 可执行文件,并在目标已知时添加 vault="<name-or-id>"。

任务参考资料
笔记操作、大纲、字数统计、唯一笔记references/note-operations.md
搜索、标签、属性、反向链接、孤立项、未解析链接references/search-metadata.md
每日笔记、任务、模板references/daily-tasks-templates.md
库、工作区、书签、插件、主题、Sync、Publish、Bases、开发者工具references/vault-management.md

评论

支持 Markdown