WXPush 是一个轻量级、完全开源的微信公众号模板消息推送服务。它不仅提供简单易用的 HTTP API 供脚本和程序调用,还自带一个基于 Material Design 3 打造的现代沉浸式 Web 测试控制台。
无论是集成自动化通知,还是临时体验微信发信推送,WXPush 都能为你提供既优雅又高效的解决方案。
你可以直接访问已经部署好的公开站点体验 WXPush 的功能:
- 🎯 开箱即用的测试控制台:自带精美前端交互界面,完全响应式排版。
- 🎨 11 套高颜值卡片皮肤:内置赛博朋克、macOS 极客、极光玻璃等 11 款通知卡片皮肤,在 Web 侧可毫秒级无缝缩放预览真实效果。
- 💽 安全存储:首创前端
localStorage配置驻留与即时双向数据流校验,保护隐私与便利并重。 - 🛠️ 多协议 API 支持:完美支持 GET / POST / Webhook 形式的脚本调用发送。
- 👥 灵活的用户管理:支持单发或多发给不同的微信受体(
userid用|分隔)。 - ⚡ 超低成本的高性能架构:专门针对腾讯云 EdgeOne Pages 和 Cloudflare Pages/Workers 调整。路由请求纯前端静态托管,API 指令精准调用 Serverless 函数,避免每一次点击产生额外计费额度!
本项目没有任何繁杂的构建动作(0 build payload),可以直接一键免费部署至腾讯云 EdgeOne Pages。
部署所需环境变量详情见下方 [⚙️ 环境变量设置] 章节。如果你使用 Cloudflare Pages 或 Workers,逻辑与部署步骤完全一致,仅需保证项目的构建输出目录设为默认根目录 . 即可。
后端 Serverless 系统可通过平台(EdgeOne/Cloudflare)的控制面板设置环境变量读取:
必填项(系统 API 推送所需):
API_TOKEN:你的专属调用密钥(Web主页登录鉴权以及外部接口请求使用)。WX_APPID:对应微信测试号/公众平台的 AppID。WX_SECRET:对应测试号的 AppSecret 密钥。WX_USERID:默认接收消息的微信用户 OpenID(如果是群发或多接收者,请用|隔开)。WX_TEMPLATE_ID:申请好的微信测试模板消息 ID(内容规定为两行,上填{{title.DATA}}注释,下填{{content.DATA}})。
可选项:
WX_SKIN:定义在没有传 base_url 的时候默认走哪个内置皮肤跳转面,若没填默认为温润如玉的warm-magazine风格。WX_BASE_URL:强制重定向。如果设定此变量,当微信终端收到卡片点击时跳过原生内嵌的精美皮肤页,直接跳向你这个自定义链接。
你部署该项目后,用任意现代浏览器直接访问根域名(例如 https://<你的域名>/),即可启动 WXPush 的前端交互测试台。这不仅仅是一个管理员页面,更是一个极度适合用来推广调试发包平台的交互看板!
- 向导教程内建:右侧提供保姆级的微信测试号开通教程,即使是纯小白,展开面板后都能顺着五步指引拿到自己专属的发消息全套账号密码。
- 快捷鉴权与隐私保护体验:如果输入了配置里面的系统级的
API_TOKEN并验证通过,剩余四项微信账号底层密码就不用重复键入,系统会自动找环境变量帮你兜底发包!同样,作为对外公开服务,如果使用者没有此项最高通行证,系统会在本地严格阻塞它,强制他手动输入他自己的那四项密钥才能请求后端的 Serverless Webhook。服务端代码承诺完全开源并且不会有任何收集存储访客密钥隐私的行为!
不论你采用哪种 HTTP 报文,外部自动化程序一律唯一请求以下 API(即根域名后面追加 /wxsend):
URL endpoint:
https://<你的域名>/wxsend
| 参数名 | 数据类型 | 是否必传 | 详情描述解读 |
|---|---|---|---|
token |
String | 是* | 系统配置的主 API_TOKEN。你可以在 URL query 带上 ?token=xxx,可以在请求体 JSON 的 token 字典带上,也可使用通用的强授权协议携带(加在 Header 为 Authorization: Bearer <你的Token> )。注意:如果未传此项,则系统要求后续所有的覆盖型参数全被传值。 |
title |
String | 是 | 需推送的消息标题文本。 |
content |
String | 是 | 需推送的核心内容文本,使用原生的 \n 进行常规换行。 |
userid |
String | 否 | 动态覆盖:特定接收者的 OpenID 集合。 |
appid |
String | 否 | 动态覆盖:该单独请求采用的 AppID。 |
secret |
String | 否 | 动态覆盖:该单独请求采用的 AppSecret。 |
template_id |
String | 否 | 动态覆盖:该请求触发专用的模板 ID。 |
skin |
String | 否 | 动态覆盖发包跳出页面皮肤:共 11 个合法字符串 (cyberpunk 等)。 |
base_url |
String | 否 | 动态覆盖:直接跳去该链接地址,跳过 WXPush 生成的精美皮肤阅读通知页面。 |
🟢 简易 GET 请求(适合浏览器快捷调用或者轻量级 Shell):
https://<你的域名>/wxsend?token=你的Token&title=服务告警&content=CPU使用率超过90%
🔵 标准 POST 与 Webhook 强范式请求(适合主流应用/系统集成):
curl -X POST "https://<你的域名>/wxsend" \
-H "Authorization: 你的Token" \
-H "Content-Type: application/json" \
-d '{
"title": "备份完成提醒",
"content": "今日数据库自动备份已成功通过校验并上传至云端冷库存储。"
}'系统拥有极其严格标准的 HTTP 返回体系与 JSON Error Trace 抛出:
HTTP 200:即刻推送成功,Response JSON 将包含所采用的skin美化类别和成功拼接的长路径jump_url。HTTP 400:强类型约束拦截提示,如不带 token 也没填完自身微信号体系或者没有携带关键必须字段 content/title。HTTP 403:安全防护,请求者如果非要尝试携带 Token 但未配对通过。HTTP 500:Server 后端透传了腾讯微信接口产生的各类错误。极大概率因为获取微信 Access Token 失败(IP 白名单限制未关等因素,参照下文提示)。
WXPush 提供了标准的 Skill,可通过 ClawHub 安装,让 AI 助手直接发送微信推送消息。
安装方式:
方式一:通过 ClawHub 安装
clawhub install wxpush方式二:手动安装
# 克隆项目后,将 skills/wxpush 目录复制到 ~/.config/opencode/skills/ 或 ~/.config/openclaw/skills/
cp -r skills/wxpush ~/.config/openclaw/skills/方式三:让 AI 助手安装
直接对 AI 助手说:帮我安装 https://github.com/shisheng820/WXPush-edgeone/tree/master/skills/wxpush
功能特性:
- 支持三种 API 模式切换:edgeone(默认)/ wxpush / go-wxpush
- 自动引导配置,首次使用时交互式创建
~/.config/wxpush/wxpush.env - 优先使用 curl 发送,不可用时自动回退到 Python(标准库,无需额外依赖)
- 配置完成后自动发送测试消息验证
使用示例:
安装后直接对 AI 助手说:
- "发送一条微信推送,标题是'服务器告警',内容是'CPU 使用率超过 90%'"
- "用 wxpush 发消息给用户"
- "切换到 go-wxpush 模式"
详见 ClawHub 页面。
微信官方对于正式注册运营身份的 “服务号 / 认证订阅公众号” 有极度严苛的服务后端 IP 白名单约束机制。Serverless 体系如 EdgeOne/Cloudflare Workers,其网络下发流转使用的是一整个大集群的动态公网 IP 簇,如果你绑定正式号的 AppID/Secret,在请求 Access Token 时很大概率报错触发微信异常码 40164 (invalid ip) 进而抛出 500。
针对非企业强绑定类使用者,我们非常强烈的建议:直接使用控制台指引去调用并配置完全不受白名单限制影响的、专属于开发者个人的 微信公众平台接口开放测试号 进行长远的通知挂载。
本着拥抱社区原则,遵循完全宽松的 MIT 协议 释出完整方案栈代码。
致谢名单(Acknowledge): 项目由最初的 Golang 工具链雏形受启发,并经历 JS 重构与彻底的 UI 变革而成。在此向如下优秀的旧时轮子库与贡献致谢:
- 核心参考衍生 frankiejun/wxpush
- 协议及设计逻辑溯源 hezhizheng/go-wxpush
无论是提 PR 重构代码缩减性能,还是发现提报 Issue 缺陷,我们随时欢迎社区极客同好们的反馈交流!