以Linux.do的平均水平,应该不需要介绍啥是RSS,为啥RSS了。
信息熵越来越高,尤其是最近几个月的AI信息大爆炸,不能通过RSS订阅的信息源越来越多,所以春节期间断断续续研究了几天,主要解决几个问题:
开源和在线服务都花了些时间研究: 在线服务:Feedly、Inoreader 开源项目:Tiny Tiny RSS、FreshRSS
直接说结论,我选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请求做一些修改,有空时再处理。