Indigo Nebula AI — 漫剧一键生成平台开发记录
技术栈 FastAPI Vue3 Redis MySQL Docker Compose。 开发周期2026 年暑期项目实训。一、项目概述Indigo Nebula AI 是一个面向短视频创作者的AI 漫剧制作平台目标是把灵感→小说→角色→分镜→图片→视频→配音→成片这七步流程全部用一个大模型工作流串起来实现一句话生成短视频。1.1 业务背景传统短视频生产里编剧、分镜、美术、剪辑、配音往往需要多人协作而这个项目试图让个人创作者只输入一段故事灵感或主题系统就能自动生成小说大纲与章节从小说中抽取角色把小说拆成分镜脚本根据分镜生成图片把图片生成视频片段给视频配上 AI 语音最终合成 MP4 成片。1.2 核心体验全流程覆盖7 步工作流在一个平台闭环完成可编辑可干预每一环节的 AI 产出都能人工修改、重生成、上下文联调模型可替换用户可在后台配置自己的大模型 API Key智谱、阿里、OpenAI 兼容等。二、技术选型2.1 后端技术用途说明FastAPIWeb 框架异步接口、自动 OpenAPI 文档MySQL主数据库用户、作品、角色、分镜、历史记录等Redis队列 缓存小说生成队列、任务进度SQLAlchemy裸 SQL 连接池数据访问用 pymysql DBUtils 做连接池python-jose / passlibJWT 密码加密用户鉴权python-multipart文件上传素材上传imageio-ffmpeg视频合成后端自带 ffmpeg 二进制无需系统安装edge-ttsAI 配音微软 Edge 神经语音免费可用2.2 前端技术用途Vue 3 Vite单页应用TypeScript类型安全Pinia状态管理Tailwind CSS 3.4原子化样式Sass全局主题变量Material Symbols图标系统2.3 部署技术用途Docker容器化Docker Compose四服务编排MySQL / Redis / Backend / FrontendNginx前端静态服务 反代/api、/static三、系统架构3.1 后端模块划分app/api路由层按业务模块拆分app/services业务逻辑层app/repositories数据访问层裸 SQLapp/providers外部 AI 服务抽象文本生成、文生图、视频、TTSapp/workers异步任务工作线程小说生成队列、导出守护进程。3.2 前端目录结构src/views页面src/components组件布局 UI 业务src/storesPinia 状态src/features按业务域拆分的状态与逻辑。四、核心功能实现4.1 小说生成步骤 1早期前端写死走了本地 mock生成的章节内容全是水稿同一段话重复 N 次。后来改成真实调用后端POST /api/novel/create后端用 Redis 队列排队worker 线程逐章调用智谱 GLM-4-Flash生成真实小说内容。关键修改点前端stores/novel.ts新增真实生成与轮询进度后端NovelCreateRequest的枚举与前端 6 个风格选项对齐prompt 中约束标题不再带第 X 章前缀避免章节名重复。4.2 角色管理步骤 2用智谱 GLM-4-Flash 从小说正文中抽取角色名、外貌、性格、声线等字段。抽取后人工可编辑保存到角色库。4.3 分镜设计步骤 3把小说章节按场景拆成若干 shot镜头。每个 shot 包含场景描述、台词、运镜、画面描述、时长。支持批量出图、批量出视频。4.4 图片生成步骤 4默认走阿里通义千问 qwen-image-2.0-pro候选智谱 CogView-3。根据 shot 的画面描述生成对应图片并回写到 shot 上。4.5 视频生成步骤 5默认走智谱 CogVideoX-Flash免费通道。把图片 prompt 送进视频模型生成短视频片段。这个环节是性能瓶颈单镜生成可能耗时 30s ~ 180s早期是同步 HTTP 阻塞后续已识别为需异步队列改造。4.6 配音剪辑步骤 6用edge-tts把台词转成 MP3按 shot 顺序拼接音频再与视频片段对齐合成。4.7 预览导出步骤 7用FFmpeg把音频、视频片段、转场合成为最终 MP4存放在/app/static/exports通过 Nginx/static路径对外访问。五、部署方案Docker Compose 全栈为了把项目搬到腾讯云服务器2C2G / 40G SSD / Ubuntu 24.04 / Docker 27.5.1我编写了一整套 Docker Compose 部署配置。5.1 生成的部署文件文件说明docker-compose.yml/compose.yaml四服务编排MySQL / Redis / backend / frontendbackend/Dockerfilepython:3.12-slim非 root 用户阿里云 PyPI 镜像front-end/Dockerfilenode:22-alpine 多阶段构建front-end/nginx.confnginx-main.confNginx 反代/api、/staticSPA 回退mysql-init/01-create-databases.sql自动创建ai_studio库.env.example部署变量模板docs/Docker Compose 部署教程.md完整操作教程5.2 资源限制服务器只有 2GB 内存Compose 里对每个服务做了mem_limit和cpus限制并加了 Redis 内存上限。2GB 机器上建议额外创建 2GB Swap否则同时构建前后端会 OOM。5.3 构建顺序同时构建前后端容易把内存吃满教程建议5.4 安全与凭证.env已加入.gitignore用户自管 API Key 用 Fernet 加密落库MySQL 端口只绑127.0.0.1公网只暴露 80/443。六、前端 iOS 风格重构最近一轮把前端从 Material Design 3 全面切换为iOS 原生设计语言但功能与页面结构完全不变。6.1 设计 Token 替换没有改 Tailwind 类的名字否则全站几十处视图要重写而是把 token 的值全部替换成 iOS 系统值主色#007AFFsystemBlue背景#F2F2F7systemGroupedBackground卡片#FFFFFF 圆角 16px / 20px字体-apple-system/SF Pro Text/Display阴影iOS 三级轻阴影毛玻璃backdrop-filter: blur(20px)bg-white/706.2 布局改造侧栏 → 底部 Tab Bar毛玻璃、图标 文字、选中 systemBlue、底部安全区顶栏 → iOS 大标题导航栏34px 大标题 滚动收缩为 17px inline卡片 → 分组列表/圆角卡片更轻量、留白更大。6.3 组件层改造了 5 个基础组件并新增 5 个 iOS 组件已有组件改造新增 iOS 组件BaseButtonGroupedListBaseCardListRowBaseModalIosSwitchBaseEmptyStateIosNavBarBaseSpinnerSegmentedControlPullToRefresh6.4 下拉刷新Pull-to-Refresh针对素材资源库视图接入了 iOS 风格下拉刷新阻尼 0.5、阈值 64px、顶部下拉触发、松手回弹。该组件为通用组件其它列表页直接包裹即可复用。七、遇到的问题与解决方案7.1 前端生成的是水稿内容重复现象小说正文生成把同一段话重复 N 遍。根因前端stores/novel.ts写死走了本地 mock且调用的后端接口不存在404 后回退 mock。解决前端改为真实调用POST /api/novel/create并轮询进度后端补齐枚举对齐与 prompt 约束。7.2 requirements.txt 依赖缺失现象本地能跑但 Docker 容器启动后报ModuleNotFoundError。根因原requirements.txt只列了 9 个包缺python-dotenv、cryptographyFernet 加密、DBUtils连接池、pydantic、edge-tts、pillow。解决补全依赖容器构建与运行全部通过。7.3 vite 8 / rolldown 实验版的 SFC 解析 bug现象本地npm run build报错main.css:114:16等但 CSS 和 SFC 结构完全合法。根因项目原用vite ^8rolldown 实验版解析含style的 Vue SFC 时会错乱地把 script 内容当 CSS 解析。解决把package.json中的 vite 降级到稳定版^5.4.10配套vitejs/plugin-vue ^5、vue-tsc ^2、typescript ^5.6容器内全新安装后构建正常。7.4 容器内权限问题现象后端容器用非 root 用户启动后应用无法创建/app/runtime目录。根因Dockerfile中/app目录仍属 root非 root 用户无写权限。解决Dockerfile 里chown -R app:app /app确保运行时目录、静态目录、缓存目录均可写。7.5 导出 URL 与静态资源路径现象配音/成片文件能生成但前端播放时 URL 404。根因后端用EXPORT_PUBLIC_BASE_URL拼接成片 URL需要与 Nginx 的/static/反代路径一致。解决.env中设EXPORT_PUBLIC_BASE_URLhttp://114.132.239.20Nginx 把/static反代到后端后端静态目录挂持久卷。八、项目现状与下一步8.1 已就绪✅ 小说、角色、分镜、图片、视频、配音、导出 7 步主链路跑通✅ 后端 Docker 化 依赖补全✅ 前端 iOS 设计语言全面替换 下拉刷新组件✅ Docker Compose 全栈部署配置与教程8.2 仍需优化视频生成异步化当前单镜出视频仍是同步 HTTP需改成任务队列 持久化作业表解决超时、并发、断点续跑。续写 / 单章重生成后端暂无对应接口仍走前端 mock。图片出图参数尺寸、数量、风格强度等 UI 已画但后端未真正读取。HTTPS 域名目前用公网 IP后续可配 Nginx SSL 证书。九、总结这个项目让我完整走了一次AI 产品从业务设计到部署上线的链路。最深的体会是AI 项目难的不是调模型而是把模型的不确定性封装成稳定的工程流程。小说生成、视频生成、TTS、FFmpeg 合成每一个环节都可能因为 API 超时、格式不兼容、资源不足而卡住真正要做的是队列、重试、状态机、资源隔离。前端方面不改类名、只换 token 值是我做的最正确的设计决策它让 iOS 重构在几天内覆盖全站而不是逐页重写。这也说明好的设计系统Design System是重构的前提。如果你也在做类似的 AI 内容生成平台欢迎在评论区交流模型选型、队列设计、前端组件化、Docker 部署都可以聊。

相关新闻

孩子指甲总长白点要不要考虑给他补锌?2026年8款在园娃横评榜单

孩子指甲总长白点要不要考虑给他补锌?2026年8款在园娃横评榜单

一、指甲上的白点,到底是缺锌还是吓自己 前阵子给娃剪指甲,发现他好几个指甲盖上有小白点,心里咯噔一下——是不是缺锌?群里一问,十个人八个都说"补点锌吧"。但我查了下才发现,指甲白点成因挺杂的…

2026/10/10 2:45:04 阅读更多 →
CSRF攻击原理与防御实战指南

CSRF攻击原理与防御实战指南

1. CSRF攻击的本质与运作机制跨站请求伪造(CSRF)就像有人偷偷拿着你的家门钥匙。假设你在银行网站保持登录状态时,访问了恶意网站,这个网站可以悄悄用你的身份发起转账请求。因为浏览器会自动带上cookie等凭证,服务器无…

2026/10/12 5:08:33 阅读更多 →
机器学习中的范数:从L1、L2到L2,1,理解正则化与稀疏性的核心原理

机器学习中的范数:从L1、L2到L2,1,理解正则化与稀疏性的核心原理

1. 从“距离”到“规则”:范数到底是什么?刚入行做机器学习或者优化相关项目时,你肯定被各种“范数”绕晕过。模型损失函数里加个L1、L2正则项,论文里动不动就提矩阵的F范数、核范数,还有像L2,1这种看起来像“混血”的…

2026/10/13 17:31:59 阅读更多 →

最新新闻

TS流PCAP分析实战:从网络抓包定位音视频卡顿根源

TS流PCAP分析实战:从网络抓包定位音视频卡顿根源

1. 项目概述:为什么你手里的TS流PCAP文件比想象中更有价值“mpeg ts pcap 文件分析”——这串词看起来像一串技术黑话,但背后藏着大量真实业务场景里被忽视的关键信息。我接触过不少网络运维、音视频开发、IoT设备调试甚至安全分析一线的同行&#xff0c…

2026/10/14 6:05:23 阅读更多 →
C语言链表排序实战:插入排序与快速排序的指针操作详解

C语言链表排序实战:插入排序与快速排序的指针操作详解

简介:链表排序是C语言学习者绕不开的实践主题,这份源码压缩包面向正在掌握指针操作、动态内存分配和基础算法的初学者,帮助理解链表节点结构与排序算法的结合方式,也适合作为数据结构课程实验后的巩固练习。包体十分精简&#xff…

2026/10/14 6:05:23 阅读更多 →
从流量焦虑到AI获客:GEO优化师2026年实战复盘

从流量焦虑到AI获客:GEO优化师2026年实战复盘

1. 从流量焦虑到AI获客:一个优化师的2026年实战复盘过去这一年,我几乎每周都要跟不同行业的企业负责人聊同一个话题:钱花得越来越多,线索却越来越水。SEM账户里点击单价翻了一倍,信息流广告的转化率跌到千分之三以下&a…

2026/10/14 6:05:23 阅读更多 →
React Native鸿蒙跨平台固定表头长列表表格:双区布局与性能优化

React Native鸿蒙跨平台固定表头长列表表格:双区布局与性能优化

1. 一个被数据压垮的真实场景:长列表表格的"阅读灾难"上个月我接手了一个移动端报表类项目的数据展示模块,技术栈是 React Native,目标是跑通鸿蒙平台。先说结论:这个模块在改造之前,几乎处于"能看但没…

2026/10/14 6:05:23 阅读更多 →
Preliminary规格书阅读指南:锁参数、避坑、做版本跟踪

Preliminary规格书阅读指南:锁参数、避坑、做版本跟踪

简介:《PLA5506-940》是飞利浦光电提供的一份初步机密级产品规格书,版本V0.8,文档编号992215900750,适合光电与激光雷达、光通信、精密传感等领域的硬件工程师、选型评估人员和采购团队参考。该PDF围绕PLA5506-940型VCSEL阵列展开…

2026/10/14 6:05:23 阅读更多 →
一条富碱性多肽的进阶之路:序列解析、合成纯化与核定位验证

一条富碱性多肽的进阶之路:序列解析、合成纯化与核定位验证

1. 从一条氨基酸序列反推蛋白身份:这条肽的“户口本”是这样查的拿到 PDGF A-Chain (194-211) 这个编号,加上后面那一串 GRPREGSKKRKRKRLKPT,我的第一反应不是急着做实验,而是先把它当成一个“嫌疑人”来审:它到底来自…

2026/10/14 6:04:23 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →