微信公众号文件发布 Skill
功能简介
将本地 Markdown / HTML / TXT 文件一键转换为微信公众号图文消息,并发布到草稿箱。内置动态配图生成器,可根据文章标题、摘要、关键词自动匹配主题配色并生成封面图及配套插图。
触发条件
当用户提出以下意图时,使用本 skill:
- "发布到公众号" / "发布到微信公众号"
- "上传草稿箱" / "发布文章到草稿箱"
- "把这篇文章发到公众号"
- "生成公众号配图" / "生成封面图"
- 涉及
publish.py、generate_article_images.py的操作
文件结构
wechat-file-publish/
├── SKILL.md # 本文件
├── README.md # 详细使用说明
├── skill.json # Skill 元数据
├── skill.yaml # Skill 定义
├── publish.py # 核心发布脚本
├── generate_article_images.py # 动态配图生成器
├── generate_cover_performance.py # 封面性能优化
├── config.json # 配置文件(需用户配置)
└── config.example.json # 配置模板
使用流程
第一步:配置公众号凭证
首次使用必须配置 config.json,需要以下信息:
appId:微信公众号 AppID(在 公众号后台 → 设置 → 基本配置 中获取)appSecret:微信公众号 AppSecret(同上,需重置获取)defaultAuthor:默认作者名
配置方式(在 skill 目录下执行):
python publish.py config
或直接编辑 config.json:
{
"appId": "your_app_id",
"appSecret": "your_app_secret",
"defaultAuthor": "IT老司机Ochmd"
}
⚠️ IP 白名单:确保服务器 IP 已添加到微信公众号安全中心 → IP 白名单
第二步:准备文章文件
支持格式:
.md— Markdown 文件(推荐).html— HTML 文件.txt— 纯文本文件
Markdown 文件示例:
# 文章标题
## 小标题
正文内容...

- 列表项1
- 列表项2
```python
# 代码块
print("Hello World")
### 第三步:执行发布
**方式一:命令行**
```bash
# 基础发布
python publish.py article.md
# 指定封面图
python publish.py article.md cover.png
方式二:对话式(通过 CodeBuddy)
发布文件到公众号
文件路径:C:/Users/xxx/article.md
封面图:C:/Users/xxx/cover.png
动态配图生成
generate_article_images.py 可根据文章内容自动生成配图,无需手动设计。
主题自动匹配
根据文章关键词自动匹配配色方案:
| 主题 | 配色 | 触发关键词 | |------|------|------------| | 科技蓝紫 | 蓝紫渐变 | AI、技术、编程、代码、大模型 | | 活力绿橙 | 绿橙渐变 | 成长、学习、进阶、团队 | | 热情红粉 | 红粉渐变 | 创业、创新、未来、趋势 | | 清新蓝绿 | 蓝绿渐变 | 入门、基础、教程、小白 | | 暖阳金橙 | 金橙渐变 | 感悟、分享、经验、生活 | | 极客深灰 | 深灰渐变 | 极客、黑客、开源、Linux |
支持的图片类型
| 类型 | 函数 | 说明 |
|------|------|------|
| cover | create_cover_image() | 动态封面图(900×383) |
| ai_tools | create_ai_tools_image() | AI工具协作示意图 |
| multi_agent | create_multi_agent_image() | 多智能体协作图 |
| strategy | create_developer_strategy_image() | 开发者策略卡片图 |
| skill_radar | create_skill_radar_image() | 技能雷达图 |
| vision | create_future_vision_image() | 未来展望图 |
调用示例
from generate_article_images import generate_article_images
results = generate_article_images(
title="2026年AI编程工具全面爆发",
summary="探讨AI如何改变软件开发行业",
keywords=["AI", "编程", "Copilot", "效率提升"],
image_types=["cover", "ai_tools"] # 可选,默认生成全部
)
# results = {'cover': 'path/to/cover.png', 'ai_tools': 'path/to/ai_tools.png'}
Markdown 转换规则
publish.py 内置 Markdown → HTML 转换器,支持:
| Markdown 语法 | 转换结果 |
|---------------|----------|
| # 标题 | <h1>(居中,深色) |
| ## 标题 | <h2> |
| ### 标题 | <h3> |
| #### 标题 | <h4> |
| **粗体** | <strong> |
| *斜体* | <em> |
| `行内代码` | <code>(灰色背景) |
| ````代码块``` |<pre><code>(深色背景) | | |<img>(自动上传到微信素材库) | | - 列表项|<ul><li>| |> 引用|<blockquote>(左侧蓝色竖线) | | ---|<hr>(分隔线) | | | 表格 ||<table>`(完整表格支持) |
图片处理规范
要求
- 格式:JPG / JPEG / PNG / GIF(脚本也支持 BMP / WebP 自动转换)
- 大小:≤ 2MB(微信接口限制)
- 封面分辨率:建议 900×383 像素,宽高比 2.35:1 或 16:9
自动处理流程
- 扫描 Markdown 中的本地图片路径
- 逐张上传到微信素材库(调用
uploadimg接口,返回 URL) - 将内容中的本地路径替换为微信 URL
- 如有封面图,上传为缩略图(thumb,调用
add_material接口)
常见错误码
| 错误码 | 原因 | 解决方案 | |--------|------|----------| | 40001 | Token 无效 | 检查 AppSecret 是否正确 | | 40125 | AppSecret 错误 | 在公众号后台重置 AppSecret | | 40164 | IP 不在白名单 | 将服务器 IP 添加到公众号 IP 白名单 | | 41005 | 缺少媒体文件 | 检查图片文件路径是否正确 | | -1 | 系统繁忙 | 稍后重试 |
完整工作流示例
用户提供了 article.md
↓
读取文件内容,提取标题(H1)
↓
扫描本地图片 → 逐张上传到微信 → 替换 URL
↓
Markdown → HTML 转换
↓
(可选)上传封面图到素材库
↓
调用 draft/add API 创建草稿
↓
返回 media_id,发布成功 ✅
注意事项
- IP 白名单必须配置:微信公众号要求调用接口的服务器 IP 在白名单内
- Access Token 有效期 2 小时:脚本每次运行会自动获取新 Token
- 图片大小限制:超过 2MB 的图片会被跳过并提示
- Markdown 标题提取:默认提取第一个
# 标题作为文章标题,也可通过参数指定 - Pillow 依赖:配图生成功能需要
pip install Pillow,若未安装则跳过配图生成
依赖安装
pip install requests pillow
更新日志
v2.0.0 (2026-04-16)
- 重构配图生成器为
DynamicImageGenerator - 新增
ThemeAnalyzer主题分析器,根据文案自动匹配主题 - 支持 6 种主题配色方案
- 新增
generate_article_images()统一入口函数 - 关键词到主题智能映射
v1.0.1 (2026-04-03)
- 修复配图加载失败问题
- 添加动态 MIME 类型检测
- 新增图片验证(大小、格式)
- 完善错误提示
v1.0.0 (2026-04-02)
- 初始版本
- 支持 Markdown/HTML/TXT 发布
- 支持图片自动上传
扫码联系在线客服