Obsidian URI 集成
Obsidian 支持自定义 URI 协议,允许从外部应用、浏览器或脚本直接操作 Obsidian。本文涵盖所有可用的 URI 命令和实战场景。
什么是 Obsidian URI
Obsidian URI 是一种特殊的链接格式,以 obsidian:// 开头,点击后可直接在 Obsidian 中执行操作:
obsidian://open?vault=MyVault&file=MyNote基础操作
打开笔记
# 打开默认仓库中的笔记
obsidian://open?file=MyNote
# 打开指定仓库中的笔记
obsidian://open?vault=MyVault&file=MyNote
# 打开到指定标题
obsidian://open?file=MyNote#Heading
# 打开到指定块
obsidian://open?file=MyNote#^block-id创建笔记
# 创建新笔记(URI 参数会被 URL 编码)
obsidian://new?file=New%20Note
# 指定仓库
obsidian://new?vault=MyVault&file=NewNote
# 创建每日笔记(需要启用核心插件)
obsidian://daily搜索
# 全局搜索关键词
obsidian://search?query=关键词
# 在指定仓库中搜索
obsidian://search?vault=MyVault&query=project图形视图
# 打开图谱视图
obsidian://graph
# 查看指定文件的局部图谱
obsidian://graph?vault=MyVault&file=MyNote高级 URI 参数
open 命令参数
| 参数 | 类型 | 说明 | 示例 |
|---|---|---|---|
vault | string | 仓库名称 | vault=MyVault |
file | string | 文件名(不含路径前缀) | file=MyNote |
path | string | 文件路径(从仓库根目录) | path=folder/note |
line | number | 跳转到指定行 | line=42 |
mode | string | 打开模式 | mode=preview 或 mode=source |
newpane | boolean | 在新面板中打开 | newpane=true |
append | string | 在文件末尾追加内容 | append=新内容 |
完整 URI 示例
# 跳转到第 42 行
obsidian://open?file=MyNote&line=42
# 在新面板中以编辑模式打开
obsidian://open?file=MyNote&newpane=true&mode=source
# 追加内容到笔记
obsidian://open?file=MyNote&append=-%20New%20todo%20item
# 组合多个参数
obsidian://open?vault=MyVault&file=MyNote&line=10&mode=source实战场景
1. 浏览器书签快速捕获
创建浏览器书签,URL 设为:
javascript:(function(){
const title = document.title;
const url = window.location.href;
const content = window.getSelection().toString();
const note = `- [${title}](${url})\n ${content}`;
window.location.href = `obsidian://open?file=Inbox&append=${encodeURIComponent(note)}`;
})();点击此书签即可将当前网页的标题、链接和选中文字保存到 Obsidian 的 Inbox 笔记中。
2. Raycast / Alfred 快速搜索
Raycast 脚本命令:
#!/bin/bash
# 必需参数:{query}
open "obsidian://search?query=$(python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))" "{query}")"Alfred Workflow:
on alfred_script(q)
do shell script "open 'obsidian://search?query=" & q & "'"
end alfred_script3. iOS 快捷指令
创建快捷指令,使用「打开 URL」动作:
obsidian://open?file=Daily%20Notes/{{当前日期}}常用快捷指令模板:
| 快捷指令 | URI |
|---|---|
| 打开今日笔记 | obsidian://daily |
| 快速捕获想法 | obsidian://new?file=Inbox/{{时间戳}} |
| 搜索笔记 | obsidian://search?query={{输入}} |
| 查看今日待办 | obsidian://open?file=Tasks |
4. 终端 / Shell 脚本
# 在终端中打开 Obsidian 笔记
alias obs='open'
# 快速打开指定笔记
obs "obsidian://open?file=Meeting-Notes"
# 创建带模板的新笔记
obs "obsidian://new?file=Meeting-$(date +%Y-%m-%d)"
# 搜索笔记
obs "obsidian://search?query=TODO"
# 使用 Advanced URI 插件的更高级功能
obs "obsidian://advanced-uri?command=workspace%3Acopy-path"5. 系统服务集成
macOS Automator 服务:
- 创建 Quick Action(快速操作)
- 添加 Run Shell Script:bash
# 将选中的文字发送到 Obsidian echo "$1" | pbcopy open "obsidian://new?file=Quick-Capture&append=$1"
Windows 快捷方式:
创建 Obsidian-Search.lnk,目标设为:
"C:\Users\YourName\AppData\Local\obsidian\Obsidian.exe" "obsidian://search?query="6. 第三方应用集成
VS Code 集成:
// .vscode/tasks.json
{
"label": "在 Obsidian 中打开当前文件",
"type": "shell",
"command": "open",
"args": [
"obsidian://open?file=${fileBasenameNoExtension}"
]
}Cron / 定时任务:
# 每天 9:00 打开今日笔记
0 9 * * * open "obsidian://daily"
# 每小时提醒查看待办
0 * * * * open "obsidian://search?query=%23todo"Advanced URI 插件
对于更复杂的场景,推荐安装 Advanced URI 插件,它扩展了原生 URI 的能力:
支持的新操作
| 操作 | 说明 | 示例 |
|---|---|---|
eval | 运行 JavaScript 代码 | &eval=new%20Notice('hello') |
hook | 运行指定模板 | &hook=templates/template.md |
command | 执行 Obsidian 命令 | &command=workspace%3Acopy-path |
workspace | 切换工作区 | &workspace=Main |
dataview | 运行 Dataview 查询块 | 引用指定代码块 |
Advanced URI 示例
# 应用模板并创建文件
obsidian://advanced-uri?vault=MyVault&filepath=notes/new.md&data=content&mode=overwrite
# 运行命令
obsidian://advanced-uri?command=app%3Ago-back
# 使用 Dataview
obsidian://advanced-uri?dataview=my-queryHTML / Web 页面集成
在网页中添加一键保存到 Obsidian 的按钮:
<a href="obsidian://open?file=MyVault/Web Clips&append={{URL编码内容}}">
保存到 Obsidian
</a>
<script>
document.querySelector('.save-to-obsidian').addEventListener('click', (e) => {
const title = document.title;
const url = window.location.href;
const encoded = encodeURIComponent(`- [${title}](${url})`);
window.location.href = `obsidian://open?file=Web%20Clips&append=${encoded}`;
});
</script>安全注意事项
WARNING
URI 操作可能执行敏感命令,请注意:
- 不点击来源不明的
obsidian://链接 - 使用 Advanced URI 时限制
eval的使用 - 在生产环境避免直接执行用户输入的 URI
1.13+ 安全确认弹窗:自 1.13 起,调用
obsidian://等操作前会先弹出安全确认对话框,明确展示即将执行的操作;首次触发需人工确认,勾选「不再询问」可加入允许列表。本文所有示例(快捷指令、命令行、AutoHotkey、Web Clipper)首次运行时均会触发该弹窗。
常见问题
Q: URI 在浏览器中无法打开 Obsidian?
A: 确保 Obsidian 已安装且注册了 URI 协议。macOS 上检查 ~/Library/Preferences/com.apple.LaunchServices.plist。
Q: 中文文件名乱码?
A: 使用 encodeURIComponent() 对中文进行 URL 编码:
const filename = encodeURIComponent('我的笔记');
// 结果: %E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0Q: 如何在 Windows 上使用?
A: Windows 上使用 start 替代 open:
start obsidian://open?file=MyNote