关于 comfyui-workflow-builder
comfyui-workflow-builder 可将自然语言需求转换为可执行的 ComfyUI 工作流 JSON。它先检查可用模型、节点和显存,再选择并验证流程,适合构建图像、视频或音频工作流。
主要功能
- 01根据自然语言生成工作流
- 02按清单检查模型和节点
- 03选择图像、视频和音频流程
- 04验证连接与显存需求
- 05在线排队或离线导出 JSON
适用场景
- 01构建文生图工作流
- 02创建身份保持或局部重绘流程
- 03使用 Wan 或 AnimateDiff 生成视频流程
- 04根据已安装模型和可用显存调整设置
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mckruz/ comfyui-expert --skill comfyui-workflow-builder安装后在 Claude Code 中输入/comfyui-workflow-builder确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
eval/benchmark.yamlEVAL.mdrun-eval.shtest-cases.yamltrigger-tests.yamleval/results/.gitignore.gitkeep详细介绍
ComfyUI 工作流构建器
将自然语言请求转换为可执行的 ComfyUI 工作流 JSON。生成前始终根据库存进行验证。
工作流生成流程
步骤 1:理解请求
将用户的意图解析为:
- 输出类型:图像、视频或音频
- 源素材:纯文本、参考图像、现有视频
- 身份识别方法:无、零样本(InstantID/PuLID)、LoRA、Kontext
- 质量等级:草稿(快速迭代)或正式制作(最高质量)
- 特殊要求:ControlNet、局部重绘、放大、口型同步
步骤 2:检查库存
读取 state/inventory.json,以确定:
- 可用的检查点 → 选择最适合任务的检查点
- 可用的身份模型 → 确定可使用的方法
- 可用的 ControlNet 模型 → 如果可用,则启用姿势/深度控制
- 已安装的自定义节点 → 确认所有必需节点均已存在
- 可用的 VRAM → 据此优化设置
步骤 3:选择管线模式
根据请求和库存,从以下模式中选择:
| 模式 | 适用场景 | 关键节点 |
|---|---|---|
| 文本转图像 | 简单生成 | 检查点 → CLIP → KSampler → VAE |
| 保持身份一致的图像 | 角色一致性 | + InstantID/PuLID/IP-Adapter |
| LoRA 角色 | 经过训练的角色 | + LoRA Loader |
| 图像转视频(Wan) | 高质量视频 | Diffusion Model → Wan I2V → Video Combine |
| 图像转视频(AnimateDiff) | 快速视频、运动控制 | + AnimateDiff Loader + Motion LoRAs |
| 会说话的头像 | 角色说话 | 图像 → 视频 → 语音 → 口型同步 |
| 放大 | 提升分辨率 | 图像 → UltimateSDUpscale → 保存 |
| 局部重绘 | 编辑区域 | 图像 + 遮罩 → Inpaint Model → KSampler |
步骤 4:生成工作流 JSON
ComfyUI 工作流格式:
{
"{node_id}": {
"class_type": "{NodeClassName}",
"inputs": {
"{param_name}": "{value}",
"{connected_param}": ["{source_node_id}", {output_index}]
}
}
}
规则:
- 节点 ID 为字符串(通常为 "1"、"2"、"3"……)
- 已连接的输入使用数组格式:
["source_node_id", output_index] - 输出索引为从 0 开始的整数
- 文件名必须与库存中的名称完全一致
- Seed 值:使用随机的大整数,或使用固定值以确保可复现
步骤 5:验证
向用户展示前:
- 每个
class_type都存在于库存的节点列表中 - 每个模型文件名都存在于库存的模型列表中
- 所有必需的连接均已设置(无悬空输入)
- VRAM 估算值未超过可用 VRAM
- 分辨率与所选模型兼容(SD1.5 使用 512,SDXL/FLUX 使用 1024)
步骤 6:输出
在线模式:通过 comfyui-api skill 排队
离线模式:将 JSON 保存到 projects/{project}/workflows/,并使用描述性名称
工作流模板
基础文本转图像(FLUX)
{
"1": {
"class_type": "LoadCheckpoint",
"inputs": {"ckpt_name": "flux1-dev.safetensors"}
},
"2": {
"class_type": "CLIPTextEncode",
"inputs": {"text": "{positive_prompt}", "clip": ["1", 1]}
},
"3": {
"class_type": "CLIPTextEncode",
"inputs": {"text": "{negative_prompt}", "clip": ["1", 1]}
},
"4": {
"class_type": "EmptyLatentImage",
"inputs": {"width": 1024, "height": 1024, "batch_size": 1}
},
"5": {
"class_type": "KSampler",
"inputs": {
"seed": 42,
"steps": 25,
"cfg": 3.5,
"sampler_name": "euler",
"scheduler": "normal",
"denoise": 1.0,
"model": ["1", 0],
"positive": ["2", 0],
"negative": ["3", 0],
"latent_image": ["4", 0]
}
},
"6": {
"class_type": "VAEDecode",
"inputs": {"samples": ["5", 0], "vae": ["1", 2]}
},
"7": {
"class_type": "SaveImage",
"inputs": {"filename_prefix": "output", "images": ["6", 0]}
}
}
保持身份一致(InstantID + IP-Adapter)
在基础模板中添加以下内容:
- 加载参考图像节点
- InstantID Model Loader + Apply InstantID
- IPAdapter Unified Loader + Apply IPAdapter
- FaceDetailer 后处理
完整节点设置请参阅 references/workflows.md。
视频生成(Wan I2V)
使用不同的加载器链:
- Load Diffusion Model(而非 LoadCheckpoint)
- Wan I2V Conditioning
- EmptySD3LatentImage(包含帧数)
- Video Combine (VHS)
完整设置请参阅 references/workflows.md 中的工作流 4。
VRAM 估算
| 组件 | 大致 VRAM 用量 |
|---|---|
| FLUX FP16 | 16GB |
| FLUX FP8 | 8GB |
| SDXL | 6GB |
| SD1.5 | 4GB |
| InstantID | +4GB |
| IP-Adapter | +2GB |
| ControlNet(每个) | +1.5GB |
| Wan 14B | 20GB |
| Wan 1.3B | 5GB |
| AnimateDiff | +3GB |
| FaceDetailer | +2GB |
常见错误
- 输出索引错误:CheckpointLoader 按索引
[0, 1, 2]输出[model, clip, vae] - InstantID 的 CFG 过高:使用 4-5,而非默认的 7-8
- 模型分辨率错误:FLUX/SDXL=1024,SD1.5=512
- 缺少 VAE:FLUX 需要显式指定 VAE(
ae.safetensors) - 加载器与模型不匹配:Diffusion 模型需要使用
LoadDiffusionModel,而非LoadCheckpoint
参考文件
references/workflows.md- 详细的逐节点模板references/models.md- 模型文件和路径references/prompt-templates.md- 特定于模型的提示词state/inventory.json- 当前库存缓存
评论
支持 Markdown