yanhuo-easy-use
烟火的 ComfyUI 实用节点集:文本处理 / 批量替换、音频拼接与音频批次、图像批次、视频对比、整数控制、组忽略管理等 16 个节点,中文界面,含前端扩展。
yanhuo-easy-use
烟火的 ComfyUI 实用节点集。分类名为 yanhuo,节点界面全中文,包含文本处理、图像批次、音频批次与拼接、格式转换、组管理等一系列日常搭工作流时反复要用到的零散工具。
目前共 16 个节点,另有 web/js 前端交互扩展。
目录
安装
cd ComfyUI/custom_nodes
git clone https://github.com/yanhuoxunxianren/yanhuo-easy-use.git
重启 ComfyUI 即可。无需 pip install:用到的 numpy / torch / Pillow / av(PyAV) 都由 ComfyUI 运行环境自带。
在画布上双击空白处搜索 yanhuo,或直接在节点分类 yanhuo 下找到全部节点。
节点一览
| 节点显示名 | 类名 | 主要用途 |
| --- | --- | --- |
| 整数控制 | YanhuoIntegerControl | 整数值的固定 / 递增 / 递减 / 随机,常用于种子与序号控制 |
| 音频拼接 | YanhuoAudioConcat | 最多 9 段音频首尾拼接 |
| 加载批量音频 | YanhuoMultiAudio | 多音轨批量导入音频,20 路独立输出,音轨可重命名 |
| 音频批次合并 | YanhuoAudioBatchMulti | 最多 50 路音频打包成一个音频批次,各段独立不拼接 |
| 音频批次预览/保存 | YanhuoAudioBatchSave | 音频批次逐段试听 / 保存为 flac / mp3 / opus |
| 筛选音频 | YanhuoAudioFilter | 按索引从音频批次中挑出一段或多段 |
| 视频对比 | YanhuoVideoCompare | 两路 VIDEO 采样成对帧,用滑轨组件逐帧对比 |
| 图像批次合并 | YanhuoImageBatchMulti | 最多 50 路图像合成一个批次,尺寸自动对齐 |
| 加载批量图像 | YanhuoMultiImage | 多滑轨批量上传/拖入/粘贴图像,20 路独立输出 |
| 筛选图像 | YanhuoImageFilter | 按索引从批次中挑出一张或多张 |
| 格式转换 | YanhuoFormatConvert | 任意输入转 string / int / float / boolean |
| 列表编号 | YanhuoListNumber | 多行文本逐行编号,支持前后缀与接续编号 |
| 文本批量替换 | YanhuoTextReplace | 按行配对批量查找替换,可选台词保护 |
| 文本排序验证 | YanhuoTextSortVerify | 按对象在文本中首次出现的位置排序输出 |
| 文本处理 | YanhuoTextProcess | 多端口文本拼合 + 8 种分段方式 + 段落选取 |
| 组忽略管理器 | YanhuoGroupIgnoreManager | 一键开启 / 忽略组,并配置联动规则(纯前端) |
节点详解
整数控制
对整数做「固定 / 增加 / 减少 / 随机」四种后处理,常用于批量生成时自动推进种子或序号。
- 输入
数值INT — 当前值生成后控制固定 / 增加 / 减少 / 随机增加数值INT — 选择「增加」时的步长减少数值INT — 选择「减少」时的步长
- 输出:
整数INT - 说明:选择「增加 / 减少」时,本次输出的仍是当前值,同时把
当前值 ± 步长回写到节点 UI 上,供下一次执行使用;选择「随机」时直接返回随机整数。
音频拼接
把最多 9 段音频按顺序拼成一整段。
- 输入
方向之后 / 之前 — 决定拼接顺序(「之前」为倒序拼接)音频1~音频9AUDIO(按需连接,未连接的端口自动忽略)
- 输出:
音频AUDIO - 说明:至少连接一段音频。多段采样率不一致时会打印警告但不中断;通道数或形状不一致导致拼接失败时会给出明确报错。
加载批量音频(多轨道版)
一个节点顶 20 个音频加载器,每条音轨独立选择、独立输出。
- 输入:
音轨数据STRING(JSON,由前端自动维护,形如[{"name":"音频A","paths":["a.mp3","b.wav"]}]) - 输出:
音频A~音频T共 20 路 AUDIO(音频批次 —— 每条音轨的每段音频各成一项) - 说明
- 支持点击选择、拖拽、粘贴多个音频文件,一条音轨内可放多段音频。
- 音轨可重命名,右侧输出端口名跟随音轨名变化。
- 路径支持
output:/input:/temp:前缀,以及绝对路径、相对 input 目录的路径。 - 空音轨输出 1 秒静音兜底,不报错、不中断执行。
- 用 PyAV 解码,各段音频保持自己的采样率与声道数。
音频批次合并
把多路音频打包成一个「音频批次」—— 不是拼接,每段音频各自独立保留,与「图像批次合并」同理。
- 输入
输入数量INT(2–50)— 控制前端端口数量,需点「更新输入」生效跳过静音占位BOOLEAN — 上游无结果时常输出纯静音占位音频,开启时视为空输入跳过audio_1~audio_50AUDIO
- 输出:
audiosAUDIO(音频列表) - 说明
- 各段独立:与「音频拼接」相反,不做首尾拼接,批次内每段保留原采样率与声道数。
- 自动跳过空输入:未连接、波形为空、0 采样、以及纯静音占位音频(可选)都不参与打包。
- 输入本身是批次(waveform batch > 1)时会按 batch 顺序逐条拆出。
- 采样率 / 声道数不一致时仅打印提示,不重采样、不报错。
- 全部输入为空时输出 1 段 1 秒静音兜底,保证链路不断。
音频批次预览/保存
音频批次的接收端,逐段试听 / 保存。
- 输入
audiosAUDIO — 音频批次(可含多段不同音频)输出模式预览 / 保存 / 预览并保存保存格式flac / mp3 / opus音质V0 / 64k / 96k / 128k / 192k / 320k文件名前缀STRING(默认audio/yanhuo)
- 输出:
audiosAUDIO — 原样透传,可继续串接下游节点 - 说明
- 预览写入 temp 目录、在节点上直接逐段试听;保存写入 output 目录,文件名自动编号。
- mp3 不支持 64k / 96k / 192k 时自动回退到 128k;flac 忽略「音质」设置。
- 运行后节点下方会拉出结果面板:批次里每一段音频各占一行(序号 / 保存·预览标记 / 文件名 / 播放器),行数自适应节点高度,超过 100 段后面板内部滚动。
- 结果会随工作流一起保存,重开页面或重新加载工作流仍能看到上次运行的结果,无需重跑;面板右上角「清空」可手动清掉。
- 「预览并保存」模式下同一段会产生 output / temp 两份记录,面板按文件名去重,优先显示保存件。
筛选音频
按索引从音频批次里挑段,顺序保持。
- 输入
输入音频AUDIO — 音频批次索引列表STRING — 逗号分隔,从 0 起,如5,3,0,1;支持多行与中英文逗号
- 输出:
筛选音频AUDIO(音频列表) - 说明:按书写顺序提取(不是自动从小到大排序);越界或无法解析的索引自动忽略;全部无效时回退输出第 0 段;输入为空时输出 1 秒静音兜底。
图像批次合并
把多路图像 / 图像列表按顺序合并成一个批次,是本插件最"抗造"的一个节点。
- 输入
输入数量INT(2–50)— 控制前端端口数量,需点「更新输入」生效尺寸处理缩放到第一张(默认):全部拉伸到第 1 路有效输入的尺寸缩放到最大:拉伸到最大宽高(不等比,会变形)中心缩放裁切到最大:等比放大后居中裁切,不变形、无黑边,会裁掉边缘填充到最大:保持比例居中放置,四周补黑,不变形、有黑边按原像素(图像列表):完全不缩放,输出图像列表,各图保持原始分辨率严格:尺寸必须完全一致,否则报错中断
跳过黑色占位图BOOLEAN — 把上游筛选类节点输出的 64×64 全黑兜底图视为空输入并跳过image_1~image_50IMAGE(支持图像列表输入)
- 输出:
imagesIMAGE(图像列表) - 说明
- 自动跳过空输入:未连接、非张量、batch 为 0 的端口全部跳过,不会插入黑色占位图。
- 尺寸不一致不再报错,默认自动对齐,只有显式选「严格」才中断。
- 通道数不一致时以第 1 路为准,多的裁掉、少的用 1.0 补齐。
- 全部端口都为空时输出 1 张 64×64 黑图兜底,不抛异常。
加载批量图像(多滑轨版)
一个节点顶 20 个图像加载器,每个滑轨独立上传、独立输出。
- 输入:
滑轨数据STRING(JSON,由前端自动维护,形如[{"name":"批量图像A","paths":["img1.png"]}]) - 输出:
批量图像A~批量图像T共 20 路 IMAGE - 说明
- 支持点击上传、拖拽、粘贴三种方式批量导入。
- 使用 lanczos 插值把宽高向上取整到 16 的倍数(对齐模型常见要求)。
- 同一滑轨内尺寸不一致时,以第一张为基准做中心裁切,避免拉伸变形。
- 路径支持
output:/input:/temp:前缀,以及绝对路径、相对 input 目录的路径。 - 空滑轨输出 1 张 64×64 黑图占位。
筛选图像
按索引从图像批次里挑帧。
- 输入
输入图像IMAGE索引列表STRING — 逗号分隔,从 0 起,如0,2,5;支持多行
- 输出:
筛选图像IMAGE - 说明:超出范围或无法解析的索引自动忽略;全部无效时回退输出 1 张 64×64 黑图,保证链路不断。
视频对比
两路视频做「改造前 / 改造后」对比:按时间轴均匀采样成对帧,交给 ComfyUI 官方的图像对比滑轨组件,
拖动分割线即可逐帧看差异(对齐官方 ImageCompare 的 ui 契约,滑轨体验与官方一致)。
- 输入
video_a/video_bVIDEO(均可选)— 分割线前 / 后的两路视频采样帧数INT(1–250,默认 24)— 两路各采样多少帧配成对对齐方式缩放到第一帧 / 中心缩放裁切 / 填充补黑 — 两路分辨率不一致时的处理compare_view— 官方滑轨组件(仅 Node 2.0 界面可用)
- 输出:无输出端口(结果直接显示在节点上)
- 说明
- 按时间轴对齐:不是按帧号硬对齐,两路时长不同也能逐帧对比;较短的一路冻结在最后一帧。
- 对齐方式:
缩放到第一帧直接拉伸(可能变形);中心缩放裁切等比放大盖住后居中裁边(不变形,裁掉边缘);填充补黑等比缩放到能放下并居中补黑(不变形,有黑边)。 - 某一路未连接时用对方尺寸的黑帧占位,两路都为空时不报错。
- 采样的成对帧写入 temp 目录,供滑轨组件显示;
采样帧数越大越细但耗时与磁盘占用越高。
格式转换
万能类型适配器,把任意输入转成指定类型。
- 输入
*任意类型格式类型string / int / float / boolean
- 输出:
输出任意类型 - 说明:所有 ComfyUI 内置节点都提供了
INT、FLOAT、STRING、BOOLEAN输入,ComfyUI 会自动做转换,因此该节点主要供其他需要显式类型匹配的自定义节点使用。
列表编号
给多行文本逐行加编号,多个节点可串联接续编号。
- 输入
文本STRING(多行,每行一组)起始编号INT(默认 1)编号前缀STRING(如第)编号后缀STRING(如项)输出模式列表 / 合并文本合并间隔符STRING(默认\n,仅在「合并文本」模式生效)
- 输出
输出STRING(列表)接续编号INT — 可接入下一个「列表编号」的起始编号,实现跨节点连续编号
- 说明:空输入时返回
[""],避免空列表中断下游执行。
文本批量替换
按行配对的批量查找替换,带台词保护。
- 输入
textSTRING — 原始文本查找文本STRING(多行,第 n 行对应替换文本第 n 行)替换文本STRING(多行)台词保护BOOLEAN
- 输出:
textSTRING - 说明
- 最长匹配优先:按查找串长度降序处理,避免短名误替换长名中的子串(如先替换「小明明」再替换「小明」)。
- 台词保护开启后,被引号包裹的人物说话内容不参与替换,支持
""、''、“”、‘’、「」、『』六种引号。 - 空行(空查找串)自动跳过。
文本排序验证
验证一批对象在文本中的出现次序,并按实际出现先后排序输出。
- 输入
textSTRING — 待检查文本验证对象STRING(多行,每行一个,自动去重)分隔符STRING(默认,)
- 输出:
textSTRING - 说明:按每个对象在文本中首次出现的位置升序排列,用分隔符拼接;文本中未出现的对象直接跳过。常用于校验剧本/提示词的出场顺序。
文本处理
本插件的核心文本节点:多端口文本拼合 → 按规则分段 → 段落选取 → 输出。
- 输入
textSTRING — 基础文本any_1~any_64任意类型 — 最多 64 路输入,按顺序拼合后统一分段输入端口INT(1–64)— 控制前端输入端口数量,需点「更新端口」生效输出段落INT(0–100)— 控制前端段落x输出端口数量,需点「更新端口」生效分段方式端口:严格按输入端口分割,端口序号 ↔ 段落索引一一对应空行(默认):识别双换行序号:识别1./(1)/A.等列表标记段落:每一行算一段标题:智能识别章节标题(长度 ≤20、结尾无标点、含书名号/编号等特征)数字:仅提取纯数字地址:从乱码、列表、对象字符串中提取 Windows 路径(如D:\Data\img.png)并清洗手动:按|||分隔符自定义分割
输出模式BOOLEAN — 输出原始文本 / 输出分段列表段落优化BOOLEAN — 去除首尾空格 / 保留原始空格选取段落STRING —-1输出全部,留空不输出,0,2,4输出第 1/3/5 段
- 输出
数:INT — 选中的段落数总段:STRING(列表)— 全部选中的段落段落1~段落100STRING — 分段列表模式下按原始索引一一对应
- 说明
- 输入端口接受任意类型,会自动转成字符串(列表按换行拼接、bytes 按 utf-8/latin-1 解码)。
- 「选取段落」同时影响
总段和段落x端口的内容。
组忽略管理器
纯前端工具节点,节点本体不参与计算,只作为可持久化的面板载体。
- 输入:无
- 输出:无
- 功能(全部在
web/js/group_ignore_manager.js中实现)- 列出工作流中的组,逐个开启 / 忽略(组内节点 mode 在
ALWAYS与BYPASS之间切换) - 自定义要管理的组、拖拽排序、按颜色筛选
- 为每个组配置「组开启时 / 组关闭时」的联动规则
- 联动规则的下拉选择同分类内互斥:某个组已在「组开启时」被某条规则选走,同分类其它规则的下拉里就不再出现它(避免一个组被重复联动);「组开启时」与「组关闭时」两个分类各自独立,互不影响
- 点「+」新增规则时默认选中本分类下第一个未被占用的组
- 列出工作流中的组,逐个开启 / 忽略(组内节点 mode 在
- 说明:配置数据以纯 JSON 存放在节点的
properties.yanhuoGroupIgnore中,随工作流一起保存。
依赖
仅需 ComfyUI 运行环境自带的依赖:
numpytorchPillowav(PyAV)— 音频解码 / 编码,供「加载批量音频」「音频批次预览/保存」使用
无额外 pip 安装项。
许可证
MIT © 2026 yanhuo