ComfyUI Extension: ZMG PLUGIN
Nodes:ApiRequestNode, LoadVideoNode, JsonParserNode, OllamaRequestNode, OldPhotoColorizationNode, waveform_2_audio, SaveImageUnifiedOutput, VideoHelperUnifiedOutput, ...
Custom Nodes (0)
README
ComfyUI-ZMG-Nodes
一个功能丰富的ComfyUI自定义节点集合,提供多种实用工具和增强功能。
📋 简介
ComfyUI-ZMG-Nodes是一个专为ComfyUI设计的自定义节点插件包,包含多个实用的节点,旨在提升工作流的效率和功能性。所有节点都经过优化,具有完善的错误处理、类型注解和详细的文档说明。
🚀 功能特性
- 完整的类型注解:所有代码都包含详细的类型注解,提高代码可读性和维护性
- 强大的错误处理:每个节点都具有完善的异常处理机制
- 详细的文档:所有函数和类都有完整的中文文档说明
- 高性能优化:代码结构经过优化,提供更好的性能表现
- 统一的日志系统:集成彩色日志输出,便于调试和监控
- 统一的分类系统:所有节点都使用
ZMGNodes/前缀进行分类,便于在ComfyUI中查找和管理
📦 节点列表
所有节点都按照功能分类,在ComfyUI中以ZMGNodes/前缀显示:
ZMGNodes/network- 网络相关节点ZMGNodes/data- 数据处理节点ZMGNodes/image- 图像处理节点ZMGNodes/utils- 工具类节点ZMGNodes/audio- 音频处理节点
🌐 网络请求节点 (ZMGNodes/network)
-
API Request Node - 强大的HTTP请求节点
- 支持GET、POST、PUT、DELETE方法
- 自动JSON解析和错误处理
- URL验证和超时控制
- 自定义请求头支持
-
Elasticsearch Update Node - 专业的Elasticsearch更新节点
- 多种操作类型:支持update_by_query、update、delete_by_query操作
- 灵活查询条件:支持复杂的Elasticsearch查询语法
- 脚本更新:支持自定义更新脚本和参数
- 认证支持:支持Basic认证和其他认证方式
- 智能URL构建:自动构建正确的Elasticsearch API端点
- 详细统计:返回受影响的文档数量和详细响应信息
- 错误处理:完善的错误处理和超时机制
- 格式化输出:自动格式化JSON响应,便于阅读和调试
🔧 数据处理节点 (ZMGNodes/data)
-
JSON Parser Node - 高级JSON解析节点
- 支持复杂的JSON路径解析
- 多种输出格式(字符串、JSON、格式化JSON)
- 数组索引和嵌套对象支持
- 强大的错误处理
-
JSON Builder Node - JSON构建器节点
- 多键值对输入:支持5个key-value对的输入配置
- 智能类型识别:自动识别字符串、数字、布尔值、JSON对象等数据类型
- JSON对象合并:支持将子JSON对象合并到父级指定key中
- 灵活合并模式:可合并到指定key或直接合并到根级别
- 格式化输出:提供压缩和格式化两种JSON输出格式
- 排序选项:支持按key排序输出
- 错误处理:完善的JSON解析和构建错误处理机制
- 调试支持:提供详细的合并过程调试信息
- 数据传递:支持passthrough数据流传递
-
Remove Empty Lines Node - 去除空行节点
- 多种处理模式:严格模式、宽松模式、仅修剪模式
- 智能空行检测:区分完全空行和仅包含空白字符的行
- 段落保护:可选择保留单个空行用于段落分隔
- 空白处理:自动去除行首尾空白字符
- 详细统计:提供处理前后的详细统计信息
- 大文本支持:高效处理大量文本内容
- 灵活配置:多种参数组合满足不同需求
📝 文本处理节点 (ZMGNodes/text)
- Multiline Prompt Node - 多行提示词处理节点
- 多行文本输入:支持多行提示词的输入和处理
- 行数统计:自动统计并输出文本总行数
- 多种分隔符:支持换行符、逗号、分号、空格和自定义分隔符
- 行号添加:可选择为每行添加行号,支持多种行号格式
- 智能处理:自动去除空行和首尾空白字符
- 格式化输出:提供格式化后的文本和原始文本输出
- 详细统计:显示处理统计信息和行数详情
- 🆕 COMBO输出:新增行列表COMBO输出,可用于下拉选择单个行内容
- 索引功能:支持直接获取指定行的单条数据
- 灵活配置:多种处理选项满足不同的文本格式需求
🖼️ 图像处理节点 (ZMGNodes/image)
-
Load Images From URL Node - 增强型URL图像加载节点
- 多种URL格式支持:HTTP/HTTPS、本地文件路径、File协议、Data URI、ComfyUI内部路径
- 批量处理:支持多行URL输入,一次性加载多张图像
- Alpha通道处理:可选择保留或移除图像的透明通道
- 灵活输出模式:支持列表输出和批量输出两种模式
- 智能错误处理:详细的错误信息和状态反馈
- EXIF自动旋转:自动处理图像的EXIF旋转信息
- 遮罩提取:自动从Alpha通道提取遮罩信息
- 自定义超时:可配置网络请求超时时间
- 输入验证:完整的URL和参数验证机制
-
Text To Image Node - 智能文本转图像节点
- 智能文本换行:自动处理长文本,支持按单词和字符级别的智能换行
- 宽度限制控制:图片最大宽度限制为1024像素,确保输出尺寸合理
- 换行符保持:完整保留文本中的原有换行符,在图片中正确显示
- 多语言支持:完整支持中文、英文、数字和特殊字符的渲染
- 自定义字体:支持从fonts目录选择字体文件(.ttf、.ttc、.otf格式)
- 颜色自定义:支持文本颜色和背景颜色的自由配置(十六进制格式)
- 动态画布:根据文本内容和换行情况自动调整画布大小
- 行间距控制:可调节行间距倍数,优化文本显示效果
- 边距设置:可自定义文本边距,确保文本不贴边显示
-
Save Video RGBA Node - 简化的RGBA视频保存节点
- 多格式支持:支持MP4、WebM、MOV等主流视频容器格式
- 智能编解码器选择:根据选择的格式自动选择最佳编解码器
- MOV格式:有alpha通道时使用ProRes,无alpha时使用H264
- WebM格式:使用VP9编解码器
- MP4格式:使用H264编解码器
- Alpha通道处理:完整支持透明通道的保存和处理
- 智能格式选择:auto模式根据是否有alpha通道自动选择最佳格式
- 音频支持:可选的音频轨道添加功能
- 预览模式:支持预览模式快速查看效果
- 文件名自定义:支持自定义文件名前缀和格式化
- 简化界面:移除复杂的编解码器选择,专注于格式选择
- 性能优化:高效的视频编码和内存管理
- 错误处理:完善的错误处理和状态反馈机制
☁️ 云存储节点 (ZMGNodes/cloud)
- OSS Upload Node - 阿里云OSS上传节点
- 任意类型输入:支持图片、视频、音频、文本等任意类型数据上传
- 类型匹配优化:使用AlwaysEqualProxy解决ComfyUI类型匹配问题,完美兼容AUDIO等特殊类型
- 智能类型检测:自动识别输入数据类型并设置正确的MIME类型
- 标准化输出格式:
- 音频数据:自动转换为MP3格式(需要pydub库支持)
- 单张图片:自动转换为PNG格式
- 多张图片:自动合成为MP4视频格式
- 文本数据:保存为UTF-8编码的文本文件
- 字节数据:直接上传二进制文件
- JSON数据:格式化保存为JSON文件
- 增强的视频合成功能:
- FFmpeg优先策略:优先使用FFmpeg进行视频合成,提供更好的编码器兼容性
- 智能编码器回退:FFmpeg不可用时自动回退到OpenCV方法
- 多编码器支持:支持H.264、MPEG-4、Xvid、MJPEG等多种编码器
- 尺寸自动调整:确保视频尺寸为偶数,满足H.264编码要求
- 兼容性优化:使用baseline profile和合适的质量设置提高播放兼容性
- 错误恢复机制:编码失败时自动尝试更兼容的编码参数
- 灵活配置:支持自定义OSS配置(Access Key、Secret Key、端点等)
- 智能路径生成:基于时间戳和哈希值生成唯一文件路径
- 自定义域名:支持自定义访问域名和基础路径
- 详细反馈:提供完整的上传结果信息和错误处理
- 上传开关:可选择性启用/禁用上传功能
- 多重输出:返回文件URL、路径、大小、状态等详细信息
🔧 工具类节点 (ZMGNodes/utils)
- Empty Image Node - 增强型空图像节点
- 支持多种输出模式(无输出、空张量、占位符图像)
- 可自定义占位符图像尺寸和颜色
- 支持直通模式和动态类型处理
- 灵活的输入输出配置,适用于复杂工作流
🛠️ 安装方法
- 克隆仓库到ComfyUI的custom_nodes目录:
cd ComfyUI/custom_nodes
git clone https://github.com/fq393/ComfyUI-ZMG-Nodes.git
- 安装依赖(如果需要):
cd ComfyUI-ZMG-Nodes
pip install -r requirements.txt
- 重启ComfyUI
📁 项目结构
ComfyUI-ZMG-Nodes/
├── __init__.py # 主入口文件
├── README.md # 项目文档
├── requirements.txt # 依赖包列表
├── fonts/ # 字体文件目录
│ └── Songti.ttc # 宋体字体文件
├── nodes/ # 节点实现目录
│ ├── __init__.py # 节点包初始化文件
│ ├── ApiRequestNode.py # API请求节点
│ ├── JsonParserNode.py # JSON解析节点
│ ├── LoadImageFromUrlNode.py # 从URL加载图像节点
│ ├── TextToImageNode.py # 文本转图像节点
│ ├── SaveVideoRGBA.py # RGBA视频保存节点
│ ├── EmptyImageNode.py # 增强型空图像节点
│ └── config/ # 配置文件目录
│ └── NodeCategory.py # 节点分类配置
└── web/ # Web资源目录
├── text-switch-case.js # 文本大小写切换脚本
├── upload.js # 上传功能脚本
└── utils.js # 工具函数脚本
🤝 贡献指南
欢迎提交Issue和Pull Request!
- Fork本仓库
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启Pull Request
📄 许可证
本项目采用MIT许可证 - 查看 LICENSE 文件了解详情
🙏 致谢
- ComfyUI - 强大的AI图像生成界面
- ComfyUI-VideoHelperSuite - 视频处理参考
- ModelScope - AI模型服务
📞 联系方式
- GitHub: @fq393
- 项目链接: https://github.com/fq393/ComfyUI-ZMG-Nodes
📝 更新日志
v1.3.0 (2025-10-21)
- 重大修复: 彻底解决OSS Upload Node的视频编码器兼容性问题
- FFmpeg集成: 优先使用FFmpeg进行视频合成,解决OpenCV编码器限制
- 智能回退机制: FFmpeg不可用时自动回退到优化的OpenCV方法
- 编码器优化: OpenCV回退时使用mp4v、XVID、MJPG等兼容性更好的编码器
- 尺寸标准化: 自动调整视频尺寸为偶数,满足H.264编码要求
- 兼容性增强: 使用baseline profile和优化的质量设置提高播放兼容性
- 错误恢复: 编码失败时自动尝试更兼容的编码参数
- 临时文件管理: 改进临时文件的创建和清理机制
- 详细日志: 增加详细的调试信息和错误报告
- 性能优化: 优化帧数据处理和内存使用
- 稳定性提升: 增强异常处理和资源清理机制
- 新增节点: 添加Elasticsearch更新节点和JSON构建器节点
- 优化改进: JsonBuilderNode减少key-value对数量并改进merge_to_key功能
v1.2.0 (2025-08-15)
- 修复: 优化OSS Upload Node的视频合成功能
- 改进: 使用H.264编码器替代mp4v,提升视频兼容性
- 新增: 多编码器回退机制(H264/h264/X264/MJPG/mp4v/XVID)
- 优化: 改进图片数据类型处理,支持0-1和0-255数值范围自动检测
- 增强: 添加详细的视频合成调试日志和错误处理
- 修复: 解决视频文件生成失败的问题
v1.1.0 (2025-06-10)
- 修复: 解决OSS Upload Node的"Return type mismatch"错误
- 集成AlwaysEqualProxy类型代理,解决ComfyUI类型匹配问题
- 完美兼容AUDIO等特殊输入类型
- 优化类型检测机制,提升节点稳定性
- 优化: 改进错误处理和日志输出功能