Owen Young's Story

February 03, 2021

使用Actionsflow在Github上免费部署Rsshub

Rsshub是一个很棒的工具,把很多知名或不知名的网页数据通通统一为RSS 格式,堪称中文互联网的 W3C. 但是官方推荐的部署方式是Docker 部署,对于大多数轻量使用的用户来说有点重,所以这里介绍一种免费,轻量,按需使用的部署方式,利用Actionsflow部署在 GitHub 的 Actions 上。

Actionsflow是一个基于 Github Actions 上的 IFTTT/Zapier 的开源替代,使用 Github Actions 的配置格式来配置你需要的工作流, 更多关于 Actionsflow 的使用可以看我的另一篇文章介绍,或者官方文档

比如我自己在用的一个工作流就是监控豆瓣车组的一些我需要的关键词,如果有提到关键词的帖子,那么发送一个 telegram 消息给我,配置如下:

on:
  rsshub:
    path:
      - path: /douban/group/669481
        query:
          filter_case_sensitive: false
          filter_title: 罐头|狗粮|爱肯拿|渴望|姐妹们快|牛奶|牛肉|羊肉|来伊份岩烧|来伊份面包|烤箱|生鲜|螺蛳粉|米诺|果酸|杏仁酸|鸡蛋|大米|薅|cr海盐|洗头膏|崔娅蓬松|洗鼻|橙
          filterout_title: 求|转|求购|交流|已购|专楼|蒙牛|伊利|讨论|华为|停车|代拍|完|分装|意向|拼单|删|一元
jobs:
  ifttt:
    name: Make a Request to telegram
    runs-on: ubuntu-latest
    steps:
      - name: Send a telegram message
        uses: appleboy/telegram-action@v0.1.0
        with:
          to: ${{ secrets.TELEGRAM_TO }}
          token: ${{ secrets.TELEGRAM_TOKEN }}
          message: |
            <b>${{ on.rsshub.outputs.title}}</b>
            <a href="${{on.rsshub.outputs.link}}">${{on.rsshub.outputs.description}}</a>
          format: html
          disable_web_page_preview: true

配置来自这里

接下来介绍下如何部署:)

因为 rsshub 这个 trigger 没有内置在 Actionsflow 里,所以按照官方的教程初始化之后,需要主动安装下@actionsflow/trigger-rsshub这个 trigger

  1. 使用这个链接用 Actionsflow 的默认模板创建一个新的 GitHub 项目,一个典型的 Actionsflow 项目长这样:

    ├── .github
    │   └── workflows
    │       └── actionsflow.yml
    ├── .gitignore
    ├── README.md
    └── workflows
    │   └── rss.yml
    │   └── webhook.yml
    └── package.json
    
  2. clone 你刚创建的项目到本地

    git clone git@github.com:<your-github-username>/<repo-name>
    
  3. 在本地编辑 .github/workflows/actionsflow.yml 文件,取消schedule的注释

  4. 安装@actionsflow/trigger-rsshub

    npm i @actionsflow/trigger-rsshub
    
  5. workflows/文件夹创建你自己的 workflow 文件

    workflow 的写法和 rsshub trigger 的用法清参考官方文档Actionsflow Workflow Syntax, Actionsflow rsshub trigger

    可以参考这里列出的 常用 Github Action,以及这个Actionsflow 的 Awesome 项目

    示例(/workflow/rsshub.yml):

    on:
      rsshub:
        path: /smzdm/keyword/女装
    jobs:
      print:
        name: Print
        runs-on: ubuntu-latest
        steps:
          - name: Print Outputs
            env:
              title: ${{on.rsshub.outputs.title}}
              description: ${{on.rsshub.outputs.description}}
              link: ${{on.rsshub.outputs.link}}
            run: |
              echo title: $title
              echo description: $description
              echo link: $link
    
  6. 保存并提交你的文件到 Github

如果你想本地测试的话,需要先安装Docker, 并运行 npm run start

rsshubActionsflowGithub Actionspostzh
logo
Words by Owen Young.
Freelancer / Perfectionism / Workflow lover, Personal Finance Enthusiast New Blog / What I’m doing now?