跳到主要内容
Huobao Drama 火宝短剧 · prolist
返回项目库查看仓库原始简介 🎬 火宝短剧 - 基于AI的一站式短剧生成平台 《一句话生成完整短剧,从剧本到成片全自动化》 Huobao Drama - An AI-Powered End-to-End Short Drama Generator "One Sentence to Complete Drama: Fully Automated from Script to Final Video"
来自项目 README 项目解读 README
项目解读由 AI 根据历史资料整理,尚未经人工复核。仓库资料更新于 2026-09-08,与历史解读分开保留。
项目概览 Huobao Drama(火宝短剧)是由南京 AI 火宝团队开发的一站式 AI 短剧自动化生产平台,实现从剧本生成、角色设计、分镜制作到视频合成的全流程自动化。项目以 TypeScript 全栈构建,后端采用 Hono + Drizzle ORM + Mastra AI Agent 框架,前端使用 Nuxt 3 + Vue 3,数据库选用 SQLite。其核心价值在于将短剧制作拆解为剧本改写、角色提取、分镜拆解、音色分配、提示词生成五步流水线,每一步由专门的 AI Agent 负责,通过结构化数据在步骤间传递上下文。平台不依赖单一厂商,通过多厂商适配层(OpenAI、Gemini、MiniMax、火山引擎、阿里、Chatfire)实现图片、视频、TTS 的灵活切换。最终视频合成依赖 FFmpeg,支持 Docker 单镜像部署。项目采用 CC BY-NC-SA 4.0 许可证,禁止商业用途。
解决什么问题 在 AI 短剧自动化平台出现之前,内容创作者面临一条碎片化、手工密集的链路。报告指出传统短剧制作存在五大痛点:工具链断裂,剧本、角色图、视频、配音需要在 5-6 个工具之间反复切换、手动搬运数据;角色一致性崩溃,每次生成都需要重新输入长段提示词,跨镜头、跨场景的角色外观极易漂移;分镜到视频断层大,分镜脚本是文字,视频生成需要图像加提示词,中间的翻译完全靠人工经验和反复调试;批量生产成本高,一集 3-5 分钟的短剧可能包含 20-40 个镜头,每个镜头需要独立的图片生成、视频生成、配音和合成,纯人工操作耗时可观;工程化缺失,大多数 AI 创作工具只解决单点问题,没有人把小说到成片的完整工作流串联起来。报告认为,推动技术出现的核心矛盾是 AI 媒体生成能力已经成熟,但缺少一个编排层把这些能力串联成可重复执行的生产流水线。
工作方式 报告描述,火宝短剧的核心是 5 个 Mastra Agent,每个 Agent 配有独立的 SKILL.md 行为规范。script_rewriter 负责将小说或创意文本改写为格式化剧本;extractor 负责从剧本中提取角色和场景列表,自动去重并跨集复用;storyboard_breaker 负责将剧本拆解为分镜序列,每个镜头包含 17 个结构化字段;voice_assigner 根据性别、年龄、性格、定位四维匹配为角色分配音色;grid_prompt_generator 生成角色、场景、宫格图的英文图片提示词。系统通过多厂商 Media Adapter 层屏蔽不同 AI 服务的 API 差异,图片生成支持 OpenAI、Gemini、MiniMax、火山引擎、阿里、Chatfire,视频生成支持 MiniMax、火山引擎/Seedance、Vidu、阿里,TTS 配音支持 MiniMax。最终视频合成依赖 FFmpeg(fluent-ffmpeg 封装),单镜头合成等于视频片段加 TTS 音频加 SRT 字幕混流,整集导出为所有单镜头拼接。项目采用 SQLite + Drizzle ORM + better-sqlite3,开启 WAL 模式,首次启动自动建表。部署支持 Docker Compose 单镜像单端口,也支持开发模式分别启动前后端。
核心能力
全链路闭环:从小说到成片的完整自动化
多厂商适配:图片、视频、TTS 可灵活切换,不绑定单一 AI 服务商
字段分镜模型:结构化数据可追溯、可修改
SKILL.md 运行时注入:修改文件即可调整 Agent 行为,无需改代码
角色跨集一致性:自动去重加复用机制缓解角色漂移
渐进式手动介入:每一步都可以人工修改再继续
Docker 一键部署:前后端合并为单镜像,开箱即用
支持本地模型:可通过 Ollama 接入本地模型降低成本
使用前需要了解
AI 整理 · 本地测试,未经人工复核;依据历史报告节选,不代表当前产品状态。
报告明确列出以下局限:许可证为 CC BY-NC-SA 4.0,禁止商业用途,限制了企业级商业化路径;画面质量依赖上游视频生成模型,最终视频质量受限于 MiniMax、Vidu 等模型的当前能力;角色一致性仍有瑕疵,跨镜头的角色外观仍可能出现细微差异;项目缺少自动化测试套件,自定义修改后验证困难;前端无 UI 框架,纯 CSS 实现意味着界面扩展和维护成本较高;SQLite 存在高并发写入限制。报告指出不适合以下场景:需要真人演员参演的高端短剧、对画面质量有电影级要求的制作、需要复杂 3D 特效的场景、实时直播或互动视频场景、受 CC BY-NC-SA 4.0 许可限制的商业用途。单镜头时长限制在 10-15 秒,不适用于长镜头场景。报告还纠正了常见误区:火宝短剧不是视频生成模型,而是编排平台;实际使用中每一步都需要人工审核和微调,更准确的说法是半自动生产流水线。
简体中文 · 官方 原文
🎬 Huobao Drama - AI 短剧生成平台
📖 项目简介
Huobao Drama 是一个基于 AI 的短剧自动化生产平台,实现从剧本生成、角色设计、分镜制作到视频合成的全流程自动化。
🎯 核心价值
🤖 AI 驱动 :使用大语言模型解析剧本,提取角色、场景和分镜信息
🎨 智能创作 :AI 绘图生成角色形象和场景背景
📹 视频生成 :基于文生视频和图生视频模型自动生成分镜视频
🔄 工作流 :完整的短剧制作工作流,从创意到成片一站式完成
🛠️ 技术架构
frontend/ — Nuxt 3 + Vue 3 + TypeScript (纯 CSS,无 UI 框架)
backend/ — Hono + Drizzle ORM + Mastra AI Agents + mysql2
backend/workspace/skills/ — Agent 技能定义 (SKILL.md,支持界面在线编辑)
data/ — 生成资源文件
docker/ — init.sql 数据库初始化脚本(可选,启动时自动建表)
🔥 AI创作省钱攻略|快乐马 & Seedance 合作专属折扣,优惠到底 👉 立即查看
✨ 功能特性
🎭 角色管理
✅ AI 生成角色形象
✅ 批量角色生成
✅ 角色图片上传和管理
🎬 视频任务
✅ AI 自动生成视频任务
✅ 场景描述和视频提示词生成
✅ 按任务批量生成视频
🎥 视频生成
✅ 文生视频自动生成
✅ FFmpeg 单镜头合成与字幕处理
✅ 整集拼接导出
📦 资源管理
✅ 素材库统一管理
✅ 本地存储支持
✅ 任务进度追踪
🤖 AI Agents 内置 4 个 Mastra Agent,支持数据库配置和 Skill 扩展:
🔌 多厂商适配
🚀 快速开始
📋 环境要求
FFmpeg 无需安装 :项目通过 ffmpeg-static / ffprobe-static npm 包内置二进制,本地与 Docker 均开箱即用。
⚙️ 环境变量 无需配置文件,通过环境变量设置(均有默认值,本地开发可零配置启动):
说明 :AI 服务的 API Key、Base URL 和模型参数全部在 Web 界面的「设置」页配置并入库,不在配置文件/环境变量中维护。
📥 安装依赖 # 克隆项目
git clone https://github.com/chatfire-AI/huobao-drama.git
cd huobao-drama
# 安装后端依赖
cd backend && npm install
# 安装前端依赖
cd ../frontend && npm install
🎯 启动项目
方式一:开发模式(推荐) # 终端1:启动后端
cd backend
npm run dev
# 终端2:启动前端
cd frontend
npm run dev
前端地址: http://localhost:3013
后端 API: http://localhost:5679/api/v1
前端自动代理 /api 和 /static 到后端
方式二:单服务模式 # 1. 构建前端
cd frontend && npm run generate
# 2. 复制构建产物到后端读取的目录(generate 产物在 .output/public,后端只读取 frontend/dist)
cp -r .output/public dist
# 3. 启动后端
cd ../backend && npm start
访问: http://localhost:5679
🗄️ 数据库 数据库表在首次启动时自动创建(幂等,每次启动自动重放初始化与迁移)。默认连接读取 DATABASE_URL,也可以通过 MYSQL_HOST、MYSQL_PORT、MYSQL_USER、MYSQL_PASSWORD、MYSQL_DATABASE 分项配置:
DATABASE_URL=mysql://huobao:huobao@127.0.0.1:3306/huobao_drama npm start
如需在应用外预建表(如 DBA 审核场景),可使用 docker/init.sql;schema 变更后通过 cd backend && npx tsx scripts/export-init-sql.ts 重新生成。
🔑 首次使用:配置 AI 服务 启动后所有 AI 功能(文本/生图/视频)都需要先配置模型服务,未配置时页面顶部会有横幅引导:
打开「设置」页
在「火宝快捷配置」中粘贴 Huobao API Key(前往 api.chatfire.site 获取 ),一键写入文本、图片和视频推荐配置(视频包含 Seedance、Wan 3.0 与 MiniMax)
或使用「手动模板」按厂商逐个添加,支持连通性测试
Wan 3.0 可直接通过「火宝快捷配置」接入 ChatFire 网关;若直连阿里云,则选择「阿里云百炼 Wan 3.0」模板,将 Base URL 中的 {WorkspaceId} 替换为真实业务空间 ID。直连时 Base URL、API Key 与模型必须属于同一地域。
POST /api/v1/tasks 的 Wan 3.0 请求可直接使用官方入参结构(另加项目任务类型 type):
{
"type": "video",
"model": "wan3.0-video-prime",
"input": {
"prompt": "图1中的人物走进房间",
"media": [{ "type": "reference_image", "url": "https://example.com/ref.png" }]
},
"parameters": {
"resolution": "1080P",
"ratio": "16:9",
"duration": 5,
"audio": true,
"seed": -1,
"prompt_extend": true,
"watermark": false
}
}
📦 部署指南
🐳 Docker 部署(推荐)
方式一:Docker Compose(推荐) 一条命令拉起应用 + MySQL 8.4,含健康检查与启动顺序编排(应用等待 MySQL 就绪后启动,建表自动完成):
# 构建并启动
docker compose up -d --build
# 查看日志
docker compose logs -f
# 停止服务
docker compose down
访问: http://localhost:5679
提示 :compose 为源码构建方式,构建过程需从外网下载 ffmpeg-static / sharp 预编译二进制,网络受限环境请先配置 npm 镜像或代理;想跳过构建可直接使用方式二的 Docker Hub 预构建镜像。
方式二:Docker 命令(Docker Hub 镜像) 已发布多架构镜像(linux/amd64 + linux/arm64,x86 服务器与 ARM 设备均自动匹配),无需克隆仓库、无需本地构建:
# 拉取镜像
docker pull huobao/huobao-drama:3.1.0
# 运行(MySQL 需另行准备,通过 DATABASE_URL 指向;命名卷自动从镜像初始化 skills 等内容)
docker run -d \
--name huobao-drama \
-p 5679:5679 \
-v huobao-data:/app/data \
-v huobao-workspace:/app/backend/workspace \
-e DATABASE_URL=mysql://huobao:huobao@host.docker.internal:3306/huobao_drama \
--restart unless-stopped \
huobao/huobao-drama:3.1.0
# 查看日志
docker logs -f huobao-drama
注意 :Linux 用户需添加 --add-host=host.docker.internal:host-gateway 以访问宿主机服务
docker build -t huobao-drama:latest .
✅ Docker Hub 预构建多架构镜像(amd64 / arm64),免构建即拉即用
✅ 开箱即用,内置 FFmpeg 二进制,无需系统安装
✅ 前后端合并为单镜像、单端口
✅ MySQL 健康检查 + 应用启动重试,首次部署零人工干预
✅ data/ 与 workspace/ 目录 volume 挂载,数据与技能持久化
🔗 访问宿主机服务(Ollama / 本地模型) 容器内可通过 http://host.docker.internal:端口号 访问宿主机服务。
宿主机启动服务(监听所有接口):
export OLLAMA_HOST=0.0.0.0:11434 && ollama serve
在 Web 界面「设置 → AI 服务配置」中填写:
Base URL: http://host.docker.internal:11434/v1
Provider: openai
Model: qwen2.5:latest
🏭 传统部署方式 # 1. 构建前端
cd frontend && npm run generate
# 2. 复制构建产物(generate 产物在 frontend/.output/public,后端只读取 frontend/dist,缺此步 API 正常但页面 404)
cp -r .output/public dist && cd ..
# 3. 启动后端
cd backend && npm start
backend/ # 后端源码 + node_modules
backend/workspace/skills/ # Agent 技能文件
frontend/dist/ # 前端构建产物
data/ # 数据目录(首次运行自动创建)
Nginx 反向代理 server {
listen 80;
server_name your-domain.com;
# 参考视频/音频上传最大 50MB
client_max_body_size 100m;
# 生成的图片/视频直连磁盘,不经过 Node:sendfile 零拷贝 + 长缓存
# (产物按 uuid 命名、内容不变,可安全 immutable 缓存)
location /static/ {
alias /path/to/huobao-drama/data/static/;
sendfile on;
tcp_nopush on;
expires 1y;
add_header Cache-Control "public, immutable";
}
location / {
proxy_pass http://localhost:5679;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
媒体加载优化:生成图片时后端会自动产出 400px 缩略图(*_thumb.webp)供列表页加载,视频会抽取海报帧(*_poster.jpg)作为封面,前端仅在点开大图/播放时才加载原文件。历史存量文件可在 backend/ 下执行 npm run backfill-artwork 一次性补齐。
🎨 技术栈
后端
运行时 : Node.js 20+
Web 框架 : Hono
ORM : Drizzle ORM + mysql2
AI Agent : Mastra + AI SDK (OpenAI compatible)
视频处理 : FFmpeg (fluent-ffmpeg)
图片处理 : Sharp
前端
框架 : Nuxt 3 (SPA 模式)
语言 : Vue 3 + TypeScript
路由 : 文件路由 (Vue Router 4)
样式 : 纯 CSS + CSS Variables
图标 : Lucide Vue
📝 常见问题
Q: Docker 容器如何访问宿主机的 Ollama? A: 使用 http://host.docker.internal:11434/v1 作为 Base URL。注意:
宿主机 Ollama 需监听 0.0.0.0:export OLLAMA_HOST=0.0.0.0:11434 && ollama serve
Linux 用户使用 docker run 需添加:--add-host=host.docker.internal:host-gateway
Q: FFmpeg 未安装或找不到? A: 无需安装。项目内置 ffmpeg-static / ffprobe-static 二进制(本地与 Docker 均是)。如自定义 PATH 中的系统 FFmpeg 也不会冲突,代码优先使用内置二进制。
Q: 页面顶部提示「尚未配置模型」? A: 这是正常的首次部署引导。前往「设置」页,用「火宝快捷配置」粘贴 API Key 一键写入,或通过「手动模板」按厂商添加。文本、图片、视频三类均有启用中的配置后横幅自动消失。
Q: 前端无法连接后端 API? A: 检查后端是否启动,端口是否正确。开发模式下前端代理配置在 frontend/nuxt.config.ts。
Q: 数据库表未创建? A: 后端会在首次启动时自动创建所有表,检查日志确认初始化是否成功。
📋 更新日志
v3.1.0 (2026-09)
新增阿里云百炼 Wan 3.0 视频模型(Prime / 标准,支持官方 input.media/parameters 入参)
工作台顶栏新增分辨率选择器,按厂商显示原生档位(Seedance 480p/720p、MiniMax 768P/2K、Wan 480P/720P/1080P)
默认视频模型调整为 Seedance 2.0 Mini
修复切换视频模型时厂商/模型错配导致的生成报错
批量视频:选择模式 + 生成前确认(镜头数/总时长/模型/分辨率),失败任务一键重试
分镜时长在视频生成参数区直接编辑保存,单次/批量生成统一生效
真人/敏感内容审核失败时提示切换模型重试
v3.0.0 (2026-08)
🚀 部署与体验优化
Docker 部署就绪改造
MySQL / 应用健康检查,应用等待数据库就绪后启动
数据库初始化增加重试,容器编排下首次部署零人工干预
移除系统 FFmpeg 依赖,全面使用内置二进制
Agent skills 目录 volume 持久化(设置页在线编辑不丢失)
新增 docker/init.sql 及导出脚本(DBA 审核 / 预建表)
首次使用引导
未配置 AI 服务时全站顶部横幅提示并引导至设置页
设置页新增「火宝快捷配置」:一个 Key 写入文本/图片/视频推荐配置
未配置模型的报错中文化并指引设置页
视频模型默认调整为 Seedance 2.0 Fast
厂商支持:OpenAI / Gemini / 火山引擎 / MiniMax / 阿里云百炼
工作台:任务列表抽屉、流水线大环节状态、选择性拼接(拼接前校验视频文件存在)
素材库改版、@提及优化、剧集列表重构
v2.0.0 (2026-04)
🚀 重大更新
项目全面迁移至 TypeScript 技术栈
后端:Hono + Drizzle ORM + mysql2
前端:Nuxt 3 + Vue 3
AI Agent:Mastra 框架
重做单集工作台 UI 和生产流程
更紧凑的控制台布局
重做分镜编辑区
重做镜头图、视频、合成、导出界面
新增 Docker 部署支持,前后端合并为单镜像
增加运行时 Skill 加载机制
扩展多厂商媒体 Adapter
图片:OpenAI、Gemini、火山引擎、阿里
视频:火山引擎/Seedance、Vidu、阿里
优化本地文件处理与参考图按需转码
v1.0.4 (2026-01-27)
引入本地存储策略,规避外部资源链接失效
Base64 参考图嵌入式传输
修复镜头切换状态重置问题
添加场景迁移至章节
v1.0.3 (2026-01-16)
优化数据库并发访问性能
Docker 跨平台支持 host.docker.internal
v1.0.2 (2026-01-14)
修复视频生成 API 响应解析问题
添加 OpenAI Sora 视频端点配置
优化错误处理和日志输出
🤝 贡献指南 欢迎提交 Issue 和 Pull Request!
Fork 本项目
创建特性分支 (git checkout -b feature/AmazingFeature)
提交改动 (git commit -m 'Add some AmazingFeature')
推送到分支 (git push origin feature/AmazingFeature)
开启 Pull Request
cd backend && npm run typecheck
cd ../frontend && npm run build
☕ 捐赠支持 如果这个项目对你有帮助,欢迎扫码请作者喝杯咖啡 ☕,你的支持是持续更新的动力!
🔗 友情链接