richagain

WeChat Work OpenClaw Adapter

Business Opsv1.0.0
By richagainUpdated 2026-05-11wecom-openclaw@clawhub_richagain/wecom-openclaw
Customer Service#WeChat

According to AlphaMoat, as of 2026-09, WeChat Work OpenClaw Adapter has 1,446 downloads and 0 stars — ranked #4,802 of 5,078 AI skills overall, and #276 of 297 in Business Ops.

Installs
219
Downloads
1.4K
Stars
-
Overall Rank
#4,802
Top 95% overall · Top 93% in Business Ops
PlatformInstallsDownloadsStarsComments
ClawHub ↗401.3K--
SkillHub ↗2191.4K-—

Platforms count differently and update at different times.

What this skill does

A Node.js adapter verifies msg_signature, decrypts messages, then calls OpenClaw and the WeCom send API asynchronously. The callback must respond within 5 seconds; AI replies are sent separately. Complete enterprise verification and add the server’s public IP to the app’s trusted list before production use.

Profile published 2026-10-26

What you can do with it

  • Configure a bidirectional AI messaging channel for a WeCom app

When to use it

  • When receiving WeCom callbacks and sending asynchronous replies

Example prompts

Generated from the skill’s documentation as examples; not results of actual runs.

Explain callback, authentication and asynchronous reply setup for this WeCom adapter

Requirements

Compiled from what the skill’s documentation declares; not verified by installing or running it.

Authentication notes
Requires WeCom app and callback credentials plus OpenClaw gateway configuration. APP_SECRET differs from AGENT_SECRET / EncodingAESKey.
Configuration
  • A public HTTPS callback is needed. Temporary Cloudflare Tunnels change URL on restart and may disconnect; use a stable production endpoint.

Monthly Trend

Downloads1.4K
4871.0K1.5K2026-03 · Downloads 5582026-05 · Downloads 9682026-07 · Downloads 1.2K2026-08 · Downloads 1.3K2026-09 · Downloads 1.4K26-0326-09
Stars-
0112026-03 · Stars -2026-05 · Stars -2026-07 · Stars -2026-08 · Stars -2026-09 · Stars -26-0326-09

The counting method changed in 2026-09: skills with the same name are now counted separately by author, and the full catalog is covered. Dashed lines show months before the change; they are not compared with later months, and no growth is computed across the change.

MonthDownloadsMoMStars
2026-091.4K—-
2026-081.3K+5.1%-
2026-071.2K—-
2026-05968—-
2026-03558—-

SKILL.md (original)

The author’s original file, shown as plain text without edits or review by AlphaMoat. Links are not clickable; check commands before running them. Fetched 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
Show all (124 lines)
# 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 |

Popular in Business Ops

PollyReachBusiness Ops

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...

↓ 101.6K★ 56PollyReach
TrelloBusiness Ops

Manages Trello boards, lists, and cards through the Trello REST API.

↓ 52.5K★ 165Peter Steinberger
招标中标查询及分析服务Business Ops

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

↓ 46.3K★ 13user_98035bfb
产品经理综合技能(PM Master)Business Ops

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

↓ 34.3K★ 343user_dec48685
CalendarBusiness Ops

A skill for calendar management and meeting scheduling.

↓ 27.4K★ 9NDCCCCCC
Market Analysis CN | 市场分析服务Business Ops

A market analysis service covering market trends, competitors and user behaviour.

↓ 26.7K★ 32Guohongbin
电商选品Business Ops

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

↓ 25.8K★ 77user_c2b88a14
SalesforceBusiness Ops

Salesforce CRM API integration with managed OAuth. Install only if you need Salesforce CRM administration. Connect with the narrowest Salesforce permissions available, prefer sandbox orgs for destructive or batch work, verify the intended connection ID before each request, etc.

↓ 25.5K★ 8byungkyu

Data month: 2026-09 · Downloads, stars and installs are aggregated monthly from public skill registries (ClawHub, SkillHub). See methodology.