Loading...
Loading...
Two-way integration channel between WeChat and OpenClaw. Implements WeChat message receiving and sending based on Wechaty + PadLocal, supporting private chats, group chats, @mention detection, and image/file transfer. Use this skill when you need to interact with AI assistants via WeChat, trigger AI responses by receiving WeChat messages, or send messages from OpenClaw to WeChat.
npx skill4agent add aaaaqwq/claude-code-skills wechat-channel┌─────────────┐ ┌──────────────────┐ ┌─────────────┐
│ 微信用户 │ ←→ │ Wechaty Bridge │ ←→ │ OpenClaw │
│ (私聊/群聊) │ │ (PadLocal协议) │ │ Gateway │
└─────────────┘ └──────────────────┘ └─────────────┘
↓
┌──────────────────┐
│ 消息格式转换 │
│ - 文本/图片/文件 │
│ - @提及检测 │
│ - 群聊/私聊路由 │
└──────────────────┘cd /home/aa/clawd/skills/wechat-channel
npm init -y
npm install wechaty wechaty-puppet-padlocal axios dotenvcp .env.example .env
# Edit .env to fill in configurationsnode scripts/wechat-bridge.js
# Scan the QR code displayed in the terminal to log in# PadLocal Token (Required)
# How to get: https://pad-local.com
PADLOCAL_TOKEN=YOUR_PADLOCAL_TOKEN
# OpenClaw Gateway Configuration
OPENCLAW_GATEWAY_URL=http://127.0.0.1:18789
OPENCLAW_WEBHOOK_SECRET=your_webhook_secret
# WeChat Bot Configuration
WECHAT_BOT_NAME=OpenClaw助手
# Security Configuration
# Allowed WeChat user IDs (comma-separated, leave empty to allow all)
ALLOWED_USERS=wxid_xxx,wxid_yyy
# Allowed group chat IDs (comma-separated, leave empty to allow all)
ALLOWED_GROUPS=xxx@chatroom,yyy@chatroom
# Group Chat Behavior
# Whether to require @mention to respond to group messages
REQUIRE_MENTION_IN_GROUP=true
# Log Level
LOG_LEVEL=info{
"channels": {
"wechat": {
"enabled": true,
"webhookUrl": "http://localhost:3001/webhook",
"webhookSecret": "your_webhook_secret",
"dmPolicy": "allowlist",
"allowFrom": ["wxid_xxx", "wxid_yyy"],
"groups": {
"xxx@chatroom": {
"name": "工作群",
"requireMention": true
}
}
}
}
}{
"type": "message",
"channel": "wechat",
"messageId": "msg_123456",
"from": {
"id": "wxid_sender",
"name": "张三",
"alias": "zhangsan"
},
"chat": {
"id": "wxid_sender",
"type": "private"
},
"text": "你好,帮我查一下天气",
"timestamp": 1706745600000,
"mentions": [],
"replyTo": null
}{
"type": "message",
"channel": "wechat",
"messageId": "msg_789012",
"from": {
"id": "wxid_sender",
"name": "张三"
},
"chat": {
"id": "xxx@chatroom",
"type": "group",
"name": "工作群"
},
"text": "@OpenClaw助手 帮我总结一下今天的会议",
"mentions": ["bot_wxid"],
"isMentioned": true
}# Send text message
curl -X POST http://localhost:3001/api/send \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_SECRET" \
-d '{
"to": "wxid_receiver",
"type": "text",
"content": "收到,正在处理..."
}'
# Send image
curl -X POST http://localhost:3001/api/send \
-H "Content-Type: application/json" \
-d '{
"to": "wxid_receiver",
"type": "image",
"url": "https://example.com/image.png"
}'
# Send file
curl -X POST http://localhost:3001/api/send \
-d '{
"to": "wxid_receiver",
"type": "file",
"path": "/path/to/file.pdf",
"filename": "report.pdf"
}'| Policy | Description |
|---|---|
| Allow private chats from everyone (risky) |
| Only allow users in the allowFrom list |
| Requires pairing approval |
| Configuration | Description |
|---|---|
| Must @mention the bot to trigger a response |
| List of users allowed to trigger responses in the group |
User: 帮我查一下明天北京的天气
Bot: 明天北京天气:晴,温度 -5°C ~ 5°C,建议穿羽绒服。User: @OpenClaw助手 总结一下刚才的讨论
Bot: 刚才讨论的要点:
1. 项目进度需要加快
2. 下周三前完成设计稿
3. 周五进行代码评审// Send notification from OpenClaw Agent
await sendWechatMessage({
to: 'xxx@chatroom',
text: '⚠️ 服务器 CPU 使用率超过 90%,请检查!'
});scripts/wechat-bridge.jsscripts/message-handler.js.env.examplereferences/wechaty-api.md