richagain

WeChat Work OpenClaw Adapter

商业运营v1.0.0
作者:richagain更新于 2026-05-11wecom-openclaw@clawhub_richagain/wecom-openclaw
客服助手#WeChat

据 AlphaMoat 统计,截至 2026-09,WeChat Work OpenClaw Adapter 累计下载 1,446 次、获 0 个星标,在全部 5,078 个 AI 技能中排名第 4,802 位,在「商业运营」分类(297 个)中排名第 276 位。

累计安装
219
累计下载
1,446
星标
-
全站排名
#4,802
全站前 95% · 「商业运营」前 93%
平台累计安装累计下载星标评论
ClawHub ↗401,324--
SkillHub ↗2191,446-—

各平台的计数口径不同,统计时间不一致。

这个技能是做什么的

Node.js 适配器校验 msg_signature、解密消息,再异步调用 OpenClaw 和企业微信发送接口。回调须在 5 秒内响应,AI 回复另行发送。生产使用前需完成企业验证,并把服务器公网 IP 加入应用可信 IP 列表。

资料发布于 2026-10-26

可以用来做什么

  • 为企业微信应用配置双向 AI 消息通道

什么时候用

  • 需要接收企业微信回调并返回异步回复时

示例提示词

以下是根据技能文档生成的示例,不代表实际运行结果。

说明这个企业微信适配器的回调、鉴权和异步回复配置

使用条件

依据技能文档中的声明整理,未经实际安装或运行验证。

鉴权说明
需企业微信应用及回调凭据和 OpenClaw 网关配置;APP_SECRET 与 AGENT_SECRET / EncodingAESKey 用途不同。
配置要求
  • 需要公开 HTTPS 回调;临时 Cloudflare Tunnel 重启会换地址且可能断线,生产应采用稳定入口。

月度数据趋势

累计下载1,446
4871,0021,5172026-03 · 累计下载 5582026-05 · 累计下载 9682026-07 · 累计下载 1,2062026-08 · 累计下载 1,2682026-09 · 累计下载 1,44626-0326-09
星标-
0112026-03 · 星标 -2026-05 · 星标 -2026-07 · 星标 -2026-08 · 星标 -2026-09 · 星标 -26-0326-09

2026-09 起统计方法调整:同名技能按作者分别统计,并覆盖全部技能。图中虚线为调整前的月份,与之后的数据不直接比较,也不计算跨越调整的增长。

月份累计下载环比星标
2026-091,446—-
2026-081,268+5.1%-
2026-071,206—-
2026-05968—-
2026-03558—-

SKILL.md 原文

以下是作者发布的原始文件,按纯文本显示,本站未做修改或审核;其中的链接不可点击,命令请核实后再运行。抓取于 2026-10-23。

5.1 KB · ClawHub v1.0.0
---
name: wecom-openclaw
description: Integrate WeChat Work (Enterprise WeChat) with OpenClaw for intelligent messaging. Enables receiving messages from WeChat Work, processing them with Claude AI, and sending async replies. Handles msg_signature verification, AES-256-CBC encryption/decryption, and secure token-based authentication. Use when setting up bidirectional WeChat Work ↔ OpenClaw communication.
---

# WeChat Work → OpenClaw Adapter

## Quick Start

```bash
展开全部(共 124 行)
# 1. Deploy
bash <skill_dir>/scripts/deploy.sh

# 2. Edit .env with your WeChat Work credentials
nano ~/wecom-adapter/.env

# 3. Start
cd ~/wecom-adapter && npm start

# 4. Expose publicly
cloudflared tunnel --url http://localhost:8090

# 5. Copy tunnel URL → WeChat Work admin → webhook URL
```

## Architecture

```
WeChat Work → HTTPS → Cloudflare Tunnel → Node.js Adapter (8090)
                                              ├─ Verify msg_signature (SHA1)
                                              ├─ Decrypt message (AES-256-CBC)
                                              ├─ Return "success" within 5s
                                              └─ Async: call OpenClaw → send reply via WeCom API
```

**Key**: Adapter returns `success` immediately, then sends AI reply asynchronously via WeChat Work's `message/send` API. This avoids the 5-second timeout.

## ⚠️ Critical Gotchas (Learned the Hard Way)

### 1. Parameter name is `msg_signature`, NOT `signature`

WeChat Work sends `?msg_signature=xxx`, not `?signature=xxx`. Reading `req.query.signature` will always be `undefined`.

### 2. Signature must include echostr/encrypt

**GET verification**: `SHA1(sort([token, timestamp, nonce, echostr]))`
**POST messages**: `SHA1(sort([token, timestamp, nonce, encrypt]))`

NOT `SHA1(sort([token, timestamp, nonce]))` — the encrypted payload MUST participate in the signature.

### 3. echostr must be DECRYPTED before returning

WeChat Work sends an AES-encrypted echostr. You must:
1. Verify msg_signature
2. AES-256-CBC decrypt the echostr
3. Strip PKCS#7 padding
4. Extract message from format: `16-byte random + 4-byte length (BE) + message + CorpID`
5. Return the **decrypted message** (not the raw echostr)

### 4. APP_SECRET ≠ EncodingAESKey

- **APP_SECRET** (应用密钥): Used to get `access_token` for sending messages
- **AGENT_SECRET / EncodingAESKey**: Used for AES encryption/decryption
- These are TWO DIFFERENT keys from the WeChat Work console

### 5. Express body parser must accept multiple Content-Types

WeChat Work may send XML as `text/xml`, `application/xml`, or other types:
```javascript
app.use(express.text({ type: ['application/xml', 'text/xml', 'text/plain', '*/*'] }));
```

### 6. Async reply pattern is mandatory

WeChat Work requires response within 5 seconds. AI responses take 5-30s. Solution:
1. Return `res.status(200).send('success')` immediately
2. Call OpenClaw asynchronously
3. Send reply via `POST /cgi-bin/message/send?access_token=xxx`

### 7. IP whitelist required for sending messages

WeChat Work API (`qyapi.weixin.qq.com`) requires your server's public IP in the app's trusted IP list. Error `60020` means IP not whitelisted.

### 8. Enterprise verification required

⚠️ **Unverified enterprises risk account suspension.** WeChat may ban accounts that use API automation without proper enterprise verification. Complete verification before production use.

### 9. Cloudflare quick tunnels are unstable

Quick (account-less) tunnels generate new URLs on restart and may disconnect unexpectedly. For production, use Named Tunnels ($7/mo) or a static IP.

## Environment Variables

```env
CORP_ID=ww...              # From WeChat Work admin
AGENT_ID=1000003           # Application agent ID
AGENT_SECRET=xxx           # EncodingAESKey (43-char Base64, for encryption)
APP_SECRET=xxx             # Application Secret (for access_token)
WEBHOOK_TOKEN=xxx          # Token configured in webhook settings
OPENCLAW_TOKEN=xxx         # OpenClaw gateway bearer token
OPENCLAW_BASE_URL=http://localhost:18789  # OpenClaw gateway URL
CLAUDE_MODEL=claude-haiku-4-5             # AI model
```

## Files

- `scripts/deploy.sh` — One-command deployment
- `scripts/index.js` — Production-ready adapter (all fixes applied)
- `references/setup-guide.md` — Step-by-step WeChat Work configuration
- `references/security-guide.md` — Security architecture and hardening

## Troubleshooting

| Symptom | Cause | Fix |
|---------|-------|-----|
| `signature=undefined` | Using `req.query.signature` | Use `req.query.msg_signature` |
| Signature mismatch | echostr/encrypt not in calculation | Include 4th element in sort array |
| `-30065` error | Returning encrypted echostr | Decrypt before returning |
| `bad decrypt` | Wrong key or `setAutoPadding(true)` | Use `setAutoPadding(false)` + manual PKCS#7 |
| `body长度=undefined` | Body parser doesn't match Content-Type | Accept `*/*` in express.text() |
| `60020` IP error | Server IP not whitelisted | Add public IP in WeChat Work console |
| Timeout | 5s limit exceeded | Use async pattern: return success, send via API |
| Account banned | Unverified + automated messages | Verify enterprise first |

「商业运营」分类下的热门技能

PollyReach商业运营

PollyReach gives every AI agent a phone number and the ability to get things done over the phone — finding contacts, making calls, and completing tasks. Just...

↓ 10.2万★ 56PollyReach
Trello商业运营

通过 Trello REST API 管理看板、列表与卡片。

↓ 5.3万★ 165Peter Steinberger
招标中标查询及分析服务商业运营

全网招中标数据查询与分析助手。当用户涉及以下任何场景时,必须使用此SKILL:查询招标/中标公告、搜索标讯、查找临期/即将到期项目、查询拟建项目与立项审批阶段的早期商机、追踪某个项目各阶段进展与全流程时间线、商机预测、推荐潜在投标供应商、查询企业工商登记信息(统一社会信用代码/注册资本/法定代表人/经营范围/成立日期/登记机关/曾用名)、分析公司主营业务/历史中标、查询公司上下游合作客户与供应商、分析竞争对手/竞对企业、查询Top采购单位/Top中标单位/Top中标品牌、招中标数据统计分析(按月/季/年/省份/品牌等维度)、查询品牌型号历史中标单价/价格趋势、查询当前账户余额/剩余积分/累计充值消费、市场分析/行业分析/采购寻源/渠道拓展等采购与投标相关场景。即使用户没有提到「知了标讯」,只要涉及招投标、采购、中标、供应商、竞争对手、企业工商信息、账户余额、剩余积分等关键词,都应使用本SKILL。

↓ 4.6万★ 13user_98035bfb
产品经理综合技能(PM Master)商业运营

需求分析、PRD编写、产品需求文档、详细设计、BRD、MRD、PRD模板、用户故事、用户访谈、需求挖掘、痛点分析、功能设计、KANO模型、Y模型、5W1H、优先级排序、需求池管理、写过需求、写PRD、做需求分析、产品设计、产品策略、SWOT分析、波特五力、PESTLE、安索夫矩阵、商业模式画布、价值主张、产品愿景、OKR制定、Sprint规划、回顾会、发布说明、干系人管理、竞品分析、市场调研、用户研究、机会解决方案树、指标看板、测试场景、头脑风暴、假设验证

↓ 3.4万★ 343user_dec48685
Calendar商业运营

面向日历管理与会议排期的技能。

↓ 2.7万★ 9NDCCCCCC
Market Analysis CN | 市场分析服务商业运营

提供市场趋势、竞品与用户行为分析的市场分析服务。

↓ 2.7万★ 32Guohongbin
电商选品商业运营

电商平台爆款产品筛选分析 - 基于数据分析的智能选品工具,支持淘宝、京东、拼多多、抖音、亚马逊等平台

↓ 2.6万★ 77user_c2b88a14
Salesforce商业运营

通过托管 OAuth 与 Salesforce CRM API 集成。仅在需要 Salesforce CRM 管理时才安装。使用最小权限连接 Salesforce,破坏性或批量操作首选沙箱组织,每次请求前验证目标连接 ID,并撤销未使用的连接。

↓ 2.5万★ 8byungkyu

数据月份:2026-09 · 下载/星标/安装数聚合自公开技能注册库(ClawHub、SkillHub),按月更新。口径说明见数据方法。