Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
自动化微信公众号文章发布,通过 API 创建和管理文章草稿,支持封面图和正文图片自动上传。用于:发布文章到公众号、创建内容草稿、自动化内容工作流、或设置定时发布系统。
自动化微信公众号文章发布,通过 API 创建和管理文章草稿,支持封面图和正文图片自动上传。用于:发布文章到公众号、创建内容草稿、自动化内容工作流、或设置定时发布系统。
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
自动化工具,支持通过 API 发布文章到微信公众号。提供 Python 和 Node.js 两种实现,包含自动 Access Token 管理、多账号支持、封面图和正文图片自动上传、图片 URL 替换和草稿创建功能。
用户需要: 微信公众号(已认证的订阅号或服务号) 微信开发者ID(AppID)和开发者密码(AppSecret),在基本配置中获取 Python 3.x(Python版本)或 Node.js(Node.js版本) 在微信后台启用功能:access_token、草稿、素材权限
当用户请求发布到微信时,引导他们完成: 创建配置文件:复制 config.example.json 为 config.json 填写凭证:编辑 config.json 填入 AppID 和 AppSecret 安装依赖: Python: pip install httpx Node.js: npm install axios form-data(Node.js 版需要 form-data) 测试连接:用示例内容运行脚本
引导用户: 登录:https://mp.weixin.qq.com 导航:开发 → 基本配置 复制:开发者ID (AppID) 和 开发者密码 (AppSecret)
直接发布: "将这篇文章发布到我的公众号" "为这个内容创建草稿" "发布这篇文章,使用这张封面图" "这篇文章里有本地图片,帮我上传并替换" 定时发布: "下周一上午9点发布这个文章"(创建草稿,用户稍后手动发送) "每周五早上发布文章"(使用 OpenClaw cron 任务触发脚本) 内容格式化: "将这篇 markdown 文章格式化后发布到微信" "将这篇博客转换为微信格式并创建草稿" "上传这张图片作为封面,正文里的图片也要上传" 图片处理: "帮我上传这几张图片到公众号" "文章里的本地图片自动替换成微信 URL"
智能检测: 脚本会自动扫描 HTML 内容中的 <img> 标签: 本地路径:自动上传并替换为微信素材 URL 外部 URL:跳过上传,保持原样 示例 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:先生成,再发布 使用 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": "账号名称", "appId": "wx1234567890abcdef", "appSecret": "your_app_secret", "type": "subscription", "enabled": true }, "account2": { ... } }, "apiBaseUrl": "https://api.weixin.qq.com", "tokenCacheDir": "./.tokens" } } 关键字段: appId: 微信 App ID appSecret: 微信 App Secret(注意安全保管) type: "subscription"(订阅号)或 "service"(服务号) enabled: true/false 启用或禁用账号
格式:JPG、JPEG、PNG 大小限制:不超过 64MB 建议尺寸:900 × 383 像素(2.35:1 比例) 用途:文章列表显示的封面
格式:JPG、JPEG、PNG、BMP、GIF 大小限制:不超过 2MB(单张) 用途:嵌入在文章内容中 自动处理:脚本自动上传并替换为微信素材 URL
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/> 这样的自闭合标签) 推荐使用 HTTPS 图片链接 避免复杂 CSS(微信有限制) 正文图片会自动处理,无需手动上传
常见错误和解决方案: 错误码原因解决方案40001AppID/AppSecret 无效检查 config.json 中的凭证40004不支持的媒体类型检查图片格式,封面图只支持 JPG/PNG,正文支持 JPG/PNG/BMP/GIF40005不支持的文件类型确认上传的是图片文件40164IP 未在白名单中将服务器 IP 添加到微信白名单41005媒体文件为空检查图片文件是否损坏45009API 调用频率超限等待或降低频率Token 过期缓存问题删除 .tokens/ 文件夹重试图片上传失败文件过大封面图<64MB,正文图<2MB图片路径不存在找不到文件检查路径是否正确,使用 --content-dir 指定目录 调试提示: 检查配置文件存在且是有效 JSON 格式 验证网络连接 确保凭证格式正确(无多余空格) 检查微信后台 API 权限是否启用 验证图片文件存在且格式正确 确认图片大小不超过限制 使用相对路径时检查 --content-dir 设置
重要安全实践: 保护 AppSecret:永远不要在脚本中硬编码,始终使用配置文件 Git 忽略:将 config.json 添加到 .gitignore Token 缓存:为 .tokens/ 目录设置安全权限 用户责任:明确告知用户凭证安全的重要性 图片安全:上传的图片会保存到公众号素材库,注意隐私 备份数据:重要图片请备份,微信素材库有容量限制
集成选项: 一次性发布:用户请求发布,执行一次脚本 定时发布:使用 cron 工具安排定期文章发布 工作流集成:结合文章生成技能实现端到端自动化 消息通知:发布后通过 message 工具发送成功/失败通知 批量处理:批量上传图片,批量创建草稿 每周定时发布的 Cron 任务示例: { "name": "每周微信文章", "schedule": { "kind": "cron", "expr": "0 9 * * 5", "tz": "Asia/Shanghai" }, "payload": { "kind": "systemEvent", "text": "trigger_wechat_publish" } } 当收到系统事件时,Agent 会执行发布脚本。
当前支持: ✅ 通过 API 创建文章草稿 ✅ 管理带缓存的 Access Token ✅ 支持多个微信公众号账号 ✅ 上传封面图片到素材库 ✅ 自动上传正文图片并替换 URL ✅ 智能检测本地图片和外部 URL ✅ 自动图片格式和大小验证 ✅ 支持封面图 JPG/JPEG/PNG(最大 64MB) ✅ 支持正文图 JPG/JPEG/PNG/BMP/GIF(最大 2MB) 未来扩展: 后续版本可考虑添加: 视频素材上传支持 图片库管理(查询、删除) 文章草稿管理(编辑、删除) 图片 CDN 加速
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.