参考图生成公众号封面与分享图
一句话:参考图 → 备选插画 → 模板截屏 → 封面/分享图/贴图 → manifest 验收。
4 句可直接复制的开场白
- 「用这张参考图生成一套公众号封面和分享图:封面 900×383,分享图 1200×960」
- 「没有新参考图,就用技能内置的,生成一套 HUD 科技风封面和分享图」
- 「参考图在_,主题是_,生成封面、5:4 分享图,再配一张竖版正文贴图」
- 「只预演不要出图:参考图____,告诉我用哪些模型、尺寸和提示词」
什么时候用我 / 什么时候别用我
用我:给公众号文章配封面与分享图;把一张人物/产品参考图延展成整套视觉;需要精确像素、中文排版不出错;后续写文章时直接调用参考图视觉流程。
别用我:已有排版 HTML、只想发布;多源深度调研;视频生成;纯平面海报设计。
依赖
- ComfyUI + Qwen-Image 2.1(仅
generate需要):默认 APIhttp://127.0.0.1:8188,模型名在scripts/config.json的comfyui段。10GB 显存可跑 1344×768 / 768×1344。 - Chrome 或 Edge(
compose截屏用),路径在scripts/config.json的chrome段。 - Python 3.8+:
pip install pillow。 - 在项目根目录运行脚本;输出路径按你传入的
--out解析。
流程(五步)
① 选参考图 → ② 生成备选插画 → ③ 挑图 → ④ 套模板出封面/分享图 → ⑤ manifest 验收
① 选参考图:有新参考图就传 --ref;没有就省略,自动用内置 assets/reference/sapphire-queen-ref.png。脚本会打印实际使用的参考图、来源(explicit / bundled)和 sha256。SkillHub 包不收二进制文件,内置参考图以 sapphire-queen-ref.b64.txt(JPEG q92 压缩副本)随包分发,首次运行会自动还原成图片文件再使用。
② 生成备选插画(每条 3 张,默认种子已内置):
# 封面:横版 1344×768
python <本skill>/scripts/visual.py generate --kind cover --ref E:\path\新参考图.png --out pic\<slug>\art-cover
# 分享图:竖版 768×1344
python <本skill>/scripts/visual.py generate --kind share --out pic\<slug>\art-share
# 可选:正文横版 / 竖版贴图
python <本skill>/scripts/visual.py generate --kind inline --out pic\<slug>\art-inline
python <本skill>/scripts/visual.py generate --kind inline-portrait --out pic\<slug>\art-inline-portrait
没有新参考图时,去掉 --ref 即可。只想看计划、不联网:
python <本skill>/scripts/visual.py generate --kind cover --out pic\<slug>\art-cover --dry-run
③ 挑图:逐张看原图。优先选主体一致性高、无文字/水印、构图留白符合模板、脸和手没有明显崩坏的那张。封面选主体在左、右侧干净的;分享图选主体完整、竖版构图稳的。
④ 套模板(HTML 截屏,精确像素):
# 封面 900×383
python <本skill>/scripts/visual.py compose --kind cover `
--art pic\<slug>\art-cover\cover-a-s20261221.png `
--out pic\<slug>\封面-900x383.png `
--h1 "标题第一行\n标题第二行" --sub "一句话副标题" --pill "封面" `
--code "REFERENCE / COVER / 900×383" `
--meta "COVER 900×383 / SHARE 1200×960 / LOCAL ONLY" `
--manifest pic\<slug>\封面.manifest.json
# 分享图 1200×960(三张插画;只传 --art1 会三张复用同一张)
python <本skill>/scripts/visual.py compose --kind share `
--art1 pic\<slug>\art-share\share-a-s20261231.png `
--art2 pic\<slug>\art-share\share-b-s20261232.png `
--art3 pic\<slug>\art-share\share-c-s20261233.png `
--out pic\<slug>\分享图-1200x960.png `
--h1 "标题第一行\n标题第二行" --badge "公众号 · 视觉套图" `
--eyebrow "REFERENCE / COVER + SHARE" `
--code "COVER 900×383 · SHARE 1200×960" `
--manifest pic\<slug>\分享图.manifest.json
# 可选:正文贴图
python <本skill>/scripts/visual.py compose --kind inline --art <插画> --out pic\<slug>\贴图-1080x720.png --h1 "标题\n贴图"
python <本skill>/scripts/visual.py compose --kind inline-portrait --art <插画> --out pic\<slug>\贴图-1080x1440.png --h1 "标题\n分享图"
--h1支持真实换行和字面量\n;标题过长会自动缩小字号,缩到下限仍放不下会直接报错,不会静默丢字。- 单行建议:封面 ≤6 个汉字、分享图 ≤8 个、横版/竖版贴图 ≤6 个(见排障表)。
compose默认阈值读scripts/config.json:封面 800KB、其它 1000KB;超过自动转 JPEG 并改用.jpg;--max-kb 0关闭。- 输出路径写
.jpg时也会强制转 JPEG;用户文案里的< > &会自动转义。 - 其余文案参数均可省略:
--badge --eyebrow --pill --meta --tag --serial --stamp --year --vlabel --meta1 --meta2 --fig --mode --readout-k --readout-num --readout-unit,compose --help可查全量。
⑤ 验收:
python <本skill>/scripts/visual.py verify --kind cover --file pic\<slug>\封面-900x383.png
python <本skill>/scripts/visual.py verify --kind share --file pic\<slug>\分享图-1200x960.jpg
verify 返回实际尺寸、字节数、sha256 和 ok;尺寸必须是 900×383 / 1200×960 / 1080×720 / 1080×1440 之一。manifest 里记录了参考图、插画、模板和 sha256,可直接回填到文章素材清单的 cover 字段。
与 one-line-wechat-article 的配合
写公众号文章时,在“配图两件套”这一步直接调用本技能:
- 用户给了新参考图 →
generate --ref <新图>。 - 用户没给 → 省略
--ref,用内置参考图。 - 先
generate出备选,挑图后再compose出封面/分享图;需要正文贴图时加inline/inline-portrait。 - 把
compose产出的路径和 sha256 回填到文章素材清单的cover字段。
排障
| 症状 | 处理 |
|---|---|
ComfyUI 输出文件不存在 |
检查 scripts/config.json 的 comfyui.output 是否指向真实 ComfyUI output 目录 |
| 提交任务 400 / 节点缺失 | 确认 Qwen-Image 2.1 工作流可用,模型名与 config.json 一致 |
| 上传参考图失败 | 确认 ComfyUI 在跑,API 地址可访问;参考图必须是 PNG/JPG |
| 截屏失败找不到浏览器 | 在 scripts/config.json 的 chrome 里补本机 Chrome/Edge 路径 |
| 标题溢出 / 丢字 | 脚本会按模板宽度自动缩字;缩到下限仍放不下会报错。单行建议:封面 ≤6 个汉字、分享图 ≤8 个、贴图 ≤6 个;太长就用 \n 拆行 |
| 输出超过限制 | 默认按类型自动转 JPEG(封面 800KB、其它 1000KB);仍超就降低 --jpeg-quality 或减少插画细节 |
PowerShell 脚本中文乱码 / unrecognized arguments |
.ps1 存成 UTF-8 with BOM(PowerShell 5.1 会把无 BOM 文件按 ANSI 读);终端直接粘贴命令不受影响 |
| 生成图带文字 | 提示词已禁止文字;仍出现就换种子重生成,不要用带字的图 |
本地自检
python -m unittest discover -s <本skill>/scripts/tests -v # 29 项离线回归,不需要 ComfyUI
目录结构
SKILL.md
scripts/
visual.py generate / compose / verify / info 四个子命令
config.json Chrome 路径、四套尺寸、ComfyUI 模型名
tools/shot.py Chrome 无头精确截屏
templates/ 4 套 HUD 模板(封面/分享图/横版贴图/竖版贴图)
tests/ 29 项离线回归
assets/reference/
sapphire-queen-ref.png 内置默认参考图
sapphire-queen-ref.b64.txt 参考图 base64 副本(SkillHub 分发用,首次运行自动还原)
references/
workflow.md 完整流程、manifest 字段、验收标准
prompt-recipes.md 四类提示词与覆盖方式