Extensions/yanhuo-easy-use
ComfyUI Extension

yanhuo-easy-use

烟火的 ComfyUI 实用节点集:文本处理 / 批量替换、音频拼接与音频批次、图像批次、视频对比、整数控制、组忽略管理等 16 个节点,中文界面,含前端扩展。

By yanhuoxunxianren·Created 7 days ago·Updated about 21 hours ago· 2
yanhuoxunxianren/yanhuo-easy-use
Nodes—
On cloudLocal install
Stars2
Updatedabout 21 hours ago
Readme

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 ~ 音频9 AUDIO(按需连接,未连接的端口自动忽略)
  • 输出:音频 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_50 AUDIO
  • 输出:audios AUDIO(音频列表)
  • 说明
    • 各段独立:与「音频拼接」相反,不做首尾拼接,批次内每段保留原采样率与声道数。
    • 自动跳过空输入:未连接、波形为空、0 采样、以及纯静音占位音频(可选)都不参与打包。
    • 输入本身是批次(waveform batch > 1)时会按 batch 顺序逐条拆出。
    • 采样率 / 声道数不一致时仅打印提示,不重采样、不报错。
    • 全部输入为空时输出 1 段 1 秒静音兜底,保证链路不断。

音频批次预览/保存

音频批次的接收端,逐段试听 / 保存。

  • 输入
    • audios AUDIO — 音频批次(可含多段不同音频)
    • 输出模式 预览 / 保存 / 预览并保存
    • 保存格式 flac / mp3 / opus
    • 音质 V0 / 64k / 96k / 128k / 192k / 320k
    • 文件名前缀 STRING(默认 audio/yanhuo)
  • 输出:audios AUDIO — 原样透传,可继续串接下游节点
  • 说明
    • 预览写入 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_50 IMAGE(支持图像列表输入)
  • 输出:images IMAGE(图像列表)
  • 说明
    • 自动跳过空输入:未连接、非张量、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_b VIDEO(均可选)— 分割线前 / 后的两路视频
    • 采样帧数 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 — 可接入下一个「列表编号」的起始编号,实现跨节点连续编号
  • 说明:空输入时返回 [""],避免空列表中断下游执行。

文本批量替换

按行配对的批量查找替换,带台词保护。

  • 输入
    • text STRING — 原始文本
    • 查找文本 STRING(多行,第 n 行对应替换文本第 n 行)
    • 替换文本 STRING(多行)
    • 台词保护 BOOLEAN
  • 输出:text STRING
  • 说明
    • 最长匹配优先:按查找串长度降序处理,避免短名误替换长名中的子串(如先替换「小明明」再替换「小明」)。
    • 台词保护开启后,被引号包裹的人物说话内容不参与替换,支持 ""、''、“”、‘’、「」、『』 六种引号。
    • 空行(空查找串)自动跳过。

文本排序验证

验证一批对象在文本中的出现次序,并按实际出现先后排序输出。

  • 输入
    • text STRING — 待检查文本
    • 验证对象 STRING(多行,每行一个,自动去重)
    • 分隔符 STRING(默认 ,)
  • 输出:text STRING
  • 说明:按每个对象在文本中首次出现的位置升序排列,用分隔符拼接;文本中未出现的对象直接跳过。常用于校验剧本/提示词的出场顺序。

文本处理

本插件的核心文本节点:多端口文本拼合 → 按规则分段 → 段落选取 → 输出。

  • 输入
    • text STRING — 基础文本
    • 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 ~ 段落100 STRING — 分段列表模式下按原始索引一一对应
  • 说明
    • 输入端口接受任意类型,会自动转成字符串(列表按换行拼接、bytes 按 utf-8/latin-1 解码)。
    • 「选取段落」同时影响 总段 和 段落x 端口的内容。

组忽略管理器

纯前端工具节点,节点本体不参与计算,只作为可持久化的面板载体。

  • 输入:无
  • 输出:无
  • 功能(全部在 web/js/group_ignore_manager.js 中实现)
    • 列出工作流中的组,逐个开启 / 忽略(组内节点 mode 在 ALWAYS 与 BYPASS 之间切换)
    • 自定义要管理的组、拖拽排序、按颜色筛选
    • 为每个组配置「组开启时 / 组关闭时」的联动规则
    • 联动规则的下拉选择同分类内互斥:某个组已在「组开启时」被某条规则选走,同分类其它规则的下拉里就不再出现它(避免一个组被重复联动);「组开启时」与「组关闭时」两个分类各自独立,互不影响
    • 点「+」新增规则时默认选中本分类下第一个未被占用的组
  • 说明:配置数据以纯 JSON 存放在节点的 properties.yanhuoGroupIgnore 中,随工作流一起保存。

依赖

仅需 ComfyUI 运行环境自带的依赖:

  • numpy
  • torch
  • Pillow
  • av(PyAV)— 音频解码 / 编码,供「加载批量音频」「音频批次预览/保存」使用

无额外 pip 安装项。


许可证

MIT © 2026 yanhuo