惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Last Watchdog
The Last Watchdog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Troy Hunt's Blog
L
LINUX DO - 最新话题
C
Check Point Blog
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
V
Vulnerabilities – Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
J
Java Code Geeks
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
S
Security @ Cisco Blogs
IT之家
IT之家
T
The Exploit Database - CXSecurity.com
The GitHub Blog
The GitHub Blog
D
Docker
Engineering at Meta
Engineering at Meta
AWS News Blog
AWS News Blog
S
Security Affairs
U
Unit 42
P
Palo Alto Networks Blog
V
Visual Studio Blog
Y
Y Combinator Blog
D
DataBreaches.Net
Forbes - Security
Forbes - Security
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
Security Latest
Security Latest
aimingoo的专栏
aimingoo的专栏
Simon Willison's Weblog
Simon Willison's Weblog
A
Arctic Wolf
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hacker News: Front Page
博客园 - 司徒正美
博客园 - Franky
宝玉的分享
宝玉的分享
TaoSecurity Blog
TaoSecurity Blog
Latest news
Latest news
Scott Helme
Scott Helme
MongoDB | Blog
MongoDB | Blog
量子位
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Cisco Blogs
P
Privacy International News Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派 万字剖析:千问App深度体验报告(2026) - 少数派 在2026年,如何真正防止别人抄袭你的作品 - 少数派 怎么用 50 块搭个 AI 语音助手?我踩了 3 天坑 - 少数派 YeeroAI:让 AI 对话真正成为知识管理的一部分 - 少数派 爬泰山 - 少数派 「旅图显影」 App 更新:这次,我们补上了一点「手感」 - 少数派 假期出门太折磨?我的 23 条经验帮你规划惬意旅行 - 少数派 工作流会变吗 - 少数派 Claude Opus 4.6 怎么用最省钱?我测了 5 种方案 - 少数派 GPT Image 2 让图文并茂不再稀罕 - 少数派 用户侧出发——什么是AI,我要不要学习? - 少数派 找片、转存、整理、播放一条龙!让你的付费网盘值回票价 - 少数派 欢迎试用!日课一问2.0插件 - 少数派 自己做的MDeditor,原本想购买 Typora 试了两次支付不成功,干脆自己做一个 - 少数派 vibe coding了一个 3MB 的小工具,让 ~/Downloads 彻底告别混乱 - 少数派 因为受不了 Mac 的风扇策略,我做了一个风扇控制工具 - 少数派 别只怪模型 - 少数派 Warp 终端的 AI 功能怎么用?我测了一周的体验 - 少数派 AI 写代码老是出 bug?这 5 个配置我后悔没早知道 - 少数派 「新玩意」苹果出相机可能就这样:Sigma BF + 45mm F2.8 DG Contemporary - 少数派 一个面向2030年的AI操作系统是什么样子的:浅谈cola这款有灵魂的Agent - 少数派 别只看写代码 - 少数派 每天解决10个问题,还是一口气攻坚解决400个? - 少数派 AI 交易机器人怎么搭?我用 Claude 跑了一周实盘 - 少数派 Maptoposter Online:把你爱的城市画成艺术海报 - 少数派 Function Calling 怎么用?我测了 3 个模型发现差距真大 - 少数派 Legend Talk:我做了个 AI 圆桌,让 160 位思想家围着你的问题转 - 少数派 如何找到自己的蓝方?在小县城寻找压力测试 - 少数派 语音输入与软件接口|2026年聊AI时,我们都聊些什么(上) - 少数派 混动已经卖爆,纯电又来补刀——钛7闪充版简直“不讲武德” - 少数派 本月玩什么|朋友收藏、识质存在、沙罗周期 - 少数派 为什么要每天坚持输出? - 少数派 Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派 Function Calling 没你想的复杂——我用它做了个有点用的工具 - 少数派 登录系统立即播放视频或者图片音乐的软件 - 少数派 我为什么创建 FlipHTML5 下载工具 - 少数派 残局没电?多品牌外设电量统一管理软件EasyBluetooth已支持RTSS游戏内显示以及AIDA64 - 少数派 前往通义路的路 - 少数派 太好看了,媲美Sun的个人导航页,NAS部署星云门户 - 少数派 乌黑嘴唇“一键检测”上线了 - 少数派 派早报:Claude AI 接入多个创意软件生态、FILCO 生产方接手品牌等 - 少数派 【更新】BearCLI、Claude 连接器与 MCP 服务器 - 少数派 记了上千条流水,还是看不懂财务?我做了一个让 AI 读懂账本的工作台 - 少数派 MINI R56 升级原厂 Sport 模式 - 少数派 新玩意 | 一棵柠檬树(仿真版) - 少数派 Momenta的“物理AI”野望,需迈过“含摩量”这道关 - 少数派 网页直接投屏控制手机!NAS一键部署PandaScrcpy,流畅丝滑可远程。 - 少数派 众测|邀你一同探索随身 AI 硬件入口 YoooClaw C·ONE - 少数派 2050大会:分享时间是真诚 参会记 - 少数派 iPad 赋能电影创作:国内首部宣纸手绘长片《燃比娃》的幕后故事 - 少数派 AI的审美:我用 8 个大模型给 100 张旅行照片打分 - 少数派 普通人如何破圈?去参加一个本地协会 - 少数派 把极空间的图标全换了,主题DIY全攻略打造你的专属NAS桌面 - 少数派 电子便签墙,帮你实现便签自由 - 少数派 我如何用三个 CLI 工具取代文档创建需求 - 少数派 原来真的有人可以玩一辈子 - 少数派 社区速递 139 | 派友热议三月买了啥、复古单反尼康 Df 体验 - 少数派 06 作品的赏析与评价 - 少数派 TDS REVIEW|索尼 WF-1000XM6 降噪真无线耳机体验 - 少数派 35.98万起售的第二代腾势D9,我看重的不是堆料,而是不凑合 - 少数派 鼠须管 Squirrel 皮肤配置指北 - 少数派 从watch ultra2换到redmi watch6 - 少数派 派早报:阿里巴巴发布视频生成模型 HappyHorse 1.0 等 - 少数派 别迷信1M - 少数派 家人们天塌了!网盘“大封杀”,多个渠道多条路,NAS部署PanHub - 少数派 AI与人勾心斗角!NAS一键部署AI狼人杀,假日休闲必备。 - 少数派 电商必备!Comfyui工作流批量生图插件,一次生成12张!支持Nano banana pro模型 - 少数派 Comfyui工作流配置Gpt-image-2模型教程,0.03/张 - 少数派 OpenClaw第三方APi怎么配置?可使用Gpt-image-2模型 - 少数派 会员社区话题精选 Ep. 103 - 少数派
用 Ai Search 和 Drafts 实现 Alfred 的搜索体验 - 少数派
2016-09-03 · via 少数派

这篇文章主要探讨的是一种结合 Ai Search 和 Drafts 进行快速网站搜索的方法。Ai Search 扮演的是一个搜索引擎库,而 Drafts 是提高调用搜索引擎效率的工具。文中方法的关键点在于键盘输入,搜索内容和选择搜索引擎的操作都可以通过键盘输入完成。


搜索方法流程

如果你在 Mac 上有使用 Alfred,对这种 搜索引擎关键字 + 搜索内容 的方法一定不会陌生。Alfred 通过先输入搜索引擎关键字,如「bing」,确定将要使用的搜索引擎,接着输入搜索内容,就可以搜索必应网站的内容。


Alfred 搜索流程

本文利用 Ai Search 和 Drafts 达到类 Alfred 的效果,不仅可以搜索网页内容,还可以跳转到其它 App 中进行搜索。和 Alfred 不同的是,搜索引擎关键字搜索内容 的位置可以互换,为了方便解释,本文会以 搜索内容 + 搜索引擎关键字 的顺序调用搜索。


网页搜索和 App 搜索演示

如果只使用 Ai Search,也是可以达到类 Alfred 的效果,但是某些搜索场景会带来一些麻烦,接下来在 Ai Search 配置章节将会详细说明这问题。引入 Drafts,可以很好地解决这问题,而且带来更多的可能性,让这方法不仅仅局限于搜索。

本文导航(点击可快速跳转至对应章节)

自定义搜索引擎

Ai Search 不仅内置了多种多样的搜索引擎,而且还允许用户添加自定义搜索引擎。添加方法隐藏得比较深,需要在「搜索引擎推荐」的页面中,长按左上角的回形针图标,在弹出的对话框中输入搜索引擎名称和网页地址即可完成添加。名称和网址的添加方法接下来会详细解释,并且根据下面提到的内容,你会很快建立一个少数派的搜索引擎。

关于名称

这里的建议是命名时,为每个名称都加上一个特殊符号。以少数派的搜索为例,引擎命名为「☑︎sspai」(本文将在此命名方法的基础上进行讲解)。这个命名是为了避免某些使用场景的不便。因为 Ai Search 有一个缺点(在快捷搜索这方面上是优点),如果搜索内容包含搜索标签,它就启动相应的搜索。

例如,假设有一个标签名为「Google」的搜索引擎,在 Ai Search 中输入「Google Trees」,就是在 Google 中搜索「Trees」。问题在于,如果输入的内容是「Google Google 和 Amazon 的不同」,得到的结果就是在 Google 中搜索了「和 Amazon 的不同」,所有「Google」字样都被省略了。如果碰巧你有一个标签名为「Amazon」的搜索引擎,那么 Ai Search 就会同时启用这两个搜索引擎,搜索的内容是「和 的不同」。这缺点在搜索英文内容或者关键词的时候表现得更为不便。

特殊符号的快速输入方法会在 Drafts 的配置中提到。

命名的时候要注意的是:

  1. 特殊符号和名称之前最好不要有空格。

    在新建搜索引擎的时候,会附带为这引擎新建一个同名标签,如果添加空格会增加搜索的不便。标签在本文方法中占据了很重要的作用,标签就相当于搜索引擎的身份识别码,也就相当于 Alfred 中的搜索引擎关键字。

    名称和标签的作用其实不一样,为了方便理解,这里把名称和标签设置为同名(默认生成),标签的添加和优点将会在文末进阶章节说明,只要存在一个标签,就不会影响本文方法的构建。

  2. 特殊符号不能是 Emoji,因为这会导致备份失败,曾向开发者反馈,还没修复。
  3. 名称最好是英文,方便输入。

关于 URL

添加的网址需要包含一个「*」符号,这个符号替代了搜索内容。寻找「*」位置的方法就是先在搜索引擎中输入搜索内容,然后将搜索内容替换为「*」即可。

继续以少数派为例,先在少数派中搜索「Apple」,会得到一个这样的网址 https://sspai.com/search/?q=Apple,网址中「Apple」的位置就是「*」的位置,因此需要在 Ai Search 填入的是:

https://sspai.com/search/?q=*

除了添加网址外,还可以填入 URL Schemes 实现跳转到其它 App 中进行搜索。以 Tweetbot 为例,只需在网址区域的 http:// 替换成 tweetbot:///search?query=* 即可。

至此,Ai Search 的搜索引擎配置就完成了。现在你应该有一个名称和标签都为「☑︎sspai」的少数派搜索引擎,当然大家也可以添加各种自己偏好的搜索引擎以满足需求。这时候,可以试试在 Ai Search 中通过输入 Drafts ☑︎sspai 来搜索少数派中关于 Drafts 的内容,你会发现符号「☑︎」会是搜索输入中的痛点,接下来 Drafts 就会解决这问题。

Drafts 的 Action 和 Keyboard key 配置

搜索引擎库有了,接下来就是配置一个快速调用该库的工具,Drafts 就是充当这样的存在。接下来的配置会涉及 Drafts 的 Action 和 Extended Keyboard Key 的添加。

创建 Drafts Action:「快捷搜索」

将要创建的 Action 主要作用是通过 Ai Search 的 URL Schemes 把搜索内容传递到 Ai Search 里,然后 Ai Search 就会进行相应的搜索。

这里会用到 Ai Search 的 URL Scheme: aisearch://command?q= + 搜索内容 + 搜索源标签

具体创建步骤:

  1. 在 Drafts 中打开右边抽屉,然后点击右上角「+」选择 Create Action。
  2. 命名,名字随意,我的命名是「快捷搜索」。
  3. 点击 Steps。
  4. 先选择一个 Cliboard Step,这是把 Drafts 里输入的内容保存到 Cliboard 中,这一步非必要,但是可以防止误点这个 Action 后,把内容删掉的悲剧。
  5. 关键点,选择 URL Step,填入 aisearch://command?q=,然后在键盘上方一行快捷输入中选择「clipboard」就行了(如果没有使用第五步,就选择「draft」)。勾选「URL encode tag output」。
  6. 保存后返回上一层 Action 页面,滑动到最下方定义「After Success」的操作,这操作的意义在于整个动作完成后,Drafts 会按照你的方式处理内容。这里我选择的是「Trash」,把内容扔到 Trash 中,这样 Drafts 里面就可以保持干净整洁了。

创建运行 Action 的 Keyboard Key

使用 Drafts 并且开启 Extended Keyboard 是一个很不错的使用体验,可以做到快速输入 Markdown 格式、运行 Actions、使用剪贴板和输入特定字符等等。

这里,需要创建一个 Keyboard Key 运行刚刚新建的 Action「快捷搜索」。

创建步骤如下:

  1. 在 Extended Keyboard 最右边选择「笔」的图标,然后点击「+」新建。
  2. 因为这个键是运行「快捷搜索」这个 Action,所以这里选择「Run Action」。
  3. 「Action Name」中点击「+」选择自己刚刚新建的 Action 就可以了。也可以通过输入 Action 名字来选择,输入的名字必须和 Action 的名字一模一样。
  4. 「Label」可以理解为在扩展键盘中显示的图标,这里我用了一个「?」的 Emoji,使用 Emoji 的优点在于直观和节省空间。
  5. 「Keyboard Shortcut」可以根据自己需要为设备的外接键盘添加快捷键。
  6. 保存后就可以在 Extended Keyboard 上看到图标为「?」的按键并且可以使用了。

创建输入特殊符号「☑」的 Keyboard Key

如上所述,Extended Keyboard 不仅可以运行 Actions,还可以输入特定字符。这就是本文对于快速输入特殊符号的解决方案。

创建步骤如下:

  1. 因为这个键是输入「☑︎」这个符号,所以这里选择「Text」。
  2. 「Label」可以设置为「☑」或者是 Emoji「☑️」。
  3. 「Output」是指这个按键会输出的内容,所以填入「☑」。
  4. 保存后就可以在 Extended Keyboard 上使用了。

特殊符号「☑」也可以通过 TextExpander 或者文本替换进行输入,具体可以搜索相关教程。

至此,Drafts 的配置就完成了。进行搜索操作,先需要输入搜索内容和搜索引擎,然后点击扩展键盘上的「?」就可以快速跳转到 Ai Search 中进行搜索。

小结

综上,现在已经可以利用 Drafts 实现 搜索内容 + 搜索引擎关键字 的方法来进行类 Alfred 的搜索体验了。另外,大家可以自己添加一个 URL Scheme 的搜索引擎,感受一下跳转到第三方 App 中的搜索体验。

一个小技巧:如果输入的是网址而不是关键字,是可以直接在 Ai Search 打开网址的。Ai Search 不止可以搜索还可以直接打开网页。

如果你试了跳转到第三方 App 中进行搜索,会发现,系统先跳到 Ai Search,然后才会跳到第三方 App 中,而首图中,并不会先跳到 Ai Search 就可以跳转到第三方 App 中。这里就涉及一些进阶的设置,如果有兴趣可以继续通过本文进行探索。和进阶方法相比,上述方法修改起来会比较方便,主要修改的地方就是 Ai Search 的搜索库,但会带来跳转的不便和搜索速度的减慢。

接下来的进阶方法将会介绍通过 Ai Search 的标签和默认搜索源设置提高搜索的效率通过 JavaScript 增加「快捷搜索」的可能

虽然进阶方法会涉及一些正则表达式和 JavaScript 的知识,但本文会尽量做到在不需要相关知识的前提下,也可以把代码改造成符合自己的需求。

进阶方法一:Ai Search 的标签和默认搜索源

Ai Search 的标签

在上文「Ai Search 的搜索引擎配置」中的名称说到标签相当于搜索引擎的身份标识码,但其实这并不准确,标签和搜索引擎是个多对多的关系,一个搜索引擎可以拥有多个标签,一个标签可以被多个搜索引擎共用。Ai Search 是同时进行多个页面的搜索,例如可以把淘宝和亚马逊的搜索都打上「☑︎Shopping」的标签,这样如果搜索内容包含「☑︎Shopping」就可以同时搜索淘宝和亚马逊,方便比价。

搜索引擎的名称是为了方便整理的存在,而标签则是提高搜索效率的存在。引擎名称可以和标签不一样,我在搜索引擎的名称前加了和标签不一样的特殊符号,如「№ 少数派」。

标签的添加

标签可以在搜索引擎列表中,点击每个搜索引擎的右方按钮进行添加,为了避免前文说到的问题,记得每个标签都加上同一个特殊符号。除此之外,还可以在设置中,选择在首页显示的标签,这样做的好处是,如果你从 Drafts 中搜索一样东西,但忘记输入或者漏输入搜索引擎,就可以在首页重新通过点击来选择搜索引擎,而不用返回 Drafts 中。

为了提高输入效率,添加标签的时候可以不输入搜索引擎的全称,只输入缩写。如 Google 的搜索引擎,用「☑g」这个标签即可。

标签小结

  1. 给同类搜索引擎共用一个或多个标签,可以同时调用多个搜索引擎进行搜索
  2. 给搜索引擎添加一个容易记忆的缩写标签,提高输入效率

Ai Search 的默认搜索源

在搜索引擎源列表中,可以通过点按来设定默认搜索源,默认搜索源的作用就是如果搜索的时候没有选择搜索源,就默认在该搜索源中搜索。如图,选中的搜索源左边竖条会变成红色,我的默认搜索引擎是 Google。因此,如果在 Drafts 中没有输入任一搜索引擎关键字,就会自动去 Google 进行搜索。另外,默认搜索源可以设置为一个或者多个。

进阶方法二:用 JavaScript 改造「快捷搜索」

这个方法不仅仅解决了在其它应用内搜索需要先跳转到 Ai Search 的问题,还给「快捷搜索」的搜索键带来更多的功能,如返回主屏、删除当前 Draft 和添加 Fantastical 事件等。学会这方法还可以自行扩充其功能,接下来我会详细解释具体的实现思路和修改方法。

为了方便理解和快速体验效果,这里提供了 Action 的添加链接。打开后按「Install」添加即可。这个 Action 包含了两个功能组合:「☑︎a」和「☑︎tb」,分别对应的是 App Store 搜索和淘宝 App 搜索。因为这个 Action 可以比「快捷搜索」功能更多,为了区分就叫「神奇搜索」。

「神奇搜索」动作下载 >

主要思路

这方法的思路主要是,判断在 Drafts Action 的记录中是否存在「☑︎+一个或者两个字母」的功能组合,如果有,就跳转到相应的 App 中进行搜索,如果没有,跳转到 Ai Search 中搜索。也就是说,这方法把第三方 App 跳转和网站搜索这两种搜索方式分开处理,Drafts 负责处理 App 的跳转,Ai Search 负责处理网站搜索。

「☑︎+一个或者两个字母」功能组合的用途解释:

  1. 该组合可以代表是某些 App 的缩写,例如,「☑︎1p」代表 1Password 这个 App。
  2. 该组合不可以使用多个,因为系统限制,所以如果使用了多个跳转到 App 的组合,只能跳转到其中一个 App 中。
  3. 该组合可以在搜索内容的开头或者末尾出现,如果同时出现,就只认末尾出现的组合,开头的组合将会从搜索关键字中删除。

只要「☑︎+一个或者两个字母」功能组合和 Ai Search 中的引擎标签不一致,就不会影响 Ai Search 中引擎的调用。

接下来就是创建判断这种功能组合的 Drafts Action。

创建 Drafts Action:「神奇搜索」

  1. 和之前一样,先创建一个 Cliboard Step,但这一步变成必要了,因为之后的 JavaScript 是通过获取 Clipboard 来完成的,我试过获取 Drafts 内容,但没成功,有人试成功了可以讨论一下。
  2. 创建一个 Script Step,在 Script 那一步填写下面提供的代码。如果你按照本文的流程来创建,直接复制粘贴代码即可使用搜索 App Store 和淘宝的功能。

  3. 创建一个 URL Step,和之前不同,这里需要填写的是 [[uri]]{{[[clipboard]]}},不勾选「URL encode tag output」。因为不勾选,所以要加上 {{}} 套住 [[clipboard]] ,这有 encode 的效果。为什么这样做,我也不清楚,勾选过后会出现错误,所以就直接用 {{}}[[uri]] 这是在第二步代码中定义的。注意一下,这里填写的是 uri 不是 url。

  4. 「After Success」的操作选择「Trash」。

创建 Drafts Action 后,根据之前提到的方法,创建一个 Extended Keyboard Key。这样「神奇搜索」就完成了。

JavaScript 代码

本文就不解释全部代码了,但会重点标注要注意的地方,基本修改那些地方就可以正常使用了。

代码如下,欢迎指正优化:

var keyword = getClipboard();
var appkey = keyword.match(/\s*☑︎\b\w\w?\s*$|^\s*☑︎\w\w?\b\s*/igm); //1⃣
var i;

switch (true) {
    case /\s*☑︎\b\w\w?\s*$|^\s*☑︎\w\w?\b\s*/igm.test(keyword): //2⃣
        for (i = (appkey.length - 1); i > -1; i--) {
            //3⃣把涉及的组合缩写在这里罗列
            if (appkey[i].match(/\ba\b|\btb\b/im)) {
                appkey = appkey[i]; 
            }
            else {
                appkey[i] = null;
            }
        }
        keyword = keyword.replace(appkey, "");
        //4⃣以下分界线内就是赋予组合功能的地方
        switch (true) {
                /*--------------- ?分界线 ---------------*/
            //App Store ☑︎a
            case /\ba\b/im.test(appkey):
                draft.defineTag("uri", "itms-apps://search.itunes.apple.com/WebObjects/MZSearch.woa/wa/search?media=software&term=");
                keyword = keyword.replace(/\s*☑︎\b\w\w?\b\s*/igm, "");
                break;
            //Taobao ☑︎tb
            case /\btb\b/im.test(appkey):
                draft.defineTag("uri", "taobao://s.taobao.com/?q=");
                keyword = keyword.replace(/\s*☑︎\b\w\w?\b\s*/igm, "");
                break;
            /*--------------- ?分界线 ---------------*/
            default:
                draft.defineTag("uri", "aisearch://command?q=");
        }
        break;
    default:
        draft.defineTag("uri", "aisearch://command?q=");
}
setClipboard(keyword);
代码修改方法
  1. 如果你使用的是和本文不一样的特殊符号,本文为「☑︎」,你就需要搜索替换代码中所有「☑︎」符号。1⃣2⃣4⃣ 就是需要替换的地方。
  2. 3⃣是把罗列所有用到的功能组合的地方,主要修改部分为图中高亮处,也就是 \ba\b|\btb\b

    这里可以把这行代码拆分理解:

    \b + 功能关键字 + \b 是一个整体,这个整体是用 | 来进行连接。(为了方便理解,下文会把这整体称作关键字模块)

    例如,我需要的第一个功能组合是「☑︎a」(App Store),第一个关键字模块就是 \ba\b这里不需要包含特殊符号「☑︎」,然后第二个功能组合是「☑︎tb」(淘宝),那么第二个关键字模块就是 \btb\b,最后用 | 来进行连接这两个模块,就形成了代码中的 \ba\b|\btb\b。以此类推,加上第三个功能组合「☑︎1p」(1Password)就是 \ba\b|\btb\b|\b1p\b

    这其实是一行正则表达式,\b 代表的是 单词的开始或结束| 代表的是 或者

  3. 4⃣以下分界线内就是赋予组合功能的地方。如图每一个 casebreak 之间都是一个代码模块,通过添加修改这个代码模块就可以添加和修改功能。每个代码模块需要在两条 /--------------- ?分界线 ---------------/ 之间添加。
    //注释
    case /第二步的关键字模块/im.test(appkey):
        draft.defineTag("uri", "这里填写 URL Schemes");
        keyword = keyword.replace(/\s*☑︎\b\w\w?\b\s*/igm, "");
        break;

    在 Drafts Action 中用到的 uri 模块就是在这里定义的,uri 相当于,填写的 URL Schemes。

    例如,我要创建一个新的代码模块,该功能的主要信息如下:

    主要功能功能关键字URL Scheme
    搜索 1Password 中内容 ☑︎1p onepassword://search/

    根据上面信息,创建的代码模块为:

    //搜索 1Password 中内容 ☑︎1p
    case /\b1p\b/im.test(appkey):
        draft.defineTag("uri", "onepassword://search/");
        keyword = keyword.replace(/\s*☑︎\b\w\w?\b\s*/igm, "");
        break;

「神奇搜索」小结

至此,你就可以通过修改代码增加删除功能,让「神奇搜索」更加符合你的需求。本文只讨论「☑︎+一个或者两个字母」的功能组合,如果你需要「☑︎+多个字母」的功能组合,就需要修改代码了。

用 Drafts 而不是 Ai Search 作为搜索入口的好处,不仅仅是可以快速输入特殊符号,Drafts 迅速的启动速度和强大的输入功能可以带来搜索的快捷,如支持 TextExpander 可以快速输入特定短语,Extended Keyboard 的功能可以帮助你进行快速粘贴和移动光标。

先把脑海中想到的东西记录下来,再决定下一步的操作是我偏好的使用体验。使用本文方法,手指可以在键盘区域就完成搜索操作,而不需要去其它地方寻找特定功能,这种行云流水的感觉希望你会喜欢。

文章的最后我会提供一些「神奇搜索」的功能案例,供大家参考。

四个「神奇搜索」的功能案例

下面每个功能都会提供相应的信息,建立代码模块后,添加到原代码中即可增加功能,章节末尾会附带所有功能的 Drafts Action 下载链接。

  1. 这里使用了 Launcher 的 URL Scheme 来实现主屏的效果。Launcher 经过多次更新后,不再需要把自己弄崩溃来返回主屏了,新的方法会自带优雅的返回动画。
    主要功能功能关键字URL Scheme
    返回主屏 ☑︎h launcher://homescreen
  2. 利用「After Success」机制删除当前编写内容。因为 Drafts 的 Action 运行后会有一个「After Success」的操作,「神奇搜索」的「After Success」操作是「Trash」,所以原理就是运行一次这个 Action,编写内容就会被删除了。
    主要功能功能关键字URL Scheme
    删除当前编写内容 ☑︎x drafts4://
  3. 快速生成 Fantastical 事件。正如前文说到,「神奇搜索」可以承载更多的功能,搜索内容其实就是传递到 App 中的内容,所以我们可以通过 App 的 URL Schemes 做很多事情。
    主要功能功能关键字URL Scheme
    在 Fantastical 中创建事件并返回 Home Screen ☑︎fa fantastical2://x-callback-url/parse?add=1&x-success=launcher%3A%2F%2Fhomescreen&sentence=
  4. 利用 墨客 发微博,这里会给出一个使用多个关键字的功能模块案例。
    主要功能功能关键字URL Scheme
    利用墨客发微博 ☑︎mk 或 ☑︎w moke:///post?text=

    代码模块:

    //利用墨客发微博 ☑︎mk 或 ☑︎w
    case /\bmk\b|\bw\b/im.test(appkey):
        draft.defineTag("uri", "moke:///post?text=");
        keyword = keyword.replace(/\s*☑︎\b\w\w?\b\s*/igm, "");
        break;

    这里就用到之前提到的正则表达式中的「或」| 来连接两个关键字。

最后,附带关于以上四个功能模块和之前功能的 Drafts Action,这个 Action 还附带了一个快速增加 Fantastical 待办事项的功能,提供另外一种可能供参考。这功能并不是通过判断「☑︎+一个或者两个字母」功能组合来完成的,而是判断开头是否存在「reminder」的字样,如果有,就会使用 Fantastical 的 URL Scheme,不想要这功能只需将带有「reminder」的「case」删掉即可。

「神奇搜索增强版」动作下载 >

结语

文章「小结」前的方法其实已经可以满足大部分需求了,打开网址、网页搜索和应用搜索都可以通过一个 Action 完成。进阶方法则拓展了这个 Action 的可能,在一定程度上可以减少 Drafts 中 Actions 和 Extended Keyboard Keys 的数量。

个人觉得这种类 Alfred 的搜索体验在 iOS 上表现得很优秀,Ai Search 的多网页同时搜索极大地提高了查找资料的效率。还有比 Alfred 好的地方是并不需要在意搜索关键字的位置,可以出现在开头或者结尾。相信大家都会有忘记自己要搜什么的经历,因此我个人偏向于先输入自己想要搜索的内容,再决定怎么处理这内容。希望你会喜欢这种搜索体验并创造更多的可能,如果对文中方法有什么意见欢迎提出交流。

最后两个小技巧

  1. 推荐一个搜索引擎

    网站名称作用
    fnd.io 第三方搜索 App Store、iTunes Store 和 iBook Store 内容的引擎,可以搜索不同区的内容

    搜索源添加网址:

    我把 fnd.io 搜索中区和美区链接都设置在 Ai Search 里,并且共用一个名为「☑fnd」的标签,只要我输入「Drafts ☑fnd」,Ai Search 就为我同时搜索出 Drafts 这款应用在美区和中区的价格和其它信息。

  2. 在 Drafts 中,我使用了一个粘贴剪贴板的 Extended Keyboard Key,因为用到 JavaScript,所以直接使用了别人做的「Paste」。Drafts 提供了一个平台包含了很多有用的 Actions 和 Keys,可以浏览 http://drafts4-actions.agiletortoise.com 进行搜索查找。