# CsAiVideo **Repository Path**: lesenro/CsAiVideo ## Basic Information - **Project Name**: CsAiVideo - **Description**: No description available - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-06 - **Last Updated**: 2026-07-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🎬 CsAiVideo — 一个人就是一支短剧团队 > 输入一句话,AI 从剧本写到成片。全本地运行,不依赖任何云服务。 > > Vue3 + Vite + Element Plus / C# .NET 8 WebAPI / SQLite / 一键启动 --- ## 别再让你的创意停留在脑子里 微短剧市场日新月异,但传统制作周期长、成本高、团队难凑。你有一个好故事,却卡在第一步。 **CsAiVideo 让你跳过所有中间环节。** 输入一句主题或一段小说原文,AI 自动完成剧本创作、分镜规划、提示词优化、图片生成、视频生成、配音合成、最终剪辑——从灵感到成片,全流程自动化。 > 🎯 目标用户:短剧编剧、短视频创作者、小说作者、自媒体运营者、AI 爱好者 --- ## 你凭什么相信它? | 你的痛点 | CsAiVideo 的解法 | |----------|------------------| | "剧情像流水账" | 两阶段生成:先规划情绪节拍链,再逐镜详化,情节有起伏 | | "角色长得不一样" | 角色指纹强制注入,同一角色跨分镜保持服饰/发色/气质一致 | | "表情僵硬像个木头" | 提示词层强制执行面部微表情变化(嘴角/眼角/眉头/瞳孔) | | "人不知道在做什么" | 每镜必须写具体肢体动作:手在哪、往哪走、重心怎么移 | | "多人同框总出戏" | MSR 多参考图生视频:场景为背景,角色/道具按顺序填充,自动断开无图槽 | | "参数太多不会调" | 帧数/steps/strength/宽高一键可调,在线编辑即时生效 | | "数据传上网不放心" | **全部本地运行**,SQLite 存数据,ComfyUI 本地出素材,无任何上传 | | "配置太复杂搞不定" | 双击 `start.bat` 一键启动,首次配置仅需一个 API Key | --- ## 你能用它做什么? - 输入一句「古装悬疑:京城连续失踪案,大理寺少卿发现凶手是已故三年的白月光」→ AI 生成完整剧本 - 把一篇 5000 字小说 → AI 拆成分集分镜剧本 + 角色场景道具关联 - 一键优化所有分镜的图片/视频提示词至电影级品质 - 批量调用 ComfyUI 出图、生视频、配音(支持 MOCK 模式无 GPU 调试) - 一键合成完整剧集(含字幕),可直接发布 全程不离开你的电脑。 --- ## 特点优势 | 特点 | 说明 | |------|------| | **全链路本地化** | 从剧本到成品视频,数据与生成全在本地,无隐私泄露风险 | | **两阶段剧本生成** | Stage 1 节拍表规划情绪链 → Stage 2 逐镜详化,解决剧情流水账 | | **电影级规则库** | 27 条编剧规则 + 11 维提示词结构,产出质量接近专业水准 | | **角色/场景一致性** | 指纹强制注入,同一角色跨分镜保持服饰/发色/气质一致 | | **微表情微动作** | 提示词层强制面部肌肉运动 + 肢体动作,解决"面无表情/不知在做什么" | | **MSR 多参考生视频** | LiconMSR + IC-LoRA Guide,场景→背景 + 角色/道具按顺序填充,无图槽自动断开 | | **角色定妆照** | 一次生成 2000×1000 四格拼图(正面/全身正面/全身侧面/全身背面),纯白背景,天然保证四视图一致性 | | **跨分集引用** | 同项目其他分集的资源图片可直接引用,无需重复生成 | | **AI 生成提示词** | 资源编辑对话框中一键调用 LLM 生成角色/场景/道具提示词 | | **资源编辑** | 统一的 ResourceEditDialog 组件,支持名称/描述/提示词/音色编辑 | | **i2i 精修** | 上传参考图 → ComfyUI 图生图 → 自动写回资源(denoise 可调) | | **批量生成** | 一键补全所有缺省图片/视频,跳过已有内容的项,支持 MOCK 模式 | | **模板全自定义** | 13 个 LLM 提示词模板 + 5 个工作流 JSON 均可在线编辑 | | **AI 配音** | TTS 工作流,分镜台词自动转为语音 | | **自动字幕合成** | FFmpeg 智能拼接 + drawtext 字幕,无 FFmpeg 自动降级 | --- ## 目录结构 ``` CsAiVideo/ ├── backend/ .NET 8 WebAPI │ ├── Controllers/ API 控制器(15 个) │ ├── Data/ 数据库、初始化种子、工作流模板 │ │ ├── workflows/ ComfyUI 工作流 JSON 文件 │ │ └── DbInitializer.cs 自动建表/迁移/种子数据 │ ├── Services/ 业务服务(15 个) │ ├── Helpers/ 辅助工具 │ ├── Program.cs │ ├── appsettings.json │ └── run-backend.bat ├── frontend/ Vue3 + Vite + Element Plus │ ├── src/ │ │ ├── api/ axios HTTP 封装 │ │ ├── components/ 可复用组件(ResourceEditDialog 等) │ │ ├── layouts/ 布局组件 │ │ ├── router/ 路由(Hash 模式) │ │ ├── views/ 页面(10 个) │ │ └── main.js │ ├── package.json │ ├── vite.config.js │ └── run-frontend.bat ├── backend/data/ 运行期数据(数据库、输出、日志) ├── start.bat 一键启动 └── stop.bat 一键停止 ``` --- ## 快速开始 ### 环境要求 | 依赖 | 版本 | 说明 | |------|------|------| | Node.js | >= 18 | 前端运行环境 | | .NET SDK | 8.0 | 后端运行环境 | | ffmpeg | 可选 | 视频合成(无则自动降级为文本占位) | | ComfyUI | 可选 | 图片/视频生成(无则使用 MOCK 模式) | ### 初始化步骤 ```bash # 1. 安装前端依赖 cd frontend npm install # 2. 确认 .NET 8 SDK dotnet --version # 应输出 8.x # 3. 双击 start.bat(或命令行执行) cd .. start.bat ``` 首次启动自动完成: 1. 创建 SQLite 数据库 `backend/data/csaivideo.db` 2. 建表 + 写入种子数据(故事类型 / 画风 / 工作流分类 / 系统配置) 3. 写入 13 个 LLM 提示词模板(代码即模板,已存在则 UPDATE) 4. 执行幂等迁移(新增列自动适配) ### 使用流程 ``` 创建项目 → 填写主题/创意 → AI 生成剧本 → 编辑资源 → 编辑分镜 → AI 优化提示词 → 生成素材 → 合成视频 ``` **详细步骤:** 1. **系统配置** — 打开 `http://127.0.0.1:5173` → 系统配置,填写以下必填项: - LLM API Key(支持 OpenAI 兼容接口,如 DeepSeek / DashScope / Azure OpenAI) - LLM 接口地址(默认 `https://dashscope.aliyuncs.com/compatible-mode/v1`) - ComfyUI 地址(如 `http://127.0.0.1:8188`,用到素材生成时填写) - FFmpeg 路径(合成视频用,可选) 2. **创建项目** — 项目列表 → 新建 - 填写项目名称、画风(如"古风/赛博朋克/水墨") - 设置输出分辨率(宽/高) 3. **编写剧本** — 进入创作工作台 - **一键生成**:填写主题或小说原文 → 点击「AI 一键生成剧本」 - 系统先调用节拍表(Stage 1)规划情绪链 → 再逐镜详化(Stage 2) - 生成后每个分镜自动标注:节拍/情绪弧线/潜台词/运镜/声调 4. **编辑资源** — 分集管理 / 创作工作台左侧面板 - 添加角色(填写角色描述,用于一致性锚点) - 生成角色定妆照(一次生成四格拼图,确保跨分镜一致) - 添加场景、道具 - 通过编辑按钮修改资源信息,AI 辅助生成提示词 - 跨分集引用:可引用同项目其他分集已生成的资源图片 5. **生成素材** — 创作工作台逐镜操作 - 每行支持「前插入」按钮,在指定分镜前插入新分镜并自动偏移序号 - **AI 优化提示词**:一键优化图片/视频提示词 - **生图**:单帧图 / 首帧+尾帧双图 - **i2i 微调**:上传参考图精修(denoise 值可调) - **生视频**:支持自动/MSR多参考/单图/首尾帧四种模式 - auto:有场景参考图时自动走 MSR,否则按 videoMode 回退 - MSR:场景为背景 + 角色/道具按顺序填充 4 个主体位 - **配音**:有台词的分镜自动 TTS - **批量生成**:一键补全所有缺省素材 6. **合成视频** — 创作工作台 → 合成剧集 - 自动拼接分镜素材为完整剧集 - 支持字幕渲染(drawtext) ### 端口说明 | 端口 | 用途 | |------|------| | `http://127.0.0.1:5173` | 前端界面 | | `http://127.0.0.1:5180` | 后端 API | | `http://127.0.0.1:5180/swagger` | API 文档(调试用) | --- ## 功能总览 ### 数据模型(4 级层级) ``` 项目 (Projects) → 分集 (Episodes) → 角色/场景/道具 → 分镜 (Shots) └─ 资源关联(ShotResources) ``` **分镜字段:** - 画面描述、台词、运镜、声调、时长、视频模式(auto/msr/single/firstlast) - AI 提示词:图片 / 视频 / 首帧 / 尾帧(独立优化) - **导演标注三件套**:情绪节拍(8 选 1)/ 情绪弧线(起始→终止)/ 潜台词 - **字幕文案**(subtitleText):纯字幕文本,去掉角色名前缀,可直接导入剪辑软件字幕轨道 ### AI 剧本生成 从主题词或小说原文一键生成完整剧本: - **剧本模板** — 27 条电影级规则(人物塑造/展示不告知/台词冰山/戏剧张力/感官锚点/氛围营造) - **节拍表(Stage 1)** — 先规划情绪链(8 种节拍:钩子/压抑/酝酿/临界/爆发/转折/余波/留白) - **分镜详化(Stage 2)** — 基于节拍表生成每个分镜,强制微动作 + 微表情 + 角色指纹 - **导演标注** — 每个分镜自动标注情绪节拍 / 情绪弧线 / 潜台词 - **自动资源关联** — 分镜自动匹配出场角色/场景/道具 ### AI 提示词优化 针对每个分镜独立优化提示词: - **图片提示词** — 11 维结构:角色锚点/微动作/微表情/场景锚点/氛围/构图/电影光影/镜头语言/色彩调色板 - **视频提示词(单图)** — 三段式:起始状态 + 运动过程 + 结束状态,强制面部微表情 + 肢体动作 - **视频提示词(首尾帧)** — 微叙事结构描述首→末帧过渡,确保角色/场景/画风一致 - **视频提示词(MSR)** — 连贯场景描述,包含背景/角色/道具,强调全部主体持续可见 - **局部重写** — 保留场景/角色的前提下重写单个分镜 ### 素材生成 通过 ComfyUI 工作流生成全部素材: | 类型 | 方式 | 说明 | |------|------|------| | **图片** | Text-to-Image | 单帧 + 首尾帧双图 | | **图片** | Image-to-Image | 参考图精修(denoise 0~1 可调) | | **视频** | Image-to-Video | 单图生视频(steps/strength/帧数/分辨率可调) | | **视频** | MSR 多参考 | 场景为背景 + 角色/道具按顺序填充(LiconMSR + IC-LoRA) | | **视频** | 首尾帧插值 | 首帧→尾帧过渡视频(参数同上) | | **音频** | TTS | 台词转语音 | | **资源图** | Text-to-Image | 角色定妆照 / 场景 / 道具参考图 | | **批量生成** | 批量 | 一键生成全部分镜缺省图片/视频/资源 | **角色定妆照:** 一次生成 2000×1000 横向四格拼图(正面特写 / 全身正面 / 全身侧面 / 全身背面),纯白背景、无道具无场景,天然保证四个角度一致。 ### 视频合成 基于 FFmpeg,将分镜素材合成为完整剧集: - 智能拼接:视频片段 > 图片+音频循环 > 黑底占位逐级降级 - 自动字幕:台词通过 drawtext 渲染为字幕 - MOCK 模式:无 FFmpeg 时生成文本占位文件 - Mock 开关可在「系统配置 → FFmpeg」中切换,带测试按钮验证 ffmpeg 连通性 ### 系统管理 | 页面 | 功能 | |------|------| | 项目列表 | 创建/导入/复制/删除项目 | | 项目设置 | 编辑项目信息与参数 | | 分集管理 | 管理分集及其角色/场景/道具 | | **创作工作台** | 核心编辑区:分镜编辑、AI 生成、素材生成、合成 | | 提示词模板 | 管理所有 LLM 提示词模板(13 个,可自定义) | | 工作流管理 | 管理 ComfyUI 工作流配置(含可视化编辑器) | | 系统配置 | LLM / ComfyUI / FFmpeg 等全局配置 | | 字典管理 | 故事类型/画风等下拉选项 | | 系统日志 | 操作审计与错误排查 | --- ## 工作流管理 预置 6 种工作流,对应不同生成任务: | 分类码 | 名称 | 用途 | |--------|------|------| | `t2i` | 文生图 | 从提示词生成图片(Z-Image Turbo FP8) | | `i2i` | 图生图 | 基于参考图生成新图(denoise < 1) | | `i2v` | 单图生视频 | 一张图生成视频(LTX-2.3 22B) | | `msr` | MSR 多参考生视频 | 场景+多角色/道具参考图生成视频(LiconMSR + IC-LoRA Guide) | | `fl2v` | 首尾帧生视频 | 首帧+尾帧生成过渡视频 | | `tts` | 音频配音 | 台词文本转为语音 | 工作流 JSON 存储在数据库 `WorkflowInfo.WorkflowContent` 字段中,支持在线编辑。 **占位符说明:** 工作流 JSON 支持以下占位符,系统在提交前自动替换: | 占位符 | 适用 | 说明 | |--------|------|------| | `--prompt--` | t2i / i2i / i2v / fl2v / msr | 正向提示词 | | `--seed--` | 全部 | 随机种子 | | `--width--` / `--height--` | i2v / fl2v / msr | 视频分辨率 | | `--image1--` / `--image_filename--` | i2v / i2i | 输入图片文件名 | | `--image_background--` / `--image_input[1-4]--` | msr | MSR 参考图槽位 | | `--denoise--` | i2i | 重绘幅度(0~1) | | `--steps--` | i2v / fl2v / msr | 采样步数 | | `--strength--` | i2v / fl2v | 视频生成强度 | | `--frame_count--` | i2v / fl2v / msr | 视频总帧数(= 秒数 × 24) | | `--frame_rate--` | i2v / fl2v / msr | 帧率(默认 24fps) | --- ## 提示词模板 系统内置 13 个 LLM 提示词模板,涵盖从剧本生成到素材优化的全流程: | 模板 Key | 用途 | |----------|------| | `llm.script` | 剧本生成(主题/小说 → 分集剧本) | | `llm.beat` | 节拍表生成(Stage 1 编剧) | | `llm.shot` | 分镜详化(Stage 2,基于节拍表) | | `llm.annotation` | 自动标注资源关联 | | `llm.optimize.image` | 图片提示词优化 | | `llm.optimize.video.single` | 单图生视频提示词优化 | | `llm.optimize.video.firstlast` | 首尾帧视频提示词优化 | | `llm.optimize.audio.dialogue` | 对白配音参数推荐 | | `llm.optimize.audio.narration` | 旁白配音参数推荐 | | `llm.optimize.audio.sfx` | 音效参数推荐 | | `llm.params.image` | 图片生成参数推荐 | | `llm.params.video` | 视频生成参数推荐 | | `llm.params.tts` | TTS 参数推荐 | 模板可在「提示词模板」页面在线编辑,重启不丢失。 --- ## 技术栈 | 层 | 技术 | |----|------| | 前端 | Vue 3 (Composition API) + Vite + Element Plus + Vue Router | | 后端 | C# .NET 8, ASP.NET Core WebAPI | | 数据库 | SQLite(文件 `backend/data/csaivideo.db`,自动创建与迁移) | | LLM 接口 | OpenAI 兼容 API(可切换模型/端点) | | 图片/视频生成 | ComfyUI(本地部署,支持 MOCK 离线模式) | | 视频合成 | FFmpeg(可选,无则自动降级) | --- ## 路由 | 路径 | 页面 | |------|------| | `/project/list` | 项目列表 | | `/project/setting/:pid` | 项目设置 | | `/episode/manage/:pid` | 分集管理 | | `/workbench/:pid` | 创作工作台(核心) | | `/sys/dict` | 字典管理 | | `/sys/config` | 系统配置 | | `/sys/log` | 系统日志 | | `/workflow/manage` | 工作流管理 | | `/workflow/editor/:id` | 工作流编辑器 | | `/prompt/template` | 提示词模板管理 | --- ## 种子数据与数据库 `backend/data/csaivideo.db` 在 `.gitignore` 中,首次启动自动完成全部初始化: 1. **建表**(`CREATE TABLE IF NOT EXISTS`):Projects / Episodes / Shots / Characters / Scenes / Props / ShotResources / WorkflowInfo / SysDict / SysConfig / PromptTemplate / SysLog 2. **种子字典**:12 种故事类型 / 9 种画风 / 6 种工作流分类(写入 SysDict) 3. **工作流分类迁移**:旧 `WorkflowCategory` 表 → SysDict(DictType='WorkflowCategory') 4. **系统配置**:LLM / ComfyUI / FFmpeg 默认值 5. **提示词模板**:写入/更新 13 个模板(代码即模板,已存在则 UPDATE 覆盖) 6. **幂等迁移**:Shots 表新增列(Beat / EmotionArc / Subtext / SubtitleText)、ShotResources 表、ResourceImages 等 换电脑时只需 `git pull` + 重启,DB 自动同步到最新结构。 ### 项目导入导出 项目支持导出为 JSON 文件(含完整的分集/资源/分镜数据),也可将导出的 JSON 重新导入。 JSON 格式说明详见 [`docs/export-schema.md`](docs/export-schema.md),方便第三方软件接入。