Skip to content

Obsidian URI 集成

Obsidian 支持自定义 URI 协议,允许从外部应用、浏览器或脚本直接操作 Obsidian。本文涵盖所有可用的 URI 命令和实战场景。

什么是 Obsidian URI

Obsidian URI 是一种特殊的链接格式,以 obsidian:// 开头,点击后可直接在 Obsidian 中执行操作:

obsidian://open?vault=MyVault&file=MyNote

基础操作

打开笔记

bash
# 打开默认仓库中的笔记
obsidian://open?file=MyNote

# 打开指定仓库中的笔记
obsidian://open?vault=MyVault&file=MyNote

# 打开到指定标题
obsidian://open?file=MyNote#Heading

# 打开到指定块
obsidian://open?file=MyNote#^block-id

创建笔记

bash
# 创建新笔记(URI 参数会被 URL 编码)
obsidian://new?file=New%20Note

# 指定仓库
obsidian://new?vault=MyVault&file=NewNote

# 创建每日笔记(需要启用核心插件)
obsidian://daily

搜索

bash
# 全局搜索关键词
obsidian://search?query=关键词

# 在指定仓库中搜索
obsidian://search?vault=MyVault&query=project

图形视图

bash
# 打开图谱视图
obsidian://graph

# 查看指定文件的局部图谱
obsidian://graph?vault=MyVault&file=MyNote

高级 URI 参数

open 命令参数

参数类型说明示例
vaultstring仓库名称vault=MyVault
filestring文件名(不含路径前缀)file=MyNote
pathstring文件路径(从仓库根目录)path=folder/note
linenumber跳转到指定行line=42
modestring打开模式mode=previewmode=source
newpaneboolean在新面板中打开newpane=true
appendstring在文件末尾追加内容append=新内容

完整 URI 示例

bash
# 跳转到第 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
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 脚本命令:

bash
#!/bin/bash
# 必需参数:{query}
open "obsidian://search?query=$(python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))" "{query}")"

Alfred Workflow:

applescript
on alfred_script(q)
    do shell script "open 'obsidian://search?query=" & q & "'"
end alfred_script

3. iOS 快捷指令

创建快捷指令,使用「打开 URL」动作:

obsidian://open?file=Daily%20Notes/{{当前日期}}

常用快捷指令模板:

快捷指令URI
打开今日笔记obsidian://daily
快速捕获想法obsidian://new?file=Inbox/{{时间戳}}
搜索笔记obsidian://search?query={{输入}}
查看今日待办obsidian://open?file=Tasks

4. 终端 / Shell 脚本

bash
# 在终端中打开 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 服务:

  1. 创建 Quick Action(快速操作)
  2. 添加 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 集成:

json
// .vscode/tasks.json
{
  "label": "在 Obsidian 中打开当前文件",
  "type": "shell",
  "command": "open",
  "args": [
    "obsidian://open?file=${fileBasenameNoExtension}"
  ]
}

Cron / 定时任务:

bash
# 每天 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 示例

bash
# 应用模板并创建文件
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-query

HTML / Web 页面集成

在网页中添加一键保存到 Obsidian 的按钮:

html
<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 编码:

javascript
const filename = encodeURIComponent('我的笔记');
// 结果: %E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0

Q: 如何在 Windows 上使用?

A: Windows 上使用 start 替代 open

cmd
start obsidian://open?file=MyNote

相关资源