使用 GitHub Action + Google Translate 实现翻译 RSS 订阅源全文

浏览: 1,120 次浏览 作者: 去年夏天 分类: 佳软推荐,技术文章 发布时间: 2023-03-27 00:43

随着 RSS 订阅源越来越多,从非中文 RSS 订阅源获取消息就出了点问题,
英文站点不多的时候,看原始文章标题还是没感到什么阻碍的。所以并没有使用到翻译。
随着订阅源增多,再怎么说英语也不是日常语言,获取信息的速度明显不如中文,
况且慢慢地有俄语,韩语等语言的订阅源,就完全看不懂了,产生了翻译 RSS 的需求。
在一番寻找下,最终找了一个基于 GitHub Action + Google Translate 实现翻译 RSS 订阅源全文的项目。

2023-11-24更新 此文可能已经落后版本,请查看新的文章《本地/云端部署 AI 翻译 RSS 订阅源工具



需要准备的东西

这次你只需要准备一个github账号。
注册地址(https://github.com/signup
输入邮箱地址和密码,选择免费计划,验证邮箱地址,按照提示操作,创建您的个人帐户。
PS:如果你感觉部分内容是英文的识别困难,用浏览器的翻译功能吧。

GitHub部署

Fork项目

  1. 登录你的Github,并且进入项目(https://github.com/tjsky/RSS-Translation
  2. 点击右上角的【Fork】将项目复刻到你自己的仓库
  3. 如果你有git使用基础,请将fork到的代码重新add到一个新的仓库使用,而不是直接修改fork后的这个仓库使用。
    • 这是因为 GitHub 会根据此上游的存储库计算 fork GitHub Actions 使用情况,这可能会导致此上游的存储库被判定为滥用action而被 GitHub 工作人员封禁。最知名的因此遭殃的项目就是LSPosed的项目。(意思就是如果万一说不准这个项目未来火了,fork的人太多,作者的仓库就有可能会被封了)
    • 如果你想支持原作者 talengurcy1314 可以 fork+star 他的仓库一下,但就别启用 action 了,而是建立自己的仓库使用。

记录三个需要的参数

U_NAME

就是你github的用户名,你可以点右上角的头像看到一行字:
Signed in as xxxxxx,这个xxxx就是你的用户名

U_EMAIL

就是你github的注册邮箱,如果你实在是记不清了,可以点右上角的头像
Settings→Access→Emails,然后右侧就会看到你的邮箱了

WORK_TOKEN

因为项目涉及使用脚本操作仓库内容,所以需要给脚本修改仓库内文件的权限,需要申请一个Repository Secret令牌。
1. 点击网页右上角自己的头像,点 【Settings】
img

  1. 点击左侧最下方的【Developer settings】

  2. 点击左侧下方的【Personal access tokens】-【Tokens(classic)】 ,点击左上角的 【Generate new token (classic)】新建一个token

  3. 新建token

  • Note: rss translate
  • Select scopes:勾选【repo】和【workflow】(你直接勾workflow,repo就全勾上了)
  • Expiration:选【No expiration】(无期限)
  • 点击页面最下方的 【Generate token】
  1. 复制token
    注意一定要在这里复制好,错过这个页面你就再也看不到token了。
    注意一定要在这里复制好,错过这个页面你就再也看不到token了。
    注意一定要在这里复制好,错过这个页面你就再也看不到token了。

设置需要的令牌

点击 【Settings】,展开左侧的【Secrets and varlables】,点击【Actions 】 点击【 New repository secret】

  • 给翻译仓库设定 U_NAME 参数
    • Name: U_NAME
    • Value: 上边U_NAME所说的你的用户名
    • 点击 【Add secret】
  • 给翻译仓库设定 U_EMAIL 参数
    • Name: U_EMAIL
    • Value: 上边 U_EMAIL 所说的你的邮箱
    • 点击 【Add secret】
  • 给翻译仓库设定 WORK_TOKEN 参数
    • Name: WORK_TOKEN
    • Value: 上边 WORK_TOKEN 所说的你的令牌
    • 点击 【Add secret】

给需要的权限

  1. 给与actions读写权限
    • 点击 【Settings】,展开左侧的【Actions】
    • 点击【General 】 找到【 Workflow permissions】
    • 将选项改为【Read and write permissions】
    • 点击 Save 按钮。
  2. 开启 GitHub Pages
    • 点击【Settings】
    • 在左侧 【Code and automation】 下找到 【Pages】 点击进入
    • 将 【Branch】 设置为 【main】
    • 点击 【Save】

设置需要的 RSS 翻译订阅源

  1. 点击【Code】,点击进入【 test.ini 】文件

  2. 点击笔形图标,编辑代码

  3. 设置你需要的订阅源
    前两行的内容不要动。

[cfg]
base = "rss/"

需要改 RSS 订阅源请改后面的代码,格式如下

  • [source001]:订阅序号,从001开始增长,注意请确保编号不要重复,不然代码会报错
  • name = “mckinsey_rss”:生成订阅的名称,其中name为英文或阿拉伯数字,不要添加后缀!!!!,本项目生成的文件为固定的.xml格式文件,不需要name有后缀,此外name也不要过长。
  • url = "http://www.mckinsey.com/insights/rss":RSS订阅链接
    max = "10":每次RSS订阅源获取的更新条数,如果你的订阅源为全文订阅(就是会显示一大堆文字的话),请适当减少这个数字的大小,因为脚本使用的翻译接口,有最大字符数限制,一次更新太多(翻译太多)会导致后面的文字没有被翻译。
  • md5 = "":留空即可,将来脚本会自己计算这个数字写入
  • action = "auto":翻译方向,设置为auto会将任意文字翻译为中文,如果想指定可以看这个
    源语言->目标语言。比如:en->zh-CN意思就是从英语翻译为中文简体。
  1. 点击最下边的【Commit changes】提交修改。

测试翻译


– 点击 【Actions】
– 点击【circle_translate】
– 选择 【Run worldiow】
– 你会看到1~2个黄圈圈在转。运行成功会显示绿色的勾,运行失败会显示红色的叉。如果出现红叉,一般都是你修改ini文件时,什么地方写错了,权限、令牌设置错误,比如少打了一个 字母啊,空格漏了啊,代码对齐有问题,少写了什么必须设置的参数,什么参数设置错误了。请仔细检查。

修改运行参数

  1. 点击【Code】,点击进入【 README.md 】文件

  2. 点击笔形图标,编辑代码

  3. 将第5行中,一切你看到的tjsky改成你自己github用户名(就上边所说的U_NAME),7/9/11行的内容你可以随便改。

  4. 但需要注意要保持## 已转换翻译源这行字在第13行,[source001]在第14行,代码更新订阅网页时,会修改从13行开始的内容,代码完全是按行号更新的,如果行号不对可能会导致奇怪的问题。

  5. 点击最下边的【Commit changes】提交修改。

使用 RSS 翻译订阅源全文

如果前边没出现错误(主要是actions上没出现红叉),那么你可以在你自己项目的介绍页,看到这样的内容

点击那个【查看 Rss-Translation】链接,就可以跳转到订阅列表页,每条项目的 -> 左侧的是原始订阅链接,右侧是转换后的链接,这个链接和其他的RSS订阅链接一样处理就好了。

注意

  • 这个项目纯属娱乐,因为很多网站的RSS订阅格式并不是很规范(当然这个也不赖网站,因为RSS本身就是一个非常混乱的标准)不排除会出现,翻译后的 RSS 翻译订阅源,阅读器报错无法使用的情况。
  • 尽量不要翻译那种全文显示的订阅源(比如RSSHUB生成的那种)字数太长翻译很容易出错,如果因为过长出错,请对应减少max = " "参数的数字。
  • 默认设置是每2小时所有拉取一次订阅源并翻译,如果需要改的更短请修改.github/workflows/circle_translate.yml文件第7行,比如
内容 时间
– cron: ‘0 */2 * * *’ 每2小时运行一次
– cron: ‘0 * * * *’ 每1小时运行一次
– cron: ‘*/30 * * * *’ 每30分钟运行一次

因为github actions的设计,运行时间会根据github本身负载调整,实际更新间隔会略有加长,比如你设定1小时运行一次,实际可能是1小时7分钟间隔,1小时3分钟间隔。
– 默认是使用bing翻译,如果需要修改请修改Rss-Translation/.github/workflows
/circle_translate.yml
第43行。

13 条评论
  • wyf

    2024-04-03 23:54

    你好,把翻译后的链接(链接可以在浏览打开)放入到Reeder(feed 添加订阅)后显示:Reeder could not find a feed at the specified location!

  • lwx

    2024-03-23 10:55

    我都按你上面的步骤做了,在本地阅读器导入显示 “Error: 解析XML信息流时出错” ,在feedbro导入也不行,试了在inoreader导入开源,在但是翻译后的订阅里没有内容且只有标题被翻译了

    1. 去年夏天

      2024-03-23 11:25

      试试,用新文章里的《本地/云端部署 AI 翻译 RSS 订阅源工具
      这个旧文章里面的代码有点老了,有些bug也没修。(比如你说的只翻译标题问题)

  • newsll

    2023-10-25 15:52

    发现标题没有被翻译,有没有好的解决办法?

    1. 去年夏天

      2023-11-25 09:48

      代码已经更新,问题已经解决

  • mundane

    2023-07-04 18:10

    请问下用什么阅读器啊?
    订阅链接是这样的吗?
    https://raw.githubusercontent.com/mundane799699/RSS-Translation/main/rss/wanquribao_rss.xml

    1. 去年夏天

      2023-07-05 08:52

      1. 在这个页面看Rss-Translation,每一个条目箭头“->”右侧的就是订阅链接。

      2. 阅读器的话,可以看下这里的介绍

  • gjdhxy

    2023-06-29 21:28

    “返回你repo的Upptime项目。点击 【Settings】,展开左侧的【Secrets】,点击【Actions 】 点击【 New repository secret】”

    “开启 GitHub Pages
    点击【Settings】
    在左侧 【Code and automation】 下找到 【Pages】 点击进入
    将 【Branch】 设置为 【main】
    点击 【Save】”
    没找到位置。
    继续操作没有问题,也翻译完成。
    点击“查看RSS-Tranlation”显示404

    在“已转换翻译源”下“->”后的内容无法订阅,在feedly中显示GitHub的界面。
    折腾失败。

    1. 去年夏天

      2023-06-30 08:57

      1. gjdhxy

        2023-07-06 10:58

        我还是不理解什么叫我repo的Upptime项目

        1. 去年夏天

          2023-07-06 11:47

          额,我修改了一下教程表述。。看下这样能理解不?

          1. gjdhxy

            2023-07-17 11:09

            这次成功了,感谢博主细心回复!

          2. gjdhxy

            2023-07-17 17:10

            dalao感兴趣写个用gpt的api总结rss源不,跟GPT-4和Claude2一起学了您的代码和chatpaper的代码,自己还是没写出来,对GitHub了解还是不多,只能本地跑通了但是GitHub自动化还是没整会。
            这会脑子用光了,去看点轻松愉快的订阅舒缓一下。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据