Skip to content

URI 深度链接速查表

Obsidian URI(obsidian://)允许从外部应用或脚本控制 Obsidian。

基本格式

text
obsidian://action?vault=仓库名&参数1=值1&参数2=值2

通用参数

参数说明示例
vault仓库名称或 IDMyVault
file文件路径Notes/MyNote
path文件路径(与 file 类似)Notes/MyNote

仓库名称 vs ID

  • 名称:使用仓库的显示名称,如 MyVault
  • ID:使用仓库的随机 ID,在 .obsidian/app.json 中查看
  • 建议使用名称,更直观

操作列表

打开笔记

text
obsidian://open?vault=MyVault&file=Notes/MyNote
参数说明
vault仓库名
file文件路径
path文件路径(替代 file)

打开到指定标题:

text
obsidian://open?vault=MyVault&file=Notes/MyNote&heading=My%20Heading

创建新笔记

text
obsidian://new?vault=MyVault&name=MyNote&content=Hello&folder=Inbox
参数说明
vault仓库名
name笔记名称
content笔记内容(需 URL 编码)
folder存放文件夹
overwritetrue 覆盖已有文件
appendtrue 追加到已有文件
opentrue(默认)创建后打开

追加内容到已有笔记:

text
obsidian://new?vault=MyVault&name=Daily/2024-01-15&content=%0A%23%23%20%E6%96%B0%E5%A2%9E%0A%E8%BF%BD%E5%8A%A0%E5%86%85%E5%AE%B9&append=true

搜索

text
obsidian://search?vault=MyVault&query=keyword
参数说明
vault仓库名
query搜索关键词

打开搜索并替换

text
obsidian://search?vault=MyVault&query=old&replace=new

打开图谱

text
obsidian://graph?vault=MyVault
参数说明
vault仓库名
color颜色过滤
filter过滤条件

打开设置

text
obsidian://settings

URL 编码参考

特殊字符必须 URL 编码:

字符编码说明
空格%20或使用 +
换行%0A\n
#%23标题符号
&%26参数分隔符
=%3D赋值符号
/%2F路径分隔符
[%5BWiki 链接
]%5DWiki 链接
``%7C
中文%E4%B8%ADUTF-8 编码

编码工具

bash
# Python URL 编码
python3 -c "import urllib.parse; print(urllib.parse.quote('你好世界'))"

# JavaScript URL 编码
node -e "console.log(encodeURIComponent('你好世界'))"

# Shell URL 编码
echo -n "你好世界" | xxd -plain | sed 's/\(..\)/%\1/g'

跨平台调用

macOS

bash
# 使用 open 命令
open "obsidian://open?vault=MyVault&file=Notes/MyNote"

# 使用 AppleScript
osascript -e 'tell application "Obsidian" to open location "obsidian://open?vault=MyVault&file=Notes/MyNote"'

Windows

powershell
# PowerShell
Start-Process "obsidian://open?vault=MyVault&file=Notes/MyNote"

# CMD
start "obsidian://open?vault=MyVault&file=Notes/MyNote"

Linux

bash
# 使用 xdg-open
xdg-open "obsidian://open?vault=MyVault&file=Notes/MyNote"

iOS 快捷指令

  1. 在快捷指令中使用「URL」操作
  2. 输入 obsidian://new?vault=MyVault&name=QuickNote&content=Hello
  3. 添加「打开 URL」操作

Android Tasker

  1. 创建 Task
  2. 添加 Action → Misc → Open URL
  3. URL: obsidian://new?vault=MyVault&name=QuickNote

集成示例

从浏览器快速保存

创建浏览器书签,点击即可保存当前页面到 Obsidian:

javascript
javascript:void(open('obsidian://new?vault=MyVault&name='+encodeURIComponent(document.title)+'&content='+encodeURIComponent('# '+document.title+'\n\n来源: '+location.href+'\n\n'+window.getSelection().toString())))

从终端创建笔记

bash
# 添加到 .zshrc 或 .bashrc
obsidian-new() {
  local vault="${OBSIDIAN_VAULT:-MyVault}"
  local name="$1"
  local content="$2"
  
  open "obsidian://new?vault=$vault&name=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$name'))")&content=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$content'))")"
}

# 使用
obsidian-new "Quick Note" "Hello from terminal"

Alfred Workflow (macOS)

  1. 创建 Script Filter
  2. 使用 Python/Shell 构造 Obsidian URI
  3. 使用 Open URL Action 打开

VS Code 集成

在 VS Code 的 tasks.json 中添加:

json
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Open in Obsidian",
      "type": "shell",
      "command": "open",
      "args": ["obsidian://open?vault=MyVault&file=${relativeFile}"],
      "problemMatcher": []
    }
  ]
}

常见问题

URI 不生效?

  1. 确保 Obsidian 已安装并打开过
  2. 检查仓库名是否正确(区分大小写)
  3. 确保 URL 编码正确
  4. macOS:检查是否有其他应用拦截了 obsidian:// scheme

中文文件名如何处理?

所有中文字符必须 URL 编码:

bash
# 正确
obsidian://open?vault=MyVault&file=%E7%AC%94%E8%AE%B0

# 错误
obsidian://open?vault=MyVault&file=笔记

如何调试 URI?

  1. 在终端中执行 URI 命令
  2. 检查 Obsidian 控制台是否有错误
  3. 使用 --verbose 参数(如支持)

相关资源