
GitHub、Gitea 的事件通知散落在各处,给 Discord、Telegram、飞书各建一套机器人又笨又重复?WebHooker 是跑在 Cloudflare Workers 上的多平台 Webhook 分发器:一个统一入口接收事件,按过滤器加分组路由把格式化消息发到 Discord、Telegram 或飞书,还能在聊天里直接评论、合并 PR。本文讲清它的部署姿势怎么选、4 个安装卡点、5 个必改设置,以及它和 n8n、Zapier 的分工边界。
基本信息
| 项目 | WebHooker |
|---|---|
| 类型 | 多平台 Webhook 分发网关 |
| 语言 | TypeScript |
| 运行平台 | Cloudflare Workers(无服务器,按量计费) |
| 数据层 | D1(配置/发送日志/去重/消息跟踪)+ KV(临时状态/缓存)+ R2(可选,超大载荷) |
| 输入 | GitHub、Gitea、自定义 JSON 事件(统一 /webhook 入口,请求头自动识别来源) |
| 输出 | Discord 频道/线程、Telegram 聊天/话题、飞书群聊卡片,支持多目标路由 |
| 特色 | 过滤器支持字段路径/通配符/正则/比较运算符与 all、any、not 布尔组合;工作流消息原位更新;Web 管理控制台 |
版本选择:三种部署姿势对比
| 姿势 | 特点 | 适合谁 |
|---|---|---|
| 官方仓库直连部署 | 跟着 README 走 wrangler deploy,最省心 | 大多数团队首选 |
| Fork 后二次开发 | 可加新平台适配器、自定义消息格式 | 需要 GitLab 等未覆盖平台的团队 |
| wrangler 本地 dev | 本地调试过滤器语法与路由 | 调复杂过滤规则时 |
明确推荐:先用官方仓库把”收事件—过滤—发消息”整条链路跑通;只有确认需要 GitLab 等官方未覆盖的输入时,再 fork 去改 server/lib/providers/ 下的适配器。别一上来就 fork,合并上游更新会很痛苦。
安装关键卡点(4 个)
- wrangler 先建资源再部署:D1、KV、R2 三个绑定漏配一个,部署能成功、运行时才报错。顺序是先
wrangler d1 create建库,再写 wrangler.toml 的绑定,最后 deploy。 - webhook 签名密钥两边必须一致:GitHub 仓库设置里的 Secret 和 Worker 环境变量对不上,事件会被 HMAC-SHA256 校验直接拒收。先拿一次测试事件把签名链路验通。
- 三家平台的凭据各走各的:Discord 要回填 Interactions Endpoint URL,Telegram 要先跟 BotFather 拿 token 并配好
/gh命令,飞书要群聊机器人的 webhook 地址。三套凭据别混在一起配,逐个验通。 - 分组入口先规划:多团队共用一个
/webhook入口全量广播会吵死人。按仓库或团队先拆分组(/webhook/{groupId}),再给每个分组配独立路由。
装完必改的 5 个设置
- 签名校验与重放保护:生产环境必须开。Webhook 入口是公网 URL,不开校验等于任人伪造事件灌爆你的群。
- 路由过滤器收敛:用字段路径加正则加 all/any/not 组合,先只放行 push 和 PR 事件。check_run 这类高频事件全量放行,一天能刷几百条。
- 去重窗口:同一事件重复投递时靠 D1 去重,按仓库活跃度调窗口大小,避免重复通知刷屏。
- 消息模板精简:默认通用回退格式偏啰嗦,给高频事件单独写精简模板,一条消息只保留”谁、干了什么、链接”三要素。
- 原位更新:工作流和检查运行消息打开原位更新,一条消息反复刷新状态,而不是每次状态变化都刷出一条新消息。
注意事项与常见问题
- 支持 GitLab 吗?目前官方适配器只有 GitHub 与 Gitea。GitLab 需要按
server/lib/providers/的结构自己加,动手前先评估维护成本。 - 事件收到了但群里没消息?先看 Web 管理控制台的发送日志,按”入口—过滤器—目标”三段排查,大概率是过滤器写得太严把事件拦掉了。
- 飞书卡片样式错乱?三家平台的消息格式能力不一致,飞书卡片要单独调模板,别指望一套模板通吃三家。
- 免费额度够用吗?Workers、D1、KV 的免费额度对中小团队的事件量一般够用;超大载荷记得开 R2,账单先去 Cloudflare 后台看一眼再定。
- 想从聊天里合 PR?GitHub OAuth 的权限范围要先给足,Discord 交互端点和 Telegram 命令是两套独立配置,都要配好才能用。
适合谁、不适合谁
| WebHooker | n8n | Zapier | |
|---|---|---|---|
| 定位 | 代码事件通知专精 | 通用自动化 | 通用自动化 SaaS |
| 部署 | Cloudflare 无服务器 | 自托管/云 | 纯 SaaS |
| 成本 | 低(CF 免费额度) | 中 | 高 |
| 多平台 IM | Discord/TG/飞书原生 | 需自己接节点 | 插件多 |
一句话判断:适合已用 Cloudflare 全家桶、通知要进 Discord、Telegram 或飞书的开发团队与开源维护者;不适合重度 GitLab 用户(先确认适配器)、不想依赖 Cloudflare 的(选 n8n 自托管)、只需要单一平台通知的(GitHub 原生 Discord App 更轻)。
开源地址
GitHub 国内访问较慢,如打不开可多刷新几次
推广

关注「软件教程管家」
回复软件名即取即下:网盘下载链接 + 提取码,一步直达,不用再跳转。
版权与使用提示
本站资源仅供个人学习交流,请勿用于商业用途。软件与资料版权归原作者所有;如有侵权,请通过公众号「软件教程管家」联系我们,我们将在 24 小时内下架处理。查看免责声明 ›
文章推荐
标签推荐
正文完







