如果你之前使用过其他 RSS 服务,那么直接将订阅源导入即可。方法是:在之前的 RSS 服务后台找到导出为 XML/OPML 的选项,然后在 Tiny Tiny RSS 中进入设置的 Feeds 标签页下的 OPML 板块,选择相应文件导入即可。原有的文件夹结构会被保留。
导入后,可在 Feeds 标签页管理订阅源。Tiny Tiny RSS 提供的管理选项非常详尽,并可以通过拖动来实现排序、分类操作。点击某个订阅源,可以打开更详尽的设置选项。其中比较实用的功能包括自定义订阅源名称、更新频率等。
Tiny Tiny RSS 的订阅管理
此外,Tiny Tiny RSS 还提供了一些用于辨识订阅源「健康度」的实用功能。如果有某些订阅源无法连接或长期不更新,那么订阅页面中会分别多出 Feed with 和 feeds 的选项,点击即可查看这些订阅源的出错记录或最后更新时间,并直接批量退订。
2.3 文章过滤
如前所述,强大的过滤功能是促使笔者转投 Tiny Tiny RSS 的首要动力,也是高效处理大量 RSS 订阅源的重要工具之一。Tiny Tiny RSS 的过滤功能分为匹配和动作两个环节,即先根据一定的规则筛出特定文章,然后自动对其实行某种处理。前后两个环节都是可以高度自定义的。
在设置页面中,点击 标签即可进入过滤设置。首先通过 按钮新建一个过滤器。弹出的窗口中, 部分用于指定规则的名称,Match 部分用于设置匹配规则,而 Apply 部分则指对被匹配的文章应采取何种操作。
点击 Match 部分的 Add 按钮即可添加匹配规则。你可以指定匹配标题、全文还是两者均匹配,每个匹配规则适用于哪些订阅源。匹配规则支持正则表达式,例如,如果想过滤英文科技博客中常见的赞助广告,那么可以在过滤规则中填入 (S|s),这样含有「」或「」的结果都会被匹配。同一个过滤器中可以容纳多个匹配规则,多个规则间默认是相「与」的关系,如果想改为「或」的关系,则须勾选窗口下方的 Match any rule。
Tiny Tiny RSS 的过滤设置
对于被筛出的文章,可以选择的操作很多,如标为已读、完全忽略、打上星标等等,并且可以同时适用多个操作。一个比较有趣的操作是 ,它会将文章发布到一个 RSS 源中(该 RSS 地址可在 Feeds 选项卡的 & 区域看到)。进而,结合 IFTTT、即刻等支持检测特定 RSS 源更新的服务,就可实现特定主题实时推送、自动发送到稍后读等高级功能。
用 IFTTT 即时推送 Tiny Tiny RSS 筛选出的主题
不过,过滤功能是比较消耗资源的,如果设置过多的过滤条件,可能给你的主机带来较大压力,因此不应滥用该功能。换个角度来说,当你发现自己将精力不成比例地花在过滤功能上、而非静心阅读文章上时,最应该做的应该不是继续调试过滤、而是清理订阅源。
3. 用插件添加主题、全文输出和多客户端支持3.1 安装主题
前面提到,RSS 服务质量的衡量尺度之一即是界面的设计水平。在这方面,Tiny Tiny RSS 只能说是基本合格:其界面虽然功能全面、且总体上可称之为简洁明了,但细看还是给人一种开源软件常有的「未经打磨」之感。好在 Tiny Tiny RSS 的界面完全基于 CSS,可自行定制或导入主题,这就为「美容」提供了可能。
Tiny Tiny RSS 用户社区产生的主题并不多,但也有不乏几个完成度较高的,如仿 和仿 的两个主题。下面以前者为例演示如何安装。
首先获取主题文件:
$ wget https://github.com/levito/tt-rss-feedly-theme/archive/master.zip
然后解压缩该主题[1]:
$ unzip master.zip
由于我们的 Tiny Tiny RSS 运行在相对隔离的 环境中,因此不能像平时那样直接用 cp 命令拷贝文件。为此,首先执行:
$ docker ps
终端将返回当前运行的 容器列表。我们找到 IMAGE 一列为「/-ttrss」的那行记录,记下同行中 ID 列下的内容。
找到 Tiny Tiny RSS 的 ID
然后,用 cp 命令将上述主题文件拷贝到容器中:
$ docker cp tt-rss-feedly-theme-master/feedly.css [[CONTAINER ID]]:/var/www/themes
$ docker cp tt-rss-feedly-theme-master/feedly [[CONTAINER ID]]:/var/www/themes
请注意将上面命令中的 [[ ID]] 替换为你在上一步中获得的内容。
这时,我们就可以在 页面的 Theme 选项中看到 .css 了。本文截图中的界面均为该主题的效果。
3.2 配置 RSS 全文输出
很多网站之所以不欢迎 RSS,一个主要的原因就是提供 RSS 会分走主站的流量;因此,一些网站即便保留了 RSS 订阅源,也做得十分「不情不愿」,只「抠门」地给出前两三段的内容,要看全文还得跳转到网站才行。这显然会破坏 RSS 的阅读体验。于是,获取全文的功能就显得十分必要了;很多 RSS 服务或客户端也将其作为 订阅的卖点之一。不过,通过 Tiny Tiny RSS,我们同样可以免费实现这一效果。
事实上,Tiny Tiny RSS 原本已经内置了基于 的全文输出服务,但可惜这家服务在前段时间已经跑路,关闭了 API 接口,我们只能另请高明。目前,比较好的替代方案是 ,这也是 、 等主流 RSS 阅读器在近期更新中改用的方案。
首先, 的全文输出服务是免费的,但需要配合 API 密钥使用,这可以在注册后在其网站的 Web 页面看到。
接着,为 Tiny Tiny RSS 安装全文输出插件,其方法与安装主题完全相同[2]:
$ git clone https://github.com/WangQiru/mercury_fulltext.git
$ docker cp mercury_fulltext [[CONTAINER ID]]:/var/www/plugins
安装后,到 Tiny Tiny RSS 的设置页面中启用名为 的插件。这时,在设置页面的 Feeds 选项卡下,就会多出一个该插件的设置区域。我们将之前获得的 API 密钥填入文本框中,并点击 Save 保存配置。
的设置
完成上述准备工作后,就可以针对特定的订阅源启用全文输出了。方法是:在订阅源管理中,点击需要获取全文的订阅源,在弹出的 Edit Feed 对话框中,勾选 选项卡中的 Get via 。
该插件的效果如下(The Verge):
全文输出 The Verge 的效果3.3 让更多客户端支持 Tiny Tiny RSS
在 RSS 的使用体验中,客户端是十分重要的一环;缺少第三方客户端支持的 RSS 服务注定只能是「孤家寡人」。然而,作为一个小众的开源软件,Tiny Tiny RSS 在这方面显然不能与那些商业服务相比。主流的客户端软件中,只有 Fiery Feed 提供了对 Tiny Tiny RSS 的原生支持。
好在开放的插件系统这时再次发挥了作用。借助第三方插件,Tiny Tiny RSS 可以将自己模拟为另一个自建 RSS 工具——Fever,而后者的客户端支持更为全面,包括 、 等。[3]
第一步仍然是安装插件:
$ git clone https://github.com/rannen/tinytinyrss-fever-plugin.git
$ docker cp fever [[CONTAINER ID]]:/var/www/plugins
安装后,在 Tiny Tiny RSS 的设置页面启用名为 fever 的插件。保存后,再次进入设置时, 选项卡下会多出一个名为 Fever 的板块。在该板块的文本框中,设置一个专用于该插件的密码,然后点击 Save。该文本框下方同时给出了一个独立的服务器地址,其格式类似于 。将其记下以备后用。
在 中配置 Tiny Tiny RSS
这时,在 等 app 中,只要在添加 RSS 账号时选择 Fever,在服务器地址栏填入上述地址,即可配合这些你惯用的 app 使用 Tiny Tiny RSS 了;文件夹、标为已读、星标等功能均被良好支持。
在 中使用 Tiny Tiny RSS 的效果4. 总结
以上就是使用 Tiny Tiny RSS 自建 RSS 服务的全过程。可以看出,虽然听起来很 geeky,但实际操作比想象的简单很多,稍微熟悉后不到半个小时就可架起服务并使用。从我两个月的使用体验看,它基本已经完全代替了之前对 和 的需求,且无论是灵活性还是性价比都是第三方服务无法比拟的。
当然,一旦涉及到这种 DIY 操作,总是要回应的质疑是:这么做值得吗?毕竟,「RSS 已死」不是什么新鲜论调了。这么说的人中,有的是 RSS 曾经的忠实用户,感慨曾经活跃的第三方软件和服务逐渐冷却;有的是新世代新闻、阅读服务的开发者,鄙弃 RSS 的老旧和刻板。
然而,RSS 说到底是一个协议。而协议只在一种情况下可以被宣告死亡:再也没有人使用的时候。诚然,如果只论 RSS 最「原教旨」的形态,其占有率确实几乎可以忽略不计了;但当下那些看起来更「现代」的资讯工具,尽管可以在界面、交互上不断翻新,但其本质仍然是一个时间线上的信息流,其中每篇内容包含的要素仍然是标题、时间、正文等 RSS 已经涵盖的要素。易言之,它们归根结底都是 RSS 的衍生物。从这个角度看,RSS 没有死、也不会死。
必须承认,新技术加持下的现代工具在配置和使用上都远比 RSS 来得便利和舒适。但,在获得便利的同时,你也将选择的权利让渡给了机器,将偏好和隐私让渡给了第三方;在追求舒适的另一面,是被无限信息流淹没的宝贵时间,和被算法推荐不断强化的「回音壁」效应。相反,RSS 是有限的,因此也是克制的;是刻板的,因此也是高效的;是不智能的,因此也是包容的。
在今天,坚持使用 RSS,能让你真正认真思考自己对信息的需求,在喧闹而充满误导和诱惑的信息海洋中守住自己对信息获取的控制权;而自建 RSS 服务,则是维护这种控制权的终极途径。
注:
有话要说...