Alfred / Raycast 集成
Alfred 和 Raycast 是 macOS 上流行的效率启动器,通过集成可以大幅提升 Obsidian 的操作效率。
Alfred 集成
基础配置
创建 Alfred Workflow,使用 Open URL 动作:
触发器:Keyword → 动作:Open URL → obsidian://...常用 Workflow
1. 搜索笔记
Keyword: os
URL: obsidian://search?query={query}输入 os 项目管理 即可在 Obsidian 中搜索"项目管理"。
2. 快速打开笔记
Keyword: oo
URL: obsidian://open?file={query}3. 创建新笔记
Keyword: on
URL: obsidian://new?file={query}4. 每日笔记
Keyword: od
URL: obsidian://daily5. 追加到今日笔记
使用 Script Filter + Bash:
bash
#!/bin/bash
query="{query}"
encoded=$(python3 -c "
import urllib.parse, sys
print(urllib.parse.quote(sys.argv[1]))
" "- $query")
open "obsidian://daily&append=$encoded"完整 Workflow 示例:快速捕获
此 Workflow 将 Alfred 输入框变成快速捕获工具:
1. Script Filter(输入处理):
bash
#!/bin/bash
cat << EOF
{"items": [
{
"title": "捕获到 Inbox",
"subtitle": "将 \"{query}\" 添加到 Obsidian Inbox",
"arg": "obsidian://open?file=Inbox&append=$(python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))" "- {query}")",
"icon": {"path": "icon.png"}
},
{
"title": "捕获到今日笔记",
"subtitle": "将 \"{query}\" 添加到今日笔记",
"arg": "obsidian://daily&append=$(python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))" "- {query}")"
}
]}
EOF2. Open URL 动作:
输入:{query}Raycast 集成
Raycast 提供了更友好的脚本支持和扩展系统。
基础配置
在 Raycast 中创建 Script Command:
- 打开 Raycast → Extensions →
+→ Create Script Command - 选择 Bash 或 Python
- 设置 Keyword 和参数
常用 Script Commands
1. 搜索 Obsidian(Bash)
bash
#!/bin/bash
# @raycast.title Search Obsidian
# @raycast.author Your Name
# @raycast.mode silent
# @raycast.argument1 { "type": "text", "placeholder": "搜索关键词" }
query="$1"
encoded=$(python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))" "$query")
open "obsidian://search?query=$encoded"2. 快速捕获(Bash)
bash
#!/bin/bash
# @raycast.title Quick Capture to Obsidian
# @raycast.mode inline
# @raycast.argument1 { "type": "text", "placeholder": "记录内容..." }
content="$1"
timestamp=$(date "+%Y-%m-%d %H:%M")
encoded=$(python3 -c "
import urllib.parse, sys
text = f'- [{sys.argv[1]}] {sys.argv[2]}'
print(urllib.parse.quote(text))
" "$timestamp" "$content")
open "obsidian://daily&append=$encoded"
echo "已保存到 Obsidian ✓"3. 打开最近笔记(Python)
python
#!/usr/bin/env python3
# @raycast.title Open Recent Notes
# @raycast.mode compact
# @raycast.argument1 { "type": "text", "placeholder": "笔记名称" }
import subprocess
import urllib.parse
note = urllib.parse.quote("""{query}""")
subprocess.run(["open", f"obsidian://open?file={note}"])4. 创建会议笔记模板
bash
#!/bin/bash
# @raycast.title Create Meeting Note
# @raycast.mode silent
# @raycast.argument1 { "type": "text", "placeholder": "会议主题" }
topic="$1"
date=$(date "+%Y-%m-%d")
filename="Meeting-${date}-$(echo $topic | tr ' ' '-')"
encoded_topic=$(python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))" "$topic")
# 创建笔记并填入模板
template=$(python3 -c "
import urllib.parse
template = '''---
date: $(date +%Y-%m-%d)
topic: $topic
---
# $topic
## 参会人员
## 会议议程
## 讨论要点
## 待办事项
- [ ]
'''
print(urllib.parse.quote(template))
")
open "obsidian://new?file=Meetings/${filename}&append=${template}"Raycast 扩展推荐
| 扩展 | 说明 |
|---|---|
| Obsidian Search | 在 Raycast 中直接搜索 Obsidian 笔记 |
| Obsidian Bookmark | 快速打开指定笔记 |
| Text Shortcuts | 配合 Obsidian 模板使用 |
跨平台替代方案
Windows
使用 PowerToys Run 或 ueli:
PowerToys Run 插件配置:
- 名称:Obsidian Search
- 命令:start obsidian://search?query=%sLinux
bash
# Ulauncher 扩展脚本
#!/bin/bash
query=$(echo "$1" | sed 's/ /%20/g')
xdg-open "obsidian://search?query=$query"效率技巧
快捷键绑定
在 Alfred / Raycast 中设置全局快捷键:
| 操作 | 推荐快捷键 |
|---|---|
| 搜索 Obsidian | ⌥ + Space |
| 快速捕获 | ⌥ + C |
| 打开今日笔记 | ⌥ + D |
| 创建新笔记 | ⌥ + N |
组合使用
bash
# 一键:打开 Obsidian + 搜索 + 创建新笔记
open "obsidian://new?file=Inbox/Draft-$(date +%s)"
sleep 1 # 等待 Obsidian 启动
open "obsidian://open?file=Inbox/Draft-$(date +%s)"Shell 别名
在 .zshrc 或 .bashrc 中添加:
bash
# Obsidian 快速操作别名
alias obs='open "obsidian://open?file="'
alias obsn='open "obsidian://new?file="'
alias obss='open "obsidian://search?query="'
alias obsd='open "obsidian://daily"'
# 使用示例
obsd # 打开今日笔记
obss "vue tutorial" # 搜索 vue tutorial
obsn "Ideas/新想法" # 在 Ideas 下创建新笔记常见问题
Q: Aaron 模式下如何正确传递参数?
A: 确保使用 URL 编码处理特殊字符:
bash
# 正确做法
query=$(python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))" "$1")
open "obsidian://search?query=$query"
# 错误做法(中文和特殊字符会丢失)
open "obsidian://search?query=$1"Q: Raycast 中 open 命令不生效?
A: 检查 Obsidian 是否安装了正确的版本。如果从 App Store 安装,可能需要使用完整路径:
bash
open -a "Obsidian" "obsidian://..."相关资源
- Obsidian URI 集成 - URI Scheme 完整参考
- 自动化工作流 - 更多自动化方案
- iOS 快捷指令深度集成 - 移动端自动化