【版权严正声明】
本文系作者 [编程界的小学生] 原创,并拥有完整、独立的著作权。
未经本人 书面授权 ,任何单位、平台或个人, 严禁 以任何形式(包括但不限于转载、复制、摘编、修改、链接、转贴、建立镜像等)使用本文的全部或部分内容。
任何无视本声明的侵权行为,本人将依据《中华人民共和国著作权法》等相关法律法规,采取一切必要的法律手段,追究其侵权责任,要求其 立即停止侵权、赔礼道歉、消除影响,并赔偿因此造成的一切经济损失及维权成本(包括但不限于律师费、诉讼费、公证费等)。
侵权必究,切勿以身试法!
1. 插件简介
插件地址: https://github.com/pythongosssss/ComfyUI-Custom-Scripts
ComfyUI-Custom-Scripts 是一个功能超级丰富的插件包,就像一个工具箱,里面装满了各种实用的小工具。这个插件能让你的 ComfyUI 使用体验变得更加顺手,就像给你的手机装了一堆好用的 APP 一样。
主要功能包括:
让图片按照你想要的尺寸自动调整大小
帮你做数学计算,不用自己算复杂的数字
显示文字内容,方便查看结果
播放声音提醒你任务完成了
发送系统通知到你的电脑
加载和保存文本文件
重复执行某些操作
还有很多其他实用功能...
总节点数量: 该插件包含 12个 主要节点
2. 如何安装
通用安装方法:
打开你的 ComfyUI 文件夹
找到 custom_nodes 文件夹(就像是放插件的专门地方)
在这个文件夹里打开命令行(就像是跟电脑对话的窗口)
输入这个命令:
git clone https://github.com/pythongosssss/ComfyUI-Custom-Scripts.git
等待下载完成
重启 ComfyUI 就可以使用了
3. 节点详细解析
3.1 Lora Loader 🐍 节点
这个节点是干嘛的? 这就像是一个升级版的 Lora 加载器,不仅能加载 Lora 模型,还能显示预览图片,让你一眼就知道这个 Lora 是什么样子的。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
lora_name | lora_name | 下拉选择列表 | 根据需要选择 | 选择你要用的 Lora 模型,就像选择不同的滤镜 | 指定要加载的 LoRA 模型文件名 | 从列表中选择 "add_detail.safetensors" |
strength_model | strength_model | 数字 (-20.0 到 20.0) | 1.0 | 控制 Lora 对模型的影响强度,就像调节滤镜的浓度 | 控制 LoRA 对基础模型的影响程度 | 设置为 0.8 表示 80% 的影响强度 |
strength_clip | strength_clip | 数字 (-20.0 到 20.0) | 1.0 | 控制 Lora 对文字理解的影响强度 | 控制 LoRA 对 CLIP 文本编码器的影响程度 | 设置为 0.6 表示对文字理解影响 60% |
prompt | prompt | 文字 | 空 | 隐藏参数,用来传递提示词信息 | 用于传递示例提示词或相关文本信息 | 自动传递,无需手动设置 |
3.2 Checkpoint Loader 🐍 节点
这个节点是干嘛的? 这是一个增强版的模型加载器,就像是一个智能相册,不仅能加载模型,还能显示模型的预览图,让你知道这个模型大概能生成什么风格的图片。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
ckpt_name | ckpt_name | 下拉选择列表 | 根据需要选择 | 选择你要用的主模型,就像选择不同的画家风格 | 指定要加载的 Checkpoint 模型文件名 | 选择 "sd_xl_base_1.0.safetensors" |
prompt | prompt | 文字 | 空 | 隐藏参数,用来传递提示词信息 | 用于传递示例提示词或相关文本信息 | 自动传递,无需手动设置 |
3.3 Constrain Image for Video 🐍 节点
这个节点是干嘛的? 这就像是一个智能的图片裁剪师,专门为视频制作调整图片尺寸。它能保持图片不变形的同时,把图片调整到你想要的大小范围内。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
images | images | 图片输入 | 必须连接 | 要处理的图片,就像是要修改的照片 | 输入的图像数据 | 连接前面节点输出的图片 |
max_width | max_width | 整数 (最小0) | 1024 | 图片最大宽度,就像设定相框的最大宽度 | 图像宽度的最大限制值 | 设置为 1920 表示最宽不超过 1920 像素 |
max_height | max_height | 整数 (最小0) | 1024 | 图片最大高度,就像设定相框的最大高度 | 图像高度的最大限制值 | 设置为 1080 表示最高不超过 1080 像素 |
min_width | min_width | 整数 (最小0) | 0 | 图片最小宽度,就像设定相框的最小宽度 | 图像宽度的最小限制值 | 设置为 512 表示最窄不少于 512 像素 |
min_height | min_height | 整数 (最小0) | 0 | 图片最小高度,就像设定相框的最小高度 | 图像高度的最小限制值 | 设置为 512 表示最矮不少于 512 像素 |
crop_if_required | crop_if_required | yes/no | no | 如果需要是否裁剪,就像问你要不要把多余的部分切掉 | 当图像超出限制时是否进行裁剪处理 | 选择 "yes" 表示允许裁剪多余部分 |
3.4 Constrain Image 🐍 节点
这个节点是干嘛的? 这是一个通用的图片尺寸调整器,就像是一个万能的相框,能把任何尺寸的图片调整到你指定的范围内,同时保持图片不变形。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
images | images | 图片输入 | 必须连接 | 要处理的图片,就像是要修改的照片 | 输入的图像数据 | 连接前面节点输出的图片 |
max_width | max_width | 整数 (最小0) | 1024 | 图片最大宽度,就像设定相框的最大宽度 | 图像宽度的最大限制值 | 设置为 1024 表示最宽不超过 1024 像素 |
max_height | max_height | 整数 (最小0) | 1024 | 图片最大高度,就像设定相框的最大高度 | 图像高度的最大限制值 | 设置为 1024 表示最高不超过 1024 像素 |
min_width | min_width | 整数 (最小0) | 0 | 图片最小宽度,就像设定相框的最小宽度 | 图像宽度的最小限制值 | 设置为 256 表示最窄不少于 256 像素 |
min_height | min_height | 整数 (最小0) | 0 | 图片最小高度,就像设定相框的最小高度 | 图像高度的最小限制值 | 设置为 256 表示最矮不少于 256 像素 |
crop_if_required | crop_if_required | yes/no | no | 如果需要是否裁剪,就像问你要不要把多余的部分切掉 | 当图像超出限制时是否进行裁剪处理 | 选择 "yes" 表示允许裁剪多余部分 |
3.5 Math Expression 🐍 节点
这个节点是干嘛的? 这就像是一个超级计算器,不仅能做简单的加减乘除,还能处理复杂的数学表达式,甚至能从其他节点获取数值来计算。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
expression | expression | 多行文字 | 根据需要输入 | 数学表达式,就像在计算器上输入算式 | 要计算的数学表达式字符串 | 输入 "a + b 2" 或 "width height / 1000" |
a | a | 任意类型 | 可选 | 变量a,就像是算式中的第一个未知数 | 表达式中可使用的变量a | 连接一个数值节点,如 512 |
b | b | 任意类型 | 可选 | 变量b,就像是算式中的第二个未知数 | 表达式中可使用的变量b | 连接一个数值节点,如 768 |
c | c | 任意类型 | 可选 | 变量c,就像是算式中的第三个未知数 | 表达式中可使用的变量c | 连接一个数值节点,如 1.5 |
3.6 PlaySound 🐍 节点
这个节点是干嘛的? 这就像是一个提醒铃铛,当任务完成时会播放声音来通知你,就像微波炉加热完成时的"叮"声一样。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
any | any | 任意类型 | 必须连接 | 传递的数据,就像是传话筒传递消息 | 透传的数据,用于连接工作流 | 连接前面任意节点的输出 |
mode | mode | always/on empty queue | always | 播放模式,就像设置闹钟什么时候响 | 控制声音播放的时机 | "always" 每次都播放,"on empty queue" 只在队列空时播放 |
volume | volume | 小数 (0-1) | 0.5 | 音量大小,就像调节音响的音量旋钮 | 播放声音的音量级别 | 0.8 表示 80% 音量,0.2 表示 20% 音量 |
file | file | 文字 | notify.mp3 | 声音文件名,就像选择不同的铃声 | 要播放的音频文件名称 | "notify.mp3" 或 "custom_sound.wav" |
3.7 Repeater 🐍 节点
这个节点是干嘛的? 这就像是一个复印机,能把同一个东西复制多份,或者把一个操作重复执行多次。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
source | source | 任意类型 | 必须连接 | 要重复的源数据,就像是要复印的原件 | 需要重复的输入数据 | 连接任意节点的输出 |
repeats | repeats | 整数 (0-5000) | 2 | 重复次数,就像设置复印机要复印几份 | 指定重复的次数 | 设置为 5 表示重复 5 次 |
output | output | single/multi | single | 输出模式,就像选择是装订成册还是分开放 | 控制输出数据的组织方式 | "single" 合并输出,"multi" 分别输出 |
node_mode | node_mode | reuse/create | reuse | 节点模式,就像选择是重复使用还是创建新的 | 控制节点的复用策略 | "reuse" 重复使用,"create" 创建新节点 |
3.8 Reroute Primitive 🐍 节点
这个节点是干嘛的? 这就像是一个数据中转站,能把数据从一个地方传递到另一个地方,让连线更整洁。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
value | value | 任意类型 | 必须连接 | 要传递的数据,就像是邮递员传递的包裹 | 需要重新路由的数据值 | 连接任意节点的输出 |
3.9 Show Text 🐍 节点
这个节点是干嘛的? 这就像是一个显示屏,能把文字内容显示出来,让你看到处理的结果或中间过程。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
text | text | 文字输入 | 必须连接 | 要显示的文字,就像是要在屏幕上显示的内容 | 需要显示的文本数据 | 连接文本生成节点的输出 |
3.10 String Function 🐍 节点
这个节点是干嘛的? 这就像是一个文字处理器,能把多段文字合并在一起,或者把文字中的某些部分替换成别的内容。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
action | action | append/replace | append | 操作类型,就像选择是拼接还是替换 | 指定对文本执行的操作类型 | "append" 拼接文字,"replace" 替换文字 |
tidy_tags | tidy_tags | yes/no | yes | 是否整理标签,就像是否要自动加标点符号 | 是否对文本进行格式化处理 | "yes" 自动添加逗号和整理格式 |
text_a | text_a | 多行文字 | 可选 | 第一段文字,就像是第一个句子 | 第一个文本输入 | 输入 "beautiful girl" |
text_b | text_b | 多行文字 | 可选 | 第二段文字,就像是第二个句子 | 第二个文本输入 | 输入 "long hair" |
text_c | text_c | 多行文字 | 可选 | 第三段文字,就像是第三个句子 | 第三个文本输入 | 输入 "blue eyes" |
3.11 SystemNotification 🐍 节点
这个节点是干嘛的? 这就像是一个系统通知助手,能在任务完成时向你的电脑发送通知消息,就像手机收到微信消息时的弹窗提醒。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
message | message | 文字 | Your notification has triggered. | 通知消息内容,就像是要发送的短信内容 | 系统通知中显示的消息文本 | 输入 "图片生成完成!" |
any | any | 任意类型 | 必须连接 | 传递的数据,就像是传话筒传递消息 | 透传的数据,用于连接工作流 | 连接前面任意节点的输出 |
mode | mode | always/on empty queue | always | 通知模式,就像设置什么时候发通知 | 控制通知发送的时机 | "always" 每次都通知,"on empty queue" 只在队列空时通知 |
3.12 Load Text 🐍 节点
这个节点是干嘛的? 这就像是一个文件阅读器,能从你电脑上的文本文件中读取内容,就像打开记事本查看里面的文字。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
root_dir | root_dir | 下拉选择列表 | 根据配置选择 | 根目录选择,就像选择要在哪个文件夹里找文件 | 指定文本文件所在的根目录 | 选择预设的目录如 "prompts" |
file | file | 下拉选择列表 | 根据目录内容选择 | 文件选择,就像从文件夹里选择要打开的文件 | 指定要加载的文本文件名 | 选择 "positive_prompts.txt" |
3.13 Save Text 🐍 节点
这个节点是干嘛的? 这就像是一个文件保存器,能把文字内容保存到你电脑上的文本文件中,就像用记事本保存文档。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
root_dir | root_dir | 下拉选择列表 | 根据配置选择 | 根目录选择,就像选择要把文件保存到哪个文件夹 | 指定文本文件保存的根目录 | 选择预设的目录如 "output" |
file | file | 文字 | file.txt | 文件名,就像给要保存的文件起个名字 | 指定保存的文本文件名 | 输入 "my_prompts.txt" |
append | append | append/overwrite/new only | append | 保存模式,就像选择是追加内容还是覆盖文件 | 控制文件写入的方式 | "append" 追加内容,"overwrite" 覆盖文件 |
insert | insert | 布尔值 | True | 是否插入换行,就像是否要在内容前加个回车 | 在追加模式下是否插入换行符 | True 表示自动换行,False 表示直接追加 |
text | text | 多行文字输入 | 必须连接 | 要保存的文字内容,就像是要写入文件的内容 | 需要保存的文本数据 | 连接文本生成节点的输出 |
4. 使用技巧和建议
4.1 图片尺寸调整技巧
使用 Constrain Image 节点时,建议先设置最大尺寸,再根据需要设置最小尺寸
如果要保持图片完整不被裁剪,将 crop_if_required 设置为 "no"
对于视频制作,推荐使用 Constrain Image for Video 节点
4.2 数学计算技巧
Math Expression 节点支持复杂表达式,可以使用 +、-、*、/、**(幂运算)等运算符
可以引用图片的宽高属性,如 a.width、a.height
支持函数调用,如 round()、floor()、ceil()、min()、max() 等
4.3 文本处理技巧
String Function 节点的 tidy_tags 功能很实用,能自动整理提示词格式
使用 replace 模式时,支持正则表达式,格式为 /正则表达式/
Load Text 和 Save Text 节点需要先配置允许的目录
4.4 通知提醒技巧
PlaySound 和 SystemNotification 节点建议放在工作流的最后
如果要批量处理,建议将 mode 设置为 "on empty queue"
可以自定义通知声音,替换 notify.mp3 文件
5. 常见问题解答
Q1: 为什么 Load Text 节点显示 "[none]"?
A: 这是因为还没有配置文本文件目录。需要在 user/text_file_dirs.json 文件中配置允许访问的目录。
Q2: Math Expression 节点报错怎么办?
A: 检查表达式语法是否正确,确保使用的变量(a、b、c)都有连接输入,函数名称拼写正确。
Q3: 图片尺寸调整后变形了怎么办?
A: Constrain Image 节点会保持宽高比,不会变形。如果觉得变形了,检查是否开启了 crop_if_required。
Q4: 声音通知不工作怎么办?
A: 确保浏览器允许播放声音,检查音量设置,确认 notify.mp3 文件存在。
Q5: 如何自定义通知声音?
A: 替换 ComfyUI/custom_nodes/ComfyUI-Custom-Scripts/web/js/assets/notify.mp3 文件即可。
6. 高级用法示例
示例1:智能图片尺寸调整工作流
图片输入 → Constrain Image → 设置最大尺寸1024x1024 → 输出标准尺寸图片
示例2:批量处理完成通知
批量任务 → SystemNotification (mode: on empty queue) → 队列完成时发送通知
示例3:动态尺寸计算
图片A → Math Expression (a.width * 2) → 计算双倍宽度 → 用于其他节点
示例4:提示词组合处理
基础提示词 → String Function (append模式) → 添加风格词 → 输出完整提示词
7. 总结
ComfyUI-Custom-Scripts 插件包含了 13个 实用节点,每个都有其独特的用途:
Lora Loader 🐍 - 增强版Lora加载器
Checkpoint Loader 🐍 - 增强版模型加载器
Constrain Image for Video 🐍 - 视频用图片尺寸调整
Constrain Image 🐍 - 通用图片尺寸调整
Math Expression 🐍 - 数学表达式计算器
PlaySound 🐍 - 声音通知
Repeater 🐍 - 数据重复器
Reroute Primitive 🐍 - 数据中转站
Show Text 🐍 - 文本显示器
String Function 🐍 - 文本处理器
SystemNotification 🐍 - 系统通知
Load Text 🐍 - 文本文件加载器
Save Text 🐍 - 文本文件保存器
这个插件极大地扩展了 ComfyUI 的功能,让工作流变得更加灵活和强大。无论是新手还是高级用户,都能从中找到适合自己的工具。记住,熟练使用这些节点的关键是多实践,多尝试不同的参数组合!