企业微信 Skill
覆盖自建应用最常接的业务:通讯录同步、应用消息与群机器人、客户联系(外部联系人、客户群、「联系我」、欢迎语)、审批,以及回调验签与 AES 解密。重点讲清每类接口该用哪个 secret、token 放在哪、回调加解密的细节。
安装
选你用的 Agent,复制命令。
npx -y skills add fxp/skillify --skill wecom --agent claude-code --yes装到项目的 .claude/skills/;加 -g 装到全局。装完需要你手动执行 /reload-plugins,这一步 Agent 代劳不了。
npx -y skills add fxp/skillify --skill wecom --agent codex --yes装到项目的 .agents/skills/;加 -g 装到全局。
npx -y skills add fxp/skillify --skill wecom --agent cursor --yes装到项目的 .agents/skills/;加 -g 装到全局。
npx -y skills add fxp/skillify --skill wecom --agent opencode --yes装到项目的 .agents/skills/;加 -g 装到全局。
npx -y skills add fxp/skillify --skill wecom --agent gemini-cli --yes装到项目的 .agents/skills/;加 -g 装到全局。
npx -y skills add fxp/skillify --skill wecom --agent github-copilot --yes装到项目的 .agents/skills/;加 -g 装到全局。
npx -y skills add fxp/skillify --skill wecom --agent trae --yes装到项目的 .trae/skills/;加 -g 装到全局。
npx -y skills add fxp/skillify --skill wecom --agent windsurf --yes装到项目的 .windsurf/skills/;加 -g 装到全局。
npx -y skills add fxp/skillify --skill wecom --agent qwen-code --yes把 --agent 换成你用的 Agent 标识,可以一次写多个。skills CLI 1.5.25 共支持 79 个,例如 qwen-code、kimi-code-cli、trae-cn、qoder、lingma、cline、roo。
或者让 Agent 自己装
读 https://github.com/fxp/skillify/blob/main/skills/wecom/prompt.md 并照它执行装对了的标志:references/ 下有 7 份文档,里面 grep '<!-- Gap:' 能搜到 1 处。
装好后,可以这样问你的 Agent
这份 Skill 覆盖的典型任务。点一下复制。
7 类能力
每类能力对应一份 reference,Agent 按任务只打开需要的那份。
access_token 与 secret
换取与缓存 token、按场景选 secret、可信 IP、接口与回调 IP 段
通讯录
成员、部门、标签的读写,ID 列表增量同步,通讯录变更回调
应用消息与群机器人
各类应用消息、模板卡片、撤回、群机器人 webhook、应用群聊、素材上传
客户联系(CRM)
外部联系人与客户群、客户标签、「联系我」与加入群聊、企业群发、新客户欢迎语、客户变更回调
审批
模板详情、代员工提交、各控件取值写法、批量拉单、详情与状态回调
回调与加解密
URL 验证、签名与 AES 解密的完整 Python 实现、消息与事件类型、被动回复
错误码与频率限制
按场景分组的错误码、频率限制总表、重试策略与统一封装
当前事实
整理自官方文档(抓取于 2026-09-11),还没有用真实凭证验证。
| 项 | 值 |
|---|---|
| Base URL | https://qyapi.weixin.qq.com/cgi-bin/ |
| 鉴权 | ?access_token= 查询参数,不是 Authorization 头 |
| 换 token | GET /cgi-bin/gettoken?corpid=&corpsecret=,7200 秒,按应用缓存 |
| 最易选错 | secret 按应用区分:自建应用 / 通讯录同步 / 客户联系与审批需配置“可调用接口的应用” |
| 回调加密 | SHA1 签名 + AES-256-CBC,IV 取密钥前 16 字节,PKCS#7 按 32 字节 |
| 群机器人 | POST /cgi-bin/webhook/send?key=KEY,20 条/分钟 |
照通用经验写容易错的 7 件事
来自官方文档,还没有用真实凭证验证。
- token 放 URL,不放 header。无凭证探测:放在 Authorization 头或 JSON body 都返回 41001 access_token missing。
- secret 按应用区分,token 不能混用。通讯录同步 token 不能发消息、自建应用 token 不能写通讯录;客户联系和审批要把自建应用配进“可调用接口的应用”。
- 必须缓存 token。频繁调 gettoken 会被限频,secret 错误多次会封禁出口 IP 一小时;遇 40014 / 42001 刷新重试一次。
- errcode 0 不等于全部成功。发消息部分接收人无效时仍返回 0 并附 invaliduser,超频消息会被静默丢弃。
- 接收人格式因接口而异。message/send 的 touser 是竖线分隔字符串,标签和应用群聊的成员列表是 JSON 数组。
- 回调 AES 填充按 32 字节。用文档示例本地复算,填充长度是 30,16 字节块的标准 unpad 会报错;GET 验证须 1 秒内返回裸明文。
- 客户联系的反直觉点。API 操作不触发回调;WelcomeCode 仅 20 秒有效;企业群发只是创建任务,需员工确认才发出。
无凭证探测
- 错误响应的 HTTP 状态均为 200,靠 errcode 区分;伪造 corpid 返回 40013,伪造 token 返回 40014。
- access_token 放在 Authorization 头或 JSON body 里都返回 41001 access_token missing,只认 URL query。
- gettoken 不带参数时先报 41004 corpsecret missing。
- 失败响应仍带该接口的默认空字段(如 department: []),不存在的路径返回 HTTP 404 空 body。
- http:// 请求被 301 重定向到 https://,包括文档标为“POST(HTTP)”的客户联系接口。
- 群机器人伪造 key 返回 93000;上传空文件先报 44001,文件校验早于 key 校验。