电商运营和内容团队最头疼的事,从来不是"没有图",而是"图不够用"。一个上新季,几十个SKU要主图、要详情页、要活动海报、要公众号封面、要朋友圈九宫格,设计排期永远排到两周后。这两年图像生成模型的能力已经足够撑起一部分商用素材的生产,但真正卡住大家的不是模型本身,而是"怎么把一张张图稳定、批量、可复用地造出来"。我最近用 gpt-image-2 搭了一套批量生成营销素材的工作流,从商品图到海报再到文章封面,跑通之后单张成本压到了几毛钱级别,出图节奏从"等设计"变成"自己动手十分钟一批"。这篇就把整套思路、参数、踩过的坑和能直接抄的代码都摊开讲清楚,适合电商运营、内容编辑、独立开发者,以及任何想用 AI 把素材产能拉起来的人。
1. 先想清楚:为什么是"工作流"而不是"抽卡"
1.1 单张生成和批量生产,是两件完全不同的事
很多人第一次接触图像生成,是在网页对话框里输入一句话,等几十秒,出来一张图,觉得不错就保存,觉得不行就重抽。这个模式在"我就想要一张好看的图"的场景下没问题,但一旦进入营销素材的生产场景,它立刻崩掉。原因很简单:营销素材的核心诉求不是"好看",而是"成套、统一、可替换、可追溯"。
举个具体的例子。你要给一款保温杯做一组主图,需要白底图、场景图、卖点图、对比图、细节图,一共五张。如果每张都靠手动抽卡,你会遇到三个致命问题。第一是风格漂移,五张图的光线、色调、构图各走各的,放在详情页里像五个不同品牌的产品。第二是不可复现,今天抽到一张满意的,明天想微调一下文案位置,你根本没法回到那个状态。第三是效率天花板,一个人一天手动抽卡能出二十张有效图就算高产,但一个上新季可能要几百张。
工作流要解决的就是这三件事。它把"生成一张图"拆解成一组可配置的参数:主体描述、风格模板、尺寸比例、背景处理、文字叠加规则。参数固定下来,风格就统一了;参数存成配置文件,就能复现;参数批量喂进去,就能规模化。这才是"批量生成营销素材"的真正含义,不是把同一句话复制一百遍,而是把一套经过验证的生成逻辑,套用到一百个不同的商品上。
1.2 gpt-image-2 在这个链路里扮演什么角色
gpt-image-2 是这套工作流的"渲染引擎"。它负责把结构化的提示词翻译成像素。相比早期模型,它在几个对营销素材特别关键的能力上有明显提升:一是对长提示词的遵循度更高,你能把"左上角留白放标题、主体居中偏下、背景是浅灰渐变"这种空间指令写进去,它大概率能照做;二是文字渲染能力增强,海报上的中文标题、价格标签、活动角标,虽然还不能完全替代设计软件排版,但作为初稿已经能看;三是风格一致性更好,同样的风格描述词,连续生成多张,色调和质感不会跳得太离谱。
但要注意,gpt-image-2 不是万能的。它不负责排版逻辑,不负责品牌规范校验,也不负责把生成结果自动切图适配不同平台。这些恰恰是工作流要补上的部分。把模型当成一个"很听话但需要精确指令的画师",你的工作就是当那个写清楚需求、并且能批量下需求的人。
1.3 一套工作流的最小构成
我最终跑通的这套东西,拆开看就四块:
- 提示词模板层:把商品信息、风格要求、构图规则拆成可填充的变量,用模板拼装成完整提示词。
- 批量调度层:读取商品清单(CSV 或数据库),循环调用接口,处理并发、重试、限流。
- 后处理层:对生成结果做尺寸裁剪、格式转换、水印叠加、命名归档。
- 质检与归档层:人工抽检 + 自动记录每张图对应的提示词和参数,方便回溯和复用。
这四块里,真正决定成败的是第一块和第四块。提示词模板决定了出图质量的下限,归档记录决定了这套东西能不能长期用下去。中间两层反而是工程问题,写代码就能解决。
2. 提示词模板:把"感觉"翻译成"参数"
2.1 营销素材的提示词该有哪几个固定槽位
我试过很多种提示词结构,最后稳定下来的模板包含六个槽位,缺一不可。这套结构的好处是,无论你生成的是商品图、海报还是封面,填空逻辑都一样,团队里谁都能上手。
第一个槽位是主体描述。这是最核心的,要写清楚"是什么、什么材质、什么颜色、什么状态"。比如"一款哑光黑色的不锈钢保温杯,杯身有细密的竖向拉丝纹理,杯盖是磨砂塑料材质"。注意这里不要写"好看的""高级的"这种主观词,模型对这类词的理解非常随机,要写具体的物理特征。
第二个槽位是场景与背景。营销素材常见的背景有几类:纯白底(电商主图)、浅灰渐变(详情页)、生活场景(场景图)、纯色块(海报底)。写的时候要明确"背景是什么、有没有道具、光线从哪来"。
第三个槽位是构图与留白。这是最容易被忽略但最影响可用性的一项。你要明确告诉模型"主体在画面中的位置"和"哪里要留白"。比如"主体居中,占画面高度三分之二,顶部留出四分之一空白用于放置标题文字"。
第四个槽位是风格与质感。是写实摄影风、3D 渲染风、扁平插画风还是杂志大片风?质感上要写清楚"柔和自然光""硬光高对比""影棚布光"这类具体描述。
第五个槽位是色彩倾向。品牌色是什么,整体色调偏冷还是偏暖,饱和度高低。这一项直接决定了一组图放在一起是否协调。
第六个槽位是技术参数。尺寸比例、清晰度要求、是否需要透明背景。这部分通常通过接口参数传递,但也可以在提示词里强调。
把这六个槽位写成模板,大概长这样:
{主体描述},{场景与背景},{构图与留白},{风格与质感},{色彩倾向},{技术参数}实际填充后可能是:
一款哑光黑色的不锈钢保温杯,杯身有细密的竖向拉丝纹理,杯盖是磨砂塑料材质, 放置在浅灰色渐变背景前,背景干净无杂物,主体居中,占画面高度三分之二, 顶部留出四分之一空白,写实摄影风格,柔和自然光从左上角打来, 整体色调偏冷,低饱和度,高级感,4:3 比例,高清细节2.2 为什么槽位顺序不能随便调
我一开始觉得提示词就是一堆词的堆砌,顺序无所谓。实测下来完全不是。模型对提示词的处理有明显的"注意力衰减",越靠前的词权重越高。所以顺序要遵循一个原则:越不可妥协的要求,越往前放。
主体描述必须放第一位,因为主体错了整张图就废了。场景和背景放第二位,因为它决定了画面的整体氛围。构图和留白放第三位,因为它影响后期能不能用。风格、色彩、技术参数依次往后。如果你把"4:3 比例"这种技术参数放在最前面,模型可能会为了满足比例而牺牲主体质量,得不偿失。
还有一个细节:否定词要慎用。很多人喜欢写"不要有文字""不要有杂物",但图像模型对否定词的处理很不稳定,有时候反而会把"文字""杂物"生成出来。更稳妥的做法是用正向描述替代,比如不写"不要有文字",而是写"纯净背景,无任何文字元素"。用"无"字开头的正向短语,比"不要"开头的否定句效果好得多。
2.3 商品信息怎么自动填进模板
手工填模板只能应付几张图,批量生产必须自动化。我的做法是维护一张商品信息表,用 CSV 或数据库都行,字段包括:商品名称、核心卖点、材质、颜色、目标场景、品牌色、尺寸要求。然后用脚本读取每一行,把字段映射到模板槽位里。
这里有个关键技巧:卖点字段不要直接塞进提示词。比如"保温 24 小时"这种卖点,模型没法把它画出来,硬塞进去只会干扰画面。卖点应该走另一条路——作为后期文字叠加的内容,而不是生成内容。提示词里只放"能被画出来的东西",这是很多人踩过的坑。
我整理了一份字段映射对照,供参考:
| 商品表字段 | 映射到模板槽位 | 处理方式 |
|---|---|---|
| 商品名称 | 主体描述 | 直接填入,补充材质颜色 |
| 材质 | 主体描述 | 直接填入 |
| 颜色 | 主体描述 + 色彩倾向 | 主体颜色直接填,整体色调参考品牌色 |
| 目标场景 | 场景与背景 | 按预设场景库映射成具体描述 |
| 品牌色 | 色彩倾向 | 转成色调描述词 |
| 尺寸要求 | 技术参数 | 转成比例参数传给接口 |
| 核心卖点 | 不进入提示词 | 留给后处理层做文字叠加 |
2.4 场景库和风格库:把重复劳动沉淀下来
批量生产最怕每次都要重新想描述词。解决办法是建两个库:场景库和风格库。场景库存放常用的背景描述,比如"纯白无缝背景""浅灰渐变背景""原木桌面场景""大理石台面场景""户外自然光场景"。风格库存放常用的风格描述,比如"写实摄影风""3D 产品渲染风""扁平插画风""杂志大片风"。
建库的好处是,商品表里只需要填"场景=纯白""风格=写实",脚本自动去库里取完整描述。这样既保证了同一批图的风格统一,又让非技术人员也能操作——运营只需要在表格里选选项,不需要懂提示词工程。
我现在的场景库大概有二十条,风格库有八条,覆盖了日常百分之九十的需求。遇到新场景再往里加,越用越顺手。这个库本身也是资产,团队换人也不会丢。
3. 批量调度:让几百张图自己跑出来
3.1 接口调用的基本结构
gpt-image-2 通过 API 调用,基本流程是:构造请求体(包含提示词、尺寸、数量等参数),发送请求,接收返回的图像数据,保存到本地。单次调用很简单,难的是批量调用的稳定性。
一个最简的调用示例大概是这样:
import requests import base64 import os def generate_image(prompt, size="1024x1024", save_path="output.png"): response = requests.post( "https://api.example.com/v1/images/generations", headers={ "Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json" }, json={ "model": "gpt-image-2", "prompt": prompt, "size": size, "n": 1, "response_format": "b64_json" }, timeout=120 ) data = response.json() image_b64 = data["data"][0]["b64_json"] with open(save_path, "wb") as f: f.write(base64.b64decode(image_b64)) return save_path这段代码能跑通单张,但直接拿去做批量会出问题。下面几节讲的就是批量场景下必须补上的东西。
3.2 并发控制:为什么不能一把梭全发出去
新手最容易犯的错,是把一百个商品一次性全部发出去。结果通常是:接口限流、大量请求超时、部分请求返回错误,最后你拿到一堆残缺的结果,还得手动排查哪些成功了哪些失败了。
正确的做法是控制并发数。我的经验值是并发 3 到 5 比较稳,既能跑出速度,又不容易触发限流。用 Python 的concurrent.futures就能实现:
from concurrent.futures import ThreadPoolExecutor, as_completed def batch_generate(tasks, max_workers=4): results = [] with ThreadPoolExecutor(max_workers=max_workers) as executor: future_to_task = { executor.submit(generate_image, t["prompt"], t["size"], t["save_path"]): t for t in tasks } for future in as_completed(future_to_task): task = future_to_task[future] try: result = future.result() results.append({"task": task, "status": "success", "path": result}) except Exception as e: results.append({"task": task, "status": "failed", "error": str(e)}) return results并发数不是拍脑袋定的。你可以先跑十张测一下平均耗时和失败率,再逐步往上加。我实测下来,并发 4 的时候单张平均耗时约 25 秒,一百张图大概十分钟跑完,失败率低于百分之二。并发拉到 8 之后失败率明显上升,反而更慢。
3.3 重试机制:失败是常态,关键是怎么兜住
批量调用里,失败是必然的。网络抖动、接口临时限流、返回数据格式异常,都会导致单张失败。没有重试机制的批量脚本,等于把稳定性完全交给运气。
重试要遵循两个原则:指数退避和有限次数。指数退避是指每次重试的等待时间翻倍,比如第一次等 2 秒,第二次等 4 秒,第三次等 8 秒。这样能避开短时的接口压力。有限次数是指重试不能无限进行,一般 3 次就够了,超过 3 次还失败,说明不是临时问题,应该记录下来人工处理。
import time def generate_with_retry(prompt, size, save_path, max_retries=3): for attempt in range(max_retries): try: return generate_image(prompt, size, save_path) except Exception as e: if attempt == max_retries - 1: raise wait = 2 ** attempt print(f"第 {attempt+1} 次失败,{wait} 秒后重试:{e}") time.sleep(wait)这里有个细节:重试前要检查文件是否已经生成。有时候请求其实成功了,只是返回时网络断了,重试会导致重复生成、覆盖文件。稳妥的做法是每次生成前先检查目标路径是否存在,存在就跳过。
3.4 断点续跑:跑一半崩了怎么办
批量任务最怕跑到一半程序崩了,前面跑的全白费。解决办法是维护一个任务状态文件,每完成一张就记录一条。重新启动时先读状态文件,跳过已完成的,只跑剩下的。
状态文件用 JSON 或 SQLite 都行。JSON 简单,适合几百条以内的任务;SQLite 更适合上千条的大批量,查询和更新都更快。我一般用 JSON,因为够用且好排查。
import json import os def load_state(state_file="state.json"): if os.path.exists(state_file): with open(state_file, "r", encoding="utf-8") as f: return json.load(f) return {} def save_state(state, state_file="state.json"): with open(state_file, "w", encoding="utf-8") as f: json.dump(state, f, ensure_ascii=False, indent=2)跑任务时,每完成一张就往 state 里写一条{商品ID: 文件路径}。下次启动先加载 state,已经有的直接跳过。这个机制看起来简单,但在实际跑几百张图的时候能救命。
3.5 成本核算:几毛钱一张是怎么算出来的
热词里有人问"gpt-image-2 几毛钱一张",这个问题得拆开算。单张成本取决于三个因素:模型单价、生成尺寸、重试次数。假设模型按张计费,标准尺寸单价是 X,那么实际单张成本约等于 X 乘以(1 加 重试率)。如果重试率是百分之十,实际成本就是标称成本的 1.1 倍。
真正影响总成本的是废图率。如果提示词写得不好,十张里只有三张能用,那有效成本就是标称成本的三倍多。所以把提示词模板打磨好,比纠结单价重要得多。我现在的废图率控制在百分之十五以内,主要废在图里出现了不该有的文字或者主体变形,这两类问题通过优化提示词和加后处理能进一步压下去。
按我的实测,跑一百张商品图,加上重试和废图,有效出图八十多张,折算下来单张有效成本确实在几毛钱这个量级。这个数字会随模型定价和你的提示词质量浮动,但量级是对的。
4. 三类素材的差异化打法
4.1 商品图:稳定压倒一切
商品图是三类素材里要求最"死"的。它不需要创意,需要的是一致性。同一款商品的五张图,背景、光线、角度必须统一,否则放在详情页里会很跳。
我的做法是给每个商品固定一套参数:背景固定用纯白或浅灰渐变,光线固定用"柔和自然光从左上方打来",角度固定用"正面微俯视"。这组参数写进模板后不再改动,只替换主体描述。这样出来的五张图,除了主体不同,其他元素几乎一模一样。
商品图还有一个坑:比例和留白。电商平台对主图有明确要求,比如正方形、主体占比不低于百分之七十。如果生成时没控制好,主体太小或者被裁切,后期还得重新处理。我的经验是在提示词里明确写"主体占画面高度三分之二以上,四周留白均匀",同时在接口参数里指定正方形尺寸。双保险下来,基本不用二次裁剪。
4.2 海报:文字和画面的博弈
海报比商品图难,难在它要承载信息。一张活动海报上有主标题、副标题、价格、活动时间、品牌 logo,这些元素怎么和画面配合,是个排版问题。
我的策略是画面归模型,文字归后期。也就是说,让 gpt-image-2 生成一张干净的背景图,留出明确的文字区域,然后我用设计工具或者脚本把文字叠上去。这样做的好处是文字清晰可控,不会出现模型把中文写错的情况。
具体操作上,提示词里要明确留白位置。比如"画面右侧三分之一为纯色留白区域,用于放置文字,左侧为主体视觉"。生成出来的图,右侧就是干净的色块,后期直接往上打字就行。
如果非要让模型直接生成带文字的海报,也不是不行,但要接受一定的错误率。我的经验是,短标题(四到六个字)的成功率还行,长文案基本会出错。所以重要海报还是走"背景加后期"的路子更稳。
4.3 文章封面:风格统一比单张好看更重要
文章封面和商品图、海报都不一样。它的核心诉求是系列感。一个公众号或者一个专栏,几十篇文章的封面放在一起,要让人一眼看出是同一个系列。这就要求封面的风格高度统一。
我的做法是给每个系列定一套视觉规范:固定的配色(比如品牌色加一个辅助色)、固定的构图(比如左侧大标题、右侧配图)、固定的字体风格。然后把这套规范写进提示词模板,每篇文章只替换配图主体。
这里有个技巧:用同一个种子或相近的提示词前缀。虽然 gpt-image-2 不直接支持种子参数,但保持提示词前缀完全一致,能显著提升系列封面的相似度。我实测下来,前缀一致的情况下,连续生成的十张封面,色调和质感的偏差在可接受范围内。
封面尺寸也要统一。公众号封面常用 2.35:1,视频封面常用 16:9,文章头图常用 1:1。这些比例在生成时就要指定好,不要生成完再裁,裁出来的构图往往不理想。
5. 后处理:生成只是半成品
5.1 尺寸适配:一次生成,多端复用
一张图生成出来,往往要用在多个地方。同一张商品图,主图要正方形,详情页要长方形,朋友圈要竖版。如果每个尺寸都重新生成,成本翻几倍。更聪明的做法是生成一张高分辨率的大图,然后用脚本批量裁剪和缩放。
裁剪的关键是保留主体。简单的居中裁剪经常会把主体裁掉一半。我的做法是在生成时就要求主体居中,然后裁剪时以中心为基准,按目标比例裁出最大区域。这样能保证主体完整。
from PIL import Image def resize_for_platform(src_path, target_size, save_path): img = Image.open(src_path) target_w, target_h = target_size src_w, src_h = img.size target_ratio = target_w / target_h src_ratio = src_w / src_h if src_ratio > target_ratio: new_w = int(src_h * target_ratio) left = (src_w - new_w) // 2 img = img.crop((left, 0, left + new_w, src_h)) else: new_h = int(src_w / target_ratio) top = (src_h - new_h) // 2 img = img.crop((0, top, src_w, top + new_h)) img = img.resize(target_size, Image.LANCZOS) img.save(save_path, quality=95)这段代码先按目标比例从中心裁出最大区域,再缩放到目标尺寸。实测下来,只要生成时主体居中,裁剪后主体基本不会丢。
5.2 格式与压缩:别让图片拖慢加载
生成出来的图通常是 PNG,体积大。用在网页上的图,转成 WebP 能省一半以上体积,画质几乎无损。用在需要透明背景的场景,保留 PNG。用在打印场景,保留高分辨率。
我的处理规则是:网页用图统一转 WebP,质量设 85;需要透明背景的保留 PNG;归档原图保留 PNG 不压缩。这样既保证了线上加载速度,又保留了原始素材。
批量转换用 Pillow 几行代码就能搞定:
def convert_to_webp(src_path, save_path, quality=85): img = Image.open(src_path).convert("RGB") img.save(save_path, "WEBP", quality=quality, method=6)method=6是压缩算法的最优档,速度慢一点但体积更小。批量处理时这点时间值得花。
5.3 水印与品牌标识:批量叠加的正确姿势
品牌水印要批量叠加,关键是位置和透明度固定。位置一般放右下角或左下角,透明度控制在百分之三十到五十之间,既能识别又不抢主体。
用 Pillow 叠加水印,要注意水印图本身要有透明通道(PNG),否则会盖住底图。叠加位置按底图尺寸的百分比计算,这样不同尺寸的图水印位置一致。
def add_watermark(src_path, watermark_path, save_path, position=(0.85, 0.9), opacity=0.4): base = Image.open(src_path).convert("RGBA") mark = Image.open(watermark_path).convert("RGBA") base_w, base_h = base.size mark_w, mark_h = mark.size x = int(base_w * position[0]) - mark_w // 2 y = int(base_h * position[1]) - mark_h // 2 alpha = mark.split()[3].point(lambda p: int(p * opacity)) mark.putalpha(alpha) base.paste(mark, (x, y), mark) base.convert("RGB").save(save_path, quality=95)这里有个坑:水印不要放在画面正中央或者主体上,会严重影响观感。也不要用纯黑或纯白的水印,太突兀。用品牌色加透明度是最稳妥的。
5.4 命名与归档:三个月后你还能找到它
批量生成最大的隐患是文件混乱。一百张图全叫output_1.png到output_100.png,过两周你根本不知道哪张对应哪个商品、用了什么提示词。
我的命名规则是:{日期}_{商品ID}_{素材类型}_{序号}.png,比如20250115_SKU001_主图_01.png。这样一眼就能看出是什么。同时,每张图对应的完整提示词和参数,记录在一个单独的 JSON 文件里,和图片放在同一目录。
{ "20250115_SKU001_主图_01.png": { "prompt": "一款哑光黑色的不锈钢保温杯...", "size": "1024x1024", "model": "gpt-image-2", "created_at": "2025-01-15T10:30:00", "scene": "纯白背景", "style": "写实摄影" } }这份记录的价值在于可复现。三个月后你想给同系列新品做图,直接翻出这份记录,改几个字段就能复用。没有这份记录,一切都要从头再来。
6. 踩过的坑和对应的解法
6.1 中文文字渲染:能不用就不用
gpt-image-2 的中文渲染能力比早期模型强,但依然不稳定。我试过让它生成带"限时特惠"四个字的海报,十张里大概六张能写对,剩下四张要么缺笔画,要么写成别的字。这个成功率在正式商用场景下是不够的。
我的解法是彻底放弃让模型写中文。所有需要文字的地方,一律留白,后期用脚本或设计工具叠加。这样文字百分之百准确,而且字体、颜色、大小完全可控。代价是多一道工序,但比起反复重抽,这道工序反而更快。
如果非要模型生成文字,建议只用英文或者数字,成功率明显更高。价格标签、折扣数字这类,模型处理得还不错。
6.2 主体变形:提示词要"具体"不要"抽象"
生成商品图时,最常见的废图原因是主体变形。杯子把手歪了、瓶子比例失调、包装盒透视错误。这类问题的根源通常是提示词太抽象。
比如写"一个好看的杯子",模型不知道"好看"是什么,就会自由发挥,结果往往四不像。改成"一个圆柱形陶瓷马克杯,杯身白色,把手在右侧,杯口直径约八厘米",模型有了具体约束,变形概率大幅下降。
还有一个技巧:加参照物。写"杯子放在桌面上,旁边有一支笔作为大小参照",模型对尺寸和比例的把控会更好。这个技巧在生成小件商品时特别有用。
6.3 风格漂移:前缀一致是关键
批量生成时,风格漂移是最让人头疼的问题。同一批十张图,前五张是冷色调,后五张突然变暖,放在一起很违和。
我试过很多办法,最后发现最有效的是保持提示词前缀完全一致。也就是说,从第一个字到风格描述结束,这一整段在所有提示词里一模一样,只有主体描述部分不同。这样模型接收到的"风格信号"是稳定的,输出也就稳定。
具体操作上,把模板拆成"固定前缀"和"可变部分"两块。固定前缀包含场景、构图、风格、色彩,可变部分只有主体描述。生成时先拼前缀再拼主体,保证前缀一字不差。
6.4 接口超时:长提示词要拆
提示词写得太长,接口容易超时。我遇到过写了两百多字的提示词,请求发出去等了两分钟没响应,最后超时失败。后来发现,提示词长度和生成时间正相关,超过一定长度后失败率明显上升。
解法是精简提示词。把不影响画面的修饰词删掉,只保留核心信息。比如"非常好看的、极具高级感的、让人眼前一亮的"这类词,删掉完全不影响结果,反而让模型更聚焦。我的经验是提示词控制在八十字以内最稳,超过一百二十字就要警惕。
如果确实需要很长的描述,可以拆成两段:核心描述走提示词,细节要求走后期处理。比如复杂的文字排版,就不要指望模型一次生成,拆成"生成背景"和"叠加文字"两步更靠谱。
6.5 成本失控:废图率才是大头
前面提过,成本的大头不是单价,是废图率。我一开始没在意,跑了一百张图,最后能用的只有四十张,等于成本翻了两倍多。后来复盘发现,废图主要集中在三类:文字错误、主体变形、风格不符。
针对这三类,我做了三件事:文字全部走后期,主体描述加具体约束,风格前缀固定。三件事做完,废图率从百分之六十降到了百分之十五以内。这个改进带来的成本节省,远比纠结模型单价有意义。
7. 把这套东西跑起来的完整流程
7.1 从零到第一批图的步骤
如果你现在想动手,按这个顺序来,能少走很多弯路。
第一步,准备商品信息表。用 Excel 或 CSV,列出你要生成素材的商品,字段包括商品名称、材质、颜色、目标场景、风格、尺寸。先填十个商品,不要一上来就填几百个。
第二步,建场景库和风格库。把常用的背景描述和风格描述写成固定文本,每个场景和风格一个条目。这一步花半小时,后面能省几十小时。
第三步,写提示词模板。按前面讲的六个槽位搭好模板,用第一批商品试填,生成十张图看看效果。效果不好就调模板,不要急着批量。
第四步,写批量脚本。把单张生成、并发控制、重试、断点续跑都加上。先用十个商品跑一遍,确认流程通畅。
第五步,跑第一批正式任务。建议从二十到三十张起步,观察失败率和废图率。稳定之后再上量。
第六步,建后处理和归档流程。尺寸适配、格式转换、水印叠加、命名归档,全部脚本化。这一步做完,整套工作流才算闭环。
7.2 团队协作时要注意什么
如果这套东西要给团队用,有几个点必须提前定好。
模板归口管理。提示词模板、场景库、风格库要有唯一版本,不能每个人各改各的。建议放在共享目录或者代码仓库里,改动走审核。
命名规范统一。文件命名规则要写进文档,所有人遵守。否则归档会乱成一锅粥。
成本透明。每次批量任务的张数、成本、废图率要记录,让团队知道这套东西的真实开销。这样申请预算或者优化流程都有依据。
权限分离。能改模板的人和能跑任务的人最好分开。模板是核心资产,改坏了影响所有任务。
7.3 后续可以怎么扩展
这套工作流跑通之后,能扩展的方向不少。
一是接入更多模型。gpt-image-2 不是唯一选择,不同模型在不同场景下各有优势。可以在调度层做个抽象,根据素材类型自动选模型。
二是加自动质检。用图像识别模型对生成结果做初筛,自动识别文字错误、主体变形、风格不符,把明显废图过滤掉,减少人工抽检量。
三是和内容系统打通。商品信息表如果能从电商后台自动同步,整个流程就能做到"上新即出图",运营只需要点一下按钮。
四是建素材资产库。所有生成过的图、对应的提示词、使用记录,统一存进一个可检索的库。下次做类似素材,直接搜历史记录复用,效率会越来越高。
这套东西我从最初的手动抽卡,到现在能稳定批量出图,前后折腾了大概两个月。最大的体会是,AI 生成素材这件事,模型能力只是基础,真正决定产出质量的是工作流的完整度。提示词模板、批量调度、后处理、归档,每一环都不能省。省了哪一环,最后都会以废图、返工、找不到文件的形式还回来。把这几环都搭好,几毛钱一张的营销素材才真正可用、可复用、可规模化。