Part Three · 规模化
07
Batch & Asset Management · 批量与产物管理

批量生成与产物管理

"出十张图"听起来像一个动作,实则是两个完全不同的问题:是同一句话的十个变体,还是十个不同资产的十张不同的图?分清这一点,再加上一套稳妥的命名与落地纪律,你就能把规模化出图从一团乱麻变成一条流水线。

规模化出图的第一道坎,不在工具,而在用词。当你说"给我来一套"时,技能必须先替你拆清楚:你要的是变体,还是多个资产?这两个词指向两条截然不同的执行路线,一旦混淆,要么浪费调用,要么交出一堆"长得一样却都不对"的图。

n 与"不同 prompt"的根本区别

技能里有一个参数叫 n——同一句提示词要画几张。它的语义只有一个:n 是"同一句话的多个变体",不是"多个不同的资产"。

换句话说,n=4 给你的是同一个主体、同一种风格、同一套构图意图下的四次掷骰子:四张近似的图,供你挑一张最顺眼的。而"封面 + 头像 + 配图 + Banner"是四个不同的资产,各自有各自的画面——它们需要四句不同的提示词,而不是 n=4

同样想要"四张图",两条路完全不同 一句 prompt · n=4 同句变体 SAME PROMPT → VARIANTS 四张近似 · 挑一张 四句 prompt · 四个资产 不同资产 DIFFERENT PROMPTS → ASSETS 封面 头像 Banner 配图 四张各异 · 全都要
左:一句 prompt + n 出一组相似变体。右:不同 prompt 出不同资产,缺一不可。
红线 · 别拿 n 当"不同资产"

需要 10 个不同的资产时,绝不要用 n=10 去凑。n 只会给你同一句话的 10 个变体——主体雷同、用途单一。不同资产 = 不同提示词:内置模式下逐个发调用,CLI 模式下用 generate-batch 喂多句 prompt。

关键判断

判别只问一句:"这些图彼此是替换关系,还是并列关系?" 替换关系(我只要其中一张)→ 用 n 出变体;并列关系(每一张都要交付)→ 写多句不同 prompt,每个资产一份。

内置批量:一个资产一次调用

这里要破除一个常见误解:"批量"这个词本身,不等于要切到 CLI。你想要很多张图,但没有点名命令行、API 或模型路径——那就留在内置 image_gen。内置模式下的批量法则只有一条:

内置批量的唯一法则

一个资产,一次 image_gen 调用。 要 10 张不同的图,就是 10 次内置调用,每次配一句为这个资产量身写的提示词。这不是低效,而是正确——因为每个资产本就该有自己的画面。

把"一套小红书 9 图"拆开

假设要为一篇笔记做成组 9 图。它们共享同一套视觉语言(同配色、同字体气质、同 3:4 竖版),但每一张承载的内容不同:首图最抓人、留白最多,后面 8 张分别讲一个点。正确的拆法是——1 句"共享风格基底" × 9 句"逐图内容"

RECIPE

小红书成组 9 图 · 内置批量拆解

Use case
productivity-visual / 成组图文(小红书笔记配图)
Asset type
9 张竖版配图,首图为封面,其余 8 张为内容页
执行策略
内置 image_gen,逐图 9 次调用(不是 n=9);共享风格写进每一句
Composition
3:4 竖版;接近比例的有效尺寸 1152×1536 直接出,或 1024×1536 再裁
共享基底
米杏底、衬线大标题、克制留白、统一点缀色——这段文字每一句都重复,保证整组一致
逐图变量
首图:大标题 + 极简(留白最多最抓人);2–9:各讲一个小标题 + 一组要点
Avoid
九张风格漂移、字体忽大忽小、首图信息过载
提示词 · 单图模板(重复 9 次,只换内容块)内置 image_gen
为小红书竖版配图(3:4),米杏底、克制留白、衬线大标题、统一点缀色——这是第 N/9 张:本图标题,下方排本图三条要点。整体安静、学者气,不要堆砌装饰;首图(N=1)留白最多、只放主标题。
成组一致逐图内容

你只需把这句模板里的占位逐图替换,发 9 次内置调用即可。共享基底那段一字不动地重复出现在每一句里——这正是让 9 张图"看起来是一套"的关键。下面是把这个循环交给智能体的样子:

terminal · 内置循环
$ codex exec "按小红书 3:4 成组 9 图:共享米杏底+衬线大标题+统一点缀色; 逐图内容我给你 9 条,请对每张单独发一次内置 image_gen 调用, 首图留白最多。出完把 9 张都落地到 ./output/xhs-note/。" # 智能体内部:循环 9 次内置调用,一个资产一张图——不是 n=9 # 每次调用共享同一段风格基底,仅替换该图的标题与要点
提示:关于"1080×1920 不是有效尺寸、9:16 要在 1152×2048 出再降采样"这类平台像素换算,留到平台尺寸专章细讲;这里只需记住:成组图用内置出接近比例的底图,再本地裁切到平台精确像素。

CLI generate-batch 与 JSONL 批文件

什么时候才动用 CLI 的批量?只有两个条件同时成立:用户明确点名要走 CLI / API / 模型路径,并且确实要一次性跑很多句不同的 prompt。这时 generate-batch 才登场——它需要 OPENAI_API_KEY,并吃一个 JSONL 批文件:每行一个 JSON,描述一个独立任务。

红线 · "batch"这个词不等于 CLI

再强调一次:用户说"批量"不构成切到 CLI 的理由。没点名命令行就留在内置,一个资产发一次内置调用。只有当用户主动要 scripts/image_gen.py、API 或精确路径/尺寸控制,generate-batch 才是对的工具。另外注意:内置或 CLI gpt-image-2 都绝不静默降级到 gpt-image-1.5——要换模型先问。

JSONL 批文件属于中间产物,放进 tmp/imagegen/,用完即删;终稿图写到 output/imagegen/。文件名要稳定、有描述性。一个最小批文件长这样:

terminal · CLI generate-batch
# 1) 写 JSONL 批文件到中间目录(每行一个独立 prompt = 一个不同资产) $ cat tmp/imagegen/xhs-set.jsonl {"prompt": "小红书封面:米杏底,衬线大标题'三步出图',极简留白", "size": "1024x1536"} {"prompt": "小红书内容页:要点①n是同句变体,米杏底统一点缀色", "size": "1024x1536"} {"prompt": "小红书内容页:要点②不同资产=不同prompt,同一风格基底", "size": "1024x1536"} # 2) 跑批:读 JSONL,逐行生成,终稿写 output(描述性、稳定文件名) $ python scripts/image_gen.py generate-batch --input tmp/imagegen/xhs-set.jsonl --out-dir output/imagegen/xhs-set/ # 3) 收尾:中间 JSONL 用完删除,终稿留在 output $ rm tmp/imagegen/xhs-set.jsonl

内置批量

无需 Key。一个资产一次内置调用,循环 N 次。共享风格写进每句、逐图替换变量。默认就走这条。

CLI generate-batch

需 OPENAI_API_KEY。用户明确点名 CLI、且要很多句不同 prompt 时才用。JSONL 进 tmp/imagegen,终稿进 output/imagegen

命名与产物管理

批量一多,文件名就是你唯一的导航。几条原则贯穿始终:

场景怎么命名放哪里
成组 9 图的某一张xhs-page-04.png(补零对齐,可排序)output/…/ 工作区
同一资产改了一版hero-v2.png(版本化兄弟名)与原图同目录
编辑后的成品item-icon-edited.png工作区,不覆盖原图
CLI 的 JSONL 批文件xhs-set.jsonl(描述性)tmp/imagegen/,用完删
n 挑剩的变体删除,不必保留

落地铁律:每个交付物进工作区

内置工具默认把图存到 $CODEX_HOME/generated_images/...。这对"只是预览"足够,但对项目要用的资产是致命的——它不在你的工作区里,发布时就会"找不到图"。批量场景下这条尤其要命:一组 9 张,只要漏移一张,整套就残缺。

  1. 生成在默认路径

    内置调用先把每张图落在 $CODEX_HOME/generated_images/

  2. 逐一 move / copy 进工作区

    收尾前把每一个交付物移进项目目录,并按命名规范改成稳定描述性文件名。

  3. 校验数量与覆盖

    9 张就该有 9 个文件;确认没覆盖已有资产、没漏移、没把成品只留在默认路径。

红线 · 项目资产绝不只留在 $CODEX_HOME

任何"项目要用"的产物,都必须落地进工作区。批量交付时,每一个交付物都要单独 move/copy 过去——而不是只搬"代表性的那一张"。预览图可以留在默认路径,但交付物不行。

最后,无论走内置还是 CLI,收尾时都汇报三件事:每个文件的最终保存路径、用到的最终提示词、以及用了哪种模式。批量场景下,把这三件事按资产列成清单,对方一眼就能核对"该有的都在、都对"。

本章 TL;DR

n 是变体,不是资产。 同一句话要几张相似图用 n;要多个不同资产就写多句不同 prompt。"批量"一词不等于 CLI:默认留在内置,一个资产一次调用、循环 N 次。只有用户明确点名 CLI 且要很多句 prompt 时,才用 generate-batch(JSONL 进 tmp/imagegen,终稿进 output/imagegen)。命名要稳定且具描述性、不覆盖已有资产、舍弃的变体不留;铁律是每个交付物都落地进工作区,收尾汇报路径、提示词与模式。