Install
openclaw skills install @andy8663/wechat-oa微信公众号草稿箱管理工具集。触发词(满足任一即触发):看看草稿箱/查看草稿/草稿列表/公众号草稿/搜草稿/搜索草稿/按关键词找草稿/按标题搜/创建草稿/新建草稿/发文章到公众号/推送文章/更新草稿/删除草稿/批量删除草稿/生成封面图/上传图片到公众号/上传图片到素材库/已发布文章列表/公众号素材列表/素材管理/删...
openclaw skills install @andy8663/wechat-oa微信公众号草稿箱管理工具集。基于官方微信 API。
WeChat Official Account draft management toolkit. Built on official WeChat APIs.
创建或更新公众号文章前,AI 必须先阅读 design.md 排版规范。
Before creating or updating any WeChat article, AI MUST read design.md layout specification first.
涵盖内容 / Covers:
📖 完整规范见 design.md
pip install wechat-oa
cp config.example.json config.json
# 编辑 config.json,填入 APP_ID 和 APP_SECRET
# Edit config.json, fill in APP_ID and APP_SECRET
# 查看草稿列表
wechat-oa list
# 创建新草稿
wechat-oa create article.md --digest "这是文章摘要"
调用微信 API 前,必须将服务器 IP 加入白名单:
| 推送模式 | 需要加入白名单的 IP | 说明 |
|---|---|---|
direct | 本机出口 IP | 直连微信 API,配本机 IP |
hybrid | 本机出口 IP | 优先直连,失败自动切中转 |
relay | 服务器 IP 120.79.2.44 | 通过中转服务器调用微信 API |
配置步骤:
⚠️ 不添加 IP 白名单会导致 API 调用失败!
💡 不方便配本机 IP 白名单? 使用 hybrid 或 relay 模式,只需将服务器 IP 120.79.2.44 加入白名单即可。
将 config.example.json 复制为 config.json,填入你的凭证:
⚠️ 注意:
config.json必须使用标准 JSON 格式,不要保留//注释,否则会导致解析错误。
{
"default_account": "main",
"current_account": "main",
"PUSH_MODE": "hybrid",
"WECHAT_OA_SERVER": "https://synergyinfo.tech",
"WECHAT_OA_SERVER_KEY": "",
"ENV": "prod",
"accounts": {
"main": {
"name": "主公众号",
"author": "你的名字",
"voice_name": ["主号", "主公众号"],
"APP_ID": "wx0000000000000000",
"APP_SECRET": "00000000000000000000000000000000"
}
}
}
PUSH_MODE 说明:
| 模式 | 说明 | 适用场景 |
|---|---|---|
direct | 直连微信官方 API | IP 固定且可配白名单 |
relay | 通过中转服务器推送 | IP 不固定,无法配白名单 |
hybrid | 优先直连,失败自动切换中转 | 推荐 — 兼顾速度与稳定性 |
🔑 如何获取 WECHAT_OA_SERVER_KEY?
访问同协云平台订购月卡获取卡密:https://saas.synergyinfo.tech/products/wechat-oa
⚠️
config.json包含凭证,不要提交到 GitHub!已在.gitignore中忽略。
| 命令 | 说明 | 示例 |
|---|---|---|
list | 查看草稿列表 | wechat-oa list |
create <文件> | 创建新草稿(支持 .html 和 .md) | wechat-oa create article.md |
update <media_id> <文件> | 更新已有草稿 | wechat-oa update <media_id> article.md |
delete <media_id> | 删除草稿 | wechat-oa delete <media_id> |
| 命令 | 说明 | 示例 |
|---|---|---|
upload <图片> | 上传图片到永久素材库 | wechat-oa upload cover.png |
count | 获取素材总数 | wechat-oa count |
materials [type] | 批量获取素材列表 | wechat-oa materials image |
del-material <media_id> | 删除素材 | wechat-oa del-material <media_id> |
--digest 参数当 config.json 中 PUSH_MODE 设为 relay 时,文章通过公网服务器(wechat-oa-server)中转推送到微信公众号。中继模式支持 支付宝 AI 收 标准协议(HTTP 402 + Payment-Needed)。
推送流程(免费模式):
wechat-oa create article.md
推送流程(收费模式):
alipay-bot 发起支付finish_push(trade_no, payload) → 服务端验证 → 执行推送推送或更新文章时,AI 必须生成摘要并传入 --digest 参数,不要留空让服务端自动提取。
摘要生成步骤:
摘要要求:
| 维度 | 规范 |
|---|---|
| 长度 | 1-2 句话,不超过 120 字(微信限制 128 字,留余量) |
| 内容 | 概括文章核心观点或亮点,不是机械截取正文前几句 |
| 风格 | 简洁有吸引力,让读者在公众号消息列表中有点击欲望 |
| 语言 | 与文章正文语言一致 |
示例:
命令示例:
wechat-oa create article.md --digest "这款 AI 编程助手能自动补全代码..."
| 命令 Command | 说明 Description | 底层API Underlying API |
|---|---|---|
list | 查看草稿列表(含标题+时间) | draft/batchget |
get <media_id> | 获取单篇草稿详情 | draft/get |
create <文件> --digest <摘要> | 创建新草稿(支持 .html 和 .md) | draft/add |
create <文件> --force-cover | 创建草稿并强制生成封面 | draft/add |
update <media_id> <文件> | 更新已有草稿 | draft/update |
delete <media_id> | 删除草稿 | draft/delete |
upload <图片文件> | 上传图片到永久素材库 | material/add_material |
count | 获取各类永久素材总数 | material/get_materialcount |
materials [type] | 批量获取素材列表 | material/batchget_material |
del-material <media_id> | 删除素材 | material/del_material |
cover <标题> | 生成封面图预览(不推送) | PIL local generation |
创建或更新草稿时,系统会自动处理正文中的图片:
HTML/MD 文件
↓
提取 <img src="..."> 或 
↓
本地图片? ──是──→ 上传到微信素材库 ──→ 获取微信 URL
↓ 否
网络图片? ──是──→ 保留原 URL(可选下载上传)
↓ 否
跳过(已是微信素材库图片)
↓
替换 HTML 中的 src 为微信 URL
↓
推送草稿
<img src="local/image.png"> 或 <img src="http://example.com/img.png">file:/// 协议A:微信渲染器会删除所有 margin。解决方法:用 <br> 代替,详见 design.md。
A:可能 CSS 里 color 属性出现了两次,后面的覆盖前面的。检查 design.md 的 CSS 限制章节。
A:按照"安装与配置 → IP 白名单配置"章节,将对应 IP 加入白名单。
design.md 排版规范,AI 生成 HTML 时必须遵循<style> 标签转换为行内 style="" 属性,兼容微信文章渲染.cache/cover.pngandy8663@126.comgh_b906288c4c2f)💡 提交 Issue 前建议先搜索是否已有类似问题
design.md - 排版风格规范(必读)README.md - 项目介绍与安装指南