冬季假期写完长篇论文,又花两周改完初稿,如果算上中间玩 RPG 度过的 150 多个小时,前前后后折腾了一个多月,期间抛开一堆二手文献,基本就没读什么正经东西,大脑已经退化到幼儿园状态,论文是一篇也看不下去了。为了逃避学术工作,我开始在夜里高强度摸鱼,折腾各种奇怪的软件玩具。如此一来,在一无所获的一天结束后,我躺在床上还能够自我安慰:考虑到我的研究题目比较奇特,研究性质随时在变,我并没有荒废人生,只是在进行一些可有可无的自我民族志。

但是谁成想,和电视剧里说的完全不一样,逃避既可耻又没用。前两天夜里,在我玩到山穷水尽,感觉个人计算机不过如此,迟早被扔进历史的垃圾桶里的时候,我又开始想和学术有关的事情,于是开始用之前写的按键宏脚本来速读点看起来就没什么用的文章。结果没成想,它的稳健性太差了,跑一会儿炸一会儿,最后比我自己读得还慢。一怒之下,在自行看完四篇论文后,我决定重写整个流程,看看有没有什么办法能优化一下流程,让它能够稳定地给我看上论文。

众所周知,个人计算机从不会辜负任何一个愿意折腾它的人——我已经意识到,作为一个工具介绍贴,我说了太多废话,现在让我们快速进入正题——所以在鼓捣三四个小时之后,我很快解决了问题,实现了一个高度稳定触发的自动论文摘要脚本。你可以通过下面的视频来预览它的效果,在视频中间部分我进行了一些加速,实际上因为模型(O3-Mini)的思考过程较久,单篇论文还是需要半分钟左右跑完整个流程,更长的论文建议在脚本里预留更长的准备时间。

0:00
/0:18

我可是为此买了 Screen Studio 来狠狠玩了一个小时

脚本特性

稳定触发:和之前的版本一样,目前的脚本是一个按键宏,它的主要机制是用 Raycast 主体以及附带的 AI 聊天功能配合 Zotero 本体,实现全快捷键驱动的操作。之所以使用 Raycast,其中自然有成本考虑,更重要的是它有其他所有类似软件(包括各大厂的原生软件以及第三方客户端)都没有包含的全键盘操作的可能,因为不再依赖鼠标,所以不会再出现各种奇怪的控件定位问题,能够非常稳定地运行,个人跑了两天几十组暂时没出过问题。

价格低廉:Raycast 另一个(多少有点奇怪的)特性是,它将 O3-Mini 放在最便宜的一档订阅套餐中。如果你是学生,那么配合上 Raycast 的学生折扣,月付 5 美金(年付八折)即可,如果不是,那也只需要月付 10 美金。考虑到 Raycast 官方给 O3-Mini 的额度是每天 150 次且不看输入输出长度,这几乎是目前最便宜的跑长篇论文的方式,远比自备 API 要便宜稳定,唯一的疑虑是可能日后会把该模型移到更贵的套餐(每月多 10 美金)或者砍额度。

质量可靠:如前所述,这套脚本主要使用 O3-Mini,这个模型纯文本能力上并不如 Claude 系,但是奈何它便宜,而且在各家模型都在降智(为了降低成本)的情况下,用一个最便宜的推理模型,在咒语里搭配一些比较强硬的流程描述,能够尽量降低模型偷懒的可能,实现比较可靠的总结。当然,如果用下来对 O3-Mini 的性能或速度不满意——它的中文确实不太好——你也可以换成更便宜的 Gemini Flash (有点笨)、Claude Sonnet (有点贵)或者 DeepSeek (其实不太适合总结任务)。

脚本逻辑

在阅读以下内容之前,你需要安装 Raycast 并且启动 Raycast AI 中的 Send Selection to AI Chat 功能,且为它还有 AI Chat 本身各设置一个快捷键组合。

Send Selection to AI Chat
Send Selection to AI Chat

这套脚本只依赖快捷键操作,所以我会将整个脚本的逻辑流程和对应的快捷案件陈列如下,再将它们的具体编排贴出,最后附上一个我自己在 Keysmith 制作的宏(你可以直接使用或者用其他类似软件自行制作)。

  1. 在 Finder 中展示 PDF:直接用按键宏敲击 Zotero 顶部菜单中的「文件-在访达中展示」(Show in Finder)。
  2. 将对应 PDF 发到聊天窗:按下你此前设置的 Send Selection to AI Chat 的快捷键(我的设置是 Ctrl + Shift + S),可以自行调整。
  3. 关闭 Finder 窗口:连续按两次 Command + W 将 Finder 窗口关闭,避免堆积太多窗口。
  4. 回到 AI Chat:按下你此前设置的 AI Chat 的快捷键,回到 AI Chat 窗口,此时附件已经被加载到聊天窗中。
  5. 输入咒语:用按键宏直接在聊天窗中输入对应咒语,不建议用 Raycast 的预设配置功能(因为有点不好快捷键切换出来),按下回车并等待。
  6. 复制并关闭聊天窗口:等待一段时间后,使用 Raycast 内置快捷键(Command + Shift + C)复制结果,再删除当前聊天(Ctrl + X)。
  7. 新建笔记:使用按键宏回到 Zotero 后,此时你的键盘焦点还在之前的文献上,使用快捷键 Command + Shift + O 新建笔记。
  8. 粘贴笔记:粘贴笔记(Command + V)并保存(Command +S)。单轮流程至此全部结束。

以上流程可以根据各自需求进行微调,但是因为快捷键支持的问题,在客户端上选择不是非常多。执行不同步骤之间一般需要加0.2秒以上的缓冲,避免按键执行太快造成冲突。总结所用的咒语可以自行定义,但是需要注意,OpenAI 系的所有模型偷懒都非常严重(大概抛开用不上的 O1),所以一定要在咒语中具体说明要求,最好对总结长度和精度进行一些限制(例如必须总结每一小节,每一节至少一百字,对全文的总结至少两百字),让它在继续降低自己的智力之前为你勤劳打工一段时间。

Keysmith Macro
Keysmith Macro

附图是我的具体编排方式,你可以在此下载来使用(但必须将快捷键配置得和我一样,跑不通的话就得自己改一下对应的键位),或者参考修改。除此之外,最近还在大量使用一个 PDF 翻译插件,它的安装稍微麻烦一些,但翻译体验实在是好得不行,只需在 Zotero 中右键就可自动跑出格式严格对应的中文版本与双语对照版本。如果有代码基础的话建议搞来玩玩。如果毫无代码基础,也可以用 Docker 部署可视化前端(问问机器人怎么装)或直接使用官方网页服务。

0:00
/0:13

Zotero PDF2ZH Translator

既然正事已经说完——没说完的也不想说了,毕竟我都是手写,不像 AI 可以哗啦啦吐出来一堆——那剩下的就是祝各位狩猎愉快!希望新的一年里所有人都能用上越来越便宜大碗的 AI,让它们(或者说人类思想中最纯正的尸块)来拼装出各种流程表单、行政文书、思想汇报、政治作业,省下时间来读自己真正想读的东西,写自己真正想写(但大概写多了也会有点腻)的东西,或者只是什么都不做,躺在沙发上等待世界末日来临。