owenyoung 13小时前
Actionsflow介绍 - 可以一键部署在Github上的IFTTT/Zapier的开源替代
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了一款名为Actionsflow的开源项目,旨在为用户提供IFTTT的替代方案。作者分享了自己从IFTTT收费引发的思考,以及寻找轻量级、易于扩展的自动化工具的历程。发现现有主流开源方案如huginn、n8n、node-red略显笨重后,作者利用GitHub Actions的Schedule事件和免费特性,创造了Actionsflow。Actionsflow的设计原则是规则简单且可扩展,其工作流配置直接沿用GitHub Actions的格式,降低了学习成本。文章详细阐述了Actionsflow的配置方法,包括RSS触发器、Webhook支持以及本地运行Docker部署等,为用户提供了一个强大而灵活的自动化工作流解决方案。

💡 **Actionsflow的起源与定位**:面对IFTTT的收费政策,作者寻求轻量级、易于扩展的开源替代方案,最终利用GitHub Actions的免费特性和Schedule事件,开发了Actionsflow,旨在提供一个灵活的自动化工作流工具。

⚙️ **配置的简洁与GitHub Actions的融合**:Actionsflow的设计核心是将规则配置与GitHub Actions保持一致,用户只需熟悉GitHub Actions即可快速上手。它扩展了on(trigger)事件,并支持config参数用于过滤、格式化等通用功能,极大地简化了工作流的创建和管理。

🌐 **多样的触发器与Webhook支持**:Actionsflow不仅支持如RSS定时抓取等事件,还通过GitHub的repository_dispatch事件支持Webhook,允许第三方服务主动通知Actionsflow执行相应操作,增强了系统的实时响应能力。

🐳 **本地部署与运行**:除了推荐使用GitHub Actions运行时,Actionsflow还提供了Docker化的本地部署方案,方便用户在本地环境或自有VPS上运行,提供了更大的灵活性和控制权。

我还记得当年第一次使用IFTTT的时候的那种兴奋,天呐,这才是互联网!从那时起,就一直使用 IFTTT 到今天,真的很棒的一个产品!直到 IFTTT 最近宣布要收费,我就在想有没有合适的开源方案可以替代,因为托管方案肯定没戏了,连 10 年都免费的 IFTTT 都开始收费了,其他的只会更贵,结果发现主流的开源替代方案,比如 huginn, n8n, node-red 好像又有点重,不够轻量,而且扩展起来也不容易。

刚好在那时看到Github 的 Actions支持Schedule事件,而 Github 的 Actions 又是对开源项目免费使用,所以就萌生了利用 Github Actions 的定时运行来检测更新,并执行指定动作。所以一个新的轮子Actionsflow 来了!

开始🔗

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

    ├── .github   └── workflows       └── actionsflow.yml├── .gitignore├── README.md└── workflows   └── rss.yml   └── webhook.yml└── package.json

    取消 .github/workflows/actionsflow.yml 文件里schedule的注释

    workflows/文件夹创建你自己的 workflow 文件

    保存并提交你的文件到 Github

配置🔗

我对 Actionsflow 的设计原则是规则尽可能简单,并且可扩展,workflow 的配置规则直接采用 Github Actions 的配置格式,如果你之前有用过 Github Actions 的话,应该立刻就能懂 Actionsflow 的全部配置规则:

on:  rss:    url: https://hnrss.org/newest?points=300    config:       limit: 10jobs:  request:    name: Make a HTTP Request    runs-on: ubuntu-latest    steps:      - name: Make a HTTP Request        uses: actionsflow/axios@v1        with:          url: https://hookb.in/VGPzxoWbdjtE22bwznzE          method: POST          body: |            {              "link":"${{ on.rss.outputs.link }}",              "title": "${{ on.rss.outputs.title }}",              "content":"<<<${{ on.rss.outputs.contentSnippet }}>>>"            }

和原生的 Github Actions 的配置相比,Actionsflow 只是扩展了on的事件,在 Actionsflow 里,我把它叫做trigger RSS trigger经常被用来做示例使用,你可以点击[这里](Actionsflow Triggers | Actionsflow Documentation)查看目前 Actionsflow 支持的所有 trigger. Trigger 里有个特殊的参数是config,这个 config 是通用参数,也就是所有的 trigger 都支持 config 参数,config 实现了很多通用的功能的,比如设置过滤条件,设置过滤条数,格式化输出结果,设置触发时间等等,点击[这里](Workflow Syntax for Actionsflow | Actionsflow Documentation可以查看所有支持的配置。

其他的就和 Github Actions 的配置一样了,你可以在 jobs 里配置任何复杂的任务,或者简单的发个请求,你可以用 ${{ on.rss.outputs.<key> }}来使用 trigger 的结果,每个 trigger 的结果的 key 需要去看对应 trigger 的文档。

我在这里列出了你可能会用到的 Github Action,同时新建了一个Awesome 项目列出一些常用的 Actionsflow 工作流。

Webhook🔗

Actionsflow 不仅支持定时抓取类的任务,同时还支持 Webhook 类的任务,这样第三方服务如果有任何更新就可以主动通知 Actionsflow 了。这里 Webhook 机制是利用 Github 可以接收外界的 repository_dispatch 事件来触发 Action 运行来实现的,具体使用可以见这里

本地运行🔗

大多数情况下,使用 Github Actions 运行 Actionsflow 是更方便,也是推荐的使用方式,但是可能出于某种原因你需要在本地或者你自己的 VPS 上部署 Actionsflow. 要在本地运行 Actionsflow,必须先安装Docker

然后只需要运行:

docker run -it -v /var/run/docker.sock:/var/run/docker.sock -v ${PWD}:/data -p 3000:3000 actionsflow/actionsflow

手动运行方式见这里

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Actionsflow GitHub Actions IFTTT替代 开源自动化 工作流
相关文章