# 用 Automator 在迷你浮窗中即时搜索选中的内容

> 本文公开全文。

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

各种搜索引擎用多了，有一日在 MacBook 上查词时突发奇想：能不能像 macOS 原生词典那样，通过弹出式（Popup）窗口来进行简单的网页搜索？

macOS 弹出式查词体验清爽，不用离开当前页面，查完就走，免得开一个扑你满脸、可能还插满广告的新网页。回忆一下 Siri compact search，便可知小浮窗在多数场景下已是绰绰有余，比如查一个俚语的解释，可能看看第一个结果的简介就行了，都不用点进去；或者想查一下最新一部《潜伏》的电影评分，瞥一眼豆瓣简介也够了；有些看似高深的专业词汇，看看在线字典的释义也能懂个大概，不需要专门奔往查询页面……碰巧 Automator 提供了 Website Popup 组件，可以让搜索页面呈现为类似弹窗查词的样式；同时，加上一点点自动化技巧，还能打造一套涵盖常用网站、随时可以呼出的弹窗搜索动作组。

一个彩蛋：很多网站因为弹出式窗口空间狭小，“不得不”放弃在页面左右插入广告，或者针对小窗口会提供广告较少的移动端布局。虽非本意，但弹出式搜索也是“去广告”的一种方式。

\>\> 下载链接 \<\<

## 动作安装与使用

本文提供的示例动作有豆瓣电影搜索、豆瓣图书搜索、维基百科和 Giphy 动图搜索，双击安装后它们会出现在右键菜单中。示例动作只有 4 个，后期积攒多了的话，这些动作会被折叠进一个二级菜单（macOS 12 之后，统一会被折叠进去 “Quick Actions”中）。

使用方式都一样，在任意应用中选中一段关键词，然后点击右键，选中对应的动作，运行即可。比如像下图，浏览网页时看到一个不太熟的专有名词，就可以试着通过右键菜单激活弹窗搜索，大致了解生词的同时尽量不离开当前页面，免得打断阅读进度。

只要不主动关闭，弹窗可以一直保留在屏幕上——而且在全屏应用中也可以一直悬浮，当作一个搁在手边的参考资料窗口。查完后，点击弹窗上的“OK”按钮即可关闭窗口。

弹窗虽小，其中仍然是一个正常、完整的网页，所含的图文内容也可以拖曳到其他应用中。如果你喜欢和朋友“斗图”，那么示例动作中的 Giphy 搜索就能派上用场：随便想一个符合聊天气氛的关键词，弹窗搜索后，直接从 Giphy 网页里把应景的动图拉到聊天窗口发送过去。

除了拖曳内容，你要是愿意的话，还可以在弹窗中继续点开链接、查看子网页，和在 iPad 上使用 Slide Over 分屏操作的效果差不多。总之丰俭由人，瞥一眼就关掉也可以，当作迷你浏览器用也完全没问题。

Automator 弹窗动作默认通过右键菜单运行，但是网站多了之后，响应的搜索动作都会被压进二级菜单，用起来宛如翻箱倒柜。如果你有 LaunchBar 或 Keyboard Maestro——LaunchBar 用户可以用 Instant Send 功能启动弹窗搜索。选中关键词后，双击 ⌘Command 键将关键词发送到 LaunchBar（默认，各人或有不同），再直接键入 websitePopup\-xxx 的前几个字母，回车即可进行弹窗搜索，不再需要去右键菜单翻找。

注意，为了让 LaunchBar 顺利找到搜索动作，至少动作名称开头得是英文字母。另外，不建议绑定快捷键（至少不建议完全借助快捷键启动弹窗搜索），使用中很容易积累上十几个搜索引擎，依赖快捷键的话，往往背都背不过来，并不“快捷”。

Keyboard Maestro 用户则可以使用 Palette 特性汇集各路搜索引擎，只需将各个搜索动作的快捷键设成一样，就会弹出一个集中了所有弹窗搜索功能的“工具栏”，在给右键菜单“减负”方面与 LaunchBar 各有千秋。关于 Palette 特性，可以参考《Keyboard Maestro Palette：macOS 上的全能工具箱》。

## 自定义搜索引擎

Website Popup 模块呈现的是完整网页，除了一些需要登录才能搜索的页面，基本都可以直接通过弹窗正常打开。示例动作只有 4 种，但一般来说，只要一个网页可允许在其 URL 中插入关键词进行搜索，就能做成弹窗搜索的形式。从通用搜索引擎 Google、Bing，到专用搜索引擎维基、Giphy、Emojipedia，以及豆瓣等网站的站内搜索，都在弹窗搜索的可行范围内。

下面我们解剖一个豆瓣电影搜索的动作，大致了解一下其内部原理；再之后，就可以试着自定义搜索引擎。

为了在小弹窗中获得较好的显示效果，可以尝试采用豆瓣移动版的 URL。找到其移动页面，随便搜一个关键词试试，可以发现其搜索 URL 是这样的：

```
https://m.douban.com/search/?query=无用之人&amp;type=movie
```

很好理解，无用之人 是刚刚输入的关键词，而剩余部分就是豆瓣电影搜索的模板 URL。制作自动化动作时，只要需保留模板、替换 无用之人 成你的关键词就好了。

接着，打开豆瓣弹窗搜索的 Automator 动作，可以看到它由三部分组成：

- 动作的输入部分，允许此动作在任何应用（any application）中接收文本（text）作为关键词，这部分不用修改；

- Shell 脚本部分，负责将用户选中的关键词和搜索 URL 模板拼接起来，这里是我们主要需要修改的地方；

- Website Popup 部分，负责将 Shell 拼装好的 URL 以弹窗形式打开，这部分还可以设置弹窗尺寸、是否使用移动版，以达到更好的显示效果。

Shell 脚本部分为了兼顾中文关键词，稍微做了一些 URL 编码工作，这样一来多数网页都可以识别我们选中的中文关键词——比如豆瓣就要求编码，不然搜不出东西。编码部分不用修改，不是特别感兴趣的读者跳过即可。

先来看最关键的 URL 填写。示例动作豆瓣电影搜索中，Shell 脚本最后一行承担了拼接 URL 的任务，其中的 URL 似曾相识：

```
https://m.douban.com/search/?query=$keyWord&amp;type=movie
```

没错，上面的 URL 就是经由豆瓣的搜索模板改造而成的，其中 $keyWord 变量就是编码后的关键词，这个变量由前面几行 Shell 脚本负责生成，你在自定义 URL 时直接使用即可。以 Urbandictionary 为例，你要做的只是用 $keyWord 换掉其搜索 URL 中的关键词，就得到下面的 URL：

```
https://www.urbandictionary.com/define.php?term=$keyWord
```

自定义搜索引擎就是那么简单。顺便提一下，别忘了上面这个 Urbandictionary 弹窗就是一个正常的网页，所以点击的发声按钮也是可以点击的，如果你不太拿得准一个俚语怎么读，那就可以试试弹窗搜索。

注意点：手机版网页容易失效 由于网络环境不同，在电脑上访问手机端页面可能会失败。我在使用 1\.1\.1\.1 DNS 时就打不开豆瓣手机版（m\.douban\.com）。如果你也遇到不能访问或者显示空白的情况，可以尝试恢复系统默认网络配置。

最后一步是通过 Website Popup 显示弹窗页面。到这一步，核心的搜索 URL 已经组装完毕，剩下的只是显示效果的问题。Website Popup 可以模拟手机、iPad 或电脑的浏览器页面，不过既然是弹窗搜索，总还是往手机界面靠拢为妙，不然就没了“小浮窗”的感觉。Website Popup 的细节设置及原因如下：

- 网页尺寸（Site Size），默认的 iPhone 尺寸一般就够了，也可以在右侧输入数值进行微调；

- 用户代理（User agent），推荐选“iPhone”，这样搜索引擎服务器会把你识别成手机用户，提供相对干净的移动端页面（桌面页面两侧可是天然的广告位）；

- 弹窗位置（Position），设置成在鼠标位置上，因为我们一般会用鼠标选取关键词，让弹窗出现在鼠标周围，可以最大程度模拟系统词典“就地弹出查词窗口”的效果。

---

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