最近,作者群里的大鸽们都发出了各自的 Newsletter 订阅链接,我的 Newsletter 订阅列表也在不断变长。为了高效获取 Newsletter,减少阅读和摘录成本,我打算对传统的订阅方式作出调整。最终,我通过 ActionsFlow 自动获取 Newsletter 的更新,并利用 Cubox API 将文章存储到 Cubox 的指定文件夹中,随时在 Cubox 中阅读文章内容。

下面就简单介绍一下,我是如何利用 Cubox API 高效阅读 Newsletter 的。

编注:本文基于作者个人需求撰写,此方法不一定适用于所有 Newsletter 或同类工具。

折腾前的阅读方式

和绝大多数用户一样,我过去都在使用邮箱订阅 Newsletter,并借助收件规则将不同的 Newsletter 存入不同文件夹中。待邮件积攒到一定数量后,再快速浏览内容,将需要收集的内容存入 Cubox。

但将邮件存入 Cubox 的过程是痛苦的,若直接将邮件利用共享菜单进行收藏,很可能遇到 Cubox 不能正常解析文章的问题。此时,我往往需要打开 Newsletter 的原始网页再存入 Cubox。随着订阅的 Newsletter 不断增多,手动将 Newsletter 存入 Cubox 的流程也耗费了大量的时间。

获取 Newsletter 更新信息

很多中文 Newsletter 创作者都使用了「竹白」这一创作平台。对于订阅者的好处在于,竹白提供了微信订阅和邮件订阅两种形式。微信订阅显然无法为我们提供折腾空间,而邮件订阅则可以通过设置自动转发规则、配合自动化工具和 Cubox API,将邮件存入 Cubox。

就在利用这一思路调整阅读流程时,我依然遇到了有部分文章不能正常解析的问题。

因此,在竹白官方提供的订阅方式外,我想到了另一个常用的订阅工具——RSSHub

RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。RSSHub 借助于开源社区的力量快速发展中,目前已适配数百家网站的上千项内容。

借助 RSSHub,我们可以轻松将 Newsletter 转换为 RSS 订阅。RSS 订阅返回的信息中则包含了文章的标题和正文的 URL,获得这两个关键信息便为将 Newsletter 导入 Cubox 打下了坚实的基础。

RSSHub 为竹白提供的订阅源链接形式是 https://rsshub.app/zhubai/id,只需要修改 id 为创作者竹白主页链接的域名前缀就能获取订阅源。

如我派编辑 @路中南 的竹白主页为 https://luzhnan.zhubai.love,那么南哥的竹白对应的 RSS 订阅源便是 https://rsshub.app/zhubai/luzhnan。你也可以使用在链接末尾处加上 ?limit=限制获取数目 来限制数量,如 https://rsshub.app/zhubai/luzhnan?limit=5,即是只获取南哥最新的 5 篇 Newsletter(虽然南哥只更新了两篇)

如何将 RSS 自动汇入 Cubox

借助 RSSHub,我们已经拥有了获得 Newsletter 更新信息的方法,只需要将 RSS 订阅源汇入 Cubox 即可。尽管 Cubox 官方并不推荐你将订阅内容直接汇入 Cubox,但我更习惯将 Cubox 作为稍后读阅读器和内容收藏聚合平台。

利用 Intergrately 等付费自动化工具

Cubox 官方提供了 Integrately 的教程,方便用户进行操作。但由于 RSSHub 生成的订阅源中,每份 Newsletter 对应一个订阅链接,如果使用 Integrately 或者 IFTTT 一类工具,每份 Newsletter 都需要占用一个「自动化任务」,并且对每月的自动化流程执行次数也有限制。

因此,大量订阅 Newsletter 意味着大笔开销。如果你订阅了此类服务,不妨移步 Cubox 官方教程,获得更简单的配置体验。

 

并不想因此订阅自动化服务的我,开始尝试寻找 Integrately 和 IFTTT 的免费替代方案。

利用 ActionsFlow 实现自动化

ActionsFlow 是基于 GitHub Actions 的开源自动化工具,虽然没有 Integrately 或 IFTTT 一样更友好的图形化界面和低门槛,但只要简单地对 ActionsFlow 进行配置,同样可以完成将 RSS 汇入 Cubox 的流程。

创建 GitHub 仓库

假定读者们都拥有 GitHub 账户(如果没有不妨立即注册一个),你只需要点击这个 链接,从即可创建一个与 ActionsFlow 官方示例完全一致的仓库。

你可以将仓库命名为任何你想要的名字。此处建议将仓库的属性设置为「公开」,因为 GitHub Actions 对公开的仓库可以免费无限次数使用,而私有仓库可能需要付费使用,详情可以参阅 这里

接下来对配置文件的修改,可以直接在 GitHub 网页上完成,也可以使用 git clone 命令,将仓库克隆到本地后进行编辑。

设置自动化操作的执行周期

打开 .gitHub/workflows/actionsflow.yml,去掉注释掉 Schedule 和具体配置了两个*即可,修改后的前四行应该与下面相似。

name: Actionsflow
on:
    schedule:
       - cron: "0 * * * *"

GitHub Actions 的执行周期使用 CRON 表达式进行配置,如果不知道 CRON 表达式的具体含义,你可以查看 GitHub 官方文档 或者 Cron 官方文档,也可以使用 Crontab 来查看你所书写的表达式对应的含义。在这里,我将 GitHub Actions 的时间配置为了每小时执行一次。

创建自动化工作流程

ActionsFlow 为我们提供了成熟的「由 RSS 更新触发 HTTP 请求」的工作流,只需要打开这个 链接,复制其中的内容,或复制下面我提供的内容并替换原本 /workflows/rss.yml 的内容,并继续针对订阅的 RSS 源和 Cubox 提供的 API 进行细微的修改即可使用。在修改 yml 文件时,可能特别需要注意文件的缩进格式,否则可能出现一些问题。

on:
  rss:
    url:
      - RSS 订阅链接 1
      - RSS 订阅链接 2
      - RSS 订阅链接 3
jobs:
  request:
    name: Make a HTTP Request
    runs-on: ubuntu-latest
    steps:
      - name: Make a HTTP Request
        uses: actionsflow/axios@v1
        with:
          url: 你的 Cubox API 链接
          method: POST
          body: |
            {
              "type":"url",
              "content":"${{ on.rss.outputs.link }}", 
              "title": "${{ on.rss.outputs.title }}",
              "folder":"你希望保存文章的文件夹"
            }

修改 RSS 订阅链接

ActionsFlow 的 RSS Trigger 提供了两种基本形式:单一订阅链接多个订阅链接。如果只需要订阅一个 RSS 源,YML 文件 on 部分的格式应该类似官方提供的示例,也就是下面这样。

on:
  rss:
    url: RSS 订阅链接 1

如果需要订阅多个 RSS 源,YML 文件的格式应该和下方代码相似。

on:
  rss:
    url:
      - RSS 订阅链接 1
      - RSS 订阅链接 2
      - RSS 订阅链接 3

但需要注意的是,如果你所订阅的 RSS 源有无法正常访问的,例如:用 RSSHub 解析一份从未更新过的来自竹白的 Newsletter,那么 GitHub Actions 在运行时可能报错。(在线实名催更鸽友们的 Newsletter。)

修改 HTTP 请求部分

Cubox 为高级会员提供了 API 服务和详尽的 文档 ,针对保存网页,Cubox 给出了如下示例。

{
"type":"url",
"content":"https://apple.com",
"title":"标题",
"description":"描述",
"tags":["标签A","标签B","标签C"],
"folder":"收藏夹名称"
}

其中主要的变量名、变量类型、变量含义、备注和变量值对应情况如下表。

变量名变量类型变量含义备注变量值
typestringurl向 Cubox API申明保存网页url
contentstring网页的链接完整的链接,包含 http:// 或 https://{on.rss.outputs.link}
titlestring卡片标题可为空{on.rss.outputs.title}
descriptionstring卡片描述可为空{on.rss.outputs.content}{on.rss.outputs.contentSnippet}
tagsarray卡片标签

可为空

(笔者尝试为文章打标签时,Cubox API 会报错 405)

{on.rss.outputs.categories}
folderstring存放的收藏夹位置若找不到指定的文件夹,系统会自动创建一个新的你想要存放的文件夹

你只需要根据上表和自己的实际需求下面的内容即可。

首先,请将 你的 Cubox API 链接 替换为在 Cubox 网页版设置 > 扩展与下载 中,找到 开放 API 设置项(仅网页版 Cubox 可以找到这一选项),打开 启用 API ,获得的 API 链接。

其次,请修改花括号中的内容,格式为 "变量名":"变量值", (最后一个变量无需 , )。个人建议只利用 API 传入链接、标题和文件夹,传入其他内容可能遭遇玄学因素。

          url: 你的 Cubox API 链接
          method: POST
          body: |
            {
              "type":"url",
              "content":"${{ on.rss.outputs.link }}",
              "title": "${{ on.rss.outputs.title }}",
              "folder":"你希望保存文章的文件夹"
            }

至此,你已经完成了全文中最困难的部分。

上传文件,完成配置

如果你是在网页中编辑的 YML 文件,滑到最后,点击 Commit changes 即可。如果你使用的是 git 命令,请使用 git add . 将准备提交的文件添加到暂存,使用 git status 查看文件是否成功添加到暂存中,使用 git commit 提交暂存文件,最后使用 git push 将文件更改推送至 GitHub 仓库。

至此 ActionsFlow 的配置全部完成,你可以坐等 ActionsFlow 从 RSSHub 拉取订阅源并推送更新的文章到 Cubox 了。

查看自动化工作流程运行状态

你可以在 GitHub 仓库 > Actions 查看 GitHub Actions 的运行状况,如果是一片绿色,那么无需担心。

如果是红色报错,则需要点击 Run 即可查看详细日志排查。Annotations 中会注明报错的部分。

虽然标红的部分时 Post Run Actionsflow,但其中注明了 please check error details at [Run Actionsflow] Step,故我们需要到 Run Actionsflow 中寻找报错的实际原因。

Run Actionsflow 中我们不难发现,问题会出现在笔者的 RSS 订阅源中,有还未发表文章的 Newsletter,故报了 404 错误。

Debug 小贴士

Run Actionsflow 中展示的是 RSS Trigger 的详情信息,你可以在这里观察到订阅的 RSS 源是否有更新。

Run Act 中展示的是 HTTP 请求(即调用 Cubox API)的详情信息,你可以在这里观察 RSS 源有更新时,Cubox API 的调用是否正常,如果可以看到 ⚙ ::set-output:: status=200,那么一切正常,无需担心。如果出现其他状态码,请参照 Cubox 文档 或者下表来尝试排除。

状态码说明
200成功
400参数错误
-1100API Key 错误
-1025非会员
-3030调用次数超过上限(200 次/天)
-1102不支持的 Type 类型
-1未知错误

一些问题

虽然这一套的流程配置完成以后,为懒惰的我节省了不少时间和精力,我在使用过程中也发现了一些不尽人意的地方:

  1. 在第一次执行自动化工作流程时,RSS Trigger 会认为所有文章都是未读的,进而将所有文章推送到 Cubox 当中,且可能达到 Cubox API 当日的使用上限。在找到解决办法前,建议在半夜完成工作流程的配置,手动删除所有第一次导入到 Cubox 的链接。
  2. 由于 RSS 订阅并非竹白官方提供,存在不确定性。且创作者并不知道你订阅了他们的频道,可能影响他们的创作积极性,读者和创作者的沟通可能会变得困难。希望大家不要折腾完自动化就取消订阅,突然减少的订阅者数量可能对创作者造成困扰。
  3. 检测到 RSS 订阅源有更新后,ActionsFlow 只会默默推送到 Cubox,不会提供任何的消息通知。当然,你可能进一步完善自动化工作流程,让它给你的钉钉或者其他可以配置 bot 的软件发送消息提示。

如果折腾完了还想丰富一下 Newsletter 的订阅列表,不妨看看我派作者 @kokdemo 整理的 少数派作者的 Newsletter

参考文献

  1. GitHub Actions 文档:https://docs.github.com/actions。
  2. Cubox 帮助文档:https://help.cubox.pro。
  3. ActionsFlow 文档:https://actionsflow.github.io/docs/。

> 下载 少数派 2.0 客户端、关注 少数派公众号,解锁全新阅读体验 📰

> 实用、好用的 正版软件,少数派为你呈现 🚀