DIYgod / RSSHub

🧡 Everything is RSSible
https://docs.rsshub.app
MIT License
32.18k stars 7.15k forks source link

增加Feed翻译功能 #6696

Open yefoenix opened 3 years ago

yefoenix commented 3 years ago

Issuehunt badges

这是一个什么样的功能?

将输出RSS Feed 的 Item title、content 翻译成指定语言

这个功能可以解决什么问题?

方便阅读更多非熟练语言Feed

额外描述

@8430177 使用两个 npm 包 rss-parser 和 translation-google 实现了该功能,详见其博客文章, 可考虑经原作者同意后将该方案整合进入,通过一个(或一组)通用参数来指定是否翻译、源语言与目标语言分别是什么。


IssueHunt Summary ### Backers (Total: $3.00) - [yefoenix yefoenix](https://issuehunt.io/u/yefoenix) ($3.00) #### [Become a backer now!](https://issuehunt.io/r/DIYgod/RSSHub/issues/6696) #### [Or submit a pull request to get the deposits!](https://issuehunt.io/r/DIYgod/RSSHub/issues/6696) ### Tips - Checkout the [Issuehunt explorer](https://issuehunt.io/r/DIYgod/RSSHub/) to discover more funded issues. - Need some help from other developers? [Add your repositories](https://issuehunt.io/r/new) on IssueHunt to raise funds.
github-actions[bot] commented 3 years ago

👍 感谢提交该 Issue,请确保仔细阅读 Issue 模板RSS 提案模板Feature 提案模板 以便于测试。不符合模板将导致 Issue 被直接关闭。

👍 Thanks for the issue, please follow the Issue template, RSS proposal template or Feature proposal template. Otherwise the issue will be closed.

issuehunt-oss[bot] commented 3 years ago

@yefoenix has funded $3.00 to this issue.


prnake commented 1 year ago

我目前测试发现引入翻译的成本太高,与翻译接口的通讯延迟一般大于10s,在现有缓存策略也会直接超时

toyo2333 commented 11 months ago

支持且仅限于在自部署的rsshub上实现RSS标题翻译,方便高效阅读英文媒体新闻订阅源

支持用户填写自己的Openai或DeepL的apikey,最好是都支持。(两者翻译各有特色和擅长的领域) 仅翻译标题就可以快速进行信息筛选,达到最高的阅读效率,也能节省token,全文内容目前有很多插件可以支持不需要rsshub翻译 可以在docker的环境变量里填写apiKey,然后以通用参数的方式支持哪个feed翻译、用哪种api来进行翻译(这个也可以放在环境变量里) openai的prompt可以参考“沉浸式翻译插件”里的写法直接套用。 可以参考这个产品:https://www.rsstranslator.com/

这个功能可以解决什么问题? 比如经济学人英文版、彭博社等新闻源很好,但feed提供量巨大,大量的英文标题里很难筛选出哪些是自己需要的。提供翻译功能后:

可以快速找到自己感兴趣的内容,从而进一步进行阅读(不感兴趣的,就直接“标记已读”) 需要进一步阅读的,用户可以自己再去使用其他成熟的bypass插件或者翻译插件进行全文翻译阅读 为什么不想使用第三方的https://www.rsstranslator.com/ 这种,因为和rsshub自部署的初衷一样,都希望自己完全掌控管理自己的信息和内容渠道,保护隐私。

toyo2333 commented 11 months ago

经过我长时间测试对比,DeepL在英文新闻标题的直译方面,从准确性和逻辑性方面都好于OpenAI GTP3.5

希望两者都提供。一个用于主力,一个用于补充。

toyo2333 commented 11 months ago

再次推荐DeepL,使用DeepL的free版本api,新闻的翻译效果已经非常非常好了。

toyo2333 commented 10 months ago

来问问进度,大佬辛苦了!

Colin-XKL commented 9 months ago

对 RSS 进行翻译主要麻烦的点我觉得在于 XML 结构的处理,feed 的内容基本都是通过 HTML提供的,对于复杂一些的结构,如果只提取叶子节点的文本翻译的话,没有上下文信息,翻译结果会很糟糕;如果是直接将 HTML进行整体翻译,问题在于不必要的信息会比较多(比如大量内嵌的 css,js 等),速度会比较慢,也会消耗大量翻译后端的 token,而且很多翻译后端不支持对 HTML 结构进行翻译。

关于这个功能我之前有进行过尝试,写了一个 demo对 feed 进行标题和全文翻译,有兴趣可以关注下,https://github.com/Colin-XKL/rss-feed-translator

目前对接了阿里云和 DeepL,支持自部署,自行选择翻译后端,可以试用下看是否满足你的使用场景

toyo2333 commented 9 months ago

择翻译后端,可以试用下看是否满足你的

谢谢你的回复。我这几天通过自己的办法解决了。选用的是这个项目:https://github.com/rcy1314/Rss-Translation

这个项目的逻辑是: 1、配置要处理的feed地址,然后用python的库处理,并进行标题和描述的翻译,重装feed的xml文件 2、用github的action将其自动执行,并将文件自动同步发布到项目的github page下供外部使用

我自己修改了代码,支持了deepL翻译和仅标题翻译。使用了几天了,没有任何问题。简单好用。

另外,实际上,我自己这个需求的出发点是为了”提高信息筛选效率“,即,每天大几十条英文feed标题,我只需要粗略过滤下,就知道那些需要进一步阅读,这个时候再进行打开网页用翻译插件做双语全文翻译。所以,标题的翻译基于原始意思即可,不需要上下文,直译都满足需求了。

再这个基础上,我目前正在尝试用ai做一些自动分析筛选,比如列表只保留:和加密货币相关的新闻、或者得到一份只和China相关的新闻。

未来希望能实现,通过ai来分析新闻权重。比如某个新闻,在不同媒体都集中出现了。那么就是重大新闻(这种功能在feedly里是付费功能)

最后,提供rss相关工具本身不就是为了提高信息获取效率么?我认为这些能力应该是工具本身的愿景,而不要仅仅当作一个翻译功能来定位这件事。

prnake commented 9 months ago

择翻译后端,可以试用下看是否满足你的

谢谢你的回复。我这几天通过自己的办法解决了。选用的是这个项目:https://github.com/rcy1314/Rss-Translation

这个项目的逻辑是: 1、配置要处理的feed地址,然后用python的库处理,并进行标题和描述的翻译,重装feed的xml文件 2、用github的action将其自动执行,并将文件自动同步发布到项目的github page下供外部使用

我自己修改了代码,支持了deepL翻译和仅标题翻译。使用了几天了,没有任何问题。简单好用。

另外,实际上,我自己这个需求的出发点是为了”提高信息筛选效率“,即,每天大几十条英文feed标题,我只需要粗略过滤下,就知道那些需要进一步阅读,这个时候再进行打开网页用翻译插件做双语全文翻译。所以,标题的翻译基于原始意思即可,不需要上下文,直译都满足需求了。

再这个基础上,我目前正在尝试用ai做一些自动分析筛选,比如列表只保留:和加密货币相关的新闻、或者得到一份只和China相关的新闻。

未来希望能实现,通过ai来分析新闻权重。比如某个新闻,在不同媒体都集中出现了。那么就是重大新闻(这种功能在feedly里是付费功能)

最后,提供rss相关工具本身不就是为了提高信息获取效率么?我认为这些能力应该是工具本身的愿景,而不要仅仅当作一个翻译功能来定位这件事。

我也推荐用这个方案,rsshub 主要提供网页解析的能力,很多地方是无状态的,加入翻译功能太重了。

像翻译,AI总结这种对于每一条新闻只需要做一次的操作,由于 RSSHub 没有持久数据库记录历史,比较难通过 redis 避免重复解析。