你的公众号配图也可以自动化——Pillow画架构图+豆包生成Banner
现状之痛:文章写好了,配图还没做——要么花半小时画图,要么随便找张图凑数。
读完你将:学会用 Pillow 自动生成架构图、用豆包 API 一键生成封面,图片直接进微信素材库。
一、你的配图流程,现在是怎么做的?
大多数人做公众号配图,流程是这样的:
打开PPT/PS → 画框框+箭头 → 导出图片 → 打开微信编辑器
→ 上传素材库 → 插到文章中 → 发现位置不对 → 重新调整
一篇文章配3张图,轻松耗掉1小时。OPC创业者最缺的就是时间。
这是我在上一篇文章([一个人就是一个编辑部——OPC自动化内容工厂搭建指南](待补链接))中搭建了内容生成流水线后,发现的下一个瓶颈——内容有了,图没有。
所以我给自己搭了一条配图流水线。架构图用 Pillow 脚本自动画,封面用豆包 API 一键生成。今天我把它拆开给你看。

*▲ 配图流水线:Pillow生成架构图 + 豆包生成封面 → 上传素材库 → 嵌入文章*
二、第1步:用 Pillow 自动生成架构图
架构图是最常需要、也最适合自动化的配图类型——框、箭头、文字,位置固定,重复性高。
下面这个脚本,100行生成一张完整架构图:
from PIL import Image, ImageDraw, ImageFont
# 字体(需要支持中文)
FONT = '/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc'
font = ImageFont.truetype(FONT, 15)
font_title = ImageFont.truetype(FONT, 18)
# 创建画布
img = Image.new('RGB', (800, 400), (15, 23, 42))
draw = ImageDraw.Draw(img)
# 画层(4层架构)
layers = [
(50, "#3b82f6", "内容层", "AI内容生成·Pipleline编排"),
(130, "#8b5cf6", "交付层", "自动化内容工厂·质量门控"),
(210, "#06b6d4", "服务层", "智能客服·自动响应"),
(290, "#10b981", "增长层", "数据驱动·A/B测试"),
]
for y, color, title, desc in layers:
draw.rounded_rectangle((60, y, 740, y+65), 8, fill=color)
draw.text((400, y+10), title, fill="white", font=font_title, anchor="mt")
draw.text((400, y+38), desc, fill="#dbeafe", font=font, anchor="mt")
img.save("architecture.png")
这段代码核心就三件事:
- 建画布:800×400像素,深色背景
- 画框:
rounded_rectangle画出每层 - 写字:
text标注名称和描述
✅ 验证:脚本跑完就出图,前后不到1秒。
踩坑:字体路径是最大的坑。Noto Sans CJK 的中文字体在服务器上可能在 opentype/noto/ 而不是 truetype/noto/。找不到中文路径时 Pillow 不会报错,但文字会显示为方框。先 find /usr/share/fonts -name "*.ttc" 确认路径再写脚本。
价值:同一套脚本每次生成风格一致。改一行代码加个新层,不用重新开软件。
▸ 认知跃迁:配图不是设计工作,是编程工作。一旦你把「画图」变成「跑脚本」,它就自动了。
三、第2步:用豆包 API 一键生成封面图
封面/Banner图需要设计感和视觉冲击力,Pillow 不适合。这里我用火山引擎的豆包文生图模型。
一行命令,一张封面:
curl -s "https://ark.cn-beijing.volces.com/api/v3/images/generations" \
-H "Authorization: Bearer $VOLC_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model":"ep-你的EndpointID",
"prompt":"一张科技感公众号封面图,深蓝底色,简洁几何线条,左上角留白放标题",
"n":1,
"size":"1920x1920"
}'
返回结果里有一个下载链接,拿到图片后上传微信素材库即可。
关键参数:
model:不是模型名,是火山引擎控制台里创建的 Endpoint ID(格式ep-2026xxxxxxxx-xxx)size:最小1920×1920(368万像素,小于这个尺寸会报错)prompt:中文即可,说清楚画面风格和留白位置
✅ 验证:这条命令我在你眼皮底下跑过,返回的图片 URL 可以浏览器打开预览。
踩坑:Endpoint ID 不是模型名。很多人把 doubao-seedream-5-0 当成 model 参数传进去,结果是「模型不存在」。需要先去火山引擎控制台创建一个 endpoint,把返回的 ep-xxxx 填入 model 字段。
价值:以前找个设计师出封面200块起步。现在一行 curl 搞定。不满意就换个 prompt 再来一张,零成本。
▸ 认知跃迁:「设计」正在从人工技能变成 API 调用。你不需要会设计,你需要会描述。
三、第3步:统一上传微信素材库
两种图(Pillow出的PNG、豆包出的JPG)走同一套上传流程:
import urllib.request, json
# 获取token
url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential" \
f"&appid={APP_ID}&secret={APP_SECRET}"
token = json.loads(urllib.request.urlopen(url).read())["access_token"]
# 上传图片到素材库
url = f"https://api.weixin.qq.com/cgi-bin/material/add_material" \
f"?access_token={token}&type=image"
# multipart上传图片文件...
# 返回 {"media_id": "xxx", "url": "https://mmbiz.qpic.cn/..."}
返回的 url 就是微信 CDN 链接,可以直接在文章正文中引用。
四、第4步:嵌入文章(关键!格式不对会被拦)
图片上传到素材库后,在文章 HTML 中嵌入时要严格使用这种格式:
<!-- ✅ 正确方式:发布门禁不会拦截 -->
<img data-src="https://mmbiz.qpic.cn/mmbiz_png/xxxxx/640?wx_fmt=png"
class="rich_pages wxw-img"
style="width:100%;" />
三个要点,缺一不可:
- 用
data-src代替src(这是微信编辑器生成的规范格式) - 加
class="rich_pages wxw-img"(告诉微信这是文章正文图) - 图片必须在微信素材库中(域名
mmbiz.qpic.cn)
❌ 错误的格式(发布时提示「不合法的图文链接」):
<img src="http://example.com/my-image.png" />
踩坑:这个坑我亲自踩过。之前用 src= 格式嵌入,提交发布时被微信风控拦截,提示「请勿插入不合法的图文链接」。把 src 改成 data-src 加上 class,问题解决。
五、把四步串起来:一条命令跑通全链路
以上四步可以串成一个脚本。我每天写完文章后跑一条命令:
python3 gen_arch_diagram.py # Pillow出架构图
python3 gen_banner.py "主题描述" # 豆包出封面
python3 upload_to_wechat.py # 上传素材库
整个过程自动化,耗时从以前的手动30分钟缩短到10秒。
✅ 验证:本文的配图就是这条流水线的产出——架构图来自 Pillow,封面来自豆包,都上传到了微信素材库。
价值:文章 + 配图 = 完整交付物。读者看到的不是「干巴巴的文字」,而是「图文并茂的保姆级教程」。
▸ 认知跃迁:配图不是独立任务,它是内容流水线的一个工序。把它编进流水线,它就不需要你操心了。
六、此刻的你
此刻的你,已经不再是那个「为了配一张图打开PS折腾半小时」的内容创作者。你正在成为一个能用代码生成配图、用 API 设计封面的系统搭建者。
在下一篇里,我们给这条流水线装上护栏——让 Agent 不仅会干活,还干得不出错。
️ 实体:Pillow, 火山引擎, 豆包, ImageMagick 价值:配图自动化, 内容流水线, OPC效率工具 认知:从设计到编程——配图不是创意工作是工程工作

浙公网安备 33010602011771号