# wechat-draft-publisher
> 自动将 HTML 文章发布到微信公众号草稿箱,支持封面图上传、标题、作者和元数据管理。当用户说"推送到微信"、"发布到公众号草稿"、"上传到草稿箱"或提到微信文章发布时使用。
- Author: yunfanai
- Repository: Kevin-hr/wechat_article_skills
- Version: 20260201020749
- Stars: 0
- Forks: 0
- Last Updated: 2026-02-06
- Source: https://github.com/Kevin-hr/wechat_article_skills
- Web: https://mule.run/skillshub/@@Kevin-hr/wechat_article_skills~wechat-draft-publisher:20260201020749
---
---
name: wechat-draft-publisher
description: 自动将 HTML 文章发布到微信公众号草稿箱,支持封面图上传、标题、作者和元数据管理。当用户说"推送到微信"、"发布到公众号草稿"、"上传到草稿箱"或提到微信文章发布时使用。
---
# 微信公众号草稿发布器
自动将 HTML 格式的文章发布到微信公众号草稿箱,支持封面图上传、标题、作者和摘要等元数据管理。
## ⚡ 快速开始
**最简单的用法:**
```bash
python publisher.py --title "文章标题" --content article.html
```
**完整参数:**
```bash
python publisher.py \
--title "标题" \
--content article.html \
--author "作者名" \
--cover cover.png \
--digest "文章摘要"
```
**默认值:**
- 作者:`YanG`
- 封面图:`cover.png`
## 📋 执行步骤
**发布文章到微信草稿箱的完整流程:**
1. **查找 HTML 文件**
- 优先查找 `*_formatted.html`(formatter 输出)
- 回退到最新的 `.html` 文件
2. **提取文章标题**
- 从 HTML 注释提取:``
- 从文件名提取
- 询问用户
3. **检查封面图**
- 查找 `cover.png`
- 如缺失则警告但继续发布
4. **调用发布脚本**
```bash
python publisher.py --title "xxx" --content xxx.html --cover xxx.png
```
5. **验证结果**
- 确认草稿创建成功
- 获取草稿 media_id
6. **提示用户**
- 提供微信后台链接
- 说明下一步操作
## 🔧 配置要求
### 首次使用
工具会在首次运行时引导配置:
1. **获取微信公众号凭证**
- 访问 https://mp.weixin.qq.com
- 进入 设置 → 基本配置
- 复制 AppID 和 AppSecret
2. **运行发布器**
```bash
python publisher.py --title "测试" --content test.html
```
3. **添加服务器 IP 到白名单**(如需要)
### 配置文件
**位置:** `~/.wechat-publisher/config.json`
**格式:**
```json
{
"appid": "wx1234567890abcdef",
"appsecret": "your_secret_here"
}
```
## ✨ 核心功能
- ✅ access_token 自动缓存(有效期 7200 秒)
- ✅ 封面图上传和管理
- ✅ HTML 内容自动优化(适配微信)
- ✅ 字段长度自动截断(标题/作者/摘要)
- ✅ 错误处理和重试机制
- ✅ 中文错误提示和解决方案
- ✅ 交互模式和命令行模式
## 🛠️ 工作流集成
与其他 skill 协同工作:
**完整工作流:**
1. `wechat-tech-writer` → 生成文章(`xxx_article.md` + `cover.png`)
2. `wechat-article-formatter` → 格式化 HTML(`xxx_formatted.html`)
3. `wechat-draft-publisher` → 发布到微信草稿箱(本 skill)
**自动检测机制:**
- 自动查找 `*_formatted.html` 文件
- 自动查找 `cover.png` 封面图
- 自动识别内容图片
## 🚨 常见问题
### 错误:IP 不在白名单
**症状:** `invalid ip not in whitelist`
**解决:**
1. 登录微信公众号后台
2. 进入 设置 → 基本配置
3. 添加服务器 IP 到白名单
### 错误:AppSecret 错误
**症状:** `AppSecret error`
**解决:**
- 检查配置文件:`~/.wechat-publisher/config.json`
- 验证 AppID 以 "wx" 开头(18 个字符)
- 确认 AppSecret 正确
### 错误:标题/作者超出限制
**症状:** `title/author size out of limit`
**解决:**
- 工具会自动截断(标题:32 字节,作者:20 字节)
- 如需调整,修改 `publisher.py`
## 📁 文件结构
```
wechat-draft-publisher/
├── SKILL.md # 本文件
├── publisher.py # 核心发布脚本
├── scripts/ # 工具脚本
│ ├── fix-wechat-style.py # HTML 优化器
│ ├── optimize-html.py # HTML 压缩工具
│ ├── publish-workflow.sh # 完整工作流
│ ├── install.sh # 安装助手
│ └── test.sh # 测试脚本
├── examples/ # 示例文件
│ ├── config.json.example # 配置示例
│ └── example.html # HTML 示例
└── README.md # 详细英文文档
```
## 💡 使用示例
**示例 1:标准发布**
```bash
python publisher.py \
--title "VSCode 更名事件" \
--content article.html
```
**示例 2:完整元数据**
```bash
python publisher.py \
--title "技术文章" \
--content article.html \
--author "YanG" \
--cover images/cover.png \
--digest "这是一篇关于..."
```
**示例 3:交互模式**
```bash
python publisher.py --interactive
```
## 📱 发布后操作
发布成功后:
1. 登录微信公众号后台
2. 进入"草稿箱"
3. 预览效果
4. 确认后发布
**注意事项:**
- ⚠️ 草稿保存在微信后台,不会立即发布
- ⚠️ 可以在草稿箱中编辑后再发布
- ⚠️ 封面图会在预览时显示
## 🔗 相关文档
- **详细文档:** [README.md](README.md)(英文)
- **安装指南:** [scripts/install.sh](scripts/install.sh)
- **HTML 处理:** [scripts/fix-wechat-style.py](scripts/fix-wechat-style.py)