article_image

20240303更新:更好的方案,请参阅 《另一种在 DEVONthink 中过滤垃圾 RSS 信息的方法》 一文(需付费)。 我曾使用免费的 NetNewsWire,从在线过滤到飞跃到本地过滤;此后,我发现 DEVONthink 能够以开放格式保存 RSS 全文,且自动化功能更丰富,遂迁移至此。应读者要求,这篇文章先于 NetNewsWire 的文章发布。

把过滤做成一门生意,比过滤这个需求本身还要悲哀。我原本计划为 DEVONthink 编写一套鲁布哥德堡般复杂的 RSS 工具,从正则表达式过滤、自然语义识别标签匹配到文章自动分拣,但在写完第三个脚本之前,我就意识到了更重要的事情:好文章,根本不需要过滤。高质量订阅源的首要特征就是爱惜羽毛,其读者不需要特别提防软广。

巴别塔在前几层就停工了,但我获得了更重要的东西。如今,我每次刷出 500 条左右的文章,被过滤掉的不过十几二十篇,且仅仅是因为话题不感兴趣(比如,对 Facebook 的近况和扎克伯格又亏了多少钱我就一点都不感冒)。过滤机制的直接功能是过滤文章,长久来看,则是过滤订阅源本身。最终,我们不应当花费过多精力在过滤上,就像与人交往,与其处心积虑背后抱怨,不如一开始就认真择友。本文仍然会提供 RSS 过滤工具,但初衷不再是和广告之间的军备竞赛。

脚本下载 GitHub

从稍后不读到过滤文章

RSS 常被用作稍后读工具,同时,后者的血缘诅咒也被继承下来:稍后读,往往会变成稍后不读。我曾经对这种调侃感到不可思议,尤其发现这不仅仅是一种自嘲,而是一个广泛存在现象时。直到我忍不住偷窥他人的收藏列表,看看其中正在腐烂的僵尸文章究竟为何物时,方恍然大悟:这些别人不读的东西,和我过滤掉的文章几乎如出一辙。1

稍后不读,并不仅仅是意志力的指标,更是订阅源本身质量的尺度。之所以辛辛苦苦收集——往往还是向人讨要——一堆订阅源,收到文章后却又弃如敝履,原因在于没有做好过滤整理工作,尤其是过滤工作。盖阅读就像交友,有的订阅源只是点头泛泛之交,有的则值得深入交往;而没有过滤功能的 RSS 阅读器,就像一场永不散场的宴席,吃到后来身边全是酒肉朋友,以至于分不清谁值得深交,谁又只需要点头微笑就行。交友不慎,最后变成游戏人生;阅读饕餮,来者不拒,最终就没有重点,哪篇文章都想读,都以为自己有水平读或有时间看,稍后不读的条件也就水到渠成。

Alt text
DEVONthink 过滤 RSS

DEVONthink 本身并没有“屏蔽”一说,但我们可以把不想看到的文章标为已读或直接删除,效果上就近似过滤(最好是标为已读而不要删除,否则容易误删有用的文章)。我准备了一个 AppleScript 脚本,首先在下图箭头所指的括号内填写屏蔽关键词,然后选中 DEVONthink 中的 RSS 文章,再运行脚本即可——可直接使用系统脚本编辑器,有能力的读者也可以考虑自制 DEVONthink 自动化动作。此处只提供可以运行的脚本。

Alt text
填写需屏蔽的关键词

关键词需用英文双引号 "" 包裹,如有多个关键词,可用英文逗号 , 隔开。关键词不限语种,也可以混用,比如 VR 头戴,毕竟其原理只是字符匹配,无所谓语言差异。示例脚本仅根据标题过滤文章,但 DEVONthink 也允许将 URL 甚至文章内容设为过滤条件,你可以前往脚本编辑器中查看 DEVONthink 的语法,在 record(一篇文章就算一个 record)的属性中选择需要的过滤条件。

Alt text
可供选择的过滤条件非常丰富

从消极过滤到积极过滤

过滤功能并不常见于 RSS 阅读器,而支持过滤的阅读器往往都要付费。过滤已经成了一门生意,就和减肥、无添加食品以及极简主义家具一样,越少越费钱。

但过滤又不等于屏蔽,这点是终日忙于造城墙的 RSS 服务私死活想不通的。屏蔽广告当然是过滤的基础含义,但这只是消极的过滤;过滤还可以积极分拣,给重点关注的内容打上星号,或者把暂时处理不了、只能留待周末腾时间对付的文章专门放进一个文件夹,甚至能够对正文做筛选,把包含图表或代码实例的文章——这些都透露着干货的气息——预先挑出来。一旦把过滤拓展到积极的方面,NetNewsWire 便显得吃力(更不要说所有的在线服务),最终搬到 DEVONthink 里读文章,也就势在必行。DEVONthink 中的文章都是 HTML 格式,而 DEVONthink 本身又是一个文件管理工具,于是我们在文件管理中的那一套——分类整理、标签管理、标记加星、全文搜索等等——可以全部用在 RSS 上。2

Alt text
DEVONthink 标记 RSS

标记方式和屏蔽类似,也是先在脚本中填好需要留意的关键词,然后选中订阅源中的所有文章,运行脚本,即可标出需要关注的文章。同样,此处的关键词也可以填写多个。考虑到同一个标题可能既包含需关注的元素,又有想要屏蔽的字符,未避免殃及池鱼,最好先标记一遍,再去剩余的文章中运行过滤脚本。一定程度上,积极过滤比消极屏蔽更重要,因为单纯没被归为垃圾的文章,也可能只是快餐性质,不见得都要读;而标记出来的文章,更可能是自己翘首以盼的。

Alt text
填写需标记的关键词

从屏蔽到分拣,阅读就成了任务管理:避之不及的垃圾,都阻挡在书斋之外;能够在乘车或者候餐时马上读掉的,奉行两分钟原则;而暂时读不了的大家伙,则分门别类,留给以后。如此,抓取新文章后的选择就不是只有“读”或“稍后读”两个选项——硬要说的话,当然还有无视文章,但我们往往患有松鼠症,倾向于收藏而不是果断抛弃——而是有一套完整的分类和文件管理体系。苟指望在线服务提供这些功能,则是痴心妄想;而搬出现有的文件管理系统,一切又一拍即合。

总之,过滤不等于屏蔽,而是分类管理。苟过滤得当,则稍后不读的症状应当大大缓解。和处朋友一样,避开那些狐朋狗友,也不高攀名流公知,真正的好友也就像退潮后的礁石一样显露出来。

从过滤文章到过滤订阅源

第一道过滤针对文章,第二道过滤则直接触及订阅源本身。

在做了一段时间的过滤工作后,我发现战斗并没有升级,因为那些不断换用肉麻标题、防不胜防的订阅源,早早就被我退订,我终归没有陷入兵来将挡水来土掩道高一尺魔高一丈的焦油坑中。不想被人践踏草坪的话,最优美的办法是种满花卉。惟不设防或者只用一两个关键词就能打理干净的订阅源,才值得留在 RSS 阅读器中;当 RSS 阅读器中多为和自己意趣相投的订阅源,垃圾信息也就没有了生长的温床——而过滤工作,到此基本可以打住。

惟将居室打扫干净,方有心思装点打扮。此时,诸如标签管理、翻译文章、自定义 CSS 样式等想法,也接连冒了出来。我很快走出了和垃圾信息以及信息爆炸的战争,转向正面的工作。

Alt text
原始样式和自定义样式

虽然可以支持正则表达式,但我自己从来没有用过,因为在一两次过滤之后,某个订阅源的品性就昭然若揭,如果它来者不善,或者我高攀不起,则是否值得继续交往,自然心中有数。苟若某个订阅源不断升级广告植入方式,逼人编写复杂的表达式,那最好的应对方法就是与其说再见——就像对付电信诈骗,不听、不接、不理会,比和他斗智斗勇要管用得多。欧美的 RSS 订阅源通常比较实诚,打广告的话,会在标题中明确标出“Sponsor”,直接填上关键词就能屏蔽。3而中文互联网,简直让人感叹汉语的博大精深,在暧昧标题方面日新月异,有时候甚至读完正文才会发现是软文——这种事情只要碰上一次,整个网站都可以退订,毕竟,您怎么能指望在一个骗子那里占便宜呢?

其实,除了——可能也包括——正则表达式以外的过滤功能基本都是防君子不防小人,如果一个订阅源能够突破关键词过滤,则它只能算是小人一个,与之割席分坐就好,犯不着搬出重兵利器。至少我对我自己而言,正则表达式更大的意义是一种威慑,让我知道自己有能力可以阻挡几乎任何形式的垃圾信息,但是我基本没有动用过这枚核武器。这就像交朋友,人品不好就足以一票否决。

小结

本文提及了 DEVONthink 的诸多特性,用于 RSS 阅读仿佛天造地设;比工具更重要的是,我发现并遵守了一套与订阅源交往的守则,这远比某一款工具的适用范围要广。

DEVONthink 和 RSS 碰撞出的迷人火花,包括但不限于:屏蔽垃圾信息,自定义关键词;标记重点文章,自定义关键词;用正则表达式做到前两项;将外文 RSS 批量翻译成中文;自定义 CSS 主题样式;全文搜索,可指定文件夹或全局搜索;批量保存文章为离线文件,比如富文本或 PDF……不过 DEVONthink 毕竟不容易上手,这篇文章以展示效果、提供工具和分析思路为主,不能在一篇文章中涉及所有内容。如果读者兴味盎然,则也可能再写几篇技术方向的文章。

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

🔗 付费栏目链接


  1. 这里的过滤,指第一道过滤,即过滤文章,尤其是广义上的文章过滤。
  2. 如果你有需要,可以通过 DEVONthink 把 RSS 文章转换——而且是批量转换——为富文本或 PDF。后者的话,分页或连续的都行。
  3. 大概率,懂得 RSS 订阅技术的老古董们,也不是这些推广的目标用户。

author_avatar

Lawyer, macOS/iOS Automation Amateur