从零搭建ComfyUI工作流:AI绘画到视频生成全流程实战
最近在尝试用AI生成视频和短剧时,发现很多工具要么操作复杂,要么效果生硬,直到深入研究了ComfyUI的工作流搭建,才发现这才是实现高质量、可控AI内容创作的“终极武器”。它不像一些在线平台有诸多限制,而是将AI绘画(Stable Diffusion)和AI视频生成的强大能力,像搭积木一样交到我们手中。从一张图、一段文字开始,构建出连贯的动态视频甚至完整短剧,整个过程清晰、可调试,充满了创造的乐趣。
本文将从零开始,手把手带你搭建ComfyUI环境,并深入讲解如何构建用于AI绘画、文生视频、图生视频乃至AI短剧的核心工作流。无论你是刚接触Stable Diffusion的新手,还是想从WebUI转向更强大工作流模式的进阶用户,都能在这里找到从安装部署到实战应用的全套方案。我们将避开华而不实的理论,全程聚焦于可运行、可复现的“干货”操作。
1. ComfyUI核心概念与优势:为什么选择它?
在开始动手之前,我们有必要理解ComfyUI究竟是什么,以及它为何在资深AI创作者中备受推崇。
1.1 什么是ComfyUI?
ComfyUI是一个基于节点式工作流的Stable Diffusion图形用户界面。你可以把它想象成一个视觉化的编程工具,其中每个功能(如加载模型、输入提示词、生成图片、放大图片、生成视频帧等)都被封装成一个独立的“节点”。通过连接这些节点的输入和输出端口,你就能构建出一个完整的AI图像或视频生成流水线。
与Automatic1111 WebUI这类传统界面相比,ComfyUI最大的特点是可视化、可保存、可分享的流程。你的整个创作过程不再是一堆零散的参数设置,而是一个清晰的、可重复执行的“配方”。
1.2 ComfyUI的核心优势
- 极高的灵活性与可控性:你可以精确控制生成流程的每一个环节,例如先文生图,再图生图修复细节,然后进行高清放大,最后送入视频生成模型。这种模块化设计让复杂任务变得条理清晰。
- 可重复性与分享性:工作流可以保存为
.json或.png文件。这意味着你可以完美复现自己或他人创作的优秀作品,也可以将成熟的工作流分享给社区,极大提升了学习和协作效率。 - 资源利用更高效:ComfyUI的运行机制通常被认为比某些WebUI更节省显存,并且能够更好地支持大型、复杂的工作流,在处理多步生成和长视频时稳定性更佳。
- 面向工作流的设计哲学:它天生适合处理需要多步骤、有条件分支的复杂任务,比如生成动画序列、制作角色一致性短片(AI短剧)、结合不同模型输出等,这是制作AI视频和短剧的基石。
1.3 核心应用场景
基于节点工作流,ComfyUI能轻松驾驭以下场景:
- AI绘画:从基础文生图、图生图到复杂的高清修复、局部重绘、LoRA模型混合。
- 文生视频/图生视频:使用AnimateDiff、SVD等视频生成模型,将静态的提示词或图片转化为动态视频。
- AI短剧/漫剧制作:通过工作流控制角色一致性、场景转换、镜头运动,生成具有故事情节的连贯视频片段。
- 首尾帧视频生成:定义视频的开始帧和结束帧,让AI自动补全中间过渡动画,实现平滑转场。
理解了这些,我们就知道,学习ComfyUI不仅仅是学习一个新软件,更是掌握一种更强大、更专业的AI内容创作方法论。
2. 环境准备与一键安装部署
对于大多数用户,特别是Windows用户,最快速、省心的方式是使用社区大神制作的整合包。这里我们以最流行的“秋叶一键整合包”为例进行部署。
2.1 系统与硬件要求
- 操作系统:Windows 10/11 64位。macOS和Linux也可通过源码部署,但整合包主要面向Windows。
- 显卡:NVIDIA显卡,显存建议6GB以上。4GB显存可运行基础绘画,但视频生成和复杂工作流会非常吃力。AMD显卡可通过DirectML版本运行,但性能和兼容性可能不如NVIDIA。
- 硬盘空间:至少准备20GB可用空间,用于存放整合包、模型和生成的文件。
2.2 下载秋叶ComfyUI整合包
为了避免从零配置Python、Git、依赖库等复杂环境,我们直接使用整合包。
- 访问可靠的资源发布平台(如B站秋叶大佬的专栏或相关GitHub页面),找到最新的ComfyUI整合包下载链接。通常文件名类似
ComfyUI_windows_portable_nvidia_vX.X.X.7z。 - 下载完成后,使用解压软件(如7-Zip)将其解压到一个英文路径的文件夹中,例如
D:\AI_Tools\ComfyUI。路径中不要包含中文或特殊字符,这是很多奇怪错误的根源。
2.3 启动与初步配置
- 进入解压后的文件夹,你会看到很多文件。找到并运行
run_nvidia_gpu.bat(N卡用户)或相应的启动脚本。 - 首次运行会自动安装一些依赖。启动完成后,命令行窗口会显示一行类似
http://127.0.0.1:8188的地址。 - 打开你的浏览器(推荐Chrome或Edge),访问这个地址(通常是
http://127.0.0.1:8188),即可看到ComfyUI的空白工作流界面。 - 重要:模型放置。整合包通常自带基础模型。但你需要的其他模型(如Checkpoint大模型、LoRA、VAE、ControlNet等)需要手动放入对应文件夹。
- 进入
ComfyUI\models\checkpoints放置 Stable Diffusion 大模型(.safetensors或.ckpt文件)。 - 进入
ComfyUI\models\loras放置 LoRA 模型。 - 进入
ComfyUI\models\controlnet放置 ControlNet 模型。 - 进入
ComfyUI\models\vae放置 VAE 模型。 - 视频生成模型(如AnimateDiff的运动模块)通常放在
ComfyUI\models\animatediff。
- 进入
至此,你的ComfyUI基础环境就已经准备就绪了。
3. ComfyUI界面与基础操作速览
面对空白的节点界面可能会感到困惑,让我们先熟悉一下核心操作。
3.1 主界面介绍
- 节点图区域:中间最大的空白区域,用于搭建和显示工作流。
- 节点菜单:在节点图区域右键点击,会弹出所有可用节点的分类菜单。
- 工作流管理:左上角有Load(加载)、Save(保存)、Clear(清除)等按钮,用于管理你的工作流文件。
- 队列按钮:右侧有“Queue Prompt”按钮,点击它就会开始执行当前工作流。
3.2 基础节点操作
- 添加节点:右键 -> 选择类别(如
loaders->Checkpoint Loader)-> 点击节点名。 - 连接节点:鼠标拖动一个节点的输出端口(右侧小圆点)到另一个节点的输入端口(左侧小圆点)。
- 移动节点:点击节点标题栏拖动。
- 调整节点:选中节点后,在左侧设置面板调整参数。
- 删除节点/连线:选中节点或连线,按键盘
Delete键。
3.3 你的第一个工作流:文生图
让我们搭建一个最简单的文生图流程,理解节点如何串联。
- 加载模型:右键 ->
loaders->CheckpointLoader。这个节点负责载入你的绘画大模型。 - 输入提示词:右键 ->
conditioning->CLIP Text Encode (Prompt)。需要添加两个,一个用于正向提示词(positive),一个用于负向提示词(negative)。 - 设置采样器:右键 ->
sampling->KSampler。这是核心生成节点,控制采样步数、方法等。 - 解码图片:右键 ->
latent->VAEDecode。将采样器生成的“潜空间”数据解码成最终图片。 - 保存/显示图片:右键 ->
image->SaveImage。注意,ComfyUI默认输出到ComfyUI\output文件夹。
现在,像拼图一样连接它们:
- 将
CheckpointLoader的CLIP输出连接到两个CLIP Text Encode节点的CLIP输入。 - 将
CheckpointLoader的model和vae分别连接到KSampler的model和VAEDecode的vae。 - 将
CLIP Text Encode (positive)的CONDITIONING输出连接到KSampler的positive。 - 将
CLIP Text Encode (negative)的CONDITIONING输出连接到KSampler的negative。 - 将
KSampler的LATENT输出连接到VAEDecode的samples。 - 将
VAEDecode的IMAGE输出连接到SaveImage的images。
最后,在KSampler节点设置总步数(steps,如20),在CLIP Text Encode节点输入你的提示词。点击Queue Prompt,你的第一张ComfyUI作品就诞生了!这个流程是所有复杂工作的基础。
4. 核心工作流搭建实战:从绘画到视频
掌握了基础,我们开始构建更实用的工作流。本节将构建一个支持图生图、高清修复,并能衔接视频生成的增强型工作流。
4.1 进阶文生图与高清修复工作流
基础文生图分辨率较低。我们引入高清修复(Hires. fix)来提升质量。
- 在基础文生图流程后延伸:使用基础文生图流程得到一个小图(例如512x512)。
- 添加潜在图像放大节点:
- 右键 ->
latent->LatentUpscale。将KSampler输出的LATENT连接到这里。 - 设置放大方法(
upscale_method,如nearest-exact)和目标尺寸(width,height,如1024x1024)。
- 右键 ->
- 添加第二次采样(精炼):
- 再添加一个
KSampler(我们称之为KSampler (hires))。 - 将第一个
CheckpointLoader的model也连接到这个新采样器的model。 - 将放大后的
LATENT(来自LatentUpscale)连接到新采样器的latent_image。 - 关键:为了保持内容一致,需要复用之前的提示词条件。将之前两个
CLIP Text Encode节点的CONDITIONING输出也连接到新采样器的positive和negative。 - 在新采样器上,将步数(
steps)设少一些(如10-15),去噪强度(denoise)设置为一个较低的值(如0.3-0.5),这样能在放大细节的同时不改变原图构图。
- 再添加一个
- 连接解码与保存:将第二个
KSampler的输出连接到VAEDecode,最后到SaveImage。
这个流程实现了“先生成小构图,再放大并细化”的高质量出图流程。
4.2 图生图工作流搭建
图生图的核心是有一个初始图像输入。
- 加载初始图片:右键 ->
image->LoadImage。节点会允许你选择一张本地图片。 - 编码图片为潜空间:右键 ->
latent->VAEEncode。将LoadImage的IMAGE输出和CheckpointLoader的vae输出连接到这里,得到LATENT。 - 连接至采样器:将这个
LATENT连接到KSampler的latent_image输入。 - 控制变化程度:在
KSampler中,去噪强度(denoise)是关键参数。1代表完全重画,0代表原封不动,通常0.4-0.7可以产生既有变化又保留原图结构的图像。
你可以将这个VAEEncode节点接入到之前的高清修复流程中,替换掉第一个文生图的KSampler输出,就构成了一个支持“图生图+高清修复”的强大工作流。
4.3 文生视频工作流搭建(基于AnimateDiff)
这是实现AI视频的关键。我们需要引入AnimateDiff模型来赋予图像序列动态。
- 准备运动模块:确保已将AnimateDiff的运动模块(如
mm_sd_v15_v2.ckpt)放入models/animatediff文件夹。 - 加载运动模块:右键 ->
loaders->AnimateDiffLoader。选择对应的运动模块。 - 注入运动参数:右键 ->
AnimateDiff->AnimateDiff Combine。这个节点是核心。- 将
CheckpointLoader的model连接到它的model输入。 - 将
AnimateDiffLoader的输出连接到它的motion_module输入。 - 在这里设置总帧数(
frames,如16)、帧率(fps,如8)、循环次数等。
- 将
- 调整采样器:使用一个支持动画的采样器节点,通常是
KSampler (Efficient)或专门的AnimateDiffKSampler。将AnimateDiff Combine输出的model连接到这个采样器的model。 - 连接提示词:这里有个重要概念——提示词调度。简单的视频可以使用统一的提示词,但若要控制内容变化,需要使用
Conditioning类下的Schedule节点来让提示词在不同帧生效。- 例如,使用
Conditioning (Schedule)节点,你可以设置在第1帧提示词是“a cat sitting”,在第16帧变成“a cat standing”,AI会自动生成中间过渡。
- 例如,使用
- 生成与保存:采样器输出的
LATENT是包含多帧的批次。连接VAEDecode解码后,会得到一组图像帧。 - 编码为视频:右键 ->
video->VAEEncode或使用专门的视频合成节点(如SaveAnimatedWEBP或FFMPEG Video Encoder)。将多张图片序列连接进去,设置好帧率,即可输出视频文件(如MP4、GIF、WEBP)。
4.4 图生视频与首尾帧视频
图生视频是文生视频的变种,只需将初始的“统一提示词”或“首帧提示词”条件,替换为由一张初始图片通过CLIP Vision Encode等方式生成的图像条件。
首尾帧视频则是图生视频的进阶应用:
- 分别准备一张开始图片和一张结束图片。
- 使用两个
CLIP Vision Encode节点(或IPAdapter节点)分别编码这两张图片,得到它们的图像特征。 - 使用
Conditioning (Blend)或专门的插值节点,将这两个特征按照帧数进行线性(或自定义曲线)混合。例如,第1帧100%开始特征,第16帧100%结束特征,中间帧按比例混合。 - 将这个混合后的、随时间变化的图像条件,与你的动作提示词(如“zoom in”)一起输入给AnimateDiff流程。
- 这样,AI就会生成一个从开始画面平滑变化到结束画面的视频,实现了首尾帧控制。
5. 构建AI短剧工作流:角色一致性与场景管理
短剧需要角色在不同镜头中保持一致。我们可以通过多种节点组合实现。
5.1 使用LoRA固定角色形象
这是最常用的方法。为你剧本中的每个主要角色训练一个LoRA模型。
- 在工作流中,添加
LoraLoader节点。 - 将
CheckpointLoader的model和CLIP输出连接到LoraLoader。 - 在
LoraLoader中选择对应的角色LoRA文件,并设置强度(strength_model,strength_clip)。 LoraLoader输出的model和CLIP将携带该角色特征,供后续采样使用。- 通过切换不同的
LoraLoader节点(或使用脚本控制),可以在不同镜头中调用不同角色。
5.2 使用Reference ControlNet保持一致性
对于没有预训练LoRA的角色,可以使用Reference ControlNet。
- 添加
ControlNetLoader节点加载reference模型。 - 添加
ControlNetApply节点。 - 将参考角色图片输入
ControlNetApply,它会提取图片的风格、姿态、人物特征,并注入到生成过程中。 - 通过调整权重,可以在保持角色大致特征的同时,允许其做出新的动作和表情。
5.3 分镜脚本与提示词调度
一个短剧由多个镜头(分镜)组成。在ComfyUI中,你可以通过两种方式管理:
- 方式一:外部脚本驱动。用Python脚本依次加载不同的工作流
.json文件,每个文件代表一个镜头,并替换其中的提示词、ControlNet参考图等参数,然后依次执行。这适合复杂项目。 - 方式二:巨型内部工作流。在一个工作流内,使用多个并行的采样分支,每个分支对应一个镜头,通过
Primitive节点或Switch节点来控制当前执行哪个分支。这种方式更直观但节点图会非常庞大。
提示词调度在短剧中至关重要。你需要为每个镜头的每一帧(或帧区间)精心设计提示词,描述场景、角色动作、表情、镜头运动(如“pan left”, “zoom in on face”)。使用Conditioning (Schedule)或Prompt Schedule类节点来精确安排这些提示词生效的时间点。
5.4 工作流整合与输出
最终的短剧工作流可能非常复杂,但逻辑清晰:
- 输入层:加载基础模型、多个角色LoRA、多个场景LoRA/Embedding、背景图片等。
- 控制层:使用多个
CLIP Text Encode和Schedule节点管理剧情提示词和镜头语言。使用ControlNet节点管理姿势、景深、构图。 - 生成层:
AnimateDiff Combine和KSampler负责根据以上条件生成每一帧的潜空间图像。 - 后处理层:
VAEDecode解码,可能接ImageUpscale节点进行超分放大,最后通过Video Encoder将帧序列合成视频。 - 输出层:保存每个镜头的视频片段。
你可以将每个镜头的工作流保存为子流程(利用Group功能折叠),使主工作流看起来更简洁。
6. 常见问题与排查思路
在搭建和使用工作流时,你一定会遇到各种问题。下面是一些高频问题的排查指南。
| 问题现象 | 可能原因 | 排查与解决思路 |
|---|---|---|
| 启动时提示“缺少节点”或“缺少依赖” | 未安装必要的自定义节点(Custom Node)。 | 1. 在ComfyUI管理器(如果已安装)中搜索并安装对应节点。 2. 或手动进入 ComfyUI\custom_nodes文件夹,git clone节点的仓库,并按其README安装依赖。 |
| 点击“Queue Prompt”后无反应,命令行报错 | 工作流节点连接有逻辑错误;模型文件损坏或路径错误;显存不足。 | 1. 检查节点连线,确保输入输出数据类型匹配(如LATENT连LATENT,IMAGE连IMAGE)。2. 检查模型文件名是否正确,是否放在正确的 models子文件夹。3. 查看命令行错误信息,通常会有明确提示。尝试先运行一个极简工作流测试。 |
| 生成图片全黑、全灰或扭曲 | VAE不匹配;模型本身问题;采样步数太少或CFG值异常。 | 1. 在CheckpointLoader后显式连接一个VAELoader节点,尝试切换不同的VAE。2. 检查使用的Checkpoint模型是否完整下载。 3. 调整 KSampler的steps(如20-30)和cfg(如7-9)。 |
| 生成视频闪烁、抖动严重 | AnimateDiff参数不当;提示词变化太剧烈;帧间噪声种子固定问题。 | 1. 调整AnimateDiff Combine中的motion_scale(运动幅度),调低可能减少抖动。2. 使用 UniformContextOptions节点并启用context_length和context_stride,增强帧间一致性。3. 确保提示词调度是平滑过渡,避免相邻帧提示词内容突变。 |
| 显存不足(OOM)错误 | 工作流太大;生成分辨率或帧数太高;同时加载了多个大模型。 | 1. 使用ComfyUI Manager安装ComfyUI-Impact-Pack等工具包,利用其ImpactCache节点卸载暂不使用的模型。2. 降低生成分辨率、批处理大小(batch size)或总帧数。 3. 采用“分步执行”策略,将文生图、放大、视频生成拆成多个独立工作流依次运行,中间保存图片作为中转。 |
无法加载.safetensors模型 | 模型文件下载不完整;模型类型与节点不匹配。 | 1. 重新下载模型文件,并验证哈希值。 2. 确认模型是Checkpoint、LoRA还是VAE,并放入正确的文件夹。对于LoRA,必须使用 LoraLoader节点,而不是CheckpointLoader。 |
| 自定义节点安装后不显示 | 安装方式错误;节点与当前ComfyUI版本不兼容。 | 1. 确保将自定义节点克隆到custom_nodes文件夹后,重启ComfyUI。2. 查看节点的GitHub页面,检查其兼容的ComfyUI版本。可能需要更新ComfyUI或回退节点版本。 |
7. 最佳实践与工程化建议
将ComfyUI用于实际创作,尤其是AI短剧这类复杂项目时,遵循一些最佳实践能事半功倍。
7.1 工作流管理与版本控制
- 模块化设计:将常用功能(如高清修复、人脸修复、特定风格LoRA加载)封装成宏节点(Macro)或自定义节点。这样在主工作流中只需一个节点代替一整组节点,极大提升可读性和复用性。
- 善用分组(Group):选中多个节点,按
Ctrl+G可以将其放入一个彩色分组框内,并命名(如“角色控制组”、“视频生成组”)。这对于管理超大型工作流至关重要。 - 版本化保存:每次对工作流做出重大修改或得到满意效果时,使用“Save”功能保存为新的
.json文件,并附上有意义的文件名(如short_ep01_scene01_v2.json)。这相当于你的项目版本库。 - 备份关键配置:除了工作流文件,将你常用的模型名称、LoRA名称、提示词模板记录在文档中。重装系统或迁移时能快速恢复。
7.2 性能优化
- 利用缓存:对于需要反复调参的环节(如提示词、种子),使用
ImpactCache等节点缓存模型加载结果,避免每次生成都重新加载模型,节省大量时间。 - 分步渲染:对于超长视频或高分辨率作品,不要试图在一个工作流中从头跑到尾。可以先生成低分辨率、低帧率的预览版,确定脚本和节奏无误后,再使用
LoadImage节点加载预览版的每一帧,进行高清放大和细节修复,最后合成最终版视频。 - 显存监控:在启动ComfyUI的命令行窗口,可以观察显存占用。合理安排工作流,及时断开不再需要的大模型节点(或使用缓存/卸载节点)。
7.3 提示词与参数工程
- 结构化提示词:将提示词分为“画面质量”、“主体描述”、“场景环境”、“镜头构图”、“艺术风格”等部分,便于管理和调整。可以在ComfyUI中使用
Text节点拼接,或使用CLIP Text Encode (Prompt)的多行输入。 - 种子(Seed)管理:
KSampler中的seed是控制随机性的关键。固定种子可以完全复现同一张图。在制作短剧时,为同一角色在不同镜头中使用相同或相近的种子,有助于保持稳定性。可以使用RandomSeed节点生成种子,并传递给多个采样器。 - 系统性测试:当效果不佳时,采用“控制变量法”。固定其他所有参数,只调整一个(如CFG Scale、去噪强度、LoRA权重),生成一组对比图,找到最优解。
7.4 项目文件组织
建立清晰的文件夹结构来管理你的AI视频项目:
My_AI_ShortFilm/ ├── workflow/ # 存放所有工作流.json文件 ├── scripts/ # 存放分镜脚本和提示词表格 ├── assets/ │ ├── characters/ # 角色原画、LoRA模型 │ ├── backgrounds/ # 场景图片 │ ├── audio/ # 背景音乐、音效 │ └── references/ # ControlNet参考图 ├── output/ │ ├── drafts/ # 草稿和测试输出 │ ├── scenes/ # 最终分镜视频 │ └── final/ # 合成后的成片 └── models/ # 项目专用模型(可链接到ComfyUI全局模型库)从零开始学习ComfyUI工作流搭建,就像学习一门新的视觉化编程语言。初期可能会被复杂的节点连线吓到,但一旦理解了“数据流”(从模型加载,到条件编码,到采样生成,再到解码输出)这一核心逻辑,一切都会变得清晰起来。本文带你走完了从环境部署、基础操作,到构建AI绘画、AI视频,乃至规划AI短剧工作流的完整路径。真正的掌握源于实践,建议你从复现文中的每一个小流程开始,然后尝试修改参数、组合节点,最终创造出属于你自己的、自动化生产高质量AI内容的强大工作流。当你能将一个创意想法,通过自己搭建的流水线稳定地转化为视频时,那种成就感是无与伦比的。
