关于 obsidian-direct
obsidian-direct 是用于通过程序直接管理 Obsidian vault 的技能,适合自动化笔记和查询工作流。它支持文件与文件夹操作、模板插入、Dataview 查询及插件 API 调用。
主要功能
- 01创建文件与文件夹
- 02追加、覆盖或插入文本
- 03插入 Markdown 模板
- 04执行 Dataview 查询
- 05调用插件 API
适用场景
- 01按日期自动创建日记
- 02将查询结果追加到笔记
- 03根据输入更新 vault 文件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill obsidian-direct安装后在 Claude Code 中输入/obsidian-direct确认已加载。
详细介绍
obsidian-direct
用途
此技能可直接以编程方式访问 Obsidian 仓库,用于创建文件、编辑文件、插入模板、运行 Dataview 查询以及调用插件 API 等任务,从而实现笔记工作流自动化。
适用场景
在脚本中自动执行 Obsidian 操作时使用此技能,例如根据外部数据生成每日笔记、根据用户输入更新文件,或运行 Dataview 查询以获取元数据。也可用于手动管理仓库效率低下的场景,例如 CI/CD 流水线或 AI 驱动的内容创作。
主要功能
- 使用指定路径和内容在仓库中创建文件或文件夹。
- 通过追加、覆盖或在特定行插入文本来编辑现有文件。
- 将模板(例如预定义的 .md 模板文件)插入新笔记或现有笔记。
- 执行 Dataview 查询以检索或操作笔记元数据。
- 调用 Obsidian 插件 API 来扩展自定义功能,例如查询特定插件的数据。
使用模式
通过类似 call_skill('obsidian-direct', subcommand, params) 的函数调用来使用此技能,其中 subcommand 可以是:create-file、edit-file、insert-template、run-query 或 plugin-call。始终将必需参数作为字典传入,例如 {'path': 'notes/file.md', 'content': 'Text here'}。对于需要身份验证的操作,通过环境变量 $OBSIDIAN_API_KEY 传入 API 密钥。按顺序组织调用:先创建文件,再编辑文件。复杂参数请使用 JSON,例如 {'query': '{"from": "folder", "where": "file.name contains 'key'"}'}。避免并发调用,以免仓库发生冲突。
常用命令/API
API 端点:对 https://api.openclaw.com/v1/obsidian/vault/{vault-id}/files 使用 POST 执行文件操作,请求正文采用如下 JSON 格式:{"path": "notes/file.md", "content": "Hello"}。对应的 CLI 命令:obsidian-direct create-file --vault-id myvault --path "notes/file.md" --content "Hello" --api-key $OBSIDIAN_API_KEY。
代码片段:
params = {'path': 'Daily/daily.md', 'content': 'Today\'s notes'}
result = call_skill('obsidian-direct', 'create-file', params)
print(result['file_path']) # Outputs: Daily/daily.md
Dataview 用法:obsidian-direct run-query --vault-id myvault --query "LIST file.name FROM \"folder\" WHERE file.mtime > date(2023-01-01)" --api-key $OBSIDIAN_API_KEY。
配置格式:参数必须是 JSON 对象,例如 insert-template 使用 {"template": "path/to/template.md", "insert_at": 5}。标志:--vault-id(必需)、--dry-run(模拟操作,不做更改)、--force(覆盖文件)。
集成说明
将其他技能的输出作为输入传入即可进行集成,例如将搜索技能的结果作为 create-file 的内容。身份验证:在环境中设置 $OBSIDIAN_API_KEY,例如 export OBSIDIAN_API_KEY=your_api_key,并在调用中传入该密钥。如果仓库位于远程,请确保通过 Obsidian 的同步插件进行同步。对于多技能工作流,可使用文件系统技能等工具进行串联,并将返回的文件路径作为参数。请先在本地仓库中测试集成,以免数据丢失。
错误处理
始终将技能调用放在 try-except 块中,以捕获 VaultError(例如文件不存在时返回 404)或 AuthError(例如 API 密钥无效时返回 403)等异常。检查响应代码:如果 result['status'] == 'error',记录错误消息并使用指数退避策略重试。常见问题:使用 --force 标志处理文件冲突,或解析 Dataview 错误以排查查询语法问题。示例:
代码片段:
try:
call_skill('obsidian-direct', 'edit-file', {'path': 'notes/file.md', 'content': 'Updated text'})
except VaultError as e:
if e.code == 404:
call_skill('obsidian-direct', 'create-file', {'path': 'notes/file.md', 'content': 'Default'})
else:
raise
具体使用示例
- 自动创建每日笔记:先通过其他技能获取当前日期,然后调用
obsidian-direct create-file --vault-id myvault --path "Daily/{date}.md" --content "Notes for {date}" --api-key $OBSIDIAN_API_KEY。这会创建一个类似 Daily/2023-10-01.md 的新文件,并写入初始内容。 - 运行并插入 Dataview 结果:使用
obsidian-direct run-query --vault-id myvault --query "TASK FROM \"Tasks\" WHERE !completed"查询任务,然后使用obsidian-direct edit-file --path "Summary.md" --append result['query_output']将输出追加到摘要笔记中。
图关系
- 相关:社区集群(例如,与文件管理技能共享标签)。
- 连接:与“obsidian-sync”等 Obsidian 相关技能连接,用于同步库。
- 关联:通用 API 技能,用于处理身份验证。
- 重叠:笔记集群,用于内容操作。