本文档用于沉淀“通过代码定时向微信联系人或群聊发送消息”的基础认知、方案边界和落地检查项,避免后续再从零区分 Wechaty、Puppet、GeWe、Hook SDK、桌面自动化和企业微信官方通道。

维护: 微信个人号没有面向普通好友和普通微信群的官方服务端发送 API。非官方项目、第三方 API 平台、微信客户端版本、登录能力、风控策略和价格策略变化很快。本文最后核对日期为 2026-06-02,实际落地前必须重新核对项目 README、官方文档、平台价格、风险说明和测试账号可用性。

先看结论

如果是公司正式通知、告警、日报,优先使用 企业微信群机器人企业微信应用消息。这是官方通道,权限、审计和长期稳定性更清晰。

如果必须向普通个人微信好友或普通微信群发送消息,再按下面优先级判断:

需求 优先路线 说明
想快速通过 HTTP API 发普通微信消息 GeWe 这类第三方 SaaS API 平台 接入快,平台方处理登录、节点和回调;但不是微信官方 API
想写机器人业务逻辑,能接受研究底层接入 Wechaty + 可用 Puppet API 清晰,难点是 Puppet 登录和稳定性
想接入已有后端系统,能维护 PC 微信环境 WeChatFerry、wxbot 类 Hook SDK 可暴露 HTTP/SDK,依赖客户端版本和本地进程
想模拟正常用户操作 PC 微信 wxauto、easyChat、UI 自动化 行为直观,适合低频;依赖 Windows 桌面状态
只想试历史 Web 微信方案 itchat / Web 微信类 很多账号无法登录,不建议作为新方案主线

所有个人微信自动化方案都应限制在授权、低频、白名单场景。不要用于营销、骚扰或规避平台规则。

核心认知

微信相关方案要分清三层:

1
2
3
传输方式:HTTP、WebSocket、gRPC、TCP
客户端形态:Web 微信、iPad 微信、Windows 微信、Mac 微信、企业微信、公众号
封装方式:Wechaty Puppet、Hook SDK、SaaS API、桌面自动化、官方 API

HTTPWebSocketgRPC 只是“怎么传数据”,不代表微信官方提供了普通个人号消息发送接口。

看到一个项目提供下面这种接口:

1
POST /api/sendtxtmsg

只能说明该项目对外暴露了 HTTP 控制入口。它背后可能是 PC 微信 Hook、本地客户端、远程执行节点、私有协议或桌面自动化。

普通 Web 系统常能通过抓包复用接口,是因为它本来就暴露浏览器 API。个人微信更接近私有 IM 客户端,需要处理登录态、设备身份、长连接、消息同步、联系人和群 ID、客户端版本兼容以及服务端风控,所以不能按“抓一个 URL 就能长期调用”的思路理解。

方案分类

官方企业通道

适合公司通知、告警、日报和系统事件推送。

常见方式:

  • 企业微信群机器人 webhook:适合固定群通知、构建结果、告警和日报。
  • 企业微信应用消息:适合向指定成员、部门、标签推送,权限和审计更完整。
  • 公众号客服消息:适合公众号会话内服务通知,但受公众号能力和会话窗口限制。

企业微信群机器人的典型调用形态:

1
2
3
4
5
6
7
8
curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=机器人KEY' \
-H 'Content-Type: application/json' \
-d '{
"msgtype": "text",
"text": {
"content": "服务发布完成"
}
}'

注意:

  • webhook 地址等同发送凭证,不能提交到 Git。
  • 生产应使用密钥管理或环境变量。
  • 对外暴露的回调服务要校验签名、IP、token 或来源。
  • 企业微信消息也要限频,避免告警风暴。

第三方 SaaS API 平台

代表:GeWe。

这类平台把个人微信能力包装成标准 HTTP API 和 Webhook。以 GeWe 文档为例,它提供执行节点和事件回调机制;快速开始流程是获取 Token、扫码登录微信、调用接口发送消息、配置回调接收消息。

适合场景:

  • 想快速把普通微信消息发送能力接入后端任务。
  • 不想自己维护 Wechaty Puppet、PC 微信 Hook 或桌面自动化环境。
  • 可以接受平台依赖、平台计费、数据安全评估和账号风控风险。

典型调用形态:

1
2
3
4
定时任务
-> GeWe HTTP API
-> appId / toWxid / content
-> 好友或群聊

GeWe 发送文字消息接口示例形态:

1
POST /gewe/v2/api/message/postText

关键参数:

  • appId:已登录微信实例标识。
  • toWxid:目标好友或群聊 ID,群通常类似 xxx@chatroom
  • content:文本内容。
  • ats:群内 @ 人时使用,同时 content 中也需要包含对应 @xxx 文本。

落地前必须确认:

  • 是否支持当前微信号登录。
  • 是否能拿到稳定的好友和群 wxid
  • 是否支持目标消息类型,例如文本、图片、文件、群 @。
  • 回调是否能满足消息去重、重试和安全校验。
  • 价格、并发、频率、账号数、数据留存和服务可用性。
  • 平台风险说明中列出的封号、限制聊天、批量发送等风险。

Wechaty 与 Puppet

Wechaty 是统一机器人 SDK。业务代码面向 ContactRoomMessage 这些对象:

1
2
3
4
5
const contact = await bot.Contact.find({ alias: '张三' })
await contact.say('提醒内容')

const room = await bot.Room.find({ topic: '测试群' })
await room.say('群通知内容')

真正如何连接微信,由 Puppet 决定:

1
2
3
4
业务代码
-> Wechaty API
-> Puppet
-> Web 微信 / iPad 协议 / Windows 微信 / Puppet Service

可以把 Puppet 类比成 provider / driver / adapter。但要注意:云厂商 OSS、微信支付、企业微信 API 通常是官方通道;个人微信 Puppet 多数不是微信官方 provider。

使用 Wechaty 前先验证:

  1. 当前微信号能否登录目标 Puppet。
  2. 能否找到测试好友和测试群。
  3. 能否发送个人文本消息。
  4. 能否发送群文本消息。
  5. 能否长时间在线。
  6. 断线后是否能恢复。
  7. 是否依赖付费 token。
  8. Puppet 是否仍在维护。

Hook SDK / HTTP 包装

代表:WeChatFerry、jwping/wxbot。

这类项目通常接入 PC 微信内部能力,再向外暴露 Python、HTTP、Node.js、Go、C# 等客户端。

适合场景:

  • 需要把微信发送能力接入已有后端系统。
  • 需要 HTTP API 或多语言客户端。
  • 能接受维护指定 Windows、PC 微信版本和本地进程。

主要风险:

  • 通常依赖 Windows、PC 微信版本和本地进程。
  • Hook / 逆向类项目有账号、稳定性、合规和安全风险。
  • 项目升级、微信升级、杀毒软件、系统权限都可能影响运行。

桌面自动化

代表:wxauto、easyChat、SiverWXbot_plus、pyautoguiuiautomation

桌面自动化更贴近“通过代码实现正常用户行为”:

1
2
3
4
5
打开 PC 微信
-> 搜索联系人或群
-> 进入聊天窗口
-> 输入或粘贴内容
-> 点击发送

适合场景:

  • 本机 Windows 桌面可以长期运行。
  • 消息低频、目标有限。
  • 更看重“像人在操作 PC 微信”,不要求后端无界面部署。

主要风险:

  • 微信窗口状态变化会影响脚本。
  • 微信客户端升级可能导致控件识别失效。
  • 系统锁屏、远程桌面断开、分辨率变化可能影响操作。
  • 不适合高频、大规模群发。

定时批量发送设计

不要把定时批量发送写成简单循环。推荐拆成:

1
2
3
4
5
6
7
8
9
任务配置
-> 目标白名单
-> 定时器
-> 目标解析
-> 发送队列
-> 限速
-> 日志
-> 失败记录
-> dry-run / 人工确认

基础配置示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"enabled": true,
"schedule": "0 9 * * *",
"dryRun": true,
"intervalSeconds": 5,
"maxTargetsPerRun": 20,
"targets": [
{
"type": "room",
"id": "34757816141@chatroom",
"name": "测试群",
"enabled": true
},
{
"type": "contact",
"id": "wxid_xxx",
"name": "张三",
"enabled": true
}
],
"message": {
"type": "text",
"content": "今日提醒:请查看项目日报。"
}
}

必须具备:

  • 白名单:只允许配置内的目标。
  • dryRun:上线前只打印,不真正发送。
  • 目标 ID:优先固定 wxid 或平台 ID,减少重名误发。
  • 发送间隔:防止误操作瞬间刷屏。
  • 批次限制:一次任务限制最大目标数。
  • 日志:记录任务 ID、目标、内容摘要、时间、结果。
  • 幂等:同一任务同一目标不要重复发送。
  • 失败策略:失败跳过并记录,不要无限重试。
  • 人工确认:重要或大范围通知发送前先确认内容。
  • 账号监控:检测登录状态、掉线、发送失败率。

验证顺序

无论选择哪条路线,按这个顺序验证:

  1. 准备测试微信号、测试好友、测试群,不要先用生产群。
  2. 跑通登录。
  3. 获取并记录测试好友和测试群 ID。
  4. 发送一条个人文本消息。
  5. 发送一条群文本消息。
  6. 测试消息回调、去重和重试。
  7. 跑一次 dryRun 批量任务。
  8. 跑一次真实小批量任务。
  9. 连续运行 24 小时,观察掉线、内存和失败率。
  10. 记录微信版本、项目版本、平台版本、系统版本和失败现象。
  11. 再决定是否投入长期使用。

选型备忘

项目 / 通道 类型 当前判断
企业微信群机器人 官方 webhook 公司群通知首选,系统集成简单
企业微信应用消息 官方 API 权限、审计、目标选择更完整
GeWe 第三方 SaaS API 普通微信 HTTP API 接入快,但有平台依赖和风控风险
Wechaty 统一机器人 SDK 适合写机器人逻辑,重点验证 Puppet
WeChatFerry Hook SDK 适合二次开发和服务化,维护成本高
jwping/wxbot Hook + HTTP API 适合外部系统调用,依赖本机微信
wxauto Windows 桌面自动化 接近正常用户操作,适合低频个人场景
easyChat 成品微信助手 定时发送、群发、自动回复场景贴近
SiverWXbot_plus 成品微信机器人 定时任务和多目标群发能力较贴近
Web 微信 / itchat Web 协议 登录限制多,不建议新方案主线

不建议做的事

  • 不要把个人微信当作强 SLA 的生产通知通道。
  • 不要把 webhook、token、appId、wxid、登录态写入仓库。
  • 不要用普通微信群做高频告警刷屏。
  • 不要在没有白名单和 dryRun 的情况下跑群发。
  • 不要以营销、骚扰或规避平台规则为目标设计自动化。
  • 不要只看示例代码能发消息,就默认可以长期稳定运行。
  • 不要在没有数据安全评估的情况下接入第三方 SaaS API 平台处理敏感聊天数据。

参考

迭代记录

  • 2026-06-02:补充 GeWe 这类第三方 SaaS API 平台路线,重排文档结构,压缩重复解释,强化选型、定时批量发送设计和验证清单。
  • 2026-06-02:初始化微信消息自动化选型指南,整理官方企业通道、Wechaty/Puppet、桌面自动化、Hook SDK、定时批量发送工程设计和验证清单。