打造吉卜力风格的 AI 视频生成工作流(n8n + ComfyUI + Azure TTS)

完整教程:如何使用 n8n、ComfyUI、Gemini 和 Azure TTS 构建一个自动化的 AI 视频生成工作流,并一键生成吉卜力风格动画,附赠可下载模板

阅读时长: 6 分钟
共 2718字
作者: eimoon.com

环境配置指南:安装 FFmpeg 与配置 API

本文将带你一步步构建一个完整的 AI 视频自动化管线,使用 n8n、ComfyUI、FFmpeg、Google Gemini 和 Azure TTS 自动将一段短故事转化为配音+动画的吉卜力风格视频,并最终自动发布至 YouTube。

👉 立即获取可直接使用的 n8n 工作流模板点击下载 Gumroad 模板

为确保本工作流能正确运行,您需要对 n8n 的部署环境进行一些关键配置。由于工作流依赖于外部服务,请遵循以下步骤操作。

1. 为 n8n 安装 FFmpeg (通过自定义 Docker 镜像)

官方的 n8n Docker 镜像默认不包含 FFmpeg。因此,我们需要构建一个自定义镜像来添加它。这是 Execute Command 节点成功运行 ffmpeg 命令的前提条件

第一步:创建 Dockerfile

在您 docker-compose.yml 文件所在的同一目录下,创建一个名为 Dockerfile 的新文件,并添加以下内容:

# 使用一个特定的 n8n 版本作为基础镜像,以确保稳定性
FROM n8nio/n8n:1.99.0

# 切换到 root 用户以获取安装软件的权限
USER root

# 使用 apk 包管理器安装 ffmpeg。--no-cache 选项可以减小最终镜像的体积
RUN apk add --no-cache ffmpeg

# 切换回非特权的 node 用户,这是 n8n 安全运行的推荐方式
USER node

说明: 此文件定义了如何在标准的 n8n 镜像之上安装 FFmpeg 软件包。

💡 如果你想跳过配置过程,优先试用一个已配置好的完整项目,可以直接下载本项目预设工作流

第二步:修改 docker-compose.yml 文件

接下来,编辑您的 docker-compose.yml 文件,使其使用我们刚刚创建的 Dockerfile 来构建镜像,而不是直接从 Docker Hub 拉取。

修改 services 下的 n8n 服务,添加 build 指令:

services:
  n8n:
    # 使用 build 指令来构建自定义镜像
    build:
      context: .  # context: . 表示 Dockerfile 在当前目录
      dockerfile: Dockerfile
    # container_name 和 image 是可选的,但有助于管理
    container_name: n8n-custom-ffmpeg
    image: my-n8n-with-ffmpeg:latest
    restart: always
    ports:
      - "5678:5678"
    env_file:
      - .env
    volumes:
      - n8n_data:/home/node/.n8n
    # ... 其他配置保持不变 ...

volumes:
  n8n_data:

说明: 当您运行 docker-compose up --build 时,Docker Compose 会首先根据 Dockerfile 构建一个名为 my-n8n-with-ffmpeg:latest 的新镜像,然后使用这个包含了 FFmpeg 的新镜像来启动 n8n 服务。

2. 配置 ComfyUI 服务器地址

您的 n8n 工作流需要知道 ComfyUI 服务器的地址才能向其发送请求。使用环境变量是配置此项的推荐方式,因为它更灵活、更安全。

推荐方法:使用 .env 文件

  1. 确认 docker-compose.yml 配置: 确保您 docker-compose.yml 文件中的 n8n 服务部分包含了 env_file: - .env 这一行。

  2. 创建或编辑 .env 文件: 在与 docker-compose.yml 相同的目录下,创建一个名为 .env 的文件(如果尚不存在),并添加以下内容,请将 URL 替换为您的实际地址:

# .env 文件

# 将此 URL 替换为您的 ComfyUI 实例的访问地址
COMFYUI_BASE_URL_1=http://your-comfyui-server-ip:8188

# ... 其他环境变量 ...

工作原理: n8n 启动时,会自动加载 .env 文件中的所有变量。工作流中的表达式 {{ $env.COMFYUI_BASE_URL_1 }} 随后便能成功读取到这个地址。

3. 配置 API 凭证

本工作流需要调用多个外部服务的 API。请前往您 n8n 实例的 Credentials 部分,为以下服务创建并配置凭证。

设置 Google Gemini API 密钥

设置 YouTube API 凭证

  • 用途: 用于将最终合成的视频自动上传到您的 YouTube 频道。
  • 操作:
    1. 在 n8n 中,选择新建凭证。
    2. 搜索并选择 “YouTube OAuth2 API”。
    3. 这需要您在 Google Cloud Console 中创建一个项目,启用 YouTube Data API v3,并获取 OAuth 2.0 客户端 ID 和密钥。
  • 参考文档: https://docs.n8n.io/integrations/builtin/credentials/google/

设置 Azure TTS API 凭证

4. 如何使用您自己的 ComfyUI 工作流

Set Workflow Payload 节点是视频生成的“蓝图”。您可以将它内部的 JSON 内容替换为您自己在 ComfyUI 中创建的任何工作流。请遵循以下步骤:

第一步:在 ComfyUI 中准备并导出您的工作流

  1. 设计并调试:首先,请确保您的工作流在 ComfyUI 界面中可以无错误地正常运行。这是最重要的一步,可以避免后续很多问题。
  2. 导出 API 格式:在 ComfyUI 的侧边栏菜单中,点击 “Save (API Format)” 按钮。这会下载一个 .json 文件,其中包含了您的工作流的 API 调用格式。
  3. 复制内容:用文本编辑器(如 VS Code 或记事本)打开这个下载的 .json 文件,并复制其全部内容

第二步:替换 n8n 节点中的内容

  1. 找到节点:在 n8n 中,点开 Set Workflow Payload 这个节点。
  2. 清空并粘贴:将其 JSON Output 字段中现有的全部 JSON 代码删除,然后将您刚刚从文件中复制的新代码粘贴进去

第三步:重新连接动态提示词 (最关键的一步!)

当您粘贴自己的工作流后,原来动态接收提示词的连接会断开,您需要手动将其重新连接。

  1. 找到您的“正面提示词”节点:在您刚刚粘贴进来的新 JSON 代码中,找到负责处理正面提示词 (Positive Prompt) 的那个 CLIPTextEncode 节点。它的 class_type 应该是 CLIPTextEncode
    • 提示:它通常会连接到一个 KSampler 节点的 positive 输入上。
  2. 修改 text 字段:在这个节点内部,找到 inputs 对象里的 text 字段。它现在可能是一个固定的、写死的提示词,例如 "text": "a beautiful landscape"
  3. 将其替换为 n8n 表达式:将这个写死的文本精确地替换为以下 n8n 表达式: {{ $json.output.video_prompt }}

修改前 (Before):

"6": {
  "inputs": {
    "text": "a cat sitting on a bench, best quality", // <-- 这是您在 ComfyUI 中写的固定文本
    "clip": [ "38", 0 ]
  },
  "class_type": "CLIPTextEncode"
},

修改后 (After):

"6": {
  "inputs": {
    "text": "{{ $json.output.video_prompt }}", // <-- 修改为此表达式
    "clip": [ "38", 0 ] // 确保 clip 的连接保持不变
  },
  "class_type": "CLIPTextEncode"
},

请注意,您的节点编号(如 "6""38")可能会有所不同,这取决于您自己的工作流结构。核心是找到正确的 CLIPTextEncode 节点并修改它的 text 输入。

完成以上三个步骤后,您的 n8n 工作流现在就会调用您自己的 ComfyUI 设计来生成视频了。


🚀 想直接体验?

如果你希望立即测试这个 AI 视频生成流程,无需从零搭建环境,可以使用我们打包好的 n8n 工作流,包含完整的节点、参数配置和集成逻辑。

👉 点击这里从 Gumroad 下载完整工作流

5. 调试与优化技巧

处理缓慢的 ComfyUI 生成过程

在 GPU 性能较低的机器上,ComfyUI 的视频生成可能非常耗时,这会严重影响后续流程(如视频/音频合并、上传等)的调试效率。这里有两种方法可以加快调试过程:

  • 方法一:使用固定的测试视频 (默认禁用) 在工作流中,我们预先配置了两个用于下载横向和纵向测试视频的节点。您可以禁用 ComfyUI 生成流程,并启用其中一个下载节点,以快速获取视频样本进行测试。

  • 方法二:仅生成第一个场景 如果您想测试完整的端到端流程(从 AI 生成到最终上传),但又不想等待所有场景都生成完毕,这是一个绝佳的折中方案。

    1. 找到 Debug a data entry 节点:这是一个 Code 节点,默认处于禁用状态。
    2. 激活此节点:右键点击该节点并选择 “Activate”。

    工作原理: 这个节点的功能非常简单:它接收 AI 生成的场景数组,并只保留第一个。因此,所有后续流程(视频生成、音频生成、合并等)将只为这一个场景运行一次。这极大地缩短了整个工作流的测试时间,让您能快速验证整体逻辑。调试完毕后,请记得再次禁用此节点,以便生成完整的视频。

时间校准

在本工作流中,Extract Scenes & Dialogue 节点在其系统提示中,要求生成的对话文本对应大约 8 秒 的朗读时间。因此,在您的 ComfyUI 工作流设置中,生成的视频时长最好也与之匹配(例如,通过设置合适的帧数),以避免在最终合并时出现视频和音频长度不匹配的情况。


完成以上所有配置后,重启您的 n8n 容器 (docker-compose up -d --build),您的环境就准备就绪了。

📬 关注我获取更多资讯

公众号
📢 公众号
个人号
💬 个人号
使用 Hugo 构建
主题 StackJimmy 设计