ComfyUI Job Iterator 插件保姆级教程
1. 插件简介
插件原地址: https://github.com/ali1234/comfyui-job-iterator
ComfyUI Job Iterator 是一个超级实用的插件,就像给你的工作流程加了一个"自动化生产线"!它能让你一次性生成很多不同参数的图片,而不需要手动一张一张地调整设置。
这个插件能给我们带来什么效果?
- 批量生成不同参数的图片(就像工厂流水线一样)
- 自动遍历不同的设置组合(比如不同的提示词、不同的种子值)
- 创建数字序列和组合(就像自动生成购物清单)
- 处理和拼接图片(就像照片拼图工具)
- 调试和查看数据(就像放大镜检查工具)
简单来说,这就是一个让你"一键生成多张图"的超级工具!
2. 如何安装
方法一:通过 ComfyUI Manager 安装(推荐)
- 打开 ComfyUI Manager
- 搜索 "job iterator"
- 点击安装
- 重启 ComfyUI
方法二:手动安装
- 打开你的 ComfyUI 文件夹
- 进入
custom_nodes文件夹 - 下载插件:
git clone https://github.com/ali1234/comfyui-job-iterator.git - 重启 ComfyUI
3. 节点详解
3.1 Range 节点 - 数字序列生成器
这个节点就像一个"数字计数器",可以自动生成一串连续的数字,比如1、2、3、4、5...
3.1.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| start | start | 整数 | 0 | 从哪个数字开始数,就像起跑线 | 序列的起始值 | 设置为1表示从1开始数:1,2,3,4... |
| stop | stop | 整数 | 10 | 数到哪个数字停止,就像终点线 | 序列的结束值(不包含) | 设置为10表示数到9停止:1,2,3...9 |
| step | step | 整数 | 1 | 每次跳几个数,就像跳格子游戏 | 序列的步长 | 设置为2表示隔一个数:1,3,5,7,9 |
3.2 Literal 节点 - 自定义列表创建器
这个节点就像一个"购物清单编辑器",你可以手动输入任何你想要的内容列表。
3.2.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| literal | literal | 文本 | 空 | 手动输入你想要的列表内容 | Python字面量表达式 | 输入["cat", "dog", "bird"]创建动物列表 |
3.3 Reorder 节点 - 列表排序器
这个节点就像一个"整理工具",可以把你的列表重新排列顺序。
3.3.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| sequence | sequence | SEQUENCE类型 | 你的列表 | 要重新排列的列表,就像要整理的书架 | 输入序列数据 | 连接任何序列节点的输出 |
| method | method | 下拉选择 | sort | 选择排列方式,就像选择整理规则 | 排序方法 | sort是从小到大,reverse是倒序,reverse sort是从大到小 |
3.4 Combinations 节点 - 组合生成器
这个节点就像一个"搭配助手",可以帮你生成所有可能的组合,比如衣服搭配。
3.4.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| sequence | sequence | SEQUENCE类型 | 你的列表 | 要进行组合的原始列表 | 输入序列数据 | 比如["红", "蓝", "绿"]颜色列表 |
| count | count | 整数 | 0 | 每次选几个来组合,就像每次拿几个苹果 | 组合中元素的数量 | 设置为2表示每次选2个:("红","蓝"), ("红","绿"), ("蓝","绿") |
| replacement | replacement | true/false | false | 是否允许重复选择,就像抽奖后是否放回 | 是否允许重复元素 | true允许重复:("红","红"), ("红","蓝")等 |
3.5 Permutations 节点 - 排列生成器
这个节点就像一个"排队助手",生成所有可能的排列顺序。
3.5.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| sequence | sequence | SEQUENCE类型 | 你的列表 | 要进行排列的原始列表 | 输入序列数据 | 比如["A", "B", "C"]字母列表 |
| count | count | 整数 | 0 | 每次排几个,就像排队时选几个人 | 排列中元素的数量 | 设置为2表示选2个排列:("A","B"), ("A","C"), ("B","A")等 |
3.6 Slice 节点 - 列表切片器
这个节点就像一个"切蛋糕工具",可以从长列表中切出你想要的部分。
3.6.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| sequence | sequence | SEQUENCE类型 | 你的列表 | 要切片的原始列表 | 输入序列数据 | 比如[1,2,3,4,5,6,7,8,9,10]数字列表 |
| start | start | 整数 | 0 | 从第几个开始切,就像切蛋糕的起始位置 | 切片起始索引 | 设置为2表示从第3个元素开始(从0开始数) |
| stop | stop | 整数 | 9999999 | 切到第几个停止,就像切蛋糕的结束位置 | 切片结束索引 | 设置为5表示切到第5个元素(不包含) |
| step | step | 整数 | 1 | 每隔几个取一个,就像间隔取样 | 切片步长 | 设置为2表示隔一个取一个 |
3.7 Join 节点 - 文本连接器
这个节点就像一个"胶水",可以把列表中的文字用指定的符号连接起来。
3.7.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| sequence | sequence | SEQUENCE类型 | 你的列表 | 要连接的文字列表 | 输入序列数据 | 比如["苹果", "香蕉", "橙子"]水果列表 |
| join_str | join_str | 文本 | , | 用什么符号连接,就像用什么胶水粘 | 连接字符串 | 设置为", "结果是"苹果, 香蕉, 橙子" |
3.8 MakeJob 节点 - 任务制作器
这个节点就像一个"任务清单制作器",把你的列表变成可以执行的任务。
3.8.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| sequence | sequence | SEQUENCE类型 | 你的列表 | 要变成任务的列表 | 输入序列数据 | 比如[1,2,3,4,5]种子值列表 |
| name | name | 文本 | 空 | 给这个参数起个名字,就像给变量命名 | 属性名称 | 设置为"seed"表示这是种子值参数 |
3.9 CombineJobs 节点 - 任务组合器
这个节点就像一个"任务合并器",可以把多个任务列表合并成一个大任务。
3.9.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| a | a | JOB类型 | 第一个任务 | 第一个要合并的任务列表 | 第一个作业输入 | 连接MakeJob节点的输出 |
| method | method | 下拉选择 | zip | 选择合并方式,就像选择打包方式 | 组合方法 | zip是一一对应,product是所有组合 |
| b,c,d,e | b,c,d,e | JOB类型 | 其他任务 | 其他要合并的任务列表(可选) | 额外的作业输入 | 可以连接更多MakeJob节点 |
3.10 EnumerateJob 节点 - 任务编号器
这个节点就像一个"自动编号器",给每个任务加上序号。
3.10.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| job | job | JOB类型 | 你的任务 | 要加编号的任务列表 | 输入作业数据 | 连接任何Job节点的输出 |
| name | name | 文本 | 空 | 给编号起个名字,就像给序号命名 | 编号属性名称 | 设置为"index"表示这是索引编号 |
3.11 GetJobStep 节点 - 任务步骤获取器
这个节点就像一个"任务选择器",可以从任务列表中选择特定的一个任务。
3.11.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| job | job | JOB类型 | 你的任务 | 要选择的任务列表 | 输入作业数据 | 连接任何Job节点的输出 |
| step | step | 整数 | 0 | 选择第几个任务,就像选择第几页 | 步骤索引 | 设置为0选择第1个任务,设置为1选择第2个任务 |
| wrap | wrap | 下拉选择 | repeat | 超出范围时怎么办,就像翻页到头了怎么办 | 边界处理方式 | repeat是循环,clamp是停在边界 |
3.12 FormatAttributes 节点 - 属性格式化器
这个节点就像一个"模板填空器",可以把任务的属性值填入文本模板中。
3.12.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| attributes | attributes | ATTRIBUTES类型 | 任务属性 | 要使用的属性值 | 属性字典数据 | 连接GetJobStep等节点的输出 |
| format | format | 文本 | 空 | 文本模板,就像填空题的题目 | 格式化字符串模板 | 输入"种子值是{seed}",会自动填入seed的值 |
3.13 GetAttribute 节点 - 属性获取器
这个节点就像一个"钥匙",可以从任务属性中取出指定名称的值。
3.13.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| attributes | attributes | ATTRIBUTES类型 | 任务属性 | 包含各种属性的容器 | 属性字典数据 | 连接GetJobStep等节点的输出 |
| name | name | 文本 | 空 | 要取出的属性名称,就像钥匙的标签 | 属性名称 | 输入"seed"会取出种子值,输入"prompt"会取出提示词 |
3.14 GetAttributeInt/Float/String 节点 - 类型化属性获取器
这些节点就像"专用钥匙",专门取出特定类型的属性值。
3.14.1 参数详解(三个节点参数相同)
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| attributes | attributes | ATTRIBUTES类型 | 任务属性 | 包含各种属性的容器 | 属性字典数据 | 连接GetJobStep等节点的输出 |
| name | name | 文本 | 空 | 要取出的属性名称 | 属性名称 | GetAttributeInt专门取整数,GetAttributeFloat取小数,GetAttributeString取文字 |
3.15 JobToList 节点 - 任务转列表器
这个节点就像一个"展开器",把整个任务列表展开成可以逐个处理的形式。
3.15.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| job | job | JOB类型 | 你的任务 | 要展开的任务列表 | 输入作业数据 | 连接任何Job节点,会自动处理所有任务步骤 |
3.16 JoinImageBatch 节点 - 图片拼接器
这个节点就像一个"照片拼图工具",可以把多张图片拼成一张大图。
3.16.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| images | images | IMAGE类型 | 你的图片 | 要拼接的图片组 | 图像批次数据 | 连接任何生成多张图片的节点 |
| mode | mode | 下拉选择 | horizontal | 选择拼接方向,就像选择排列方式 | 拼接模式 | horizontal是横向拼接,vertical是纵向拼接 |
3.17 JoinImages 节点 - 双图拼接器
这个节点就像一个"双联画制作器",专门把两张图片拼在一起。
3.17.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image_a | image_a | IMAGE类型 | 第一张图 | 要拼接的第一张图片 | 第一个图像输入 | 连接任何图片节点 |
| image_b | image_b | IMAGE类型 | 第二张图 | 要拼接的第二张图片 | 第二个图像输入 | 连接任何图片节点 |
| mode | mode | 下拉选择 | horizontal | 选择拼接方向 | 拼接模式 | horizontal是左右拼接,vertical是上下拼接 |
3.18 SelectImageBatch 节点 - 图片选择器
这个节点就像一个"照片挑选器",可以从一组图片中选出一张。
3.18.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| images | images | IMAGE类型 | 你的图片组 | 要选择的图片组 | 图像批次数据 | 连接生成多张图片的节点 |
| select | select | 整数 | 0 | 选择第几张图片,就像选择第几页 | 选择索引 | 设置为0选择第1张,设置为1选择第2张 |
3.19 SelectImageList 节点 - 图片列表选择器
这个节点就像SelectImageBatch的"兄弟版本",专门处理图片列表格式。
3.19.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| images | images | IMAGE类型 | 你的图片列表 | 要选择的图片列表 | 图像列表数据 | 连接生成图片列表的节点 |
| select | select | 整数 | 0 | 选择第几张图片 | 选择索引 | 设置为0选择第1张,设置为1选择第2张 |
3.20 GetImageSize 节点 - 图片尺寸获取器
这个节点就像一个"尺子",可以测量图片的宽度、高度和数量。
3.20.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| images | images | IMAGE类型 | 你的图片 | 要测量的图片 | 图像数据 | 连接任何图片节点,会输出宽度、高度、图片数量 |
3.21 StringToImage 节点 - 文字转图片器
这个节点就像一个"文字印刷机",可以把文字变成图片。
3.21.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| text | text | 文本 | Hello world! | 要变成图片的文字内容 | 文本内容 | 输入任何文字,比如"第1张图片" |
| width | width | 整数 | 384 | 图片的宽度,就像画布的宽度 | 图像宽度像素 | 设置图片有多宽 |
| height | height | 整数 | 16 | 图片的高度,就像画布的高度 | 图像高度像素 | 设置图片有多高 |
| colour | colour | 颜色 | white | 文字的颜色,就像墨水颜色 | 文字颜色 | 可以选择白色、黑色等 |
| background | background | 颜色 | black | 背景的颜色,就像纸张颜色 | 背景颜色 | 可以选择黑色、白色等 |
3.22 ProgressBar 节点 - 进度条生成器
这个节点就像一个"进度条制作器",可以生成显示进度的图片。
3.22.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| progress | progress | 小数 | 0 | 进度值,就像完成度百分比 | 进度值(0-1) | 0.5表示50%完成,1.0表示100%完成 |
| padding | padding | 整数 | 3 | 边框厚度,就像相框的宽度 | 内边距像素 | 数字越大边框越厚 |
| width | width | 整数 | 384 | 进度条的宽度 | 图像宽度像素 | 设置进度条有多宽 |
| height | height | 整数 | 16 | 进度条的高度 | 图像高度像素 | 设置进度条有多高 |
| colour | colour | 颜色 | white | 进度条的颜色 | 进度条颜色 | 可以选择任何颜色 |
| background | background | 颜色 | black | 背景的颜色 | 背景颜色 | 可以选择任何颜色 |
3.23 Stringify 节点 - 数据转文字器
这个节点就像一个"翻译器",可以把任何数据变成可读的文字。
3.23.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| x | x | 任意类型 | 任何数据 | 要转换成文字的数据 | 任意类型输入 | 可以连接任何节点,会输出两种文字格式 |
3.24 Interact 节点 - 交互调试器
这个节点就像一个"暂停按钮",可以让工作流程暂停,让你检查数据。
3.24.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| a,b,c,d | a,b,c,d | 任意类型 | 任何数据 | 要检查的数据(可选) | 调试数据输入 | 连接你想检查的任何数据,运行时会暂停让你查看 |
3.25 ModelFinder 节点 - 模型查找器
这个节点就像一个"文件搜索器",可以在模型文件夹中查找指定的文件。
3.25.1 参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| filenames | filenames | SEQUENCE类型 | 文件名列表 | 要搜索的文件名列表 | 文件名序列 | 比如["model1.safetensors", "model2.ckpt"] |
| model_type | model_type | 下拉选择 | checkpoint | 选择模型类型,就像选择文件夹 | 模型文件夹类型 | checkpoint是主模型,loras是LoRA文件夹 |
| recursive | recursive | true/false | true | 是否搜索子文件夹,就像是否翻遍所有抽屉 | 递归搜索开关 | true会搜索所有子文件夹,false只搜索当前文件夹 |
| skip_missing | skip_missing | true/false | false | 找不到文件时是否跳过,还是报错 | 缺失文件处理方式 | true会跳过找不到的文件,false会报错停止 |
4. 使用技巧和建议
4.1 新手推荐工作流程
- 创建序列: 使用Range或Literal节点创建参数列表
- 制作任务: 用MakeJob节点把序列变成任务
- 转换列表: 用JobToList节点展开任务
- 获取属性: 用GetAttribute节点取出具体值
- 连接工作流: 把属性值连接到你的正常工作流程中
4.2 常用组合推荐
- 批量种子值: Range(1,100,1) → MakeJob("seed") → JobToList → GetAttributeInt("seed")
- 多个提示词: Literal(["cat","dog","bird"]) → MakeJob("prompt") → JobToList → GetAttributeString("prompt")
- 参数组合: 两个MakeJob → CombineJobs(method="product") → JobToList
4.3 图片处理技巧
- 拼接展示: 生成多张图后用JoinImageBatch横向或纵向拼接
- 添加标签: 用StringToImage给每张图片添加文字说明
- 进度显示: 用ProgressBar显示当前处理进度
5. 常见问题解答
Q1: 为什么我的序列没有生成多张图?
A: 检查以下几点:
- 确保使用了JobToList节点来展开任务
- 检查GetAttribute节点的name参数是否与MakeJob中的name一致
- 确认工作流程中的其他节点支持列表输入
Q2: CombineJobs的zip和product有什么区别?
A:
- zip模式: 一一对应组合,比如[1,2,3]和[A,B,C]组合成[(1,A),(2,B),(3,C)]
- product模式: 所有可能组合,比如[1,2]和[A,B]组合成[(1,A),(1,B),(2,A),(2,B)]
Q3: 图片拼接后尺寸不对怎么办?
A:
- 确保要拼接的图片尺寸一致
- 使用GetImageSize节点检查图片尺寸
- 如果需要调整尺寸,先用其他节点统一图片大小
Q4: Literal节点的格式怎么写?
A: 使用Python列表格式:
- 数字列表:
[1, 2, 3, 4, 5] - 文字列表:
["cat", "dog", "bird"] - 小数列表:
[0.5, 1.0, 1.5, 2.0]
Q5: 如何创建复杂的参数组合?
A:
- 分别创建多个序列(Range或Literal)
- 每个序列用MakeJob转换,给不同的name
- 用CombineJobs合并所有任务
- 用JobToList展开
- 用多个GetAttribute获取不同参数
6. 高级应用示例
6.1 批量风格测试
创建一个工作流程,自动测试不同的艺术风格:
- Literal节点输入:
["油画", "水彩", "素描", "卡通"] - MakeJob设置name为"style"
- JobToList展开
- GetAttributeString获取风格
- 连接到提示词中
6.2 参数网格搜索
同时测试多个参数的组合:
- Range(1,10,1)创建步数序列 → MakeJob("steps")
- Range(7,15,1)创建CFG序列 → MakeJob("cfg")
- CombineJobs(method="product")创建所有组合
- JobToList展开所有组合
- 分别获取steps和cfg值
6.3 进度可视化
为长时间运行的任务添加进度显示:
- EnumerateJob给任务添加编号
- 计算进度百分比
- ProgressBar生成进度条图片
- JoinImages把进度条和生成图片拼接
7. 总结
ComfyUI Job Iterator是一个功能强大的批量处理插件,它让ComfyUI具备了真正的"批量生产"能力。通过合理使用序列生成、任务制作、属性获取等节点,你可以创建出非常高效的自动化工作流程。
记住这几个要点:
- 序列 → 任务 → 列表 → 属性 是基本流程
- 善用组合功能测试参数网格
- 图片处理节点可以美化输出结果
- 调试节点帮助你理解数据流程
希望这个教程能帮助你更好地使用这个强大的插件,实现真正的批量化AI图片生成!