基于gpt-image-2的批量营销素材生成工作流实战
发布时间:2026/10/5 0:20:13 作者:尧图编辑部 阅读量:1,286

电商运营和内容团队最头疼的事从来不是没有图而是图不够用。一个上新季几十个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, size1024x1024, save_pathoutput.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 }, timeout120 ) 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_workers4): results [] with ThreadPoolExecutor(max_workersmax_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_retries3): 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第 {attempt1} 次失败{wait} 秒后重试{e}) time.sleep(wait)这里有个细节重试前要检查文件是否已经生成。有时候请求其实成功了只是返回时网络断了重试会导致重复生成、覆盖文件。稳妥的做法是每次生成前先检查目标路径是否存在存在就跳过。3.4 断点续跑跑一半崩了怎么办批量任务最怕跑到一半程序崩了前面跑的全白费。解决办法是维护一个任务状态文件每完成一张就记录一条。重新启动时先读状态文件跳过已完成的只跑剩下的。状态文件用 JSON 或 SQLite 都行。JSON 简单适合几百条以内的任务SQLite 更适合上千条的大批量查询和更新都更快。我一般用 JSON因为够用且好排查。import json import os def load_state(state_filestate.json): if os.path.exists(state_file): with open(state_file, r, encodingutf-8) as f: return json.load(f) return {} def save_state(state, state_filestate.json): with open(state_file, w, encodingutf-8) as f: json.dump(state, f, ensure_asciiFalse, indent2)跑任务时每完成一张就往 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, quality95)这段代码先按目标比例从中心裁出最大区域再缩放到目标尺寸。实测下来只要生成时主体居中裁剪后主体基本不会丢。5.2 格式与压缩别让图片拖慢加载生成出来的图通常是 PNG体积大。用在网页上的图转成 WebP 能省一半以上体积画质几乎无损。用在需要透明背景的场景保留 PNG。用在打印场景保留高分辨率。我的处理规则是网页用图统一转 WebP质量设 85需要透明背景的保留 PNG归档原图保留 PNG 不压缩。这样既保证了线上加载速度又保留了原始素材。批量转换用 Pillow 几行代码就能搞定def convert_to_webp(src_path, save_path, quality85): img Image.open(src_path).convert(RGB) img.save(save_path, WEBP, qualityquality, method6)method6是压缩算法的最优档速度慢一点但体积更小。批量处理时这点时间值得花。5.3 水印与品牌标识批量叠加的正确姿势品牌水印要批量叠加关键是位置和透明度固定。位置一般放右下角或左下角透明度控制在百分之三十到五十之间既能识别又不抢主体。用 Pillow 叠加水印要注意水印图本身要有透明通道PNG否则会盖住底图。叠加位置按底图尺寸的百分比计算这样不同尺寸的图水印位置一致。def add_watermark(src_path, watermark_path, save_path, position(0.85, 0.9), opacity0.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, quality95)这里有个坑水印不要放在画面正中央或者主体上会严重影响观感。也不要用纯黑或纯白的水印太突兀。用品牌色加透明度是最稳妥的。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 生成素材这件事模型能力只是基础真正决定产出质量的是工作流的完整度。提示词模板、批量调度、后处理、归档每一环都不能省。省了哪一环最后都会以废图、返工、找不到文件的形式还回来。把这几环都搭好几毛钱一张的营销素材才真正可用、可复用、可规模化。