免费的微信推送通道:用公众号测试号给任何自动化任务加通知能力

2026年6月23日·富阳说
已发布

富阳说:做 1000 个 AI 工具,让每个人享受 AI 便利。

上一篇文章里,我分享了如何用 AI + CI/CD 实现 HTTPS 证书自动续期。证书可以自动检查、自动续期、自动上传,看起来已经很完整了。

但自动化系统还有一个很关键的问题:如果它失败了,谁来告诉我?

证书续期失败、GitHub Actions 跑挂、数据库备份失败、磁盘快满、定时任务没执行、AI Agent 执行异常,这些问题本身并不可怕。真正可怕的是它失败了很久,你完全不知道。

所以我现在越来越觉得,个人自动化系统里最应该优先补齐的能力,不是更复杂的调度,也不是更漂亮的面板,而是一个免费的、稳定的、足够及时的消息推送通道。

我的选择是:微信公众号测试号

自动化最怕的不是失败,而是失败没人知道

自动化任务失败很正常。

网络可能抖动,云服务 API 可能限流,DNS 解析可能延迟,AccessKey 可能过期,GitHub Actions 可能偶发失败,脚本也可能因为一次依赖升级突然跑不起来。

这些都不是问题。真正的问题是:失败没有被及时发现。

很多个人项目的自动化链路其实是这样的:

写一个脚本
        |
        v
放进 crontab 或 GitHub Actions
        |
        v
开始自动运行
        |
        v
失败后静默躺在日志里
        |
        v
直到线上出问题才发现

自动化不应该只是“任务能自己跑”,还应该包括“任务出问题能主动找到你”。

对我来说,一个合格的自动化任务至少要满足三件事:

前两件事很容易做到。第三件事,很多个人开发者反而没有认真处理。

为什么需要免费的消息推送通道

通知这件事看起来简单,但实际选择并不多。

短信可以用,但它要钱,而且国内短信签名、模板审核、额度管理都比较麻烦。邮件也可以用,但邮件太容易被折叠或忽略,尤其是 GitHub、服务器、各种平台每天都发一堆邮件时,真正重要的失败通知很容易被淹没。

企业微信、钉钉、飞书适合团队,但对个人项目来说有点重。第三方推送服务也能用,比如一些 Server 酱、PushPlus 类工具,但你会多依赖一个中间服务,有额度、稳定性和长期可用性的问题。

我想要的是一个更简单的东西:

微信公众号测试号刚好满足这些条件。

它是微信官方提供的测试环境,不需要公众号认证,也不需要企业主体。你可以拿到 appIdappSecret,让自己的微信扫码关注测试号,然后通过模板消息接口给自己推送消息。

它不是为大规模商业通知准备的,但对个人自动化告警来说,已经足够好用。

微信公众号测试号适合做什么

微信公众号测试号消息推送流程

测试号最适合低频、明确、面向自己的通知。

比如:

它不适合做这些事:

换句话说,微信公众号测试号不是企业级告警系统,但它是个人开发者最容易拿到的免费微信推送通道。

基本原理:四个关键参数

微信公众号测试号推送消息,本质上只需要理解四个东西:

完整流程是这样的:

进入微信公众号测试号
        |
        v
拿到 appId / appSecret
        |
        v
微信扫码关注测试号
        |
        v
后台获得自己的 openid
        |
        v
创建模板消息,获得 templateId
        |
        v
程序用 appId/appSecret 换 access_token
        |
        v
调用模板消息接口发送到 openid

这套机制的好处是足够通用。只要你能写代码调用微信接口,或者把它封装成 CLI 命令,就可以把任何自动化任务的结果推送到微信。

模板消息怎么设计

测试号需要先配置模板。一个适合自动化告警的模板可以这样设计:

{{first.DATA}}

通知类型:{{const01.DATA}}
通知内容:{{thing01.DATA}}
通知时间:{{time01.DATA}}

{{remark.DATA}}

这个模板不复杂,但已经足够覆盖大部分自动化场景。

如果消息里再带一个 URL,就可以直接从微信点到 GitHub Actions、监控面板、日志页面或管理后台。

AIC 只是一个例子:把推送封装成一条命令

我不想每个脚本里都重复写微信 API,所以把这套能力封装进了自己的云资源 CLI 工具 aic

但这篇文章的重点不是 aic 本身。重点是这个思路:把消息推送能力封装成一条命令,然后让任何自动化任务都能调用它。

aic 的配置放在 ~/.config/aic/config.toml

[wechat]
appId = "your_app_id"
appSecret = "your_app_secret"
templateId = "your_template_id"

配置好以后,发送一条微信通知只需要:

aic notify:send <openid> "系统通知" "这是一条来自自动化任务的测试消息"

也可以加上通知类型、备注和跳转链接:

aic notify:send <openid> \
  "证书续期失败" \
  "仓库: cert-auto,运行: 123" \
  -t "证书告警" \
  -r "请尽快处理并重试" \
  -u "https://github.com/daifuyang/cert-auto/actions"

这样一来,微信推送就从“调用一堆 API”变成了“一条命令”。

命令化以后,它就可以被任何地方调用。

接入 CI/CD:失败时主动推送到微信

自动化任务统一推送到微信

上一篇证书续期文章里提到的 cert-auto,现在就接入了这套通知能力。

当 GitHub Actions 执行证书续期失败时,workflow 会调用:

aic notify:send "${WECHAT_OPENID}" \
  "证书续期失败" \
  "仓库: ${GITHUB_REPOSITORY} 运行: ${GITHUB_RUN_ID}" \
  -u "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" \
  -t "证书告警" \
  -r "请尽快处理并重试"

这条消息会直接推到微信。收到以后,我可以点开消息里的链接,直接进入失败的 GitHub Actions 运行页面。

这个闭环比只看邮件舒服很多:

当然,微信推送不是替代所有告警系统。它解决的是个人项目和小型自动化任务最常见的问题:失败以后第一时间让我知道。

举一反三:任何地方都能接入

一旦通知能力被封装成一条命令,它就不再属于某一个项目。

你可以把它放进 crontab:

0 2 * * * /scripts/backup.sh || aic notify:send "$OPENID" "备份失败" "数据库备份任务执行失败"

也可以放进服务器巡检脚本:

df -h | awk '$5+0 > 85 { exit 1 }' || \
  aic notify:send "$OPENID" "磁盘空间告警" "服务器磁盘使用率超过 85%"

也可以放进 AI Agent 长任务:

node run-agent-task.js && \
  aic notify:send "$OPENID" "AI 任务完成" "文章分析任务已执行完成"

甚至可以把它作为统一的通知出口:

GitHub Actions
cron
PM2 检查脚本
数据库备份
服务器巡检
AI Agent
证书续期
        |
        v
统一通知命令
        |
        v
微信公众号测试号
        |
        v
我的微信

这就是我喜欢这个方案的原因。它不是为了某一个具体任务而设计,而是一个可以被所有自动化任务复用的基础能力。

为什么它特别适合个人开发者

团队可以上完整的告警平台,有值班表、告警分组、升级策略、静默规则。但个人开发者不一定需要这么重。

个人项目更需要的是:

尤其是现在很多人开始用 AI 做自动化任务。AI Agent 可以帮你写文章、跑脚本、整理数据、巡检服务,但如果任务结果只能躺在终端或日志里,价值会打折。

真正好用的 AI 自动化,应该是任务执行完能主动告诉你;任务失败了也能第一时间找到你。

一个小工具背后的通用模式

aic 在这里做的事情很简单:

这个模式可以替换成任何实现。

你可以不用 aic,自己写一个 Node.js 脚本、Python 脚本、Go 二进制,都可以。只要它最终能完成“接收一段文本,然后推送到微信”,它就具备同样的价值。

重点不是工具名字,而是能力抽象:通知能力应该成为自动化系统的基础设施。

总结

自动化系统最重要的不是“它能自己跑”,而是“它出问题时能主动找到你”。

微信公众号测试号提供了一个很适合个人开发者的免费推送通道。它不适合大规模商业通知,也不是完整的企业告警平台,但它足够免费、足够简单、足够及时。

aic 只是一个例子。它把微信公众号测试号的模板消息封装成 aic notify:send 这样一条命令,让证书续期、CI/CD、cron、服务器巡检、数据库备份、AI Agent 都能复用同一个微信推送能力。

当你把执行、日志、告警三件事串起来,自动化任务才真正形成闭环:

自动执行 -> 记录结果 -> 失败通知 -> 快速处理

这套能力不复杂,但非常实用。对个人开发者来说,它可能是搭建自动化系统时最值得优先补上的一块拼图。

相关项目

aic 是我用来管理云资源和消息通知的 CLI 工具,默认采用 MIT License 开源:

https://github.com/daifuyang/aic

上一篇提到的证书自动续期示例项目:

https://github.com/daifuyang/cert-auto