运行时依赖
安装命令
点击复制本土化适配说明
Wechat AutoPublish 安装说明: 安装命令:["openclaw skills install wechat-accounts-publisher"] 该技能用于微信相关操作,可能需要相应的平台账号或API密钥
技能文档
微信公众号发布器
自动化工具,支持通过 API 发布文章到微信公众号。提供 Python 和 Node.js 两种实现,包含自动 访问 令牌 管理、多账号支持、封面图和正文图片自动上传、图片 URL 替换和草稿创建功能。
快速开始 前置要求
用户需要:
微信公众号(已认证的订阅号或服务号) 微信开发者ID(应用ID)和开发者密码(应用Secret),在基本配置中获取 Python 3.x(Python版本)或 Node.js(Node.js版本) 在微信后台启用功能:访问_令牌、草稿、素材权限 配置指南
当用户请求发布到微信时,引导他们完成:
创建配置文件:复制 config.example.json 为 config.json 填写凭证:编辑 config.json 填入 应用ID 和 应用Secret 安装依赖: Python: pip 安装 httpx Node.js: npm 安装 axios form-data(Node.js 版需要 form-data) 测试连接:用示例内容运行脚本 获取 应用ID 和 应用Secret
引导用户:
登录:https://mp.weixin.qq.com 导航:开发 → 基本配置 复制:开发者ID (应用ID) 和 开发者密码 (应用Secret) 使用模式 常见用户请求
直接发布:
"将这篇文章发布到我的公众号" "为这个内容创建草稿" "发布这篇文章,使用这张封面图" "这篇文章里有本地图片,帮我上传并替换"
定时发布:
"下周一上午9点发布这个文章"(创建草稿,用户稍后手动发送) "每周五早上发布文章"(使用 OpenClaw cron 任务触发脚本)
内容格式化:
"将这篇 markdown 文章格式化后发布到微信" "将这篇博客转换为微信格式并创建草稿" "上传这张图片作为封面,正文里的图片也要上传"
图片处理:
"帮我上传这几张图片到公众号" "文章里的本地图片自动替换成微信 URL" 正文图片自动上传
智能检测:
脚本会自动扫描 HTML 内容中的 标签:
本地路径:自动上传并替换为微信素材 URL 外部 URL:跳过上传,保持原样
示例 HTML:
这是第一段内容。
第二段内容...
执行后自动变成:
这是第一段内容。
第二段内容...
执行方式
方法 1:直接执行脚本(带正文图片)
Python(推荐):
# 正文图片自动从 images/ 目录上传 python publish_article.py "标题" "" \ --from-file \ --thumb cover.jpg \ --content-dir ./images
Python(简单方式):
# 当前目录下的图片会被自动上传
python publish_article.py "标题" "
内容
"Node.js(推荐):
node publish_article.js "标题" "article.html" \ --from-file \ --thumb cover.jpg \ --content-dir ./images
Node.js(简单方式):
node publish_article.js "标题" "
内容
"方法 2:通过 OpenClaw Cron
创建 cron 任务触发脚本执行:
python scripts/publish_article.py "定时文章" "" \ --config config.json \ --thumb cover.jpg \ --content-dir ./images
方法 3:先生成,再发布
使用 AI 生成文章内容(可包含本地图片路径) 格式化为微信支持的 HTML 执行发布脚本,自动处理所有图片 脚本参考
主要发布脚本位于 scripts/:
publish_article.py: Python 实现,使用 httpx,支持命令行参数 publish_article.js: Node.js 实现,使用 axios + form-data config.example.json: 配置模板 README.md: 详细的设置和使用说明
选择版本的考虑:
如果用户偏好 Python 生态或已有 Python 环境,使用 Python 版 如果用户偏好 JavaScript 生态或已配置 Node.js,使用 Node.js 版 配置文件格式
config.json 支持多个微信公众号账号:
{ "wechat": { "defaultAccount": "account1", "accounts": { "account1": { "name": "账号名称", "应用Id": "wx1234567890abcdef", "应用Secret": "your_应用_secret", "type": "subscription", "enabled": true }, "account2": { ... } }, "APIBaseUrl": "https://API.weixin.qq.com", "令牌缓存Dir": "./.令牌s" } }
关键字段:
应用Id: 微信 应用 ID 应用Secret: 微信 应用 Secret(注意安全保管) type: "subscription"(订阅号)或 "服务"(服务号) enabled: true/false 启用或禁用账号 图片上传支持 封面图 格式:JPG、JPEG、PNG 大小限制:不超过 64MB 建议尺寸:900 × 383 像素(2.35:1 比例) 用途:文章列表显示的封面 正文图片 格式:JPG、JPEG、PNG、BMP、GIF 大小限制:不超过 2MB(单张) 用途:嵌入在文章内容中 自动处理:脚本自动上传并替换为微信素材 URL 使用方式
- 封面图单独设置:
python publish_article.py "标题" "内容" --thumb cover.jpg
- 正文图片自动上传: 只需在 HTML 中使用本地路径,脚本自动处理:
段落

- 文字内容 + 多张图片:
我的文章
开头内容...
中间内容...
结尾内容...

图片路径说明
相对路径(推荐):
默认从当前目录查找
可通过 --content-dir 指定基础目录
示例:
、
绝对路径:
直接使用完整路径
示例:
外部 URL:
不上传,保持原样
示例:
文章内容格式
微信需要特定的 HTML 格式:
基本结构:
段落内容...
章节标题
更多内容...
重要要求:
使用
包裹内容 只使用闭合标签(不要使用这样的自闭合标签) 推荐使用 HTTPS 图片链接 避免复杂 CSS(微信有限制) 正文图片会自动处理,无需手动上传 故障排除
常见错误和解决方案:
错误码 原因 解决方案 40001 应用ID/应用Secret 无效 检查 config.json 中的凭证 40004 不支持的媒体类型 检查图片格式,封面图只支持 JPG/PNG,正文支持 JPG/PNG/BMP/GIF 40005 不支持的文件类型 确认上传的是图片文件 40164 IP 未在白名单中 将服务器 IP 添加到微信白名单 41005 媒体文件为空 检查图片文件是否损坏 45009 API 调用频率超限 等待或降低频率 令牌 过期 缓存问题 删除 .令牌s/ 文件夹重试 图片上传失败 文件过大 封面图<64MB,正文图<2MB 图片路径不存在 找不到文件 检查路径是否正确,使用 --content-dir 指定目录
调试提示:
检查配置文件存在且是有效 JSON 格式 验证网络连接 确保凭证格式正确(无多余空格) 检查微信后台 API 权限是否启用 验证图片文件存在且格式正确 确认图片大小不超过限制 使用相对路径时检查 --content-dir 设置 安全注意事项
重要安全实践:
保护 应用Secret:永远不要在脚本中硬编码,始终使用配置文件 Git 忽略:将 config.json 添加到 .gitignore 令牌 缓存:为 .令牌s/ 目录设置安全权限 用户责任:明确告知用户凭证安全的重要性 图片安全:上传的图片会保存到公众号素材库,注意隐私 备份数据:重要图片请备份,微信素材库有容量限制 与 OpenClaw 集成
集成选项:
一次性发布:用户请求发布,执行一次脚本 定时发布:使用 cron 工具安排定期文章发布 工作流集成:结合文章生成技能实现端到端自动化 消息通知:发布后通过 message 工具发送成功/失败通知 批量处理:批量上传图片,批量创建草稿
每周定时发布的 Cron 任务示例:
{ "name": "每周微信文章", "schedule": { "kind": "cron", "expr": "0 9 5", "tz": "Asia/ShanghAI" }, "payload": { "kind": "系统Event", "text": "trigger_wec