Skip to content

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://daily

5. 追加到今日笔记

使用 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}")"
  }
]}
EOF

2. Open URL 动作:

输入:{query}

Raycast 集成

Raycast 提供了更友好的脚本支持和扩展系统。

基础配置

在 Raycast 中创建 Script Command:

  1. 打开 Raycast → Extensions → + → Create Script Command
  2. 选择 Bash 或 Python
  3. 设置 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 Runueli

PowerToys Run 插件配置:
- 名称:Obsidian Search
- 命令:start obsidian://search?query=%s

Linux

使用 UlauncherAlbert

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://..."

相关资源