[TOC]
Miniflux是我目前在用的一个开源RSS服务应用,前几日我提了一个issue,询问是否可以添加翻译标题的功能,因为我订阅了很多英文feed,但是我的英文不太好,词汇量不够,无法做到随便瞟一眼就能准确获取标题所传达的信息,需要停下来细看,有时碰到陌生单词还要借助翻译软件才行,这不利于快速获取有效信息。
阅读本来就是需要时间,为什么不停下来细看呢?原因是这样的,我平时获取信息大概要经历如下步骤,Miniflux刚好位于第一,二步骤——查找和过滤,现在是信息爆炸的时代,面对每日涌来的浩如烟海的信息,为了能获取多足够多,有价值的信息,就需要一个简单的方法,将可能感兴趣的信息过滤出来,而将不感兴趣的信息拒之脑门外。RSS里每一个feed消息,一般包含标题(title)和简介(description),如何判断是否感兴趣,通过阅读上述两个字段,就能很粗暴的作出决定,但是存在一些feed,简介即是正文信息,内容很长,所以两个提供判断条件的字段就只剩下标题一个(该过滤的前提是没有标题党)。
flowchart TD 查找 --> b{过滤} b --> c[归集] c --> d[阅读] d --> e{过滤} e --> f[存档] f --> g[消化吸收] g --> h[总结/输出/应用]
另一个可选的过滤方法是,Miniflux对于每一个feed可以单独设置【阻止规则】,用来过滤,比如设置关键字“震惊”,如果该feed发布的消息的标题、网址、标签包含上述关键字就会被忽略,大部分RSS在线服务商,比如Feedly和Inoreader,过滤属于高级功能,需要付费且价格不菲,这也是我转向Miniflux的原因。这很有效,但是仅对已经被标注过的某一方面/类型的信息起作用,你总不能将所有不感兴趣的信息标注出来吧,所以呢再通过标题判断就很有必要了。
可能「翻译标题」的需求太小众,issue没有引起足够多的关注,只有一位热心网友评论推荐了RSS翻译器,我阅读后发现确实满足需求,但需要部署外部独立的翻译服务,然后转发feed到Miniflux,觉得这个方法使得整个翻译流程复杂化了,最好是将其集成到Miniflux里,作为一个内建的功能。
于是我fork官方仓库,花了些时间将该功能实现,依然使用OpenAI公司的ChatGPT来完成翻译(类似实验性的功能,目前还没有合并到上游仓库)。
下面是功能截图。
在启动配置文件里,增加如下几个配置项
CHATGPTAPI=
CHATGPTKEY=
CHATGPTMODEL=gpt-3.5-turbo
TRANSLATEPROMPT=你是一个翻译助手,需要将我的话准确地翻译成中文
说明:
CHATGPTAPI:chatgpt的接口,可以使用第三方,但是必须兼容OpenAI
CHATGPTKEY:访问密钥
CHATGPTMODEL:模型,默认gpt-3.5-turbo
TRANSLATEPROMPT:翻译提示,需要成翻译哪门语言,就在这里定义文本描述
可在应用web页面管理开启和关闭翻译。
我已经将应用编译成可执行文件并发布,可以在这里找到,另外如果你有更好的解决方案,欢迎让我知道。
---更新---
Miniflux的开发真是太活跃,因为我增加翻译的修改没有合并到上游,导致每次合并上游新版本的时候都需要手动修改冲突,太烦人了,于是我便将翻译功能剥离出来,变成一个独立的服务。本来想直接使用之前提到的Rss-Translator,但是该项目是基于Python语言的Django框架,我不是很熟悉,而且Python开销有点大,我的小服务器吃不消,遂作罢。