尋找(Apple)
透過 macOS 上的「尋找」App 追蹤 Apple 裝置與 AirTag。由於 Apple 未提供「尋找」功能的命令列介面,此技能使用 AppleScript 開啟 App,再以螢幕截圖讀取裝置位置。
先決條件
- macOS 系統,已安裝「尋找」App 並登入 iCloud
- 裝置/AirTag 已於「尋找」中註冊
- 為終端機授予「螢幕錄製」權限(系統設定 → 隱私權 → 螢幕錄製)
- 選擇性但建議:安裝
peekaboo以獲得更好的 UI 自動化效果:brew install steipete/tap/peekaboo
何時使用
- 使用者問「我的[裝置/貓咪/鑰匙/包包]在哪裡?」
- 追蹤 AirTag 位置
- 檢查裝置位置(iPhone、iPad、Mac、AirPods)
- 隨時間監控寵物或物品的移動(AirTag 巡邏路線)
方法 1:AppleScript + 螢幕截圖(基本)
開啟「尋找」並進行導覽
# 開啟「尋找」App
osascript -e 'tell application "FindMy" to activate'
# 等待載入
sleep 3
# 擷取「尋找」視窗的螢幕截圖
screencapture -w -o /tmp/findmy.png
接著使用 vision_analyze 讀取螢幕截圖:
vision_analyze(image_url="/tmp/findmy.png", question="畫面中顯示哪些裝置/項目及其位置?")
切換分頁
# 切換到「裝置」分頁
osascript -e '
tell application "System Events"
tell process "FindMy"
click button "Devices" of toolbar 1 of window 1
end tell
end tell'
# 切換到「物品」分頁(AirTag)
osascript -e '
tell application "System Events"
tell process "FindMy"
click button "Items" of toolbar 1 of window 1
end tell
end tell'
方法 2:Peekaboo UI 自動化(建議)
若已安裝 peekaboo,可使用它進行更可靠的 UI 互動:
# 開啟「尋找」
osascript -e 'tell application "FindMy" to activate'
sleep 3
# 擷取並標註 UI
peekaboo see --app "FindMy" --annotate --path /tmp/findmy-ui.png
# 依元素 ID 點擊特定裝置/項目
peekaboo click --on B3 --app "FindMy"
# 擷取詳細資訊視圖
peekaboo image --app "FindMy" --path /tmp/findmy-detail.png
接著用 vision 分析:
vision_analyze(image_url="/tmp/findmy-detail.png", question="此裝置/項目顯示的位置為何?若有地址與座標也一併提供。")
工作流程:隨時間追蹤 AirTag 位置
用於監控 AirTag(例如追蹤貓的巡邏路線):
# 1. 開啟「尋找」至「物品」分頁
osascript -e 'tell application "FindMy" to activate'
sleep 3
# 2. 點擊該 AirTag 項目(停留在頁面——AirTag 僅在頁面開啟時更新)
# 3. 定期擷取位置
while true; do
screencapture -w -o /tmp/findmy-$(date +%H%M%S).png
sleep 300 # 每 5 分鐘
done
用 vision 分析每張螢幕截圖以提取座標,再彙整出路線。
限制
- 「尋找」沒有命令列或 API——必須使用 UI 自動化
- AirTag 僅在「尋找」頁面保持顯示時才會更新位置
- 位置的準確性取決於「尋找」網路中附近的 Apple 裝置
- 螢幕截圖需要「螢幕錄製」權限
- AppleScript UI 自動化可能因 macOS 版本不同而失效
規則
- 追蹤 AirTag 時,請將「尋找」App 保持在前景(最小化時會停止更新)
- 使用
vision_analyze讀取螢幕截圖內容——不要嘗試解析像素 - 若要持續追蹤,可設定 cron 工作定期擷取並記錄位置
- 尊重隱私——僅追蹤使用者自己擁有的裝置/物品