# Automator 手册第九章：如何选择第三方自动化工具

> 本文公开全文。

原文：https://utgd.net/article/20228

到目前为止，我们从 Automator 开始讲到 AppleScript、Shell，基本把 macOS 原生自动化的基础知识讲完了（没错，只是基础，后面还有更高阶的玩法）。

有了原生自动化的基础后，我们再来了解一下第三方自动化工具。得益于通用脚本语言、相互兼容和接口开放，macOS 上第三方自动化工具也形成了一个良好的生态，发展得郁郁葱葱。

不过，过多的选择有时让人摸不着头脑。你可能听过 Keyboard Maestro、Alfred、LaunchBar、Hazel……等一系列响亮的名字，但对于它们之间的区别就不一定清楚。

这章作为拓展章节，将介绍主流第三方自动化工具各自适合的应用场景。

## 群雄林立的 macOS 自动化生态

macOS 上的第三方自动化工具，要想入我们这些 Power User 的眼，都逃不开脚本支持（scriptable）。而名符其实的高级工具，又颇具默契地具备了两个特点：

- 脚本通用：多数自定义脚本稍作修改就能移植到其他工具上。

- 操作各异：每个工具有自己擅长的操作方式，比如 Keyboard Maestro 的快捷键、LaunchBar 的全局快速启动或 BetterTouchTool 的触控板。

这就允许我们：选择喜欢的操作方式，实现需要的功能。同样是想清理电脑里的 DS 缓存文件，喜欢快捷键的读者可以用 Keyboard Maestro，喜欢全局跳转的用户会呼出 LaunchBar——而不常清理缓存的人，可能就把这个功能塞进了使用率相对较低的右键菜单。

总之，玩到脚本这个等级，常见的功能我们都能造出来（或者找现成的轮子）。再来挑工具，主要就看各自独特的功能和操作方式。

## 通用型自动化工具：Keyboard Maestr

从编辑界面到操作方式，Keyboard Maestro 都像是 Automator 的增强版，我们先来看看 Keyboard Maestro 的应用场景。

Keyboard Maestro 里面有大量自带功能，可以像 Automator 一样拖拽组合成工作流，当然也支持通过脚本来扩展。由于操作方式丰富、编辑动作的流程也和 Automator 相似，Keyboard Maestro 很适合作为进阶到第三方自动化工具的第一站。

操作方式上，Keyboard Maestro 比 Automator 更丰富，几乎可以用任何你喜欢的方式启动：

- 快捷键

- 菜单栏

- 悬浮窗

- 光标手势

- 输入文本

- ……

我把 Keyboard Maestro 成为“通用型自动化工具”，就是看着它齐全的操作。我曾用 Keyboard Maestro “模拟” TextExpander，实现键入关键词即展开大段文本的功能。通用归通用，Keyboard Maestro 也有一系列特色的、难以被取代的 Trigger（触发条件），可以在后台默默检测电脑、应用和用户的操作，不需要你去按下“扳机”，就可以自动触发预设的动作。这些 Trigger 包括：

- 开盖合盖

- 应用启动/关闭

- 窗口激活/静默

- ……

我为 IINA 播放器做过一个动作，可以在离开 IINA 播放界面自动开启画中画、回到播放界面后自动退出画中画。

这个动作利用的就是 Windows Trigger（窗口触发条件），Keyboard Maestro 会捕捉光标的位置，通过它所在的窗口来激活对应的动作。

另一方面，也正是因为 Keyboard Maestro 的全能，不少人把 Keyboard Maestro 作为唯一的自动化工具，并且研究出代替 TextExpander、Alfred 的方案。但是全能不代表最合适，比如 Keyboard Maestro 的输入框就很逼仄，不如 LaunchBar、Alfred 那么大方。

毕竟术业有专攻，遇到 Keyboard Maestro 不能胜任的场合，还是需要果断转换工具。

## 全局启动器：LaunchBar 和 Alfred

上一小节末尾，其实我们已经见识到了 macOS 上另一类自动化工具：启动器。启动器简单来说就是一个大气的输入框，你可以输入或键入一堆文本，然后启动对应的任何东西：

- 启动一个应用

- 启动一个文件

- 启动应用内部的一个功能

- 启动一个自定义的功能，比如一段 AppleScript 脚本

看过其余系列文章的你，是不是觉得这种“启动”的操作和在终端里输命令特别像？没错，启动器的鼻祖 LaunchBar 最早就是个简陋的终端窗口，后面才慢慢演化成今天大家闺秀般的模样。你至今还可以在 LaunchBar 的主题中找到元祖级的输入框。

输命令这种操作方式，把我们从成堆的快捷键里解放出来。快捷键虽快，但一来键盘上拢共就这么几颗按键，到后来总不够分配；二来快捷键多了，你自己都记不住对应的功能是什么。而命令千变万化同时可以完全自定义，加上 LaunchBar 的模糊搜索特性，基本上打几个关键字母，一条完整的命令就被选中了

如果说快捷键是快准狠的“剑宗”，启动器就是只可意会的“气宗”，两个流派招式不同但殊途同归，皆为效率而生。

macOS 上的启动器不少。和 LaunchBar 各占启动器半壁江山的是 Alfred，后者原生支持 PHP（被广泛用于网站开发），所以在在线搜索方面具有更大的优势，更容易实时呈现搜索结果。另外，Alfred 采用了图形化的编辑界面（工作流的形式），并且基础功能（不涉及自定义动作）免费，更适合新手拿来入门。

总的来说，第三方启动器最厉害的就是自定义自动化动作。LaunchBar 支持脚本、Alfred 有工作流，它们和 Automator 的 Application/Services 一样能够处理输入的变量，其他系列文章中介绍过的脚本，统统可以嵌入 LaunchBar/Alfred。

## 文件自动化整理工具：Hazel

在 Automator 问世的次年，一个专司文件自动化整理的工具也出世了，它就是 Hazel。我们可以把 Hazel 当作文件夹动作的加强版，它继承了 Automator 简单易懂的图形化编辑界面，同时又具有更高的稳定性、更丰富的功能。

Hazel 的工作原理很容易理解：

- 监控指定的文件夹：比如监控 ~/Download 文件夹

- 监测预设的条件：比如发现了刚下载好的压缩包

- 触发预设的动作：比如将压缩包解压，并把文件放到桌面上供下一步操作

设置好文件夹、条件和动作，一条 Hazel 规则就成型了。编辑过程中你可以完全不写代码，只用预设模块就满足日常需求；但如果愿意折腾一下，就能实现更多进阶功能：

- 自动将乱码的文件名转换为正常的中文

- 连接上 Kindle 之后自动清理无用的 SDR 书籍缓存

- 下载文件后自动校对 MD5 值，防止下载来路不明的文件

尽管功能强大，但 Hazel 很低调，平时安安静静地呆在后台（只在菜单栏占用了一个小图标的位置），只在监测到预设情形时才会出来工作。

## 触摸板增强工具：BetterTouchTool

和 Keyboard Maestro、LaunchBar 等专供键盘操作的工具不同，BetterTouchTool 另辟蹊径，在触摸板手势上做起了文章。一些经典的手势如：

- 四指轻拍，关闭当前页面

- 三指轻点，删除选中的文件

- 双指重按，在新标签页打开网页

- 轻点触控版顶端，回到网页最上面

- ……

说到具体的功能，BetterTouchTool 可能没有 Keyboard Maestro 的预设动作那么全、也不比 LaunchBar 对于脚本支持那么到位，但是我们可以通过 BetterTouchTool 来触发别的自动化操作：

- 直接触发 Workflow

- 通过快捷键、菜单栏选项或 AppleScript 触发 Keyboard Maestro

启动 Keyboard Maestro 的 AppleScript 代码如下，把 Macro 名字 换成你的 Marco 名字就能使用：

```
tell application "Keyboard Maestro Engine"
    do script "Macro 名字"
end tell
```

所以，我们完全可以把 BetterTouchTool 作为一个万能辅助工具，连接上 Keyboard Maestro 等功能更强大的自动化主力工具，把触控板变成自动化动作的控制中心。

## 文本处理自动化工具

上面提到的自动化工具基本都是全能型选手，不过 macOS 上还有一类工具不能忽视，它们就是文字处理自动化工具。不要以为这类工具只有“文字工作者”用得上，作为一个现代人，只要你还需要打字，就会遇到各种机械繁复的工作：

- 反复输入常用邮箱、电话号码

- 不断在 PDF 参考文档和笔记应用来回复制粘贴

- 手动修正标点错误、在中英文之间插入空格、去除多余的空行和空格

- ……

这些问题，就是文本处理自动化工具要解决的。

### 缩写工具：TextExpander

系统设置中的“文本替换”，就是一种最简单的缩写功能：输入 mmail，即展开成完整的邮箱地址 minja@xxx\.com。而搭上自动化快车的缩写工具——以支持脚本拓展的 TextExpander 为首——还可以做到更多：

- 快速输入当日日期

- 快速将文本转大写/小写

- 在中英文之间自动插入空格

- 一键把弯角引号替换成直角引号

- 把图片链接换成 HTML 格式插入文章

- ……

邮箱、电话、邮件模版、客套留言、常用的文本格式转换，都理应存为一个模版，要用的时候打几个首字母就快速调用出来。

TextExpander 有句口号，特别能代表这类工具的价值，听着还让人舒服：

> 不要把你的时间浪费在重复已经完美的表达上。

### 剪贴板管理工具：Copied、Pastebot

无论在 macOS 还是 iOS 上，剪贴板都是一条系统级的数据传输通道，图文都能通过剪贴板进行共享。自动化工具们自然也不会放过这条高速公路。

在记录剪贴板历史、分组管理的基础上，一批工具慢慢发展出自动化的用法。其中 Copied 最具代表性：

- Rules：剪贴板历史记录自动分组

- Text Formatters：剪贴板文本格式转换

- Merge Scripts：组合多条剪贴板历史记录

- ……

Merge Scripts 卓尔不群。编辑部每天都在用它批量处理文章标题、链接的格式。即使面对着剪贴板里上百条的文章信息，Merge Scripts 也能调好格式、拼接文本然后一次性粘贴到表格里。此功能堪称剪贴板自动化的巅峰。

Copied 的开发者非常低调，不说的话，你估计都不知道 TA 是中国人。雁过留声，Copied 留下的是工具本身的口碑，这是很多优秀工具的共同点。

剪贴板工具里，能和 Copied 同台竞技的只有 Pastebot。后者的资历更老，而且出自著名第三方 Twitter 客户端 Tweetbot 的开发团队之手，在功能上基本不输 Copied（可惜不能一次性处理多条剪贴板历史记录，也没有 iOS 客户端），并且不自带的功能也可以通过写脚本来实现。

另外，Keyboard Maestro、Alfred、LaunchBar 也有简单的剪贴板管理功能，并且支持自己编写扩展脚本。已经在用这些启动器的读者，可以先试试它们的剪贴板功能，如果确实有需求，再学习专门的管理工具也不迟。

### 文本格式清理工具：Text Soap

除了缩写和剪贴板管理，日常打字时还有一类特别令人头痛的场景：文本格式清理。在引用参考资料、复制现成文档时，我们总是遇到一些不合规乃至错误的格式，从而不得不做一系列文本格式清理的工作：

- 把英文逗号改回中文逗号；

- 去除重复的空格、多余的空行

- 把普通段落变成 Markdown 的引用格式

- ……

平时越是不常处理文本的人，需要调整格式时就越吃亏。想象一个辛辛苦苦做了两个月实验的理工科学生，在 DDL 前却还要加班几个钟头甚至通宵，只为了给 Word 和 PPT 调整格式。这种事情本当交给文字格式清理工具来做，比如用 Text Soap 来完成枯燥的文本替换。

对了，用 TextExpander 能实现比 Text Soap 更强大的功能（因为前者的脚本更加丰富），但是 Text Soap 拥有图形编辑界面，普适性更强。

## 小结

除了章节介绍的工具，macOS 上还有大量具备优秀自动化能力的工具，比如 Omni 系列、任务管理工具 TaskPaper 乃至原生的 iWork 办公套件，不过它们的专门性过高，这里先不深入。

总之，在脚本语言、图形化编程等一系列通用标准的推动下，macOS 上的自动化工具一片繁荣，不管你想找一个通用工具来提高使用快捷键的效率，还是想找一个应用在后台默默帮你整理文件，又或者希望借助文本处理增强工具摆脱繁复的输入，都能找到合适的选择。

让所有重复无聊的工作都见鬼去吧。

---

[前往标准阅读页](https://utgd.net/article/20228?audience=web)
