Jobs 认为,想要创造最好的软件体验,就要自己控制硬件,借他吉言,管见以为,想要得到最好的 RSS 阅读体验,就要自己打造阅读工具。

绝大多数 RSS 阅读器都采用了叠床架屋的设计方式,所有功能,哪怕是放大一号字体这种小事,也全部被开发商垄断;用户想要做任何事情都只能嗷嗷待哺,越来越依赖某个厂商。实际上,“用户”(User)一词本身就是用来形容瘾君子的,这恰当指出了软件消费者的普遍状态。
我读 RSS 十多年,流行过的几个服务和客户端都打过交道,不幸没有一个对眼的。直到尝试用 DEVONthink 读 RSS,我才发现:使用 DEVONthink 的人,何止是开了外挂,简直就是成了 RSS 游戏规则的制定者:全文检索,不限额度的过滤,免费无限量的翻译,任何你能想到的自动化……
本文先简单谈谈为何要使用 DEVONthink,再切入将其作为 RSS 阅读器之前的必要准备工作,最后列出其独特的功能,供读者自行选读。
为什么是 DEVONthink
任何一个严肃对待阅读的人都无法避开 RSS 阅读器。而阅读偏偏众口难调,有人想要好看的阅读界面,有人需要更齐全的批注功能,有人不把广告过滤掉就没办法开始阅读。在这种情况下,一个阅读器要么选择掩耳盗铃,只做好一两个功能,对其他的需求视而不见,要么就两线作战腹背受敌,投入大量开发资源,尽量做好每一项功能。相对的,人们要么选择一款功能残缺,但勉强有几个亮点的小而美型阅读器,要么就为功能丰富的商业软件支付高额订阅费用。
然而,一切问题都出在阅读器的军备竞赛之上。在市场中存活下来的阅读器,多数都在做加法,不断研发新功能,最后每一个阅读器都变成了笔记软件、变成了稍后读软件、变成了文件管理软件,甚至有向个人知识管理系统演化的倾向。RSS 工具和知识管理工具之间的界限日益模糊。
这就抛出了一个疑问:与其在 RSS 上面增加一千个功能,能不能反其道而行之,直接在现成的知识管理工具上面加一个 RSS 功能?毫无疑问,从 1 到 1001 是一场苦旅,而从 1000 到 1001 却轻而易举。

降维打击。单方面的屠杀。这就是 DEVONthink 对所有其他 RSS 阅读器所做的事情。
准备阶段:找回传统 RSS 阅读器的常用功能
DEVONthink 本身并不是专门的 RSS 阅读器,在介绍其强项前,有必要先说一下必要准备,以找回传统 RSS 阅读器中的标配功能。不然,要是连基础都没打好,后面说再多也是空中楼阁了。
订阅 RSS
在 DEVONthink 订阅 RSS,和一般的阅读器类似,同样是添加一个订阅源(在右键菜单中),然后输入地址。添加订阅源本身没什么技术含量,而 RSS 设置则值得研究一下。
和其他阅读器类似,DEVONthink 也可以设置刷新订阅源的频率,你可以设置成一打开 DEVONthink 就马上更新(After opening the database),也可以让 DEVONthink 在后台每隔一段时间自动刷一波。

个人建议,万不可勾选“Convert categories and hashtags to tags”,这一功能会把文章的标签全部提取出来填到文件中,严重污染标签系统。DEVONthink 默认会勾选这一项,遂有一些人在论坛上抱怨自己的标签里涌入了大量垃圾,问了一圈才发现是 RSS 设置所致。
从旧阅读器迁移到 DEVONthink
DEVONthink 不支持直接连接在线 RSS 服务,但是你可以把过去的订阅源导出为 opml 文件,然后一次性迁移到 DEVONthink。这相当于导出了一份通讯录,让后在新家中和旧友相聚。如果你在其他阅读器之间迁移过订阅源数据,接下来的步骤应当非常熟悉。
多数 RSS 阅读器或服务都有导出 opml 格式数据的功能(如果没有,这种工具还留着过年吗?),以 NetNewsWire 为例,我菜单栏中导出选项中就找到了 opml 导出项。
获得 opml 文件——尽可能确保是 .opml
格式结尾的——后,在 DEVONthink 中选择“Files-Import-Files and Folders”,导入方才生成的 opml 文件,稍等几分钟、让 DEVONthink 自动抓取各个订阅源上的数据,随即就完成了数据的迁移。

实现 Inoreader 的招牌卡片视图
DEVONthink 收到的 RSS 文章均为独立文件,默认是一大堆 HTML 文档,这就让文件管理的古典技巧有了用武之地。其中一例,就是轻松获得 Inoreader 的卡片式浏览界面。
我们知道,RSS 阅读器一般都是古板的三栏视图,即一列是侧边栏,一列是文章列表,最后一列是文章正文,这种设置很不便于浏览大量图文并茂文章,于是 Inoreader 推出了所谓的卡片视图,一下子脱颖而出。让一个 RSS 阅读器厂商来开发卡片视图,确实不是简单的事情,收点钱也无可厚非;但对于 DEVONthink 这样的文件管理工具来说,卡片视图却是很本分的事情。具体方法是,先将 RSS 文章的格式设置为 PDF 或者 Rich Text,以便 DEVONthink 将图文都抓取到本地(默认格式是 HTML,必须打开后才会实时加载在线图片)。

然后按一下 ⌘Command-2
,就得到了“卡片视图”。其实这个界面是图标视图(Icon view),但对于 PDF 或 Rich Text 等内置图片的文件格式,DEVONthink 会直接显示其中的图文,于是就成了一张张的卡片,文章内容一目了然。

你还可以在顶部工具栏中调解卡片大小以及排序方式,其实这些都是文件管理中的老皇历了,只不过遇上 RSS,又发挥了新用途。
用智能文件夹找回“今天”、“未读”和“收藏”
多数 RSS 阅读器都会有三个特殊的文件夹,分别是“今天”、“未读”和“收藏”,用于过滤对应的三类文章,很方便。DEVONthink 本身没有这三个文件夹,但它有更通用的智能文件夹(Smart Folder),三下五除二就能找回“今天”、“未读”和“收藏”。
以创建“今天”的文件夹为例,先在右键菜单中创建一个智能文件夹,然后只需添加一个条件“Date Added is Today”,并把搜索范围圈定在 RSS 文件夹(我的就是下图中的“Feed Forum”)。这个条件表示过滤所有今天添加的文件,任何加入 DEVONthink 的日期为今日的文章,都会自动汇集到这个文件夹。而智能文件夹的智能之处,就在于原始文件并没有移动,这里只是一个集中展示的窗口。

创建“未读”文件夹也需要用到智能文件夹,搜索范围不便,不过条件换成了“Marked as Unread”,这表示标记是未读。DEVONthink 会把所有新抓取到的 RSS 文章标上未读标记(一个灰色的小圆点),通过前述过滤条件,所有没打开过的文章就会集中在一处了。除了一篇一篇手动打开文章,也可以批量选中一批文章,然后按下快捷键 ⌘Command-K
,把它们批量标为已读——其实就是移除掉未读标记——我常用这个快捷键勾掉不想读的文章。

“收藏”的条件与“未读”类似,只不过标记换成了“Flagged”,不再多费笔墨。

进阶阶段:武装到牙齿的 DEVONthink 特色功能
前一节的内容旨在填补 DEVONthink 默认设置和传统工具之间的空白,让它看上去起码像个 RSS 阅读器,而这一节的内容更像是一个参考文档或者餐厅菜单,我罗列了 DEVONthink 的多项杀手级功能,它们要么在其他 RSS 阅读器中售价高昂,要么根本无法想象。相信很多读者对 DEVONthink 感兴趣,就是因为其中一两个点;你也没有必要把这一节的所有内容都尝试一遍,只需要像吃自助餐一样,挑自己需要的去试一试就好。
全文检索
多数 RSS 阅读器都不是为检索而设计的,但检索的需求却切切实实存在。订阅源一多,每天刷出几百篇文章也不稀奇,这时候就需要检索:匆匆扫过而没来得及细读的文章,事后只能回忆起几个关键词,这时候就要通过搜索来找回。
DEVONthink 的本质是一个文件管理工具,它抓到的文章也是单独的文件,因此文件管理中常用的搜索技巧,可以完整地搬到 RSS 阅读上。DEVONthink 首先支持全文检索,可以一次性检索整个数据库中所有 RSS 文章的内容,帮你广撒网。

当然,除了检索整个数据库,也可以在某一篇文章中深入检索,找到具体某个段落或句子。

同时,DEVONthink 也支持进阶搜索语法,比如 AND
、OR
和 NOT
这些布尔逻辑运算符,方便组合出不同的搜索条件。我可以用 AppleScript AND Keyboard Maestro
找到关于脚本的讨论,也可以用 AppleScript NOT Alfred
排除不需要的内容。
翻译标题
比较严肃的读者,其实不会承认“RSS 阅读器”这个说法,因为 RSS 既然是一个信息聚合场所,那就不太适合拿来阅读——就像书店不是精心看书的好地方一样——而是更适合检视、筛选信息。一旦把 RSS 视作信息聚合工具,外语文章就会显著拖慢浏览速度,这时候就要用上翻译工具。
我为 DEVONthink 编写了一个标题翻译工具,可以把外语标题翻译为中文,然后显示在原标题旁,便于快速判断一篇文章要不要读。

拓展阅读:《用 DEVONthink 批量翻译外文 RSS 标题》
过滤文章
紧抓“文件为本位”这一特点,我已有更好的方案,请参阅 《另一种在 DEVONthink 中过滤垃圾 RSS 信息的方法》 一文(需付费)。过滤垃圾信息、标记重点关注的内容,已经被某些 RSS 服务做成了一门生意。事实上,如果站在文件管理的视角,所谓的过滤无非就是一种自动化操作:符合条件的文章,就摘掉未读(Unread)或加上标记(Flagged)。DEVONthink 本身有自动化功能,也可以写个 AppleScript 脚本,在第三方自动化软件中运行。

拓展阅读:《泛泛之交与忘年挚友:谈 DEVONthink 与 RSS 过滤》
剪藏文章到本地
遇到好文章后,有心人会保存一份到本地,避免 链接腐烂(Link Rot),毕竟悬在网上的东西,说不定哪天就没了。我和 Hum 就这一话题写过不少文章(多多少少用到了 DEVONthink),而 DEVONthink 本身也提供了离线保存文章的多种方法。
在“实现 Inoreader 的招牌卡片视图”一节中,我就提到过,DEVONthink 可以直接把抓取到的 RSS 文章存储为 PDF 或其他格式,方便离线查看。其实也可以事后再转换格式,把 HTML 格式的文件转换为多种离线文档。

自动检查订阅源是否失效
这是一个 DEVONthink 的小特性:log(记录)。DEVONthink 会实时检查运行状态,并保留出错记录,而在刷新 RSS 订阅源时,如果失败,它就会留下相应记录,这可以及时告诉我哪些订阅源挂了。比如知名脚本论坛 MacScripter 在 2022 年年末升级网站、更换订阅源,之前的源就失效了,而我在 DEVONthink 中第一时间就得知了问题。
DEVONthink 会在刷新时自动检查 RSS 源是否失效.jpeg

而一般的阅读器很少会检查订阅源有效性(通常只在的添加订阅源时检查一次),容易导致使用者在订阅源失效很久后才通过其他渠道获知消息,进而造成消息滞后。
自定义 CSS 主题样式
既然要用来看文章,那么在界面主题上多点追求,也是人之常情。多数阅读器都把自定义界面作为卖点,例如 Reeder 就以素雅的界面闻名遐迩。比起靠厂商开发新主题,还有一个路子,就是用户自己编写主题,或者下载别人写好的主题。DEVONthink 把这件事做得很简单。
所谓的主题,对于 DEVONthink 而言就是一个 CSS 文件(Cascading Style Sheets,层叠样式表)。你可以在网上找到很多现成的 CSS 主题,理论上也可以搞一个仿 Reeder 风格的样式,而我自己也写了一款 UNTAG 的样式。总之,颜值不仅不是 DEVONthink 的软肋,恰恰还是它的强项。

具体到操作上,DEVONthink 可以给所有 RSS 文章预设主题,只需在 RSS 设置中选定 CSS 文件即可。

已知的一些限制
DEVONthink 本身并不是一款专门的 RSS 阅读器,即便经过大量的配置,也有一些地方和传统阅读习惯相悖,甚至有些在主流 RSS 阅读器中司空见惯的功能,DEVONthink 暂时也无法实现。我无意为这些缺陷或者限制辩护,只是把他们罗列如下,一方面是提醒尝试本文方案的读者,另一方面也是指出未来可以改良的方向。最幸福的人,大概就是那些在边缘地带拓荒开垦的人了。
最大的问题,就是 DEVONthink 并不能在移动设备上抓取 RSS 信息。我并不是有意要把话说得这么拗口,因为 DEVONthink 在电脑上抓到的文章确实可以同步到手机上,但是你不能直接在手机上刷新文章。很多人希望利用通勤路上的碎片时间读一点文章,DEVONthink 恐怕不会让他们满意:DEVONthink To Go(DEVONthink 移动版)很大程度上只是桌面软件的一个延伸1,就像早年的 iPod 播放器,你不能直接在上面下载歌曲,只能把电脑上下载好的内容同步过去。
另一个问题仍然和移动端有关。DEVONthink 虽然支持同步,但实质只是把文件传输到其他设备上,并不像部分专业阅读器那样还可以把阅读状态同步过去。2比如说,一篇几千字的长文,我读到一半关上电脑,在出门路上打开手机继续看,DEVONthink 就不记得我上次看到哪里,还是会从头开始。对于那些在阅读体验上精益求精的人而言,这肯定是一个瑕疵。
还有一个问题,就是 DEVONthink 不能添加 RSS 帐号。很多人都有使用 RSS 服务的习惯,把所有订阅的内容都存到一个帐号里面,换设备或者换阅读器的时候,只要登录帐号,所有订阅源都会同步上去,不用再手动导入,非常方便。有些客户端还会把兼容的服务广作为一个卖点,写进更新记录,甚至宣传页面。但是在 DEVONthink 中,你不能直接添加帐户,只能手动添加订阅源(当然,可以通过前文的方法批量导入)。我不想评判使用账户的好坏,只是想指出 DEVONthink 的这一限制。
小结
DEVONthink 有一些问题,让它暂时不能成为消费级 RSS 阅读器,不适合随时随地刷碎片新闻;但它把整套文件管理的方法带到 RSS 中,足以成为最专业的桌面端 RSS 阅读器。
全文检索、卡片视图、自动化……这些都是通用技术的魅力,而多数 RSS 阅读器只是在重复造轮子,还不见得做得多好。或许 RSS 阅读器还有别的发展方向——比如 Reeder 曾经捯饬过的 Bionic Reading,有没有用另说,起码是在提升阅读体验的一次有益尝试——但根据目前的趋势来看,如果大家都削尖了脑袋,往大而全的知识管理工具方向乱窜,那么 DEVONthink 就有资格宣布:

希望永远不要有这一天。
🛍 我撰写的付费栏目《信息管理,文件为本位的方案》正在 UNTAG 售卖,对本文话题有进一步讨论,欢迎选购。