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
-
使用这个链接用 Actionsflow 的默认模板创建一个新的 GitHub 项目,一个典型的 Actionsflow 项目长这样:
├── .github │ └── workflows │ └── actionsflow.yml ├── .gitignore ├── README.md └── workflows │ └── rss.yml │ └── webhook.yml └── package.json
-
clone 你刚创建的项目到本地
git clone git@github.com:<your-github-username>/<repo-name>
-
在本地编辑
.github/workflows/actionsflow.yml
文件,取消schedule
的注释 -
npm i @actionsflow/trigger-rsshub
-
在
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
-
保存并提交你的文件到 Github
如果你想本地测试的话,需要先安装Docker, 并运行
npm run start