|
|
||
|---|---|---|
| download | ||
| ext | ||
| model | ||
| nodes | ||
| utils | ||
| .gitignore | ||
| Readme.md | ||
| __init__.py | ||
| config.yaml | ||
| embedded_install.bat | ||
| install.bat | ||
| install.sh | ||
| requirements.txt | ||
Readme.md
ComfyUI-CustomNode 项目文档
一、项目概述
ComfyUI-CustomNode 是一个为 ComfyUI 定制的自定义节点集合项目,提供了丰富的功能节点,涵盖文本处理、图像和视频处理、LLM 调用、对象存储操作等多个领域,方便用户在 ComfyUI 中进行多样化的任务处理。
本地使用请下载config.yaml到custom_nodes/ComfyUI-CustomNode目录
二、项目结构
ComfyUI-CustomNode/
├── download/ # 下载文件目录
├── ext/ # 扩展文件目录
│ ├── pyproject.toml # 项目构建和依赖配置
│ ├── comfyui_modal_deploy.py # Comfy GPU服务器部署脚本
│ ├── comfyui_modal_deploy_4ui.py # Comfy批量CPU服务器部署脚本
│ └── nodes_bfl.py # 用于替换comfy内置api节点的代码
├── model/ # 模型目录
├── nodes/ # 节点代码目录
│ ├── image_face_nodes.py # 面部处理节点
│ ├── image_gesture_nodes.py # 姿态处理节点
│ ├── image_modal_nodes.py # Modal在线图像节点
│ ├── image_nodes.py # 图像节点
│ ├── llm_nodes.py # LLM 调用节点
│ ├── object_storage_nodes.py # 对象存储节点
│ ├── text_nodes.py # 文本处理节点
│ ├── util_nodes.py # 工具节点
│ ├── video_lipsync_nodes.py # 视频口型同步节点
│ └── video_nodes.py # 视频处理节点
├── utils/ # 工具函数目录
│ ├── model_module.py # 模型定义
│ ├── model_utils.py # 模型工具
│ ├── face_occu_detect.py # 面部遮挡识别工具
│ └── task_table.py # Task表定义--与DB持久化节点合用
├── __init__.py # 定义节点映射
├── .gitignore # Git 忽略文件配置
├── install.sh # Linux 安装脚本
├── install.bat # Windows 安装脚本
├── embedded_install.bat # 嵌入式 Windows 安装脚本
├── Readme.md # 项目文档
└── requirements.txt # 项目依赖文件
三、用户手册
1. 环境准备
确保你已经安装了 Python 3.10 或更高版本。
source venv/bin/activate # 对于 Windows 用户使用 `venv\Scripts\activate`
pip install -r requirements.txt
2. 运行项目
将项目文件夹放置在 ComfyUI 的 custom_nodes 目录下,启动 ComfyUI 即可在节点列表中看到自定义节点。
3. 节点使用
在 ComfyUI 界面中,根据需要选择相应的节点,配置节点的输入参数,然后连接节点并运行工作流。
四、节点介绍
常用节点
- LLMChatMultiModalImageTensor:多模态 LLM 调用,传入图片张量。
- 输入:LLM 提供商、提示词、图片张量、温度、最大令牌数、超时时间
- 输出:LLM 输出结果
- 用途:结合图片张量与 LLM 进行交互
- JMCustom:即梦自定义Prompt生视频
- 输入:参考图、Prompt、视频长度
- 输出:生成视频路径
- 用途:自定义Prompt视频时长生成视频
- RandomLineSelector:从多行文本中随机选择一行。
- 输入:多行文本、随机种子
- 输出:随机选择的一行文本
- 用途:随机选取文本中的一行
- LoadImg:从网络/本地加载图片(网络图片优先)。
- 输入:图片 URL、选择本地图片
- 输出:图像张量
- 用途:加载网络图片
- S3UploadURL:上传文件到 S3 并返回 URL。
- 输入:待上传文件、S3 存储桶信息
- 输出:上传后的文件 URL
- 用途:上传文件到 S3 并获取文件 URL
1. 文本处理节点
- LoadTextCustom:从本地文件读取文本(文件路径优先)。
- 输入:文件路径、选择本地文件、编码格式
- 输出:文本字符串
- 用途:读取本地文本文件内容
- StringEmptyJudgement:判断字符串是否为空。
- 输入:字符串
- 输出:布尔值(是否为空)
- 用途:检查字符串是否为空
- RandomLineSelector:从多行文本中随机选择一行。
- 输入:多行文本、随机种子
- 输出:随机选择的一行文本
- 用途:随机选取文本中的一行
2. LLM 调用节点
- LLMChat:调用 LLM 进行聊天。
- 输入:LLM 提供商、提示词、温度、最大令牌数、超时时间
- 输出:LLM 输出结果
- 用途:与 LLM 进行文本交互
- LLMChatMultiModalImageUpload:多模态 LLM 调用,上传图片。
- 输入:LLM 提供商、提示词、图片文件、温度、最大令牌数、超时时间
- 输出:LLM 输出结果
- 用途:结合图片与 LLM 进行交互
- LLMChatMultiModalImageTensor:多模态 LLM 调用,传入图片张量。
- 输入:LLM 提供商、提示词、图片张量、温度、最大令牌数、超时时间
- 输出:LLM 输出结果
- 用途:结合图片张量与 LLM 进行交互
- Jinja2RenderTemplate:使用 Jinja2 渲染 prompt 模板。
- 输入:模板、键值映射字典
- 输出:渲染后的字符串
- 用途:根据提供的模板和变量,使用 Jinja2 引擎渲染出最终的字符串,常用于生成动态的 prompt
3. 图像和视频处理节点
- JMCustom:即梦自定义Prompt生视频
- 输入:参考图、Prompt、视频长度
- 输出:生成视频路径
- 用途:自定义Prompt视频时长生成视频
- LoadImg:从网络/本地加载图片(网络图片优先)。
- 输入:图片 URL、选择本地图片
- 输出:图像张量
- 用途:加载网络图片
- FaceDetect:面部检测。
- 输入:待检测图像
- 输出:检测结果
- 用途:检测图像中的面部
- FaceExtract:面部提取。
- 输入:包含面部的图像
- 输出:提取的面部图像
- 用途:从图像中提取面部
- VideoCut:视频剪裁。
- 输入:视频文件、剪裁起始时间、剪裁结束时间
- 输出:剪裁后的视频文件
- 用途:对视频进行剪裁
- VideoCutByFramePoint:视频按精确帧位剪裁。
- 输入:视频文件、起始帧、结束帧
- 输出:剪裁后的视频文件
- 用途:按精确帧位对视频进行剪裁
- VideoChangeFPS:视频转换帧率。
- 输入:视频文件、目标帧率
- 输出:转换帧率后的视频文件
- 用途:改变视频的帧率
- HeyGemF2F:HeyGem 嘴型同步。
- 输入:视频张量、音频数据、HeyGem 服务 URL、临时文件路径、是否为 Windows 系统
- 输出:视频存储路径
- 用途:实现视频的嘴型同步
- HeyGemF2FFromFile:HeyGem 嘴型同步,直接读取文件。
- 输入:视频文件路径、音频文件路径、HeyGem 服务 URL、临时文件路径、是否为 Windows 系统
- 输出:视频存储路径
- 用途:实现视频的嘴型同步
- ModalEditCustom: 生修图-Gemini
- 输入:Prompt, temperature, topP, 端点
- 输出:生/修完的图片
- 用途:使用Gemini2.0模型进行图像生成/修正
- ModalMidJourneyGenerateImage: 生修图-Midjourney
- 输入:Prompt, 提供商, 端点, 超时时间
- 输出:生/修完的图片
- 用途:使用Midjourney模型进行图像生成/修正
- ModalMidJourneyDescribeImage: 反推生图关键词-Midjourney
- 输入:图片, 端点
- 输出:生图Prompt词
- 用途:使用Midjourney模型进行生图Prompt反推
4. 对象存储节点
- COSUpload:上传文件到 COS。
- 输入:待上传文件、COS 存储桶信息
- 输出:上传文件key
- 用途:将文件上传到腾讯云 COS
- COSDownload:从 COS 下载文件。
- 输入:COS 存储桶文件信息、本地保存路径
- 输出:下载的文件路径
- 用途:从腾讯云 COS 下载文件
- S3Upload:上传文件到 S3。
- 输入:待上传文件、S3 存储桶信息
- 输出:上传文件key
- 用途:将文件上传到 S3 存储桶
- S3Download:从 S3 下载文件。
- 输入:S3 存储桶文件信息、本地保存路径
- 输出:下载的文件路径
- 用途:从 S3 存储桶下载文件
- S3UploadURL:上传文件到 S3 并返回 URL。
- 输入:待上传文件、S3 存储桶信息
- 输出:上传后的文件 URL
- 用途:上传文件到 S3 并获取文件 URL
5. 工具节点
- LogToDB:将日志记录到数据库(数据库需要根据utils/task_table.py结构建表)。
- 输入:作业 ID、日志内容、状态、数据库连接 URL
- 输出:记录结果
- 用途:将任务日志保存到数据库
- VodToLocalNode:从腾讯云 VOD 下载视频到本地。
- 输入:文件 ID、子应用 ID
- 输出:本地文件路径
- 用途:从腾讯云 VOD 下载视频文件
- UnloadAllModels:卸载所有已加载的模型。
- 输入:任意输入
- 输出:无
- 用途:释放模型占用的内存
- TraverseFolder:遍历文件夹。
- 输入:文件夹路径、文件后缀、是否递归、索引
- 输出:文件路径
- 用途:遍历文件夹并获取指定后缀的文件
- PlugAndPlayWebhook:即插即用 Webhook 节点。
- 输入:Webhook URL、图片 URL、提示 ID
- 输出:无
- 用途:将数据转发到指定的 Webhook URL
- TaskIdGenerate:生成任务 ID。
- 输入:无
- 输出:任务 ID
- 用途:生成唯一的任务 ID
五、注意事项
- 部分节点需要配置相应的 API 密钥或数据库连接信息,请下载config.yaml到custom_nodes/ComfyUI-CustomNode目录。
- 运行项目时,请确保网络连接正常,特别是涉及在线文件读取和 LLM 调用的节点。