前言

以Linux.do的平均水平,应该不需要介绍啥是RSS,为啥RSS了。

信息熵越来越高,尤其是最近几个月的AI信息大爆炸,不能通过RSS订阅的信息源越来越多,所以春节期间断断续续研究了几天,主要解决几个问题:

  1. 如何订阅不支持RSS的网站
  2. 如何把微信公众号纳入进RSS里
  3. 如何解决信息重复,浪费注意力的问题。
    1. 上了一部新电影/电视剧,PT上充斥大量下载源,我只需要看到一次就可以了。
    2. 同样或者相似的内容在多个信息源,例如同时在网站和公众号都有发,但彼此可能又有独立信息。

RSS聚合订阅服务

开源和在线服务都花了些时间研究: 在线服务:FeedlyInoreader 开源项目:Tiny Tiny RSSFreshRSS

直接说结论,我选FreshRSS,相对TTRSS来说它更现代化,它们都支持Fever API可以整合到RSS客户端,FreshRSS还支持Google Reader API,它更强大、效率更高。简单来说,你在手机上看过的文章,通过FreshRSS可以同步到你的电脑上,这也是与直接使用RSS阅读器直接订阅源的重要区别。

FreshRSS可以当做是一个服务端和管理后台来使用,因此我对它的前端交互和美观并没有太多要求,真正的阅读在客户端。

FreshRSS自带一些简单的数据统计功能,例如长期无更新的订阅源,我觉得是比较实用的功能,该取关的取关。

FreshRSS自带了HTML+XPath抓取的功能和RSS-Bridge插件,这往往是在线服务的付费功能,不过,我选择使用RSSHub,下面有介绍。

FreshRSS的官方docker镜像不能用在群晖NAS上,似乎是因为群晖的kernel版本太低导致的,所以我使用了Linuxserver的版本,有一说一,Linuxserver的版本真贴心,把该映射到宿主机的文件都集合在一起映射了出来,很方便。以后我应该会多用Linuxserver发布的镜像。

FreshRSS支持多种数据库格式,我选择用PostgreSQL,最初是因为要使用pg_trgm扩展,不过后来废弃了。PG版本选择了 15.5,原因是参考了AWS RDS的默认最佳实践的选择。总之我不建议用SQLite,因为还有一些其他需求要操作数据库,下面会有具体写。

介绍下几个插件

名称 描述 补充
News Assistant Use the api of OpenAI to summary the news. 插件默认选中的是3.5,不要以为只支持3.5,试试清空输入框,GPT4就出来啦
FreshRss FlareSolverr Use a Flaresolverr instance to bypass cloudflare security checks 使用Flaresolverr绕过Cloudflare的安全检查
AutoTTL A FreshRSS extension for automatic feed refresh TTL based on the average frequency of entries.
TranslateTitlesCN Translate article titles of the specified feed into Chinese, using DeepLX or Google Translate. 将指定源的文章标题翻译成中文,使用DeepLX或Google翻译。如果使用Google翻译,还需要自备梯子。
GReader Redate Use published date instead of fetching date.

顺便一提,某些插件(比如FreshRss FlareSolverr)在启用时,会把插件文件复制到其他地方,所以在“为啥我改了文件没生效啊”、“有缓存吗?重启下试试”、“怎么还不行”这种问题上也浪费了我两根烟。具体见插件的extension.php

目前插件这块,还有一些问题没有去解决,有空时我会再去研究和更新。

TODO:

TranslateTitlesCN插件选择谷歌翻译时会存在网络不通的问题。我没有选择给docker全局梯子,因为很多订阅源可以直接访问,无需梯子,但是它又无法满足Clash的 - RULE-SET,cncidr,🐟 漏网之鱼 的条件,为每个订阅源维护代理规则真的太蠢了,所以最好的方式就是对插件的CURL请求做一些修改,有空时再处理。