Apple 生态集成
Obsidian 在 Apple 生态中有出色的原生支持。本文介绍如何利用 iCloud 同步、快捷指令、AppleScript 等功能打造无缝的跨设备工作流。
iCloud 同步
设置 iCloud 同步
iCloud 同步是 Apple 生态中最简单的 Obsidian 同步方案:
- 在 macOS 上,将仓库创建在 iCloud Drive 目录中
- 在 iOS 上,Obsidian 会自动识别 iCloud Drive 中的仓库
仓库路径:
text
~/Library/Mobile Documents/iCloud~md~obsidian/Documents/优缺点
| 优点 | 缺点 |
|---|---|
| 免费 | 冲突处理弱 |
| 自动同步 | 同步延迟 |
| 原生集成 | 大文件同步慢 |
| 无需配置 | 不支持选择性同步 |
| 版本历史 | 恢复不直观 |
最佳实践
- 避免同时编辑:不要在两个设备上同时编辑同一笔记
- 等待同步完成:修改后等几秒再切换设备
- 定期检查冲突文件:iCloud 会创建冲突副本
- 关闭优化存储:设置 → Apple ID → iCloud → 确保 Obsidian 文件已下载
常见问题排查
bash
# 检查 iCloud 同步状态
brctl log --wait --shorten
# 强制同步
brctl download ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/
# 查看 iCloud 存储使用
du -sh ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/iOS 快捷指令
基础集成
Obsidian 支持通过 URL Scheme 与快捷指令集成:
text
obsidian://open?vault=MyVault&file=Notes/MyNote
obsidian://new?vault=MyVault&name=QuickNote&content=Hello
obsidian://search?vault=MyVault&query=keyword创建快捷指令
快速添加日记
- 打开「快捷指令」App
- 创建新快捷指令
- 添加「URL」操作:
obsidian://new?vault=MyVault&name={{当前日期}}&content={{剪贴板}}&folder=Daily - 添加「打开 URL」操作
- 保存为「添加到日记」
保存剪贴板内容
- 获取剪贴板内容
- URL 编码内容
- 构造 Obsidian URL:
obsidian://new?vault=MyVault&name=Clip%20{{当前时间}}&content={{URL编码后的剪贴板内容}}
搜索并打开笔记
- 请求输入搜索关键词
- 构造搜索 URL:
obsidian://search?vault=MyVault&query={{输入的关键词}}
高级快捷指令
从 Safari 保存网页
text
1. 获取 Safari 网页信息(标题、URL、选中文本)
2. 构造 Markdown 内容:
# {{网页标题}}
来源: {{URL}}
{{选中文本}}
3. 构造 Obsidian URL:
obsidian://new?vault=MyVault&name={{网页标题}}&content={{Markdown内容}}会议记录模板
text
1. 获取当前日期和时间
2. 获取参与者列表(从日历事件)
3. 构造模板内容
4. 在 Obsidian 中创建新笔记从照片创建笔记
text
1. 选择照片
2. 获取照片的位置和时间信息
3. 将照片保存到仓库附件文件夹
4. 创建包含照片链接的笔记AppleScript 自动化
基础 AppleScript
applescript
-- 打开 Obsidian
tell application "Obsidian"
activate
end tell
-- 打开指定仓库和笔记
tell application "Obsidian"
activate
open location "obsidian://open?vault=MyVault&file=Today"
end tell创建笔记
applescript
-- 使用 URL Scheme 创建新笔记
on createNote(vaultName, noteName, content)
set encodedContent to urlencode(content)
set theURL to "obsidian://new?vault=" & vaultName & "&name=" & noteName & "&content=" & encodedContent
tell application "Obsidian"
activate
open location theURL
end tell
end createNote
-- URL 编码辅助函数
on urlencode(theText)
set theTextEnc to ""
repeat with eachChar in theText
set useChar to eachChar
set eachCharNum to (id of eachChar)
if eachCharNum > 32 and eachCharNum < 127 then
set useChar to eachChar
else
set useChar to "%" & (text -2 thru -1 of ("0" & (eachCharNum as text) as text))
end if
set theTextEnc to theTextEnc & useChar
end repeat
return theTextEnc
end urlencode与其他应用集成
applescript
-- 从 Safari 保存页面到 Obsidian
tell application "Safari"
set pageTitle to name of current tab of front window
set pageURL to URL of current tab of front window
set pageContent to do JavaScript "document.getSelection().toString()" in current tab of front window
end tell
set noteContent to "# " & pageTitle & return & "来源: " & pageURL & return & return & pageContent
createNote("MyVault", pageTitle, noteContent)日程集成
applescript
-- 从日历获取今日事件并创建日记
tell application "Calendar"
set todayEvents to every event of calendar "工作" whose start date >= (current date) and start date < (current date) + 1 * days
set eventList to ""
repeat with evt in todayEvents
set eventTitle to summary of evt
set eventStart to start date of evt
set eventEnd to end date of evt
set eventList to eventList & "- " & eventStart & " - " & eventEnd & " " & eventTitle & return
end repeat
end tell
set dailyContent to "# 今日日程" & return & return & "## 日程安排" & return & eventList
createNote("MyVault", "Daily/" & (short date string of (current date)), dailyContent)跨设备工作流
iPhone + Mac 协同
| 场景 | iPhone | Mac |
|---|---|---|
| 灵感捕捉 | 快捷指令 → 新建笔记 | 自动同步,编辑完善 |
| 网页剪藏 | Share Sheet → Obsidian | 整理到知识库 |
| 会议记录 | 拍照 + 语音备忘录 | 文字整理 + 标注 |
| 通勤阅读 | 阅读模式 + 标注 | 写读书笔记 |
iPhone 快捷操作
- 主屏幕小组件:添加 Obsidian 小组件快速访问最近笔记
- 分享菜单:从任何 App 分享内容到 Obsidian
- Siri 语音:「嘿 Siri,在 Obsidian 新建笔记」
- 触觉触控:长按 Obsidian 图标快速操作
iPad 分屏工作流
- 开启分屏模式
- 一侧打开 Obsidian
- 另一侧打开 Safari/邮件/文档
- 拖拽内容到 Obsidian
Automator 工作流
文件夹操作
创建 Automator 文件夹操作,当文件放入指定文件夹时自动在 Obsidian 创建笔记:
- 打开 Automator
- 新建「文件夹操作」
- 选择目标文件夹
- 添加「运行 Shell 脚本」操作
- 编写脚本:
bash
# 获取新增文件路径
for f in "$@"; do
filename=$(basename "$f")
name="${filename%.*}"
content="# $name\n\n文件来源: $f\n\n"
# URL 编码
encoded_name=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$name'))")
encoded_content=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$content'))")
# 在 Obsidian 创建笔记
open "obsidian://new?vault=MyVault&name=$encoded_name&content=$encoded_content"
done日历提醒
创建 Automator 日历提醒,在事件触发时在 Obsidian 创建笔记:
applescript
on run {input, parameters}
set eventName to item 1 of input
set noteContent to "# " & eventName & return & return & "## 会议记录" & return & return & "- 日期:" & (short date string of (current date))
tell application "Obsidian"
activate
open location "obsidian://new?vault=MyVault&name=" & eventName & "&content=" & noteContent
end tell
return input
end run终端集成
使用 CLI 操作 Obsidian
bash
# 打开仓库
open "obsidian://open?vault=MyVault"
# 创建新笔记
open "obsidian://new?vault=MyVault&name=NewNote&content=Hello"
# 搜索
open "obsidian://search?vault=MyVault&query=keyword"Shell 函数
在 ~/.zshrc 或 ~/.bashrc 中添加:
bash
# Obsidian 快捷命令
obs() {
local vault="${OBSIDIAN_VAULT:-MyVault}"
local action="$1"
shift
case "$action" in
open)
open "obsidian://open?vault=$vault&file=$1"
;;
new)
local name="$1"
local content="$2"
open "obsidian://new?vault=$vault&name=$name&content=$content"
;;
search)
open "obsidian://search?vault=$vault&query=$1"
;;
daily)
local today=$(date +%Y-%m-%d)
open "obsidian://open?vault=$vault&file=Daily/$today"
;;
*)
echo "Usage: obs {open|new|search|daily} [args]"
;;
esac
}使用示例:
bash
# 打开笔记
obs open "Projects/MyProject"
# 创建新笔记
obs new "Idea" "这是一个新想法"
# 搜索
obs search "关键词"
# 打开今日日记
obs daily常见问题
iCloud 同步冲突怎么办?
iCloud 会创建冲突副本文件(名称包含冲突时间戳)。处理方法:
- 比较冲突文件和原文件
- 手动合并内容
- 删除冲突副本
快捷指令无法打开 Obsidian?
- 确保 Obsidian 已安装并至少打开过一次
- 检查 URL Scheme 是否正确
- 在设置中允许快捷指令打开应用
AppleScript 执行报错?
- 确保在系统设置中给予了辅助功能权限
- 检查 Obsidian 是否在前台运行
- 使用
open location而非直接操作应用