关于 macos-automation
macos-automation 是一项通过脚本控制 macOS 应用和系统功能的技能,适合自动化重复任务或跨应用操作。它涵盖 AppleScript、JXA、Shortcuts、Automator 和基于辅助功能的界面控制。
主要功能
- 01使用 AppleScript 和 osascript 控制应用
- 02通过 JXA 自动化 macOS API
- 03以编程方式创建和运行 Shortcuts
- 04将 Automator 工作流作为脚本运行
- 05通过 System Events 控制界面元素
适用场景
- 01自动处理重复的文件管理任务
- 02通过键盘快捷键触发应用操作
- 03协调多个应用间的连续操作
- 04在没有直接 API 时控制界面元素
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill macos-automation安装后在 Claude Code 中输入/macos-automation确认已加载。
详细介绍
macos-automation
用途
此技能使用 AppleScript、JXA、Shortcuts、Automator、osascript、System Events 和辅助功能 API 等工具,在 macOS 上自动执行任务,从而通过脚本控制应用和系统功能。
适用场景
- 自动执行重复性工作流,例如文件管理或应用交互。
- 与 macOS 应用集成以实现自定义行为,例如通过键盘快捷键触发操作。
- 编写涉及多个应用的复杂操作序列脚本,例如仅靠 Shortcuts 无法满足需求时。
- 处理辅助功能任务,例如在应用未提供直接 API 时操作 UI 元素。
- 在 shell 脚本或 IDE 等环境中快速构建自动化原型。
主要功能
- 通过 osascript 执行 AppleScript 来控制应用,例如操作 Finder 或 Safari。
- 运行 JXA 以与 macOS API 交互,并支持现代 JavaScript 语法。
- 以编程方式创建和调用 Shortcuts,以执行共享文件等快速操作。
- 将 Automator 工作流用作脚本,并可将其转换为应用或服务。
- 利用 System Events 进行 UI 自动化,包括通过辅助功能 API 模拟键盘和鼠标操作。
- 访问 macOS 专属 API,例如在 Objective-C/Swift 代码中嵌入 NSAppleScript。
使用模式
- 使用 osascript 从命令行运行脚本;例如,直接通过管道传入 AppleScript 代码。
- 在 Node.js 环境中加载 JXA 模块,并通过
Application('Finder').activate()执行,以嵌入 JXA。 - 将 Shortcuts 导出为 URL,并通过
open命令调用,以便与其他工具串联。 - 使用 Automator 构建工作流,然后将其保存为 .applescript 文件,供 osascript 执行。
- 如需使用辅助功能,请确保在“系统偏好设置”>“安全性与隐私”中启用“辅助功能”,然后使用 System Events 定位 UI 元素,例如
tell application "System Events" to click button "OK" of window "Main"。 - 运行访问文件的脚本前,务必检查是否已授予所需权限,例如“完全磁盘访问权限”。
常用命令/API
- osascript CLI:使用
osascript -e 'tell application "Finder" to make new folder at desktop'创建文件夹;通过检查退出代码来处理错误。 - JXA 示例:在 JavaScript 文件中,使用
const app = Application('Safari'); app.activate(); app.documents[0].url = 'https://example.com';打开并访问某个 URL。 - Shortcuts 集成:通过
shortcuts run "My Shortcut" -i '{"input": "text"}'运行快捷指令;以 JSON 格式传递输入以执行参数化操作。 - Automator API:使用
tell application "Automator" to run workflow "path/to/workflow"将工作流转换为 AppleScript。 - System Events API:进行 UI 自动化时,使用
osascript -e 'tell application "System Events" to keystroke "a" using {command down}'模拟 Command+A。 - 配置格式:将脚本存储为纯文本文件(.applescript),并使用
osascript path/to/script.applescript调用;对于 JXA,请在 .js 文件中使用 ES6 模块。
集成说明
- 通过在 shell 脚本中封装 osascript 调用来与其他工具集成;例如,使用
$ export APPLESCRIPT_PATH='/path/to/script',然后通过osascript $APPLESCRIPT_PATH运行。 - 对于 JXA,在 Node.js 中引入 OSA 模块:
npm install osa,然后使用const OSA = require('osa'); OSA.runAppleScript('...')。 - 如果需要辅助功能,请在“系统偏好设置”中授予权限后设置环境变量
$ACCESSIBILITY_ENABLED=1。 - 身份验证/密钥:访问受保护资源的脚本可使用
$osascript_API_KEY等环境变量(但这种情况很少见);更常见的是通过tccutilCLI 管理 macOS 权限,例如使用tccutil reset AppleEvents com.example.app重置访问权限。 - 可将 AppleScript 编译为应用包,或在 Electron 应用中使用 JXA,以嵌入更大型的应用并实现跨工具集成。
错误处理
- 检查 osascript 退出代码:如果脚本失败,请使用
osascript -e 'script' 2>&1捕获输出,并解析标准错误中的消息,例如 "Execution error: ..."。 - 在 JXA 中使用 try-catch 包裹代码:
try { Application('Finder').activate(); } catch (e) { console.error(e.message); },以处理找不到应用的错误。 - 对于 Shortcuts,使用
shortcuts run "Name" --wait-for-result验证,并检查输出中是否有失败信息。 - 在工作流设置中启用 Automator 的内置日志记录,然后通过 Console 应用查看日志。
- 通用模式:如有需要,始终使用提升的权限运行脚本,例如通过
sudo osascript -e '...',并在遇到权限错误时提示用户调整设置。
具体用法示例
- 自动打开应用并执行操作:使用 osascript 打开 Safari 并加载网页:
osascript -e 'tell application "Safari" to open location "https://example.com"' followed by 'tell application "Safari" to activate'。这适用于日常工作流;可通过添加错误检查来扩展。 - 使用 Shortcuts 自动化 UI:创建一个 Shortcut 来调整窗口大小,然后通过 CLI 调用:
shortcuts run "Resize Window" -i '{"app": "Finder", "width": 800}'。结合 JXA 处理动态输入,例如在脚本中使用:Application('Shortcuts').run('Resize Window', {input: JSON.stringify({app: 'Finder'})})。
图关系
- 相关项:macos 集群(直接父级)、applescript 技能(用于脚本编写的子技能)、shortcuts 技能(集成工具)、automation 集群(更广泛的类别)。
- 依赖项:需要 macos-os(基础系统),并与用于 UI 任务的 accessibility-api 技能交互。
评论
支持 Markdown