Skip to content

AI 音视频创作模板

版本: v5.0.2.0 Headless 命令 — 不依赖桌面 GUI,直接使用核心包运行。

cc init --template ai-media-creator 在项目目录中一键配置 AI 音视频创作环境,自动生成 Persona(AI创作助手) 和 3 个工作区层技能。

概述

AI Media Creator 是一个 CLI 初始化模板,通过 cc init --template ai-media-creator 一键生成 3 个工作区技能,为用户提供 AI 驱动的图像、视频和音频创作能力。图像与视频生成依赖本地运行的 ComfyUI 实例(REST API),音频合成支持 4 种 TTS 后端自动降级。所有媒体生成均在本地完成,无需上传数据到云端。

核心特性

  • ComfyUI 文生图 — 通过 REST API 调用本地 ComfyUI,支持自定义工作流 JSON 和默认 SD 1.5 工作流
  • ComfyUI 图生图 — 基于已有图像进行风格迁移或修改,复用 comfyui-image 技能
  • AnimateDiff 视频生成 — 通过 ComfyUI + AnimateDiff 扩展生成短视频,需用户导出工作流 JSON
  • 4 后端 TTS 自动降级edge-tts(免费) → piper-tts(离线) → ElevenLabs(云端高质量) → OpenAI TTS(云端),自动选择可用后端
  • 工作流 JSON 导出 — 支持从 ComfyUI UI 导出 API 格式工作流供技能调用
  • Persona 自动激活 — 初始化后 Agent 模式自动加载"AI创作助手"角色,引导批量创作
  • cli-anything 集成 — FFmpeg、yt-dlp 等 CLI 工具可通过 cli-anything register 注册后由 Agent 调用

系统架构

┌─────────────────────────────────────────────────────────┐
│                   chainlesschain agent                   │
│                  (AI创作助手 Persona)                     │
├──────────────┬──────────────────┬────────────────────────┤
│              │                  │                        │
│  comfyui-image   comfyui-video      audio-gen           │
│  (handler.js)    (handler.js)       (handler.js)        │
│       │               │                 │               │
│       ▼               ▼                 ▼               │
│  ┌─────────┐   ┌────────────┐   ┌──────────────────┐   │
│  │ComfyUI  │   │ ComfyUI    │   │ TTS 降级链       │   │
│  │REST API │   │ REST API   │   │                  │   │
│  │:8188    │   │ :8188      │   │ 1. edge-tts      │   │
│  │         │   │            │   │ 2. piper-tts     │   │
│  │ 文生图  │   │ AnimateDiff│   │ 3. ElevenLabs API│   │
│  │ 图生图  │   │ 视频工作流 │   │ 4. OpenAI TTS API│   │
│  └─────────┘   └────────────┘   └──────────────────┘   │
│       │               │                 │               │
│       ▼               ▼                 ▼               │
│   输出图像         输出视频          输出音频            │
│  (output/)        (output/)         (output/)           │
└─────────────────────────────────────────────────────────┘

安全考虑

安全项说明
ComfyUI 本地运行图像/视频生成完全在本地完成,不上传数据到云端
TTS API Key 管理ElevenLabs 和 OpenAI 的 API Key 通过环境变量或 config.json 管理,不硬编码
生成文件本地存储所有生成的图像、视频、音频文件存储在项目本地 output/ 目录
本地后端无外传edge-tts 和 piper-tts 后端不向外部传输用户数据
工作流 JSON 验证提交到 ComfyUI 的工作流 JSON 在发送前经过格式验证,防止注入恶意节点

关键文件

文件说明
packages/cli/src/commands/init.js模板定义与技能生成逻辑(ai-media-creator 模板及 SKILL_TEMPLATES
.chainlesschain/skills/comfyui-image/SKILL.md文生图/图生图技能定义(生成到项目目录)
.chainlesschain/skills/comfyui-image/handler.jsComfyUI REST API 调用、默认工作流构建、图像保存
.chainlesschain/skills/comfyui-video/SKILL.mdAnimateDiff 视频生成技能定义(生成到项目目录)
.chainlesschain/skills/comfyui-video/handler.jsComfyUI 视频工作流提交、进度轮询、视频输出
.chainlesschain/skills/audio-gen/SKILL.mdTTS 语音合成技能定义(生成到项目目录)
.chainlesschain/skills/audio-gen/handler.js4 后端 TTS 降级链(edge-tts → piper → ElevenLabs → OpenAI)
.chainlesschain/config.jsonAI创作助手 Persona 配置
.chainlesschain/rules.mdComfyUI + cli-anything 集成规则
workflows/README.mdComfyUI 工作流导出指南

三个媒体技能

技能功能需要
comfyui-imageComfyUI 文生图 / 图生图本地 ComfyUI 运行(默认端口 8188)
comfyui-videoComfyUI + AnimateDiff 视频生成ComfyUI + AnimateDiff 扩展 + 工作流 JSON
audio-genTTS 语音合成(4 后端自动降级)至少安装一个 TTS 后端

快速开始

bash
cd my-media-project
chainlesschain init --template ai-media-creator --yes

生成目录结构:

<project-root>/
├── .chainlesschain/
│   ├── config.json         # AI创作助手 Persona 配置
│   ├── rules.md            # ComfyUI + cli-anything 集成规则
│   └── skills/
│       ├── ai-media-creator-persona/   # 自动激活 Persona
│       ├── comfyui-image/              # 文生图技能
│       ├── comfyui-video/              # AnimateDiff 视频技能
│       └── audio-gen/                  # TTS 语音合成技能
└── workflows/
    └── README.md           # ComfyUI 工作流导出指南

技能使用

comfyui-image — 生成图像

bash
# 使用内置默认工作流生成图像(需 ComfyUI 正在运行)
chainlesschain skill run comfyui-image "a sunset over mountains, oil painting style"

# 使用自定义工作流 JSON
chainlesschain skill run comfyui-image "portrait photo" --args '{"workflow":"workflows/my-workflow.json"}'

默认工作流参数:

参数默认值说明
宽度 / 高度512 × 512图像尺寸
步数20采样步数
引导系数7CFG scale
模型v1-5-pruned-emaonly.ckpt需与本地模型名匹配

comfyui-video — 生成视频

AnimateDiff 工作流需用户从 ComfyUI UI 导出(Save → API Format)。

bash
# 必须提供工作流文件
chainlesschain skill run comfyui-video "walking in the rain" --args '{"workflow":"workflows/animatediff.json"}'

audio-gen — 语音合成

自动按优先级尝试 4 个 TTS 后端:edge-ttspiper-tts → ElevenLabs → OpenAI TTS

bash
# 生成语音(自动选择可用后端)
chainlesschain skill run audio-gen "欢迎使用 AI 音视频创作助手"

# 指定输出文件
chainlesschain skill run audio-gen "Hello world" --args '{"output":"output/hello.mp3"}'

TTS 后端安装:

bash
# 推荐:edge-tts(免费,无需 API Key)
pip install edge-tts

# 离线本地:piper-tts
# 下载模型后运行:echo "text" | piper --output_file output.wav

# 云端高质量(需 API Key)
export ELEVENLABS_API_KEY=your_key
export OPENAI_API_KEY=your_key

使用 Agent 批量创作

bash
chainlesschain agent

Agent 启动后会自动加载 AI创作助手 Persona,引导完成批量创作任务。

cli-anything 集成

ComfyUI 以 REST API 为主,不适合通过 cli-anything 注册,请直接使用内置技能。

有 CLI 接口的工具(FFmpeg、yt-dlp 等)可通过 cli-anything 注册:

bash
chainlesschain cli-anything register ffmpeg    # 注册 FFmpeg
chainlesschain cli-anything register yt-dlp   # 注册 yt-dlp
chainlesschain cli-anything scan               # 扫描 PATH 中可用工具

注册后可直接通过 Agent 调用:帮我用 ffmpeg 将 video.mp4 转为 720p

故障排查

问题解决方案
comfyui-image 连接失败确认 ComfyUI 正在运行:python main.py --listen 0.0.0.0,默认端口 8188
comfyui-video 提示"需要工作流"AnimateDiff 必须提供工作流 JSON,从 ComfyUI UI 导出(Save → API Format)
audio-gen 提示无后端安装 pip install edge-tts,或设置 OPENAI_API_KEY / ELEVENLABS_API_KEY

配置参考

通过 .chainlesschain/config.json 控制媒体创作行为:

javascript
{
  "persona": {
    "name": "AI创作助手",
    "role": "AI 音视频与图像创作助手",
    "background": "擅长通过 ComfyUI 和 TTS 工具生成高质量媒体内容"
  },
  "skills": {
    "comfyui-image": {
      "comfyuiUrl": "http://localhost:8188",  // ComfyUI REST API 地址
      "defaultWorkflow": null,                // null 表示使用内置 SD 1.5 工作流
      "outputDir": "./output",               // 图像输出目录
      "defaultWidth": 512,
      "defaultHeight": 512,
      "defaultSteps": 20,
      "defaultCfgScale": 7
    },
    "comfyui-video": {
      "comfyuiUrl": "http://localhost:8188",
      "outputDir": "./output",
      "pollIntervalMs": 2000,   // 轮询进度间隔(毫秒)
      "timeoutMs": 300000       // 生成超时(5 分钟)
    },
    "audio-gen": {
      "preferredBackend": "auto",   // auto | edge-tts | piper-tts | elevenlabs | openai
      "outputDir": "./output",
      "defaultVoice": "zh-CN-XiaoxiaoNeural",  // edge-tts 默认语音
      "elevenLabsApiKey": "",       // 或通过 ELEVENLABS_API_KEY 环境变量
      "openaiApiKey": ""            // 或通过 OPENAI_API_KEY 环境变量
    }
  }
}
配置项类型默认值说明
skills.comfyui-image.comfyuiUrlstring"http://localhost:8188"ComfyUI REST API 地址
skills.comfyui-image.defaultWorkflowstring|nullnull自定义工作流 JSON 路径(null 使用内置 SD 1.5)
skills.comfyui-video.pollIntervalMsnumber2000视频生成进度轮询间隔
skills.comfyui-video.timeoutMsnumber300000视频生成超时时间(毫秒)
skills.audio-gen.preferredBackendstring"auto"TTS 后端选择策略
skills.audio-gen.defaultVoicestring"zh-CN-XiaoxiaoNeural"edge-tts 默认语音

性能指标

以下数据来自本地基准测试(配置:RTX 3080,ComfyUI + SD 1.5):

图像生成耗时(comfyui-image)

分辨率采样步数GPU平均耗时
512×51220RTX 30803–6s
512×51220CPU only60–120s
768×76830RTX 30808–15s
1024×102430RTX 308020–35s

视频生成耗时(comfyui-video,AnimateDiff)

帧数分辨率GPU平均耗时
16 帧512×512RTX 308030–60s
32 帧512×512RTX 308060–120s
16 帧768×512RTX 308050–90s

TTS 语音合成耗时(audio-gen)

后端文本长度平均耗时网络需求
edge-tts100 字1–3s需联网
piper-tts100 字0.5–2s离线
ElevenLabs100 字2–5s需联网 + API Key
OpenAI TTS100 字2–4s需联网 + API Key

测试覆盖率

测试层级文件测试数覆盖场景
✅ 单元测试init-ai-media-creator.test.js45技能生成、Persona 配置、模板结构
✅ 集成测试ai-media-creator-handlers.test.js38comfyui-image / comfyui-video / audio-gen handler 完整流程(mock ComfyUI + mock TTS)
合计2 文件83

关键测试场景:

  • comfyui-image 使用内置默认工作流提交到 ComfyUI REST API
  • comfyui-image 指定自定义工作流 JSON 文件
  • comfyui-video 轮询进度直到生成完成
  • comfyui-video 超时后返回错误
  • audio-gen 按优先级自动降级(edge-tts → piper → ElevenLabs → OpenAI)
  • audio-gen 所有后端不可用时返回明确错误信息
  • ✅ Persona 自动激活配置完整性验证
  • ✅ 工作流 JSON 格式验证(防止注入恶意节点)

使用示例

完整图像生成工作流

bash
# 1. 初始化项目
cd my-media-project
chainlesschain init --template ai-media-creator --yes

# 2. 启动 ComfyUI(需提前安装)
cd /path/to/ComfyUI && python main.py --listen 0.0.0.0

# 3. 生成图像(默认 SD 1.5 工作流)
chainlesschain skill run comfyui-image "a futuristic city at night, neon lights, cinematic"
# → 输出:output/comfyui_output_<timestamp>.png

# 4. 使用自定义工作流
chainlesschain skill run comfyui-image "portrait of a samurai" \
  --args '{"workflow":"workflows/sdxl-portrait.json"}'

TTS 语音合成批量处理

bash
# 自动选择最优后端
chainlesschain skill run audio-gen "欢迎使用 ChainlessChain 智能助手系统"
# → 输出:output/audio_<timestamp>.mp3

# 指定输出文件名
chainlesschain skill run audio-gen "Hello, welcome to our platform" \
  --args '{"output":"output/welcome_en.mp3"}'

# 安装推荐的免费 TTS 后端
pip install edge-tts

AnimateDiff 视频生成

bash
# 1. 从 ComfyUI UI 导出工作流(Save → API Format → 保存为 animatediff.json)

# 2. 生成视频
chainlesschain skill run comfyui-video "a cat walking in a garden" \
  --args '{"workflow":"workflows/animatediff.json"}'
# → 输出:output/video_<timestamp>.gif 或 .mp4

Agent 模式批量创作

bash
chainlesschain agent

进入 Agent 后可使用自然语言:

> 帮我生成 5 张不同风格的山水画,分别是水彩、油画、素描、写实和抽象风格
> 把 scripts/intro.txt 里的文本转为语音,保存到 audio/intro.mp3
> 用 ffmpeg 把 output/ 目录下所有 PNG 合成为 10fps 的视频

与 FFmpeg 集成

bash
# 注册 FFmpeg 为 cli-anything 技能
chainlesschain cli-anything register ffmpeg

# 通过 Agent 调用
chainlesschain agent
# > 用 ffmpeg 将 output/video.gif 转为 720p MP4,比特率 2M

相关文档

基于 MIT 许可发布