article_image

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

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

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

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

群雄林立的 macOS 自动化生态

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

  1. 脚本通用:多数自定义脚本稍作修改就能移植到其他工具上。
  2. 操作各异:每个工具有自己擅长的操作方式,比如 Keyboard Maestro 的快捷键、LaunchBar 的全局快速启动或 BetterTouchTool 的触控板。

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

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

Alt text
macOS 主流自动化工具能力表

通用型自动化工具: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 播放界面自动开启画中画、回到播放界面后自动退出画中画。

Alt text
用 Keyboard Maestro 自动开关 IINA 的画中画

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

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

Alt text
Keyboard Maestro 和 LaunchBar 输入框的对比

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

全局启动器:LaunchBar 和 Alfred

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

  • 启动一个应用
  • 启动一个文件
  • 启动应用内部的一个功能
  • 启动一个自定义的功能,比如一段 AppleScript 脚本

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

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

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

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

Alt text
Image 2018-9-20 11-45

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

文件自动化整理工具:Hazel

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

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

  1. 监控指定的文件夹:比如监控 ~/Download 文件夹
  2. 监测预设的条件:比如发现了刚下载好的压缩包
  3. 触发预设的动作:比如将压缩包解压,并把文件放到桌面上供下一步操作

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

  • 自动将乱码的文件名转换为正常的中文
  • 连接上 Kindle 之后自动清理无用的 SDR 书籍缓存
  • 下载文件后自动校对 MD5 值,防止下载来路不明的文件

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

触摸板增强工具:BetterTouchTool

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

  • 四指轻拍,关闭当前页面
  • 三指轻点,删除选中的文件
  • 双指重按,在新标签页打开网页
  • 轻点触控版顶端,回到网页最上面
  • ……

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

  1. 直接触发 Workflow
  2. 通过快捷键、菜单栏选项或 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 也有简单的剪贴板管理功能,并且支持自己编写扩展脚本1。已经在用这些启动器的读者,可以先试试它们的剪贴板功能,如果确实有需求,再学习专门的管理工具也不迟。

文本格式清理工具:Text Soap

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

  • 把英文逗号改回中文逗号;
  • 去除重复的空格、多余的空行
  • 把普通段落变成 Markdown 的引用格式
  • ……

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

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

小结

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

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

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


  1. 但是不能完全代替剪贴板工具,因为操作不顺手、功能不全面。最简单的例子,使用 LaunchBar 的剪贴板需要呼出搜索框、呼出剪贴板 2 步,而 Copied 可以通过快捷键一键开启。
  2. 苹果前自动化产品经理 Sal 现供职于 Omni 团队。

author_avatar

Lawyer, macOS/iOS Automation Amateur