wx-mp-push
v1.0.0自动化微信公众号文章发布,通过 API 创建和管理文章草稿,支持 Markdown 和 HTML 两种输入格式,自动 MD→HTML 转换,支持封面图和正文图片自动上传。用于:发布文章到公众号、创建内容草稿、自动化内容工作流、或设置定时发布系统。
运行时依赖
安装命令
点击复制本土化适配说明
wx-mp-push 安装说明: 安装命令:["openclaw skills install wx-mp-push"] 该技能用于微信相关操作,可能需要相应的平台账号或API密钥
技能文档
微信公众号发布器
自动化工具,支持通过 API 发布文章到微信公众号。支持 Markdown 和 HTML 两种输入格式,内置 MD→微信HTML 转换器,包含自动 访问 令牌 管理、多账号支持、封面图和正文图片自动上传、图片 URL 替换和草稿创建功能。
快速开始 前置要求
用户需要:
微信公众号(已认证的订阅号或服务号) 微信开发者ID(应用ID)和开发者密码(应用Secret),在基本配置中获取 Python 3.x(Python版本) 在微信后台启用功能:访问_令牌、草稿、素材权限 配置指南
当用户请求发布到微信时,引导他们完成:
创建配置文件:复制 config.example.json 为 config.json 填写凭证:编辑 config.json 填入 应用ID 和 应用Secret 安装依赖: Python: pip 安装 httpx 测试连接:用示例内容运行脚本 获取 应用ID 和 应用Secret
引导用户:
登录:https://mp.weixin.qq.com 导航:开发 → 基本配置 复制:开发者ID (应用ID) 和 开发者密码 (应用Secret) 使用模式 常见用户请求
直接发布:
"将这篇文章发布到我的公众号" "为这个内容创建草稿" "发布这篇文章,使用这张封面图" "这篇文章里有本地图片,帮我上传并替换"
定时发布:
"下周一上午9点发布这个文章"(创建草稿,用户稍后手动发送) "每周五早上发布文章"(使用 OpenClaw cron 任务触发脚本)
内容格式化:
"将这篇 markdown 文章格式化后发布到微信" "将这篇博客转换为微信格式并创建草稿" "上传这张图片作为封面,正文里的图片也要上传"
图片处理:
"帮我上传这几张图片到公众号" "文章里的本地图片自动替换成微信 URL" 正文图片自动上传
智能检测:
脚本会自动扫描 HTML 内容中的 标签:
本地路径:自动上传并替换为微信素材 URL 外部 URL:自动上传并替换为微信素材 URL
示例 HTML:
这是第一段内容。
第二段内容...
执行后自动变成:
这是第一段内容。
第二段内容...
执行方式
方法 1:从 Markdown 文件发布(推荐)
# 直接发布 .md 文件,自动转 HTML + 上传所有图片 python publish_article.py "文章标题" article.md --from-md --thumb cover.jpg
# 指定图片目录和作者 python publish_article.py "文章标题" article.md --from-md --thumb cover.jpg --content-dir ./images --author "张三"
# 直接传入 Markdown 字符串 python publish_article.py "文章标题" "# Hello World" --from-md
方法 2:从 HTML 文件发布
python publish_article.py "文章标题" article.html --from-file --thumb cover.jpg --content-dir ./images
方法 3:直接传入 HTML 内容
python publish_article.py "标题" "
Hello
World
"方法 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,支持命令行参数 config.example.json: 配置模板 README.md: 详细的设置和使用说明
选择版本的考虑:
如果用户偏好 Python 生态或已有 Python 环境,使用 Python 版 配置文件格式
config.json 支持多个微信公众号账号:
{ "wechat": { "defaultAccount": "account1", "accounts": { "account1": { "name": "账号名称", "应用Id": "your_应用_id", "应用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(微信有限制) 正文图片会自动处理,无需手动上传 Markdown 支持(自动转换)
直接发布 Markdown 文件,无需手动转换 HTML!
脚本内置 MD→微信HTML 转换器,使用 --from-md 参数即可:
python publish_article.py "文章标题" article.md --from-md --thumb cover.jpg
支持的 Markdown 语法
| 语法 | 转换效果 | | ---------------- | ---------------------------------------------------- | --- | --- | ------------------ | | # ~ ###### | 标题(h1 带下划线装饰,h2 带左边框) | | 加粗 | 加粗 | | 斜体 | 斜体 | | ~~删除线~~ | 删除线 | | !alt | 图片(保留所有图片,URL 直接使用,本地路径自动上传) | | text | 链接 | | - 列表项 | 无序列表 | | 1. 列表项 | 有序列表 | | > 引用 | 带左边框的引用块 | | --- | 分割线 | | 表格 ( | --- | --- |) | 带边框的 HTML 表格 | | 行内代码 | 灰色背景代码样式 | | 代码块 | 带背景的代码块 |
图片处理规则 外部 URL 图片(https://...):直接保留在 HTML 中 本地路径图片(./img/photo.jpg):自动上传到微信素材库并替换 URL 使用 --from-md 时:自动将 --content-dir 设为 .md 文件所在目录 使用示例 # 最简单的用法 python publish_article.py "我的文章" article.md --from-md
# 完整参数 python publish_article.py "文章标题" article.md \ --from-md \ --thumb cover.jpg \ --content-dir ./images \ --author "作者名" \ --config config.json
故障排除
常见错误和解决方案:
错误码 原因 解决方案 40001 应用ID/应用Secret 无效 检查 config.json 中的凭证 40004 不支持的媒体类型 检查图片格式,封面图只支