| name | wechat-publisher |
| description | 微信公众号文章自动创作与发布工具。给定参考文章、文字或文档,自动搜索整理全网相关信息,使用 baoyu-infographic 生成手绘风格配图,生成图文并茂的公众号文章,并发布到微信公众号草稿箱。
触发场景(只要沾边就该使用本skill):
- 用户提到"公众号"、"微信文章"、"推文"、"公号"、"发文"、"mp"等关键词
- 用户要求写文章并发布到微信
- 用户提供参考素材并希望生成公众号内容
- 用户希望把文档/笔记转为微信公众号文章
- 用户要求搜索某个话题并写成公众号文章
- 用户提到"草稿箱"、"群发"等微信公众号相关操作
- 用户要求写一篇适合在微信上传播的文章
|
微信公众号文章自动创作与发布
本skill实现从素材输入到公众号草稿箱的完整自动化流程。核心价值在于:用户只需要提供一个话题或几篇参考资料,skill就能自动完成搜索调研、撰写文章、生成配图、排版美化、上传发布的全部环节。
默认作者:会飞的猪猪侠(除非用户另行指定)
前置条件检查
在开始任何工作之前,先检查环境是否就绪:
第一步:检查账号配置
支持两种配置方式:
方式一:accounts.yaml 多账号配置(推荐)
在工作目录下创建 accounts.yaml(参考 accounts.yaml.example):
default: main
accounts:
main:
name: "我的主公众号"
app_id: "wx1234567890abcdef"
app_secret: "your_app_secret_here"
author: "会飞的猪猪侠"
tech:
name: "技术博客号"
app_id: "wx0987654321fedcba"
app_secret: "another_app_secret"
author: "技术团队"
使用时通过 --account 指定账号:
python3 scripts/publish.py --account tech --html article.html --cover cover.jpg --title "标题"
python3 scripts/image_handler.py --account tech upload image.png
不指定 --account 时使用 default 指定的账号。作者名自动从账号配置中获取。
查看已配置的账号:
python3 scripts/wechat_api.py list-accounts
方式二:.env 单账号配置(向后兼容)
在工作目录(或skill目录、用户主目录)下查找 .env 文件,确认包含:
WECHAT_APP_ID=你的公众号AppID
WECHAT_APP_SECRET=你的公众号AppSecret
如果用户未配置,告知用户需要:
- 登录 微信公众平台 → 设置与开发 → 基本配置
- 获取 AppID 和 AppSecret(第一次使用需要手动启用开发者密码)
- 在「IP白名单」中添加当前机器的公网IP(可通过
curl ifconfig.me 查询)
- 将凭证保存到
.env 文件或 accounts.yaml
第二步:验证API连接
cd <skill-path>/scripts && python3 -c "from wechat_api import get_access_token; print('API连接正常:', get_access_token()[:10]+'...')"
如果报错 40164,说明IP白名单未配置。如果报错 40001/40002,说明AppID或AppSecret不正确。
第三步:安装依赖
脚本仅依赖 requests 库:
pip install requests --break-system-packages 2>/dev/null || pip install requests
完整工作流程(6个阶段)
拿到用户的需求后,按以下6个阶段依次推进。每个阶段完成后简要告知用户进度。
阶段一:理解需求与收集素材
目标:搞清楚用户到底想要什么样的文章。
-
分析用户输入:
- 如果用户提供了参考文章/文档,仔细阅读并提取核心观点、写作风格、目标受众
- 如果用户只给了一个话题,先简短确认:目标读者是谁?偏科普还是深度?要不要带营销性质?
- 如果用户上传了文件,用Read工具读取内容
-
提炼写作方向:从素材中提取3-5个核心关键词,形成写作大纲的雏形
这个阶段要快,不要过度确认。如果用户的意图已经很清楚(比如"帮我写一篇关于XXX的公众号文章"),直接进入下一阶段。
阶段二:全网信息搜索与整理
目标:围绕主题收集足够多的高质量素材,让文章有深度、有料。
-
多轮搜索(使用WebSearch工具):
- 第1轮:搜索核心话题的最新资讯和数据(如"2025年XX行业趋势")
- 第2轮:搜索相关案例和故事(如"XX成功案例")
- 第3轮:搜索专家观点或权威报告(如"XX领域专家观点")
-
信息筛选:
- 去重,交叉验证关键数据
- 优先使用最近6个月的数据和案例
- 标注信息来源,方便后续引用
-
形成写作提纲:将素材按逻辑分组,规划文章结构(标题→引言→正文2-4节→总结)
搜索时注意:每次搜索用不同的关键词组合,避免信息同质化。如果某个方向搜索结果不理想,灵活调整关键词。
阶段三:撰写文章
目标:写出一篇适合微信公众号传播的高质量文章。
文章结构模板(Markdown格式):
注意:Markdown 中的第一个 # 标题 会被 html_converter 自动跳过(不输出到正文HTML中),因为微信公众号会在文章顶部自动显示标题,正文中重复标题会冗余。标题仅用于 publish.py --title 参数和文件内部标记。
# 标题(抓眼球,15-25字为佳)
> 摘要引言(1-2句话概括核心观点,会显示在分享卡片中)

## 开篇引入
(用故事、数据或热点事件,3-5行内抓住读者注意力)

## 正文小节一:XXX
(展开第一个论点,配合数据/案例,深入分析)

## 正文小节二:XXX
(展开第二个论点,补充不同角度的论据)

## 正文小节三:XXX
(展开第三个论点,加入实操建议或案例故事)

## 正文小节四:XXX(可选)
(如果话题足够丰富,可以展开第四个甚至第五个小节)

## 正文小节五:XXX(可选)
(延伸讨论、未来展望、行业影响等)

## 写在最后
(不要简单总结,给出有力的收束观点、行动建议或开放问题。可加互动引导语。)
文章规模指南:
- 正文小节数量:4-6个,每个小节围绕一个独立论点展开,做到"有料、有例、有图"
- 每个小节 400-800 字,包含论点阐述、数据/案例支撑、以及一段引用块(金句或关键数据)
- 配图数量:6-10张,确保每个小节至少配1张图,重要小节可配2张(如一张概念图+一张数据图)
- 总字数目标:3000-5000字,做到深度够、节奏好、读起来不累
写作风格指南(参考宝玉AI、量子位等头部AI博主)
整体调性:专业但不学术,通俗但不肤浅,有观点但不偏激。让读者觉得"这个作者懂行,而且说人话"。
具体要求:
- 标题要有信息量,不做标题党:好标题 = 核心信息 + 情绪钩子。15-25字为佳。参考以下爆款标题公式:
- 痛点+方案+数字:"告别排版地狱:这个AI神器让公众号发文从3小时变成10分钟"
- 身份代入+结果:"我用AI写了个工具,现在公众号文章从写作到发布只要10分钟"
- 反常识/悬念:"写代码的时代结束了,设计Agent工作环境的时代开始了"
- 干货承诺+具体数字:"Claude迎来史上最大更新:8个新功能一文看懂"
- 对比冲突:"3小时 vs 10分钟:一个AI工具如何改变我的公众号写作流程"
- 避免纯标题党("震惊!"、"竟然!"),避免信息量为零的悬念标题
- 开头直切主题:不要铺垫太多。第一段就要让读者知道这篇文章讲什么、跟他有什么关系。可以用一个反常识的数据、一个最新的事件、或者一个读者关心的问题来开头。
- 段落要短,3-4行最佳:手机屏幕一屏大约能显示4-5行文字。段落超过5行就会让读者感到压迫。善用换行来制造"呼吸感"。
- 语言有温度但不油腻:用"你"而不是"读者",用"我们"拉近距离。但避免过度亲昵("亲"、"宝子")或过度口语化。保持一种"聪明朋友跟你聊天"的感觉。
- 善用加粗突出重点:文章中关键观点和数据要加粗,因为大多数读者是"扫读"模式。但不要每段都加粗,否则等于没加粗。
- 每200-400字配一张图:图文交错能显著降低阅读疲劳感。配图要和内容相关,每个小节至少一张图。一篇完整文章通常需要6-10张配图。
- 金句点缀:每个小节可以有1个引用块(blockquote),放金句或关键数据。在微信排版中引用块非常醒目,是天然的"视觉锚点"。
- 深度展开每个论点:不要蜻蜓点水。每个小节围绕一个核心论点,至少包含:论点阐述(是什么)、原因分析(为什么)、案例/数据佐证(怎么证明)、实操建议或延伸思考(怎么用)。
- 善用小标题和列表:长文章需要清晰的导航结构。二级标题划分大板块,三级标题拆分细节,列表呈现并列信息。
- 结尾要有余韵:不要用"综上所述"这种学生作文式结尾。可以抛一个开放问题、给一个行动建议、或者用一句有力的总结收束。
- 文末互动自然:可以加"你怎么看?欢迎留言讨论"之类的引导语,但要写得自然,像是顺口一说,而不是模板化的"点赞关注转发"。
- 总字数目标3000-5000字:要有足够的深度和信息量。每个小节要展开充分,配合具体的数据、案例和分析,让读者觉得"这篇文章值得收藏"。
要避免的"AI味"写法:
- 不要用"首先...其次...再次...最后..."这种教科书式的枚举
- 不要每段开头都用"值得一提的是"、"不可否认"、"毋庸置疑"等套话
- 不要用过于工整的排比句,真人写作有自然的参差感
- 不要在文末做过于全面的"总结回顾",读者已经看过了,不需要你复述一遍
- 不要把所有信息平铺直叙,要有主次、有取舍、有节奏
关于图片:在写文章时,先用占位符描述需要什么图片,格式为 。后续阶段再替换为真实图片。
阶段四:生成配图
目标:为文章生成与主题相关的高质量手绘风格配图。
优先使用 baoyu-danger-gemini-web skill 生成配图:
这是首选的配图方案。通过 gemini-web 可以根据文字描述生成精美的手绘/信息图风格图片,风格统一、与文章内容高度相关。
-
规划配图内容:根据文章中每个  的位置和上下文,确定每张配图应该表达的核心信息。一篇完整文章通常需要 6-10张配图,类型可以包括:
- 概念解释图(用图示说明抽象概念)
- 流程/架构图(展示步骤或系统结构)
- 对比图(before/after、A vs B)
- 数据可视化(趋势、占比、排名)
- 场景示意图(应用场景、使用方式)
- 总结提炼图(核心要点的视觉化归纳)
-
调用 baoyu-danger-gemini-web 生成图片(首选方案):
- 直接使用 gemini-web skill 的图片生成能力,为每张图提供详细的中文描述 prompt
- 可以并行生成多张图片(使用
run_in_background),提高效率
- 也可使用
Skill("baoyu-infographic") 生成更复杂的信息图,适合需要结构化展示数据的场景
-
配图风格规范(默认风格:手绘信息图):
所有配图必须保持统一的视觉风格。以下是经过验证的默认风格 prompt 模板:
Generate a hand-drawn sketch style infographic in Chinese.
Theme: [具体主题].
[具体内容描述:展示什么元素、什么布局、什么标注文字].
Use blue (#4a6cf7) as accent color on white background.
Style: clean hand-drawn lines, minimalist, tech-illustration feel.
风格要点:
- 画风:手绘线条风(hand-drawn sketch style),干净简约,有科技插画感
- 背景:纯白色背景,不要复杂的纹理或渐变
- 主色调:蓝色
#4a6cf7 作为强调色,与文章排版主题色一致
- 辅助色:可根据需要添加橙色
#ff8c42 等对比色,但整体不超过2-3种颜色
- 文字:配图中的标注文字使用中文,字体清晰可读
- 构图:信息层次分明,有清晰的视觉流向(从上到下、从左到右)
- 元素:善用箭头、连接线、分层结构、图标符号等信息图常见元素
- 禁忌:不要写实照片风格、不要3D渲染、不要过于花哨的装饰、不要深色背景
不同类型配图的 prompt 侧重点:
- 架构图:强调层次(Top/Middle/Bottom layer)、箭头流向、组件名称标注
- 对比图:左右分栏,各自标注特征,中间用 vs 或箭头连接
- 流程图:步骤编号,箭头串联,每步简短标注
- 雷达图/数据图:清晰的坐标轴/维度标签,不同颜色区分数据系列
- 趋势图:时间线布局,里程碑节点标注,方向箭头暗示趋势
-
下载并上传到微信:将生成的图片上传到微信服务器获取CDN链接
python3 scripts/image_handler.py upload /path/to/generated_image.png
-
替换Markdown中的图片链接:将 placeholder 替换为微信CDN返回的URL
备选方案:使用外部图片
如果 baoyu-infographic 不可用或不适合当前场景,可以退回到搜索免费图片:
- 使用WebSearch搜索相关图片(关键词加 "unsplash" / "pexels" / "free stock")
- 下载图片:
python3 scripts/image_handler.py download "图片URL" -d /tmp/wechat_images
- 上传微信:
python3 scripts/image_handler.py upload /tmp/wechat_images/图片文件名
自动批量处理:如果文章中的图片链接已经是真实URL(而非placeholder),可以一步到位:
python3 scripts/image_handler.py process article.md -o article_processed.md
封面图:从文章图片中选一张最有视觉冲击力的作为封面,或使用 baoyu-infographic 单独生成。封面图建议尺寸:900×383像素(2.35:1比例),这是微信公众号的推荐比例。
阶段五:格式转换与排版
目标:将Markdown转换为微信兼容的精美HTML。
为什么需要特殊转换:微信公众号编辑器有许多限制——不支持外部CSS/JS、不支持class属性、所有样式必须内联到每个标签的style属性中。普通的Markdown转HTML工具生成的代码在微信中会显示为纯文本。
执行转换:
python3 scripts/html_converter.py article_processed.md -o article.html
转换器会自动:
- 将所有CSS样式内联到每个HTML标签
- 应用清新现代的蓝色主题排版(标题渐变背景、圆点列表、柔和阴影等)
- 处理微信不支持的HTML特性
排版风格说明:
- 主色调:#4a6cf7(优雅蓝),用于标题边框、加粗文字、列表圆点等
- 正文字号:15px,行高2倍,字间距0.8px,阅读舒适
- 段落间距宽松,给内容"呼吸感"
- 引用块使用淡蓝灰背景,柔和不抢眼
- 代码块使用深色主题(Catppuccin风格),圆角10px
- 图片带柔和阴影(0 4px 16px),圆角6px
自定义样式:样式配置在 assets/style_config.json,可以修改颜色、字号、间距等。如果用户要求不同的配色,可以直接编辑这个JSON文件。
检查HTML:转换后可以检查HTML文件,确保没有异常。常见问题:
- 图片URL是否都是
mmbiz.qpic.cn 开头的微信CDN链接
- 是否有遗留的 placeholder 未替换
- 表格是否正确渲染
阶段六:发布到草稿箱
目标:将完成的文章上传到微信公众号草稿箱。
一键发布:
python3 scripts/publish.py \
--input article.md \
--cover /tmp/wechat_images/cover.jpg \
--title "文章标题" \
--digest "120字以内的摘要"
默认作者为"会飞的猪猪侠",无需额外指定。如需自定义作者,添加 --author "其他作者" 参数。
publish.py 会自动完成:图片处理 → HTML转换 → 封面图上传 → 创建草稿
如果已有排版好的HTML:
python3 scripts/publish.py \
--html article.html \
--cover /tmp/wechat_images/cover.jpg \
--title "文章标题"
发布成功后:脚本会返回草稿的 media_id。告诉用户:
- 文章已成功保存到草稿箱
- 请登录微信公众平台(mp.weixin.qq.com)查看草稿并确认发布
- 文章不会自动群发,需要手动点击发布
脚本说明
所有脚本位于 scripts/ 目录下:
| 脚本 | 用途 | 何时使用 |
|---|
wechat_api.py | 微信API封装(token、上传、草稿) | 需要直接调用API时 |
html_converter.py | Markdown→微信HTML转换 | 需要转换排版时 |
image_handler.py | 图片下载/上传/替换 | 需要处理图片时 |
publish.py | 完整发布流程(一键执行) | 最终发布时 |
详细API文档见 references/api_reference.md。
错误处理指南
| 错误 | 原因 | 解决方法 |
|---|
40164 IP不在白名单 | 机器IP未加白名单 | 用 curl ifconfig.me 获取IP,添加到公众平台白名单 |
40001 access_token无效 | token过期或凭证错误 | 检查 .env 中的 AppID/AppSecret 是否正确 |
40009 图片大小超限 | 图片超过10MB | 压缩图片或换一张 |
48001 接口未授权 | 公众号类型不支持 | 需要认证的服务号或订阅号(已认证) |
| 图片下载失败 | 网络问题或URL无效 | 重新搜索图片或使用其他图片源 |
| HTML中图片不显示 | 未上传到微信CDN | 确保所有图片都通过 uploadimg 接口上传 |
注意事项
- 文章始终发布到草稿箱,不会自动群发,用户可放心使用
- 默认作者为"会飞的猪猪侠",可通过
--author 参数自定义
- access_token 有效期2小时,脚本自动管理刷新,无需手动操作
- 微信API有频率限制(每日100次素材上传),不要短时间大量操作
- 正文图片通过 uploadimg 接口上传,不占用永久素材名额
- 如果用户没有提供封面图,使用文章第一张配图作为封面
- 配图优先使用 baoyu-infographic skill 生成手绘风格图片,保证风格统一