ComfyUI 批量出图与工作流自动化实战:从一张到一千张
在上一篇《ComfyUI 实战:用 ControlNet 精准控制画面》中,我们已经能精确控制构图、姿态和边缘,生成符合要求的单张图片。但当你接到一个真正的批量需求——电商店铺 500 个 SKU 每个要 3 张场景图、社团 200 个成员要统一风格的头像、知识付费账号要一个月的封面图——你会发现,一张一张点 Queue 的方式完全撑不住。
问题不在生成质量,而在生产方式。这篇文章讲的就是如何把 ComfyUI 从「手工修图工具」升级为「批量图片生产线」:四种批量方式、CSV 参数化输入、工作流模板化、队列与 API 自动化,以及在 M 系列 Mac 上实测的避坑经验。
一、批量出图的核心思路:参数化
先纠正一个常见误解:批量出图不是「把 Queue 按一千次」。重复点击 Queue 生成的是一千次完全相同的输入(除非种子随机化),这既不是批量,也不是自动化。
批量出图的正确心智模型是:
固定不变的部分,保持固定;变化的部分,参数化。
一个工作流里所有节点参数可以分成两类:
| 类别 | 典型参数 | 批量时的处理 |
|---|---|---|
| 固定量 | 大模型、采样器、步数、CFG、ControlNet 权重 | 锁定不动 |
| 变量 | 种子、正/负向提示词、尺寸、模型(偶尔) | 由批量机制逐个喂入 |
所谓批量,就是让一个工作流批量消费一组不同的输入。输入从哪来?可以是随机种子、可以是提示词列表、也可以是一个 CSV 文件里的几百行参数。这就是后面四种批量方式的本质区别。
二、四种批量方式对比
| 方式 | 实现方法 | 适合场景 | 优点 | 缺点 |
|---|---|---|---|---|
| batch_size 简单批量 | Empty Latent Image 的 batch_size 设为 N | 同参数快速抽多张 | 零配置,一次任务出 N 张 | N 张图参数完全相同,显存/内存压力大 |
| 随机种子批量 | 种子设 randomize,反复 Queue | 抽卡找灵感、头像初筛 | 最简单,出图多样性好 | 不可复现性差,需要人工筛图 |
| 提示词批量(换词) | 手动改词,或用文本节点/通配符逐个替换 | 文案变体、风格探索 | 工作流不变,只换变量 | 原生不支持列表输入,需辅助节点 |
| 外部输入批量(CSV/文件夹) | CSV/Excel 加载节点或 API 脚本逐行喂参数 | 电商商品图、结构化批量任务 | 全自动、可复现、可审计 | 需要准备数据文件,前期配置成本最高 |
选择建议:临时抽卡用前两种;有明确「一行参数一张图」需求(电商是典型)直接上 CSV 方式,这是本文重点。
三、batch_size 简单批量
Empty Latent Image 节点有 batch_size 参数,默认 1。设为 8,就是一次任务生成 8 张潜空间图像,走完同一个采样流程,最后在 Save Image 阶段拆成 8 个文件。
几点必须注意:
- batch_size ≠ 并行 8 次任务,是同一次前向计算里塞 8 张图,单步显存/统一内存占用近似线性增长。Mac mini M4 32G 跑 SDXL,batch_size 8 基本是舒适上限;设到 16 以上容易触发交换,速度反而暴跌。
- 同一 batch 内各图的种子由 latent 的 noise_seed 决定,KSampler 的 seed 控制整体,8 张图之间天然有差异,但提示词、尺寸、CFG 完全一致——适合「同参数多抽几张挑好的」。
- batch_size 会显著影响每张图的均摊速度(batch 4-8 通常比 4 次单张快),但极端情况下内存不足会导致任务失败,见避坑章节。
适合场景:调好参数后一次出 4-8 张挑选;给客户看方案稿。
四、随机种子批量:抽卡模式
把 KSampler 的 seed 从 fixed 改为 randomize,每次 Queue 都会用新种子,出图各不相同。配合队列(后文详述)可以一次排 20 个任务,挂机抽 20 张。
适用与不适用:
- ✅ 找灵感、测新模型的出图风格、批量头像/壁纸的初筛(先抽 50 张,人眼挑出 5 个好的种子,再固定种子精修)。
- ❌ 交付型任务。种子随机意味着不可复现——客户说「第 37 张再改改」时,你得能找到那次的种子。抽卡时务必保留默认的元数据嵌入(Save Image 会把工作流和种子写进 PNG),或定期备份 output 目录。
一个实用技巧:randomize 抽到满意的图后,用 ComfyUI 的「拖图回载工作流」功能把该图拖回画布,即可还原当时的全部参数,把 seed 改回 fixed 再微调。
五、提示词批量:换词出变体
很多批量需求其实是「同一个画面逻辑,换主体词」:a coffee shop interior, {industrial|minimalist|japanese} 这种。ComfyUI 原生的 CLIP Text Encode 不接受列表输入,所以换词批量有两条路:
- 手动换词 + 队列:改一个词、Queue 一次。低效但零成本,10 个以内的变体可以接受。
- 辅助节点:
- Wildcards(ComfyUI-Impact-Pack 的通配符):在提示词里写
__style__,配合wildcards/style.txt文件(每行一个词),节点每张图随机抽取一行。 - Efficiency Nodes 的 csv 输入:把提示词列放进 CSV,逐行喂入。
- Primitive String 多路 + Image Concatenate 式的组合:适合少数固定组合。
- Wildcards(ComfyUI-Impact-Pack 的通配符):在提示词里写
| 换词方式 | 成本 | 可控性 | 适合 |
|---|---|---|---|
| 手动改词 | 零 | 完全可控 | ≤10 个变体 |
| Wildcards 随机 | 低 | 随机 | 抽卡式探索 |
| CSV 逐行 | 中 | 完全可控 | 结构化批量(推荐) |
六、CSV 输入批量:电商批量出图的核心(重点)
这是本篇最值得掌握的方式。思路:把每个商品/每张图的全部变量写进 CSV 的一行,工作流从文件逐行读取,每行生成一张图。500 个 SKU 就是 500 行 CSV,跑一次队列全部出完。
6.1 准备数据文件
CSV 示例(电商商品图):
| filename_prefix | prompt | negative_prompt | seed | width | height |
|---|---|---|---|---|---|
| sku-1001-white | product photo of a white ceramic mug on oak table, morning light, minimalist | blurry, watermark, text | 100001 | 1024 | 1024 |
| sku-1001-black | product photo of a black ceramic mug on oak table, morning light, minimalist | blurry, watermark, text | 100002 | 1024 | 1024 |
| sku-1002-towel | product photo of a beige linen towel on bamboo shelf, soft light | blurry, watermark, text | 100003 | 1024 | 1024 |
列名即变量名。模型、采样器等如果也要变,加 checkpoint、steps 列即可。
6.2 建目录结构
batch_jobs/
├── csv/
│ └── 2026-09-09-mug-batch.csv # 参数表
├── templates/
│ └── sdxl-product-v2.json # 调好的工作流模板
└── output/
└── 2026-09-09-mug-batch/ # 本次批量输出目录
6.3 三种落地路径
路径 A:现成节点(推荐新手)
- 安装 ComfyUI-Custom-Scripts 或 Efficiency Nodes 等扩展,其中有 CSV/Excel 读取能力(Efficiency Nodes 的相关 loader、社区里的 ComfyUI-CSV 节点均可用)。
- 用 CSV Load 节点读文件 → 按列名取值 → 分别接到 CLIP Text Encode(正向/负向)、Empty Latent Image(宽高)、KSampler(seed)、Save Image(filename_prefix)。
- 每张图跑完自动读下一行,直到 CSV 读完。全程无需手动干预。
路径 B:Python / API 脚本(适合有脚本基础)
ComfyUI 提供 HTTP API(默认 8188 端口)。用 Python 读取 CSV,对每一行组装一个工作流 JSON,通过 API 的 /prompt 接口提交到队列。灵活度最高,可以和 n8n、定时任务等外部工具集成。示例思路:
- 先导出一个调好的工作流 json 作为模板。
- 脚本读取 CSV,替换模板里的 prompt、seed、width、height 等字段。
- 逐个 POST 到
http://127.0.0.1:8188/prompt提交队列。
路径 C:Combine 批量节点(适合在一个画布内跑完)
用 Combine Latents / Combine Images 类节点在单个工作流内拼接多路输入,一次任务内产出多张。适合组合数量可控(几十张以内)的场景,超过后维护成本高。
6.4 电商批量实战要点
- 每个 SKU 多张图(主图、场景图、细节图)时,用 CSV 里多行、filename_prefix 区分。
- 同一商品的不同配色/尺寸,做成多行,方便复现和交付。
- 跑批量前,先用 CSV 里第一行单跑一张验证效果,确认无误再整批跑,避免 500 张全错。
七、工作流模板化与复用
批量出图的前提是有一个「可复用」的工作流。把调好的组合存成模板,才能在不同批量任务间复用:
- 存模板:Workflow → Save As,命名清晰(如
sdxl-product-v2),保存到templates/。 - 复用方式:同一批任务用「一个模板 + CSV 批量喂参数」,不需要复制多份工作流文件;跨批任务复制模板后微调。
- 版本管理:改过参数后另存新版本号,避免覆盖好用的旧模板。客户要「跟上次一样的效果」时,直接调出对应版本。
八、自动化与队列
队列机制:ComfyUI 自带任务队列,多个任务提交后依次自动执行,无需人守着点 Queue。可以在队列面板查看、暂停、清空。批量出图时把任务一次性排进队列挂机即可。
命令行 / API 触发:
- 命令行:
python main.py --prompt <json文件>可提交一个任务。 - HTTP API:
POST /prompt提交工作流 JSON,GET /queue查看队列,POST /interrupt中断当前任务。 - 结合外部工具:有自动化背景的话,可以用 n8n 等把「收到一个商品清单 → 生成 CSV → 调 ComfyUI API 批量出图 → 归档到目录」串成一条自动流水线,实现真正的事件触发式批量生产。
队列注意:批量任务较多时,先小批量(比如 20 张)测试稳定后再放大;出问题时用队列清理功能清空,避免错误任务堆积占资源。
九、避坑指南
| 问题 | 现象 | 解决 |
|---|---|---|
| batch 太大爆内存 | 任务失败 / 被 killed | batch_size 降到 4-8;关掉大应用;开低显存模式 |
| CSV 中文乱码 | 提示词中文变乱码 | CSV 用 UTF-8 编码保存;Excel 另存时选 UTF-8 CSV |
| 模型切换频繁变慢 | 每张图都在重新加载模型 | 同一批量任务内固定模型;切换只在不同任务间做 |
| 队列堆积 | 误提交大量任务,排队过长 | 批量前小规模测试;用队列清理功能清空 |
| 输出文件混乱 | 大量同名/无规律图片 | 用 filename_prefix 按商品/批次命名,按主题建子目录 |
| CSV 行读取错位 | 图和参数对不上 | 确认 CSV 列顺序与节点取值一致;第一行表头不能省 |
十、输出文件管理
批量后大量图片如果没有组织,交付时会手忙脚乱。建议:
- 按批次建子目录:
output/2026-09-09-mug-batch/,一个批次一个目录。 - 文件名前缀带信息:
sku-1001-white、sku-1002-towel,一眼能看出内容和批次。 - 脚本重命名归档:批量跑完后,用简单脚本(或手动)把 PNG 按 CSV 里的 filename_prefix 重命名归档,和参数表对应。
- 保留 PNG 元数据:ComfyUI 的 PNG 内嵌工作流和参数,需要复现某张图时直接拖回画布即可,不要为了省空间删掉元数据。
相关资源
- CSV 批量节点:ComfyUI-Custom-Scripts、Efficiency Nodes(ComfyUI Manager 内可搜)
- 通配符:ComfyUI-Impact-Pack(Wildcards)
- ComfyUI API 文档:官方 GitHub 的
web与 API 说明 - ComfyUI 官方:https://github.com/comfyanonymous/ComfyUI
下一篇进入变现篇:《用 ComfyUI 接单赚钱:5 个真实变现场景》。前面六篇你已经掌握了从出图到批量生产的完整能力,下一篇把这些能力落成实际的接单方向、定价和渠道。