wechat-publish-pro Skill
微信公众号文章发布工具,完全独立实现,不依赖任何外部 CLI 工具。
功能特性
- 纯 Python 实现: 不依赖 wenyan-cli 或其他外部工具
- Markdown 转换: 内置 Markdown → HTML 转换,参考 wenyan-cli 排版风格
- 多主题支持: 多种精美主题(green、blue、purple、orange、default、simple)
- 代码高亮: Mac 风格代码块,语法高亮
- 封面生成: 自动处理封面图,支持本地/网络图片
- 直接发布: 一键发布到微信公众号草稿箱
触发条件
当用户需要以下操作时自动触发:
- 将 Markdown 或 HTML 文章发布到微信公众号草稿箱
- 转换 Markdown 为公众号格式 HTML
- 使用特定主题发布公众号文章
- 测试微信连接
安装
# 从 GitHub 安装
pip install git+https://github.com/yuesf/wechat-publish-pro.git
配置
第一步:获取微信公众号凭证
- 登录 https://developers.weixin.qq.com/ 公众号平台
- 获取 AppID 和 AppSecret
第二步:配置凭证
环境变量
export WECHAT_APP_ID=your_wechat_app_id
export WECHAT_APP_SECRET=your_wechat_app_secret
配置文件
# 初始化配置
wechat-publish-pro config init
# 设置配置
wechat-publish-pro config set wechat.app_id <AppID>
wechat-publish-pro config set wechat.app_secret <AppSecret>
第三步:设置 IP 白名单
把运行机器的 IP 添加到微信公众号后台白名单:
- 登录 https://mp.weixin.qq.com/
- 设置与开发 → 基本配置 → IP白名单
使用方式
通过 OpenClaw 直接发送
在 OpenClaw 对话中直接说:
- "把这篇文章发到公众号"
- "用蓝色主题发布"
- "帮我发布到微信,测试一下"
命令行方式
Markdown 转换
# 基本转换(默认绿色主题)
wechat-publish-pro convert article.md
# 指定蓝色主题
wechat-publish-pro convert article.md --theme blue
# 指定输出文件
wechat-publish-pro convert article.md -o output.html
发布到微信
# 发布 HTML 文件到草稿箱(需要指定账号,否则会卡在交互提示)
wechat-publish-pro publish article.html --account <账号标识>
# 指定标题和封面
wechat-publish-pro publish article.html --title "文章标题" --cover cover.jpg --account <账号标识>
常见问题:
- 发布命令卡住不动:确保使用
--account参数指定账号,避免交互式选择 - 封面上传失败:确认封面图片路径存在,不存在时省略
--cover参数
一站式:Markdown → 转换 → 发布
# 转换后直接发布
wechat-publish-pro convert article.md --theme blue -o /tmp/article.html
wechat-publish-pro publish /tmp/article.html --title "文章标题"
测试连接
wechat-publish-pro test
上传图片
wechat-publish-pro upload-image image.jpg
Markdown 格式
文件顶部可以包含 frontmatter(建议只用 cover,不用 title,避免重复):
<!--
title: 文章标题
---
cover: ./assets/cover.jpg
---
你的内容...
重要注意事项:
- 不要在正文使用
#大标题——标题由命令行-t参数提供,正文里的#标题会导致标题重复输出 - 不要使用
---作为章节分隔线——wenyan-cli 会将其误解析为列表项• --,用空行替代--- - frontmatter 的
title会被输出到正文——如果同时在正文写了#标题,会导致两个标题重复;建议 frontmatter 的 title 用<!-- -->包裹,或完全不用 frontmatter 的 title,改由命令行-t提供标题
推荐格式:
<!--
title: 文章标题(可选,用命令行 -t 更稳定)
cover: ./assets/cover.jpg
---
第一段内容(直接开始,不要用 `#` 标题)
## 章节标题(使用 ## ,不是 #)
内容...
(章节之间用空行分隔,不要用 ---)
可用主题
| 主题 | 风格 |
|---|---|
| green | 清新自然(绿色,默认) |
| blue | 清新专业(蓝色) |
| purple | 优雅神秘(紫色) |
| orange | 温暖活力(橙色) |
| default | 简洁清爽 |
| simple | 极简风格 |
故障排查
错误:45166 (IP地址不在白名单中)
- 原因:运行机器的 IP 未添加到微信白名单
- 解决:登录公众号后台添加 IP 到白名单
发布成功但看不到文章?
- 原因:文章在草稿箱,需要审核发布
- 解决:草稿箱 → 选中文章 → 发布
架构说明
wechat-publish-pro/
├── src/wechat_publish_pro/
│ ├── cli.py # CLI 入口
│ ├── config.py # 配置管理
│ ├── converter/ # Markdown 转换模块
│ │ ├── wechat_style.py # 微信公众号样式转换器
│ │ ├── themes.py # 主题配置
│ │ └── theme_types.py # 主题数据类型
│ └── platforms/ # 平台适配器
│ └── wechat.py # 微信公众号 API
└── pyproject.toml
设计参考
本项目参考了以下优秀项目的设计思路:
- wenyan-cli: Markdown 转微信 HTML 的排版思路
- multi-writing-skills: 转换器和主题系统的实现
但本项目是完全独立实现的,不依赖任何外部代码。
作者
yuesf
许可证
MIT