Install
openclaw skills install wechat-accounts-publisher自动化微信公众号文章发布,通过 API 创建和管理文章草稿,支持封面图和正文图片自动上传。用于:发布文章到公众号、创建内容草稿、自动化内容工作流、或设置定时发布系统。
openclaw skills install wechat-accounts-publisher自动化工具,支持通过 API 发布文章到微信公众号。提供 Python 和 Node.js 两种实现,包含自动 Access Token 管理、多账号支持、封面图和正文图片自动上传、图片 URL 替换和草稿创建功能。
用户需要:
当用户请求发布到微信时,引导他们完成:
config.example.json 为 config.jsonconfig.json 填入 AppID 和 AppSecretpip install httpxnpm install axios form-data(Node.js 版需要 form-data)引导用户:
直接发布:
定时发布:
内容格式化:
图片处理:
智能检测:
脚本会自动扫描 HTML 内容中的 <img> 标签:
示例 HTML:
<section class="article-content">
<p>这是第一段内容。</p>
<img src="./images/photo1.jpg" /> <!-- ✅ 会自动上传 -->
<p>第二段内容...</p>
<img src="https://example.com/pic.png" /> <!-- ⏭️ 跳过,已是 URL -->
<img src="local.png" /> <!-- ✅ 会自动上传 -->
</section>
执行后自动变成:
<section class="article-content">
<p>这是第一段内容。</p>
<img src="https://mmbiz.qpic.cn/xxx1/..." />
<p>第二段内容...</p>
<img src="https://example.com/pic.png" />
<img src="https://mmbiz.qpic.cn/xxx2/..." />
</section>
方法 1:直接执行脚本(带正文图片)
Python(推荐):
# 正文图片自动从 images/ 目录上传
python publish_article.py "标题" "<HTML内容>" \
--from-file \
--thumb cover.jpg \
--content-dir ./images
Python(简单方式):
# 当前目录下的图片会被自动上传
python publish_article.py "标题" "<img src='photo1.jpg' /><p>内容</p>"
Node.js(推荐):
node publish_article.js "标题" "article.html" \
--from-file \
--thumb cover.jpg \
--content-dir ./images
Node.js(简单方式):
node publish_article.js "标题" "<img src='photo1.jpg' /><p>内容</p>"
方法 2:通过 OpenClaw Cron
创建 cron 任务触发脚本执行:
python scripts/publish_article.py "定时文章" "<HTML内容>" \
--config config.json \
--thumb cover.jpg \
--content-dir ./images
方法 3:先生成,再发布
主要发布脚本位于 scripts/:
选择版本的考虑:
config.json 支持多个微信公众号账号:
{
"wechat": {
"defaultAccount": "account1",
"accounts": {
"account1": {
"name": "账号名称",
"appId": "wx1234567890abcdef",
"appSecret": "your_app_secret",
"type": "subscription",
"enabled": true
},
"account2": { ... }
},
"apiBaseUrl": "https://api.weixin.qq.com",
"tokenCacheDir": "./.tokens"
}
}
关键字段:
appId: 微信 App IDappSecret: 微信 App Secret(注意安全保管)type: "subscription"(订阅号)或 "service"(服务号)enabled: true/false 启用或禁用账号1. 封面图单独设置:
python publish_article.py "标题" "内容" --thumb cover.jpg
2. 正文图片自动上传: 只需在 HTML 中使用本地路径,脚本自动处理:
<p>段落</p>
<img src="./img/photo.jpg" />
3. 文字内容 + 多张图片:
<h1>我的文章</h1>
<p>开头内容...</p>
<img src="header.jpg" />
<p>中间内容...</p>
<img src="diagram.png" />
<p>结尾内容...</p>
<img src="footer.jpg" />
相对路径(推荐):
--content-dir 指定基础目录<img src="photo.jpg" />、<img src="./images/pic.png" />绝对路径:
<img src="/Users/name/Pictures/photo.jpg" />外部 URL:
<img src="https://example.com/img.jpg" />微信需要特定的 HTML 格式:
基本结构:
<section class="article-content">
<p>段落内容...</p>
<h2>章节标题</h2>
<p>更多内容...</p>
<img src="local-img.jpg" />
</section>
重要要求:
<section class="article-content"> 包裹内容<br/> 这样的自闭合标签)常见错误和解决方案:
| 错误码 | 原因 | 解决方案 |
|---|---|---|
| 40001 | AppID/AppSecret 无效 | 检查 config.json 中的凭证 |
| 40004 | 不支持的媒体类型 | 检查图片格式,封面图只支持 JPG/PNG,正文支持 JPG/PNG/BMP/GIF |
| 40005 | 不支持的文件类型 | 确认上传的是图片文件 |
| 40164 | IP 未在白名单中 | 将服务器 IP 添加到微信白名单 |
| 41005 | 媒体文件为空 | 检查图片文件是否损坏 |
| 45009 | API 调用频率超限 | 等待或降低频率 |
| Token 过期 | 缓存问题 | 删除 .tokens/ 文件夹重试 |
| 图片上传失败 | 文件过大 | 封面图<64MB,正文图<2MB |
| 图片路径不存在 | 找不到文件 | 检查路径是否正确,使用 --content-dir 指定目录 |
调试提示:
--content-dir 设置重要安全实践:
.tokens/ 目录设置安全权限集成选项:
cron 工具安排定期文章发布message 工具发送成功/失败通知每周定时发布的 Cron 任务示例:
{
"name": "每周微信文章",
"schedule": {
"kind": "cron",
"expr": "0 9 * * 5",
"tz": "Asia/Shanghai"
},
"payload": {
"kind": "systemEvent",
"text": "trigger_wechat_publish"
}
}
当收到系统事件时,Agent 会执行发布脚本。
当前支持:
未来扩展: 后续版本可考虑添加: