作者:行者全栈架构师
来源:腾讯云开发者社区
发布日期:2026-09-09
概述
微信公众号技术文章的发布链路——从 Markdown 排版到图片上传、再到推送草稿箱,通常一篇要 90 分钟。本文记录如何用 WorkBuddy 把这条链路沉淀成可复用技能 wechat-mp-publisher:首次约 40 分钟跑通技能创建、示例稿件和凭据配置,之后每篇只要 7 分钟。全程 19 张实操截图、3 个真实踩坑,最终产出是后台草稿箱里可验收的一篇文章。
- 难度:中级
- 适用读者:内容运营、新媒体从业者、个人公众号运营者、AI 办公工具评估者
- 环境:WorkBuddy 桌面端 5.5.3(2026-09),微信公众号(已认证订阅号)
- 行业领域:内容运营/新媒体
- 使用模式:云端助理(自定义技能)
1. 场景开篇
2026 年 9 月 8 日,22:05,我坐在家里电脑前。
我运营着一个技术公众号「行者架构谈」,文章都是本地 Markdown 写的。写是快,但每次发稿都要经历一遍发布链路:
- Markdown 贴进公众号编辑器重新排版,代码块没有语法高亮,只能复制成纯文本
- 表格一长就错位,要手动调
- 引用、列表、图注一个个手工处理
一篇 4000 字带 8 个代码块的文章,上次我花了 1 个半小时,其中排版就占 40 多分钟。
排版完还有图片环节:2 张正文图加 1 张封面图,全部手动上传、手动插入。封面还得先裁成 2.35:1。预览发现代码块溢出,重新来,而且这次排出来的效果和上次不完全一样。
上个月我发了 8 篇稿子,累计在"排版 + 传图 + 推草稿箱"上花了 11 个小时左右。这类工作机械但费时间,更难受的是排版质量看状态——同样的文章类型,排出来的样子每次都有细微差别,账号的视觉一致性受影响。
我当时就想:这条链路是固定的——Markdown 进,HTML 出,图片上传,草稿箱推送。如果把它沉淀成一个技能,下次说一句"发这篇"就够了。
WorkBuddy 有技能体系,我决定用它把"微信公众号内容排版并发布到草稿箱"从零跑通一遍。
2. 技能创建:wechat-mp-publisher
2.1 技能结构
技能本质是一个带说明文档的脚本包,WorkBuddy 在对话中自动识别并调用。核心文件:
wechat-mp-publisher/
├── SKILL.md # 技能描述与调用契约
├── scripts/
│ ├── md2wx.py # Markdown → 微信公众号 HTML 转换
│ ├── upload_image.py # 图片上传至公众号素材库
│ └── push_draft.py # 推送至草稿箱
└── config.json # 公众号 AppID/Secret 等凭据
2.2 Markdown 转公众号 HTML 的关键规则
微信公众号编辑器对 HTML 有限制,转换时需要处理:
| 原始 Markdown 元素 | 公众号支持情况 | 处理方式 |
|---|---|---|
| 代码块 | 无语法高亮 | 用 <pre><code> 包裹,手动着色 |
| 表格 | 有限支持 | 转为图片或用 <table> 简化样式 |
| 引用 | 支持 | 转为 <blockquote> 并加边框样式 |
| 图片 | 需先上传 | 本地路径 → 调用素材库 API → 替换 URL |
| 标题 H1-H6 | 支持 | 映射为公众号对应标签 |
2.3 图片上传与替换流程
本地 Markdown 中的图片路径
↓
调用 upload_image.py(需配置 AppID/Secret)
↓
获取公众号素材库 media_id 或 URL
↓
替换 Markdown 中的本地路径
↓
最终 HTML 中所有图片均为可访问 URL
3. 三个真实踩坑
踩坑 1:IP 不在白名单
现象:调用接口返回 1:40164 — IP 不在白名单
根因:微信公众号 API 要求服务器 IP 加入白名单,WorkBuddy 本地运行时的出口 IP 与备案 IP 不一致。
解法:登录微信公众平台 → 开发管理 → 基本配置 → IP 白名单,将当前出口 IP 添加进去。
踩坑 2:封面图比例不对导致上传失败
现象:封面图上传后显示异常
根因:公众号要求封面图比例为 2.35:1,直接传原图会出错
解法:上传前自动裁剪:
from PIL import Image
def crop_cover(src: str, dst: str, ratio: float = 2.35):
img = Image.open(src)
w, h = img.size
target_w = int(h * ratio)
if target_w > w:
# 太宽,居中裁剪
left = (w - target_w) // 2
img = img.crop((left, 0, left + target_w, h))
img.save(dst, quality=85)
踩坑 3:代码块排版溢出
现象:长代码行在公众号里横向溢出,无法换行
根因:公众号 <pre> 标签默认不换行,代码块内无 white-space: pre-wrap
解法:在生成的 CSS 中加入:
pre {
white-space: pre-wrap !important;
word-break: break-all;
}
4. 最终效果
- 首次配置:约 40 分钟(技能创建 + 示例稿件 + 凭据配置)
- 后续每篇:7 分钟(说一句"发这篇" + 等待执行 + 验收)
- 排版一致性:固定模板,不再因状态影响输出质量
- 总耗时节省:单篇从 90 分钟降至 7 分钟,月度累计节省约 8 小时
5. 技能目录与调用方式
在 WorkBuddy 对话中直接说:
用微信公众号技能发布这篇稿件:/path/to/article.md
WorkBuddy 会自动加载 wechat-mp-publisher 技能,执行完整链路,完成后给出草稿箱链接供人工验收。
本文由腾讯云开发者社区收录,作者:行者全栈架构师