ComfyUI-N-Nodes 插件完全教程
1. 插件简介
ComfyUI-N-Nodes 是一个功能强大的 ComfyUI 插件套件,为 ComfyUI 提供了丰富的自定义节点。这个插件就像是给你的 ComfyUI 装上了一个超级工具箱,里面有各种各样的小工具,让你能做更多有趣的事情!
GitHub 原地址: https://github.com/Nuked88/ComfyUI-N-Nodes
这个插件能给我们带来什么效果?
- 视频处理功能:就像一个视频编辑器,可以把视频拆成一帧帧图片,也可以把图片重新组合成视频
- AI 文字生成:就像有个聪明的助手,可以根据图片生成描述文字,或者回答你的问题
- 变量存储:就像小盒子一样,可以存放数字、文字等信息,方便在不同地方使用
- 图片扩展:就像给照片加边框一样,可以智能地扩展图片边缘
- 动态提示词:就像抽奖机一样,可以随机组合不同的描述词
2. 如何安装
方法一:使用 Git 克隆(推荐)
- 打开终端或命令提示符
- 进入你的 ComfyUI 安装目录下的
custom_nodes文件夹 - 运行以下命令:
git clone https://github.com/Nuked88/ComfyUI-N-Nodes.git
方法二:手动下载
- 访问 https://github.com/Nuked88/ComfyUI-N-Nodes
- 点击绿色的 "Code" 按钮,选择 "Download ZIP"
- 解压到 ComfyUI 的
custom_nodes文件夹中
安装后步骤
- 重启 ComfyUI
- 如果要使用 GPT 相关功能,可能需要运行
install_extra.bat(Windows)来安装额外依赖 - 插件会自动安装所需的 Python 包
3. 节点详细解析
3.1 LoadVideo 节点 - 视频加载器
这个节点就像一个视频播放器,可以把视频文件读取进来,并且把视频拆解成一帧帧的图片。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| video | video | 文件列表 | 选择你的视频 | 选择要处理的视频文件 | 指定输入视频文件路径 | 从下拉菜单选择上传的 MP4 或 GIF 文件 |
| local_url | local_url | 字符串 | 空 | 显示视频的网址链接 | 本地视频文件的 URL 路径 | 自动生成,无需手动填写 |
| framerate | framerate | original/half/quarter | original | 控制视频播放速度 | 帧率处理选项 | original=原速度,half=半速,quarter=四分之一速 |
| resize_by | resize_by | none/width/height | none | 决定如何调整图片大小 | 图像缩放方式 | none=不调整,width=按宽度,height=按高度 |
| size | size | 整数 | 512 | 调整后的图片尺寸 | 目标尺寸像素值 | 如果选择按宽度调整,这里填写目标宽度 |
| images_limit | images_limit | 整数 | 0 | 最多提取多少帧图片 | 限制输出帧数 | 0=全部提取,100=只提取前100帧 |
| batch_size | batch_size | 整数 | 0 | 每次处理多少张图片 | 批处理大小 | 0=一次处理全部,10=每次处理10张 |
| starting_frame | starting_frame | 整数 | 0 | 从第几帧开始提取 | 起始帧位置 | 0=从头开始,30=从第30帧开始 |
| autoplay | autoplay | 布尔值 | True | 是否自动播放预览 | 视频预览自动播放 | True=自动播放,False=手动播放 |
| use_ram | use_ram | 布尔值 | False | 是否用内存存储图片 | 内存存储模式 | True=速度快但占内存,False=存硬盘 |
3.2 SaveVideo 节点 - 视频保存器
这个节点就像一个视频制作工具,可以把一堆图片重新组合成视频文件。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| images | images | 图片列表 | 连接图片输入 | 要制作成视频的图片序列 | 输入图像张量序列 | 连接处理后的图片输出 |
| METADATA | METADATA | 字符串 | 连接元数据 | 视频的基本信息 | 包含帧率、帧数等信息 | 通常连接 LoadVideo 的元数据输出 |
| SaveVideo | SaveVideo | 布尔值 | False | 是否保存视频文件 | 控制是否输出视频文件 | True=保存到硬盘,False=只预览 |
| SaveFrames | SaveFrames | 布尔值 | False | 是否保存单独的图片 | 控制是否保存帧图像 | True=同时保存每一帧图片 |
| filename_prefix | filename_prefix | 字符串 | "video" | 保存文件的名字前缀 | 输出文件名前缀 | 填写 "my_video" 会生成 "my_video_01.mp4" |
| CompressionLevel | CompressionLevel | 整数 | 2 | 图片压缩程度 | PNG 压缩级别 | 0=不压缩,9=最大压缩 |
3.3 LoadFramesFromFolder 节点 - 文件夹图片加载器
这个节点就像一个相册管理器,可以把文件夹里的所有图片一次性读取进来。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| folder | folder | 字符串 | 文件夹路径 | 图片所在的文件夹位置 | 目标文件夹路径 | 填写 "/path/to/images" |
| fps | fps | 整数 | 30 | 如果做成视频的播放速度 | 帧率设置 | 30=每秒30帧,60=每秒60帧 |
3.4 SetMetadataForSaveVideo 节点 - 视频信息设置器
这个节点就像一个标签制作器,可以为视频设置基本信息。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| number_of_frames | number_of_frames | 整数 | 1 | 总共有多少帧图片 | 视频总帧数 | 如果有100张图片就填100 |
| fps | fps | 整数 | 30 | 视频播放速度 | 视频帧率 | 30=正常速度,60=快速播放 |
| VideoName | VideoName | 字符串 | "manual" | 给视频起个名字 | 视频标识名称 | 填写 "my_animation" |
3.5 FrameInterpolator 节点 - 帧插值器
这个节点就像一个时间放慢器,可以在现有的视频帧之间插入新的帧,让视频变得更流畅。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| images | images | 图片列表 | 连接图片输入 | 要进行插值的图片序列 | 输入图像张量序列 | 连接视频帧输出 |
| METADATA | METADATA | 字符串 | 连接元数据 | 视频的基本信息 | 包含帧率、帧数等信息 | 连接 LoadVideo 的元数据输出 |
| multiplier | multiplier | 整数 | 2 | 增加多少倍的帧数 | 插值倍数 | 2=帧数翻倍,4=帧数变4倍 |
3.6 GPTLoaderSimple 节点 - AI模型加载器
这个节点就像一个智能助手的大脑,负责加载各种AI模型。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| ckpt_name | ckpt_name | 模型列表 | 选择模型 | 选择要使用的AI模型 | 模型检查点文件 | 选择 "joytag" 或 "moondream" |
| gpu_layers | gpu_layers | 整数 | 27 | 用显卡处理多少层 | GPU 加速层数 | 27=大部分用显卡,0=全用CPU |
| n_threads | n_threads | 整数 | 8 | 用多少个CPU线程 | CPU 线程数 | 8=8个线程并行处理 |
| max_ctx | max_ctx | 整数 | 2048 | 最大记忆长度 | 最大上下文长度 | 2048=能记住2048个词 |
| llava_clip | llava_clip | LLAVA_CLIP | 可选 | 视觉理解组件 | LLaVA 视觉编码器 | 使用LLaVA模型时需要 |
3.7 GPTSampler 节点 - AI文本生成器
这个节点就像一个智能写手,可以根据图片或提示生成文字描述。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | 模型对象 | 连接模型 | 要使用的AI模型 | 加载的模型实例 | 连接 GPTLoaderSimple 输出 |
| max_tokens | max_tokens | 整数 | 2048 | 最多生成多少个词 | 最大输出标记数 | 100=短描述,500=长描述 |
| temperature | temperature | 浮点数 | 0.7 | 创意程度控制 | 随机性控制参数 | 0.1=很保守,0.9=很有创意 |
| top_p | top_p | 浮点数 | 0.5 | 词汇选择范围 | 核采样参数 | 0.1=选择范围小,0.9=选择范围大 |
| logprobs | logprobs | 整数 | 0 | 显示概率信息 | 输出对数概率数量 | 0=不显示,5=显示前5个概率 |
| echo | echo | 选择 | disable | 是否重复输入内容 | 是否回显输入 | enable=显示输入,disable=只显示输出 |
| stop_token | stop_token | 字符串 | "STOPTOKEN" | 停止生成的标记 | 停止标记 | 遇到这个词就停止生成 |
| frequency_penalty | frequency_penalty | 浮点数 | 0.0 | 重复词汇惩罚 | 频率惩罚系数 | 0.5=减少重复,-0.5=允许重复 |
| presence_penalty | presence_penalty | 浮点数 | 0.0 | 新词汇鼓励 | 存在惩罚系数 | 0.5=鼓励新词,-0.5=偏好旧词 |
| repeat_penalty | repeat_penalty | 浮点数 | 1.17647 | 重复内容惩罚 | 重复惩罚系数 | 1.2=减少重复,0.8=允许重复 |
| top_k | top_k | 整数 | 40 | 候选词汇数量 | Top-K 采样参数 | 40=从前40个词中选择 |
| tfs_z | tfs_z | 浮点数 | 1.0 | 尾部自由采样 | TFS 参数 | 1.0=标准,0.5=更保守 |
| print_output | print_output | 选择 | disable | 是否在控制台显示 | 控制台输出控制 | enable=显示在控制台 |
| cached | cached | YES/NO | NO | 是否使用缓存结果 | 缓存控制 | YES=使用上次结果,NO=重新生成 |
| prefix | prefix | 字符串 | "### Instruction: " | 输入前缀 | 提示词前缀 | 添加在问题前面的文字 |
| suffix | suffix | 字符串 | "### Response: " | 输入后缀 | 提示词后缀 | 添加在问题后面的文字 |
| max_tags | max_tags | 整数 | 50 | 最多生成标签数 | 最大标签数量 | 仅对 joytag 模型有效 |
| prompt | prompt | 字符串 | 连接输入 | 要问的问题或指令 | 输入提示词 | "描述这张图片" |
| image | image | 图片 | 连接图片 | 要分析的图片 | 输入图像 | 连接图片输出 |
3.8 LlavaClipLoader 节点 - 视觉理解加载器
这个节点就像给AI装上眼睛,让它能够理解图片内容。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| clip_name | clip_name | 模型列表 | 选择CLIP模型 | 选择视觉理解模型 | CLIP 模型文件 | 选择对应的 .gguf 或 .bin 文件 |
3.9 DynamicPrompt 节点 - 动态提示词生成器
这个节点就像一个抽奖机,可以从一堆词汇中随机选择组合成新的描述。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| variable_prompt | variable_prompt | 字符串 | 连接输入 | 可变的词汇库 | 变量提示词池 | "红色,蓝色,绿色,大的,小的" |
| cached | cached | YES/NO | NO | 是否使用上次结果 | 缓存控制 | YES=固定结果,NO=每次随机 |
| number_of_random_tag | number_of_random_tag | Fixed/Random | Random | 选择词汇数量方式 | 随机标签数量模式 | Fixed=固定数量,Random=随机数量 |
| fixed_number_of_random_tag | fixed_number_of_random_tag | 整数 | 1 | 固定选择多少个词 | 固定标签数量 | 3=总是选择3个词汇 |
| fixed_prompt | fixed_prompt | 字符串 | 连接输入 | 固定不变的描述 | 固定提示词 | "一个美丽的" |
3.10 CLIPTextEncodeAdvanced 节点 - 高级文本编码器
这个节点就像一个智能翻译器,可以把文字描述转换成AI能理解的格式,还能管理不同的风格模板。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| styles | styles | 风格列表 | 选择风格 | 预设的描述风格模板 | 预定义样式模板 | 选择 "NAI" 风格 |
| positive_prompt | positive_prompt | 字符串 | 输入描述 | 想要的效果描述 | 正向提示词 | "美丽的风景,高质量" |
| negative_prompt | negative_prompt | 字符串 | 输入描述 | 不想要的效果描述 | 负向提示词 | "模糊,低质量" |
| clip | clip | CLIP对象 | 连接CLIP | 文本编码器 | CLIP 模型实例 | 连接 CLIP 模型输出 |
3.11 ImagePadForOutpaintAdvanced 节点 - 高级图片扩展器
这个节点就像一个智能画框师,可以给图片加上智能生成的边框,让图片变得更大。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | 图片 | 连接图片 | 要扩展的原始图片 | 输入图像张量 | 连接图片输出 |
| left | left | 整数 | 0 | 左边扩展多少像素 | 左侧填充像素数 | 100=向左扩展100像素 |
| top | top | 整数 | 0 | 上边扩展多少像素 | 顶部填充像素数 | 50=向上扩展50像素 |
| right | right | 整数 | 0 | 右边扩展多少像素 | 右侧填充像素数 | 100=向右扩展100像素 |
| bottom | bottom | 整数 | 0 | 下边扩展多少像素 | 底部填充像素数 | 50=向下扩展50像素 |
| feathering | feathering | 整数 | 40 | 边缘羽化程度 | 边缘羽化像素数 | 40=柔和过渡,0=硬边缘 |
| noise | noise | 浮点数 | 0.1 | 噪点混合程度 | 噪声混合比例 | 0.1=少量噪点,0.5=较多噪点 |
| pixel_size | pixel_size | 整数 | 8 | 像素化效果大小 | 像素化块大小 | 8=小块,32=大块 |
| pixel_to_copy | pixel_to_copy | 整数 | 32 | 复制边缘像素数 | 边缘复制像素数 | 32=复制32像素宽的边缘 |
| temperature | temperature | 浮点数 | 0 | 色温调整 | 色温偏移 | 正数=偏暖,负数=偏冷 |
| hue | hue | 浮点数 | 0 | 色相调整 | 色相偏移 | 调整颜色倾向 |
| brightness | brightness | 浮点数 | 0 | 亮度调整 | 亮度偏移 | 正数=更亮,负数=更暗 |
| contrast | contrast | 浮点数 | 0 | 对比度调整 | 对比度偏移 | 正数=对比度高,负数=对比度低 |
| saturation | saturation | 浮点数 | 0 | 饱和度调整 | 饱和度偏移 | 正数=更鲜艳,负数=更灰 |
| gamma | gamma | 浮点数 | 1 | 伽马校正 | 伽马值 | 1=标准,2=更亮,0.5=更暗 |
3.12 IntegerVariable 节点 - 整数变量存储器
这个节点就像一个数字盒子,可以存放整数,方便在不同地方使用。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| value | value | 整数 | 0 | 要存储的整数值 | 整数变量值 | 存储 100、512 等整数 |
3.13 FloatVariable 节点 - 小数变量存储器
这个节点就像一个小数盒子,可以存放带小数点的数字。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| value | value | 浮点数 | 0 | 要存储的小数值 | 浮点数变量值 | 存储 0.5、1.25 等小数 |
3.14 StringVariable 节点 - 文字变量存储器
这个节点就像一个文字盒子,可以存放文字内容。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| string | string | 字符串 | 空 | 要存储的文字内容 | 字符串变量值 | 存储 "hello world" 等文字 |
3.15 LoadImageFromFolder 节点 - 文件夹图片加载器(实验性)
这个节点和 LoadFramesFromFolder 功能类似,也是从文件夹加载图片。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| folder | folder | 字符串 | 文件夹路径 | 图片所在的文件夹位置 | 目标文件夹路径 | 填写图片文件夹完整路径 |
| fps | fps | 整数 | 30 | 如果做成视频的播放速度 | 帧率设置 | 30=每秒30帧 |
3.16 前端JavaScript节点 - 用户界面增强
插件还包含多个前端JavaScript文件,为节点提供更好的用户体验:
cte_advanced.js - 高级文本编码器界面
- 提供风格管理功能
- 支持添加、更新、删除风格模板
- 自动填充正负提示词
dynamicPrompt.js - 动态提示词界面
- 提供随机文本生成显示
- 支持缓存控制
- 动态更新输出内容
extended_widgets.js - 扩展组件
- 提供视频预览功能
- 支持拖拽上传视频文件
- 自动播放控制
gptSampler.js - GPT采样器界面
- 提供文本输出显示
- 支持缓存结果显示
- 动态更新生成内容
videoLoadAdvanced.js - 视频加载界面
- 提供视频上传功能
- 支持拖拽操作
- 视频预览播放
videoSave.js - 视频保存界面
- 提供视频输出预览
- 自动显示生成的视频
- 支持视频播放控制
3.17 节点统计总结
当前已输出节点数:17个
剩余未输出节点数:0个
所有节点已完整输出,包括:
- 5个视频处理节点
- 3个GPT/AI相关节点
- 3个变量存储节点
- 3个图像处理节点
- 1个动态提示词节点
- 1个高级文本编码节点
- 1个实验性图片加载节点
- 6个前端JavaScript增强组件
4. 使用技巧和建议
视频处理工作流建议
- 基础视频处理:LoadVideo → 图像处理节点 → SaveVideo
- 视频插值:LoadVideo → FrameInterpolator → SaveVideo
- 批量图片处理:LoadFramesFromFolder → 图像处理 → SaveVideo
AI文本生成建议
- 图片描述:使用 joytag 模型快速生成标签
- 图片问答:使用 moondream 模型进行图片问答
- 文本生成:使用 GGUF 模型进行创意写作
变量使用建议
- 使用变量节点存储常用参数,避免重复设置
- 整数变量适合存储尺寸、数量等参数
- 字符串变量适合存储提示词、路径等文本
性能优化建议
- GPU设置:有显卡时设置 gpu_layers > 0
- 内存管理:大视频处理时关闭 use_ram
- 批处理:设置合适的 batch_size 提高效率
5. 常见问题解答
Q1: 安装后找不到节点怎么办?
A: 确保重启了 ComfyUI,检查控制台是否有错误信息。如果有依赖缺失,运行 install_extra.bat。
Q2: GPT节点报错怎么办?
A: 确保已安装相关依赖,检查模型文件是否正确下载到 models/GPTcheckpoints 文件夹。
Q3: 视频处理很慢怎么办?
A: 尝试调整 batch_size,使用 GPU 加速,或者降低视频分辨率。
Q4: 如何添加自己的GPT模型?
A: 将 .gguf 格式的模型文件放到 models/GPTcheckpoints 文件夹,重启 ComfyUI 即可。
Q5: 动态提示词不随机怎么办?
A: 确保 cached 设置为 "NO",检查 variable_prompt 是否用逗号正确分隔。
Q6: 图片扩展效果不好怎么办?
A: 调整 pixel_to_copy 和 feathering 参数,尝试不同的 noise 值。
6. 更新和维护
如何更新插件
- 进入插件目录:
cd custom_nodes/ComfyUI-N-Nodes - 拉取最新代码:
git pull - 重启 ComfyUI
如何卸载插件
- 删除
custom_nodes/ComfyUI-N-Nodes文件夹 - 删除
web/extensions/comfyui-n-nodes文件夹 - 删除
styles/n-styles.csv文件 - 删除
models/GPTcheckpoints文件夹
7. 总结
ComfyUI-N-Nodes 是一个功能丰富的插件套件,提供了从视频处理到AI文本生成的全方位功能。通过合理使用这些节点,你可以创建出强大的工作流,实现各种创意想法。
记住,这个插件就像一个工具箱,每个节点都是一个专门的工具。熟练掌握每个工具的用法,并学会组合使用,你就能发挥出这个插件的最大潜力!