ComfyUI StoryDiffusion 插件完全教程
1. 插件简介
插件地址: https://github.com/smthemex/ComfyUI_StoryDiffusion
ComfyUI StoryDiffusion 是一个超级强大的故事生成插件,它就像一个"故事魔法师"!这个插件能让你创造出连续的故事图片,而且图片中的角色会保持一致,就像看连环画一样。
主要功能:
- 创造连续故事图片(就像制作连环画)
- 保持角色一致性(同一个人在不同场景中都长得一样)
- 支持多种AI模型(就像有很多不同的画笔)
- 双角色同框(让两个不同的人出现在同一张图里)
- 角色换装(同一个人穿不同衣服)
- 表情控制(让角色做不同表情)
能带来什么效果:
- 制作个人专属的连环画故事
- 创建一致的角色形象
- 生成小说插图
- 制作教学故事图片
- 创作儿童绘本
- 制作社交媒体内容
2. 如何安装
方法一:通过 ComfyUI Manager 安装(推荐)
- 打开 ComfyUI
- 点击右下角的 "Manager" 按钮
- 在搜索框输入 "storydiffusion"
- 找到 "ComfyUI_StoryDiffusion" 点击安装
- 重启 ComfyUI
方法二:手动安装
- 打开终端或命令提示符
- 进入你的 ComfyUI 安装目录下的 custom_nodes 文件夹
- 运行命令:
git clone https://github.com/smthemex/ComfyUI_StoryDiffusion.git - 安装依赖:
pip install -r requirements.txt - 重启 ComfyUI
额外依赖安装
如果使用某些特殊功能,需要安装额外的库:
pip install insightface # 用于人脸识别功能
pip install -U optimum-quanto # 用于模型量化
3. 节点详细解析
3.1 EasyFunction_Lite 节点
这个节点是干嘛的?
这个节点就像一个"万能工具箱",它负责加载各种不同的AI模型和功能。你可以把它想象成一个智能管家,帮你准备好所有需要的工具。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| extra_repo | extra_repo | 字符串 | 空或模型路径 | 这是"额外模型仓库",指向特殊模型的位置 | 外部模型仓库路径 | 填入Kolors模型的文件夹路径 |
| checkpoints | checkpoints | 下拉选择 | 根据需要选择 | 这是"主要画笔",选择用哪个AI模型来画画 | 主要的扩散模型选择 | 选择SDXL或FLUX模型 |
| clip | clip | 下拉选择 | 根据需要选择 | 这是"文字理解器",帮AI理解你写的描述 | CLIP文本编码器 | 选择对应的CLIP模型 |
| clip_vision | clip_vision | 下拉选择 | 根据需要选择 | 这是"图片理解器",帮AI理解图片内容 | CLIP视觉编码器 | 选择对应的视觉模型 |
| lora | lora | 下拉选择 | 根据需要选择 | 这是"风格调节器",给AI添加特殊技能 | LoRA适配器选择 | 选择特定风格的LoRA |
| function_mode | function_mode | 下拉选择 | 根据功能选择 | 这是"功能模式",决定这个工具箱要做什么工作 | 功能模式选择器 | 选择tag、clip、mask等模式 |
| select_method | select_method | 字符串 | 根据需要填写 | 这是"方法选择器",指定具体的处理方法 | 具体方法路径或参数 | 填入特定算法的路径 |
| temperature | temperature | 浮点数 | 0.7 | 这是"创意度调节器",数值越高越有创意 | 生成随机性控制 | 0.1保守,1.0很有创意 |
3.2 StoryDiffusion_Apply 节点
这个节点是干嘛的?
这个节点就像一个"故事模式切换器",它决定你要用哪种方式来创作故事。就像选择用水彩画还是油画一样,不同的模式有不同的效果。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | 来自上个节点 | 这是"AI画师",负责实际画画的模型 | 扩散模型输入 | 连接EasyFunction_Lite的输出 |
| vae | vae | VAE类型 | 对应的VAE | 这是"图片转换器",把AI的想法变成真正的图片 | VAE解码器 | 使用对应模型的VAE |
| infer_mode | infer_mode | 下拉选择 | story | 这是"创作模式",选择用什么方式创作故事 | 推理模式选择 | story做故事,classic做普通图 |
| photomake_ckpt | photomake_ckpt | 下拉选择 | 根据需要选择 | 这是"人脸保持器",让角色在不同图片中保持一致 | PhotoMaker检查点 | 选择v1或v2版本 |
| ipadapter_ckpt | ipadapter_ckpt | 下拉选择 | 根据需要选择 | 这是"图片适配器",帮助处理输入的图片 | IP-Adapter检查点 | 选择对应的适配器 |
| quantize_mode | quantize_mode | 下拉选择 | fp16 | 这是"内存节省器",选择如何压缩模型节省显存 | 量化模式选择 | fp8最省显存,fp16质量好 |
| lora_scale | lora_scale | 浮点数 | 0.8 | 这是"风格强度",控制特殊风格的影响程度 | LoRA权重缩放 | 0.1影响小,1.0影响大 |
| extra_function | extra_function | 字符串 | 空 | 这是"额外功能",添加特殊的处理选项 | 额外功能参数 | 填入特殊功能的参数 |
| CLIP_VISION | CLIP_VISION | CLIP_VISION类型 | 可选 | 这是"视觉理解器",帮助AI更好理解图片 | CLIP视觉模型输入 | 连接CLIP Vision加载器 |
3.3 StoryDiffusion_CLIPTextEncode 节点
这个节点是干嘛的?
这个节点就像一个"故事编剧",它把你写的文字描述转换成AI能理解的语言,并且安排好每个角色在故事中的出场。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| clip | clip | CLIP类型 | 来自加载器 | 这是"文字翻译器",把人话翻译成AI话 | CLIP文本编码器 | 连接CLIP加载器的输出 |
| switch | switch | DIFFCONDI类型 | 来自Apply节点 | 这是"模式开关",告诉节点用什么模式工作 | 扩散条件控制器 | 连接Apply节点的输出 |
| width | width | 整数 | 768 | 这是"画布宽度",决定生成图片的宽度 | 图像宽度像素 | 768适合SDXL,1024适合FLUX |
| height | height | 整数 | 768 | 这是"画布高度",决定生成图片的高度 | 图像高度像素 | 768适合SDXL,1024适合FLUX |
| role_text | role_text | 多行文本 | 角色描述 | 这是"角色档案",描述故事中每个角色的样子 | 角色描述文本 | [Taylor] a woman, blue hair |
| scene_text | scene_text | 多行文本 | 场景描述 | 这是"剧本",描述每个场景发生什么事 | 场景描述文本 | [Taylor] wake up in bed |
| pos_text | pos_text | 多行文本 | ,best | 这是"加分词",让图片质量更好的描述 | 正面提示词 | best quality, masterpiece |
| neg_text | neg_text | 多行文本 | 质量差的描述 | 这是"扣分词",告诉AI不要画什么 | 负面提示词 | bad anatomy, blurry |
| lora_trigger_words | lora_trigger_words | 字符串 | best quality | 这是"风格触发词",激活特殊风格的关键词 | LoRA触发词 | 特定风格的激活词 |
| add_style | add_style | 下拉选择 | No_style | 这是"风格选择器",给图片添加特定的艺术风格 | 预设风格选择 | Realistic、Anime等 |
| mask_threshold | mask_threshold | 浮点数 | 0.5 | 这是"遮罩阈值",控制角色区域的精确度 | 遮罩阈值参数 | 0.3宽松,0.7严格 |
| extra_param | extra_param | 字符串 | 空 | 这是"额外参数",添加特殊的控制选项 | 额外参数字符串 | 特殊功能的参数 |
| guidance_list | guidance_list | 多行文本 | 位置参数 | 这是"角色位置指南",控制角色在图片中的位置 | 引导参数列表 | 0., 0.25, 0.4, 0.75 |
| add_function | add_function | STORY_CONDITIONING类型 | 可选 | 这是"额外功能包",提供特殊的处理能力 | 故事条件输入 | 连接EasyFunction的输出 |
| image | image | IMAGE类型 | 可选 | 这是"参考图片",提供角色的样子参考 | 输入图像 | 上传角色的照片 |
| control_image | control_image | IMAGE类型 | 可选 | 这是"控制图片",控制姿势或构图 | 控制图像输入 | 姿势参考图或构图图 |
3.4 StoryDiffusion_KSampler 节点
这个节点是干嘛的?
这个节点就像一个"AI画师",它根据前面准备好的所有信息,真正开始画画。你可以控制画画的精细程度、创意程度等等。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | 来自Apply节点 | 这是"画师本人",负责实际创作的AI模型 | 扩散模型 | 连接Apply节点的model输出 |
| seed | seed | 整数 | 0 | 这是"随机种子",控制画画的随机性 | 随机种子值 | 相同种子产生相同结果 |
| steps | steps | 整数 | 20 | 这是"画画步数",步数越多画得越精细 | 去噪步数 | 20步够用,50步更精细 |
| cfg | cfg | 浮点数 | 8.0 | 这是"听话程度",数值越高越按描述画 | 分类器自由引导强度 | 7-12之间比较好 |
| sampler_name | sampler_name | 下拉选择 | euler | 这是"画画方法",选择用什么算法画画 | 采样器选择 | euler简单,dpmpp_2m质量好 |
| scheduler | scheduler | 下拉选择 | normal | 这是"画画节奏",控制画画过程的节奏 | 调度器选择 | normal通用,karras更平滑 |
| positive | positive | CONDITIONING类型 | 来自编码节点 | 这是"正面指导",告诉AI要画什么 | 正面条件 | 连接CLIPTextEncode的positive |
| negative | negative | CONDITIONING类型 | 来自编码节点 | 这是"负面指导",告诉AI不要画什么 | 负面条件 | 连接CLIPTextEncode的negative |
| info | info | DIFFINFO类型 | 来自编码节点 | 这是"信息包",包含所有画画需要的信息 | 扩散信息 | 连接CLIPTextEncode的info |
| latent_image | latent_image | LATENT类型 | 空白潜在图 | 这是"画布",AI在上面画画的空白画布 | 潜在空间图像 | 连接Empty Latent Image |
| sa32_degree | sa32_degree | 浮点数 | 0.5 | 这是"注意力强度32",控制角色一致性的程度 | 自注意力程度控制 | 0.3-0.7之间调节 |
| sa64_degree | sa64_degree | 浮点数 | 0.5 | 这是"注意力强度64",控制角色一致性的程度 | 自注意力程度控制 | 0.3-0.7之间调节 |
| denoise | denoise | 浮点数 | 1.0 | 这是"重画程度",1.0完全重画,0.5半重画 | 去噪强度 | 1.0文生图,0.7图生图 |
3.5 StoryDiffusion_Lora_Control 节点
这个节点是干嘛的?
这个节点就像一个"风格和控制管理器",它可以给AI添加特殊的绘画风格,还可以控制角色的姿势和动作。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | 来自Apply节点 | 这是"基础画师",要添加技能的AI模型 | 基础扩散模型 | 连接Apply节点的model输出 |
| switch | switch | DIFFCONDI类型 | 来自Apply节点 | 这是"模式开关",控制当前的工作模式 | 扩散条件控制 | 连接Apply节点的switch输出 |
| loras | loras | 下拉选择 | none | 这是"风格包",给AI添加特殊的绘画风格 | LoRA模型选择 | 选择动漫风格、写实风格等 |
| trigger_words | trigger_words | 字符串 | best quality | 这是"风格激活词",激活特殊风格的关键词 | LoRA触发词 | 输入对应风格的触发词 |
| controlnets | controlnets | 下拉选择 | none | 这是"姿势控制器",控制角色的姿势和动作 | ControlNet模型选择 | 选择姿势控制、深度控制等 |
| controlnet_scale | controlnet_scale | 浮点数 | 0.8 | 这是"控制强度",控制姿势控制的影响程度 | ControlNet权重 | 0.5轻微控制,1.0严格控制 |
3.6 Comic_Type 节点
这个节点是干嘛的?
这个节点就像一个"漫画排版师",它把你生成的多张图片排列成漫画的样子,还可以添加文字说明,就像制作真正的连环画。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | IMAGE类型 | 生成的图片 | 这是"原材料图片",要排版成漫画的图片 | 输入图像批次 | 连接KSampler的输出 |
| scene_prompts | scene_prompts | 多行文本 | 场景描述 | 这是"图片说明",每张图片的文字说明 | 场景提示文本 | 每行对应一张图的说明 |
| fonts_list | fonts_list | 下拉选择 | 字体文件 | 这是"字体选择器",选择文字的样式 | 字体文件选择 | 选择合适的字体文件 |
| text_size | text_size | 整数 | 40 | 这是"字体大小",控制文字的大小 | 文字尺寸 | 30小字,50大字 |
| comic_type | comic_type | 下拉选择 | Four_Pannel | 这是"漫画样式",选择漫画的排版方式 | 漫画布局类型 | 四格漫画或经典漫画 |
| split_lines | split_lines | 字符串 | ; | 这是"分割符",用来分割不同的文字说明 | 文本分割符 | 用;或其他符号分割 |
3.7 Pre_Translate_prompt 节点
这个节点是干嘛的?
这个节点就像一个"文字清理器",它可以把复杂的场景描述简化,去掉角色名字只保留动作描述,方便后续处理。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| scene_prompts | scene_prompts | 字符串 | 场景描述 | 这是"原始剧本",包含角色和动作的完整描述 | 输入场景提示 | [Taylor] wake up in bed |
| keep_character_name | keep_character_name | 布尔值 | False | 这是"保留角色名"开关,决定是否保留角色名字 | 角色名保留控制 | True保留,False去掉 |
4. 使用技巧和建议
4.1 角色描述技巧
- 详细描述外貌:包括发色、眼色、服装、体型等
- 使用方括号:[Taylor] a woman with blue hair, wearing white dress
- 保持一致性:同一角色的描述要在所有场景中保持一致
- 避免冲突描述:不要在同一角色描述中出现矛盾的特征
4.2 场景描述技巧
- 动作要具体:不要只写"站着",要写"站在窗边看风景"
- 环境要清晰:描述具体的场所和背景
- 情绪要表达:加入角色的表情和情绪状态
- 时间要明确:说明是白天、夜晚还是特定时间
4.3 模型选择建议
- SDXL模型:适合写实风格,人物细节丰富
- FLUX模型:速度快,质量高,推荐使用
- 量化设置:显存不足时使用fp8,显存充足用fp16
- LoRA选择:根据想要的风格选择对应的LoRA
4.4 参数调节技巧
- CFG值:7-12之间,太高会过度拟合,太低会偏离描述
- 步数设置:20步基本够用,追求质量可以用30-50步
- 种子控制:固定种子可以复现结果,随机种子增加变化
- 注意力强度:sa32和sa64控制角色一致性,0.5是平衡值
5. 常见问题解答
Q1: 为什么生成的角色不一致?
A: 可能的原因:
- 角色描述不够详细或前后不一致
- sa32_degree和sa64_degree设置过低
- 没有使用PhotoMaker或其他角色一致性模型
- 建议详细描述角色特征,调高注意力参数
Q2: 显存不够怎么办?
A: 解决方案:
- 使用fp8量化模式
- 降低图片分辨率
- 减少生成步数
- 使用GGUF量化模型
- 关闭不必要的功能
Q3: 如何制作双角色同框?
A: 步骤:
- 在角色描述中定义两个角色:[A] 和 [B]
- 在场景描述中同时提到两个角色
- 选择支持双角色的模式(如msdiffusion)
- 调整guidance_list参数控制角色位置
Q4: 生成速度很慢怎么办?
A: 优化建议:
- 使用FLUX模型(速度较快)
- 启用模型量化
- 减少生成步数
- 降低图片分辨率
- 使用更快的采样器如euler
Q5: 如何添加特殊风格?
A: 方法:
- 在Lora_Control节点选择对应的LoRA
- 填入正确的trigger_words
- 在add_style中选择预设风格
- 调整lora_scale控制风格强度
Q6: 角色表情如何控制?
A: 控制方法:
- 在场景描述中明确写出表情:smiling, sad, angry
- 使用ControlNet控制面部表情
- 调整CFG值影响表情的准确度
- 使用专门的表情LoRA
Q7: 如何制作连环画?
A: 制作步骤:
- 定义角色和多个场景
- 使用KSampler生成多张图片
- 用Comic_Type节点排版成漫画
- 添加文字说明
- 选择合适的漫画布局
Q8: 模型文件放在哪里?
A: 文件位置:
- 主模型:ComfyUI/models/checkpoints/
- PhotoMaker:ComfyUI/models/photomaker/
- LoRA:ComfyUI/models/loras/
- ControlNet:ComfyUI/models/controlnet/
- CLIP:ComfyUI/models/clip/
6. 高级应用技巧
6.1 制作个人IP形象
- 准备清晰的角色照片
- 详细描述角色特征
- 使用PhotoMaker v2保持一致性
- 创建多个不同场景的故事
- 用Comic_Type制作成连环画
6.2 批量生成故事图片
- 准备完整的故事脚本
- 将每个场景分别描述
- 使用相同的角色设定
- 批量生成所有场景
- 后期统一调色和风格
6.3 角色换装系统
- 定义基础角色特征
- 在不同场景中改变服装描述
- 保持面部特征一致
- 使用ControlNet控制姿势
- 调整参数保持角色识别度
6.4 多角色互动场景
- 详细定义每个角色
- 描述角色间的互动
- 使用MS-Diffusion模式
- 调整guidance_list控制位置
- 平衡各角色的重要性
7. 模型推荐和配置
7.1 新手推荐配置
- 主模型:SDXL基础模型
- PhotoMaker:v2版本
- 量化模式:fp16
- 分辨率:768x768
- 步数:20步
7.2 高级用户配置
- 主模型:FLUX.1-dev
- 量化模式:fp8
- 分辨率:1024x1024
- 步数:30-50步
- 多种LoRA组合
7.3 低显存配置
- 量化模式:nf4
- 分辨率:512x512
- 步数:15步
- 关闭不必要功能
8. 总结
ComfyUI StoryDiffusion 插件是一个功能强大的故事创作工具,通过7个核心节点,你可以:
- 创建一致的角色形象
- 生成连续的故事图片
- 制作专业的连环画
- 控制角色表情和动作
- 实现多角色互动场景
学习建议:
- 从简单的单角色故事开始
- 逐步学习各个节点的功能
- 多实验不同的参数组合
- 参考示例工作流学习
- 根据硬件配置选择合适的模式
最重要的提醒:
- 尊重版权,不要使用他人的肖像
- 合理使用计算资源
- 保存好的参数配置
- 多练习才能熟练掌握
- 享受创作的乐趣!
这个插件为数字艺术创作开启了新的可能性,让每个人都能成为自己故事的创作者!