huobao-drama:一句话生成完整短剧,Hono + Nuxt 3 的全栈 AI 短剧平台
项目地址:https://github.com/chatfire-AI/huobao-drama
官网:https://www.chatfire.site
协议:CC BY-NC-SA 4.0(禁止商业用途)
定位:把「剧本 → 角色 → 分镜 → 视频合成」全自动化
火宝短剧(Huobao Drama)是一个 AI 短剧生产平台,目标是把整条链路自动化:LLM 解析剧本、提取角色与场景、AI 出人物定妆和场景背景、文生视频/图生视频产出分镜片段,最后 FFmpeg 拼接成片。当前 15045 Star。
跟不少「网页套壳」不同,它是一套完整的 TypeScript 全栈应用,桌面端、Docker、服务器三种形态都有,版本已经迭代到 v4.0.0。
架构拆解
frontend/ — Nuxt 3 + Vue 3 + TypeScript(纯 CSS,无 UI 框架)
backend/ — Hono + Drizzle ORM + Mastra AI Agents + better-sqlite3
backend/workspace/skills/ — Agent 技能定义(SKILL.md,可在界面里编辑)
desktop/ — Electron 桌面端(主进程 + esbuild + electron-builder)
data/ — 生成的素材与 SQLite 数据库
几个工程选择挺实在:
- 数据库从 MySQL 迁到 SQLite(better-sqlite3 + WAL)。迁移时业务代码几乎没改,靠 Drizzle 查询层天然可移植,用幂等 DDL 回放建表。附带一个一次性导入脚本
import-mysql-to-sqlite.ts,逐表校验行数、写入前自动备份,非空目标需要加--force。 - FFmpeg 不用装。通过
ffmpeg-static/ffprobe-staticnpm 包自带二进制,桌面包里也带着,开箱即用。系统 PATH 里的 FFmpeg 不冲突,也可以用FFMPEG_BIN/FFPROBE_BIN显式指定。 - 零安装数据库:单文件 SQLite 放在项目 data 目录,无需起数据库服务。
四个内置 AI Agent
基于 Mastra 框架,配置存数据库、能力靠 Skill 扩展:
| Agent | 职责 |
|---|---|
script_rewriter | 小说 → 格式化剧本改写 |
extractor | 角色 / 场景 / 道具智能提取与去重 |
storyboard_breaker | 剧本 → 分镜序列拆分 |
prompt_generator | 角色/场景/道具出图提示词 + 分镜视频提示词 |
支持的模型供应商
| 类型 | 供应商 |
|---|---|
| 文本 | OpenAI(兼容接口)、Gemini |
| 图像 | OpenAI、Gemini、火山引擎 |
| 视频 | 火山引擎 Seedance 2.0(Standard / Fast / Mini)、MiniMax H3、阿里百炼 Wan 3.0(Prime / Standard) |
需要注意的是:AI 的 API Key、base URL、模型参数全部配在 Web UI 的「设置」里并存数据库,不写在配置文件或环境变量里。第一次用会有个横幅提示去「火宝一键配置」粘贴 Key,一键写入文本/图像/视频三套推荐配置,横幅才会消失。
上手:开发模式跑起来
环境只要 Node.js 20+ 与 npm 9+。
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到后端
单服务模式(后端同时服务 API 和前端静态文件)要注意一个坑:
cd frontend && npm run generate
# Nuxt 产物在 .output/public,但后端读的是 frontend/dist,必须复制
cp -r .output/public dist
cd ../backend && npm start # 访问 http://localhost:5679
跳过 cp 这步,API 能用但页面 404。
部署形态
桌面端(推荐给普通用户):Releases 里有 macOS dmg(Apple Silicon / Intel)和 Windows exe 安装包,双击即装。SQLite 数据库、生成素材、Agent skill 都放 userData 目录,卸载应用不影响数据。两个包都没签名:macOS 首次要右键→打开,或 xattr -cr /Applications/HuobaoDrama.app;Windows 会弹 SmartScreen,点「更多信息 → 仍要运行」。内置了自动更新器,走 sha256 校验,不依赖 Apple 签名。
Docker(可应用内更新):
docker pull huobao/huobao-drama:4.0.0
docker run -d \
--name huobao-drama \
-p 5679:5679 \
-v huobao-data:/app/data \
--restart unless-stopped \
huobao/huobao-drama:4.0.0
镜像多架构(linux/amd64 + linux/arm64)。compose 版本带一个 Watchtower sidecar,「设置 → 关于与更新」里点「立即更新」就通过 Watchtower HTTP API 拉新镜像重建容器。
Nginx 反代要单独给 /static/ 配一条,让生成图片/视频绕过 Node 直接走磁盘(sendfile 零拷贝 + 长缓存,文件按 uuid 命名且不可变,可以安全用 immutable)。后端会自动为列表页生成 400px 缩略图(*_thumb.webp)、为视频抽封面帧(*_poster.jpg),历史文件用 npm run backfill-artwork 回填。
已知限制
- Seedance 视频模型引用本地素材需要
PUBLIC_BASE_URL公网地址;桌面端没有公网入口,这个场景会报明确错误,文生视频和出图不受影响。 - 协议是 CC BY-NC-SA 4.0,禁止商业用途。想商用得自己评估授权问题。
- 桌面端依赖 Electron 37.x,因为 better-sqlite3 的 win32 预编译包在这个 ABI 封顶,这是它能跨平台免编译打包的关键。
适合谁
想要一套能自己部署、自己填 API Key、从小说一路做到成片的完整平台,且能接受非商用协议的团队或个人。如果你只想单点用一下文生视频,这平台偏重了。