1184 lines
24 KiB
Markdown
1184 lines
24 KiB
Markdown
这样生成的小说,适合专ai生成短剧吗?后续我是打算 小说/小说语音听版/ ai短剧同步 的,这个设计流程满足吗?我已经好ai生成视频的流水线,在测试中,现在是想接入小说流水线,你是专业的架构师,你看看上面的设计是否满足,是否有需要优化的?是否需要我提共我目前代码的设计进度
|
||
|
||
结论先说:
|
||
|
||
**上面的小说流水线可以作为基础,但还不完全满足“小说 / 听书 / AI短剧同步生产”。**
|
||
|
||
它适合自动写小说,但如果你后续要直接接入 AI 视频流水线,必须多加一层:
|
||
|
||
> **小说内容资产化 / 剧本化 / 镜头化 / 角色资产一致性管理**
|
||
|
||
否则会出现一个问题:
|
||
|
||
小说写得还可以,但改成短剧时,要重新拆人物、拆场景、拆对白、拆分镜、拆提示词,自动化效率会下降,而且角色一致性容易乱。
|
||
|
||
你真正要做的不是单纯“AI 写小说系统”,而是:
|
||
|
||
> **AI IP 生产流水线:小说正文 → 听书稿 → 短剧剧本 → 分镜脚本 → 视频提示词 → 配音稿 → 字幕 → 成片任务**
|
||
|
||
---
|
||
|
||
# 一、原设计满足什么,不满足什么?
|
||
|
||
## 已经满足的部分
|
||
|
||
之前的设计已经能解决:
|
||
|
||
1. 自动生成小说圣经;
|
||
2. 自动生成世界观、人设、卷纲、章纲;
|
||
3. 自动写正文;
|
||
4. 自动质检;
|
||
5. 自动更新记忆;
|
||
6. 自动管理伏笔;
|
||
7. 防止人物设定乱;
|
||
8. 防止长篇上下文断裂;
|
||
9. 支持后台任务队列;
|
||
10. 支持章节版本管理。
|
||
|
||
这些是**小说生产的基础能力**。
|
||
|
||
---
|
||
|
||
## 还不完全满足的部分
|
||
|
||
但它还没有专门为短剧和听书设计这些模块:
|
||
|
||
1. **角色视觉资产库**;
|
||
2. **角色声音资产库**;
|
||
3. **场景资产库**;
|
||
4. **道具资产库**;
|
||
5. **小说转剧本 Agent**;
|
||
6. **剧本转分镜 Agent**;
|
||
7. **分镜转 AI 视频提示词 Agent**;
|
||
8. **旁白 / 听书稿 Agent**;
|
||
9. **配音台词拆分 Agent**;
|
||
10. **字幕生成 Agent**;
|
||
11. **视频时长控制 Agent**;
|
||
12. **镜头连续性检查 Agent**;
|
||
13. **人物外貌一致性检查 Agent**;
|
||
14. **短剧节奏评分 Agent**;
|
||
15. **视频生产状态回传接口**。
|
||
|
||
所以,现在应该升级成三条并行生产线。
|
||
|
||
---
|
||
|
||
# 二、最终应该设计成“三轨同步流水线”
|
||
|
||
你的目标应该是:
|
||
|
||
```text
|
||
小说主线生产
|
||
↓
|
||
章节结构化
|
||
↓
|
||
同时分发到三条线:
|
||
|
||
A. 小说正文线
|
||
B. 听书音频线
|
||
C. AI短剧视频线
|
||
```
|
||
|
||
整体架构:
|
||
|
||
```text
|
||
项目 Brief
|
||
↓
|
||
小说圣经 / IP 圣经
|
||
↓
|
||
人物资产库 / 场景资产库 / 世界观资产库
|
||
↓
|
||
全书结构 / 分卷结构 / 章节结构
|
||
↓
|
||
章节生产
|
||
↓
|
||
章节结构化解析
|
||
↓───────────────↓───────────────↓
|
||
小说正文成稿 听书稿生成 短剧剧本生成
|
||
↓ ↓ ↓
|
||
润色质检 旁白/对白拆分 分镜脚本
|
||
↓ ↓ ↓
|
||
发布小说 TTS配音 AI视频提示词
|
||
↓ ↓
|
||
音频成品 视频任务队列
|
||
↓
|
||
成片 / 字幕 / 封面
|
||
```
|
||
|
||
这里的关键是:
|
||
|
||
**小说不是最后再改剧本,而是在写小说时就保留“可改编结构”。**
|
||
|
||
---
|
||
|
||
# 三、小说圣经要升级成 IP 圣经
|
||
|
||
原来的小说圣经只服务小说。
|
||
现在要改成 **IP Bible**。
|
||
|
||
它不只是记录人物和剧情,还要记录所有可用于视频和音频生成的资产。
|
||
|
||
## IP 圣经必须包含
|
||
|
||
### 1. 故事核心
|
||
|
||
小说名;
|
||
题材;
|
||
核心主题;
|
||
一句话卖点;
|
||
目标读者;
|
||
目标平台;
|
||
短剧形态;
|
||
听书形态。
|
||
|
||
---
|
||
|
||
### 2. 人物文字档案
|
||
|
||
姓名;
|
||
年龄;
|
||
身份;
|
||
性格;
|
||
欲望;
|
||
秘密;
|
||
人物弧光;
|
||
人物关系;
|
||
禁止改动项。
|
||
|
||
---
|
||
|
||
### 3. 人物视觉档案
|
||
|
||
这是短剧必需的。
|
||
|
||
包括:
|
||
|
||
角色年龄段;
|
||
脸型;
|
||
五官特征;
|
||
发型;
|
||
身高体态;
|
||
服装风格;
|
||
常用服装;
|
||
标志性道具;
|
||
表情习惯;
|
||
动作习惯;
|
||
色彩风格;
|
||
视频生成固定提示词;
|
||
负面提示词。
|
||
|
||
例如:
|
||
|
||
```json
|
||
{
|
||
"character_name": "岑青",
|
||
"visual_identity": {
|
||
"age": "31",
|
||
"face": "清瘦、冷白皮、短发、眼神冷静",
|
||
"body": "身形偏瘦,肩背挺直",
|
||
"clothing": "素色衬衫、深色外套、低饱和色",
|
||
"expression": "少笑,观察时眼神专注",
|
||
"signature_props": ["平板电脑", "黑色电脑包", "U盘"],
|
||
"video_prompt_base": "31-year-old Chinese woman, short black hair, slim face, calm restrained expression, wearing plain shirt and dark coat, realistic cinematic style",
|
||
"negative_prompt": "do not change face, do not change hairstyle, no exaggerated makeup, no cartoon style"
|
||
}
|
||
}
|
||
```
|
||
|
||
这个是保证 AI 视频角色一致性的核心。
|
||
|
||
---
|
||
|
||
### 4. 人物声音档案
|
||
|
||
听书和短剧配音都需要。
|
||
|
||
包括:
|
||
|
||
声线年龄;
|
||
音色;
|
||
语速;
|
||
语气;
|
||
情绪表达方式;
|
||
口头禅;
|
||
对白风格;
|
||
旁白风格;
|
||
TTS voice_id;
|
||
配音模型参数。
|
||
|
||
例如:
|
||
|
||
```json
|
||
{
|
||
"character_name": "陈淑蘅",
|
||
"voice_profile": {
|
||
"voice_age": "60+",
|
||
"tone": "沙哑、低沉、慢",
|
||
"speed": "偏慢",
|
||
"emotion_style": "克制,情绪不外放",
|
||
"dialogue_style": "短句多,不解释,不讨好",
|
||
"tts_voice_id": "voice_old_female_01"
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 5. 场景资产库
|
||
|
||
短剧生成不能每章临时写场景,否则画面会乱。
|
||
|
||
要提前建立:
|
||
|
||
地点名;
|
||
场景类型;
|
||
空间结构;
|
||
光线;
|
||
色调;
|
||
核心道具;
|
||
固定镜头风格;
|
||
可复用视频提示词。
|
||
|
||
例如:
|
||
|
||
```json
|
||
{
|
||
"scene_name": "海风大厦楼梯间",
|
||
"type": "老旧居民楼楼梯间",
|
||
"visual_style": "潮湿、昏暗、墙皮脱落、灯光冷白闪烁",
|
||
"color_palette": "灰蓝、旧白、暗黄",
|
||
"props": ["楼梯扶手", "旧门牌", "消防栓", "灰尘", "门禁卡"],
|
||
"prompt_base": "old residential building stairwell, damp walls, peeling paint, flickering cold fluorescent light, realistic cinematic, low saturation"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 6. 道具资产库
|
||
|
||
比如:
|
||
|
||
灰蓝外套;
|
||
门禁卡;
|
||
旧签到簿;
|
||
手绘本;
|
||
保温杯;
|
||
清洁车;
|
||
投影仪。
|
||
|
||
每个道具都要固定视觉描述。
|
||
|
||
---
|
||
|
||
### 7. 改编规则
|
||
|
||
每一章写小说时,就要遵守:
|
||
|
||
每章至少有 2–4 个可视频化场景;
|
||
每章至少有一个强视觉钩子;
|
||
每章对白不能全是内心独白;
|
||
每章结尾要能改成短剧悬念;
|
||
关键动作要明确;
|
||
场景不要无限换;
|
||
重要人物出场要带固定视觉特征。
|
||
|
||
---
|
||
|
||
# 四、章节生产也要升级
|
||
|
||
原来的章节表只保存:
|
||
|
||
章节卡;
|
||
初稿;
|
||
润色稿;
|
||
终稿;
|
||
摘要;
|
||
评分。
|
||
|
||
现在要增加:
|
||
|
||
1. 小说正文;
|
||
2. 听书稿;
|
||
3. 短剧剧本;
|
||
4. 分镜脚本;
|
||
5. 视频提示词;
|
||
6. 配音稿;
|
||
7. 字幕稿;
|
||
8. 镜头资产引用;
|
||
9. 角色资产引用;
|
||
10. 场景资产引用。
|
||
|
||
也就是说,每章不是一个文本,而是一个内容包。
|
||
|
||
---
|
||
|
||
# 五、章节内容包结构
|
||
|
||
建议每一章生成后,自动解析成这个结构:
|
||
|
||
```json
|
||
{
|
||
"chapter_no": 1,
|
||
"title": "查无此人",
|
||
"novel_text": "",
|
||
"chapter_summary": "",
|
||
"adaptation_package": {
|
||
"audio_script": {},
|
||
"short_drama_script": {},
|
||
"shot_list": [],
|
||
"video_prompts": [],
|
||
"subtitle_segments": [],
|
||
"character_refs": [],
|
||
"scene_refs": [],
|
||
"prop_refs": []
|
||
},
|
||
"quality": {
|
||
"novel_score": 88,
|
||
"audio_score": 86,
|
||
"video_adaptation_score": 91
|
||
}
|
||
}
|
||
```
|
||
|
||
这个设计非常关键。
|
||
|
||
以后你要发布小说、生成听书、生成短剧,都从同一章内容包里面拿。
|
||
|
||
---
|
||
|
||
# 六、Agent 需要增加哪些?
|
||
|
||
之前是 12 个 Agent。
|
||
现在建议升级成 18 个 Agent。
|
||
|
||
## 小说主生产 Agent
|
||
|
||
1. 选题分析 Agent
|
||
2. IP 圣经 Agent
|
||
3. 人物资产 Agent
|
||
4. 场景资产 Agent
|
||
5. 全书结构 Agent
|
||
6. 分卷细纲 Agent
|
||
7. 章节卡 Agent
|
||
8. 小说正文 Agent
|
||
9. 小说润色 Agent
|
||
10. 小说质检 Agent
|
||
11. 记忆更新 Agent
|
||
|
||
---
|
||
|
||
## 听书生产 Agent
|
||
|
||
12. 听书改写 Agent
|
||
把小说正文改成适合听的版本。
|
||
|
||
重点处理:
|
||
|
||
长句改短句;
|
||
复杂描写改清晰;
|
||
心理描写保留;
|
||
动作逻辑更顺;
|
||
章节开头增加听觉抓力;
|
||
章节结尾保留悬念。
|
||
|
||
---
|
||
|
||
13. 配音拆分 Agent
|
||
输出:
|
||
|
||
旁白;
|
||
角色对白;
|
||
情绪标签;
|
||
停顿;
|
||
语速;
|
||
音色;
|
||
BGM 建议;
|
||
音效建议。
|
||
|
||
例如:
|
||
|
||
```json
|
||
{
|
||
"segments": [
|
||
{
|
||
"type": "narration",
|
||
"text": "岑青第一次看见那件外套时,外套已经没有颜色了。",
|
||
"voice_id": "narrator_female_calm",
|
||
"emotion": "calm_somber",
|
||
"speed": "medium_slow",
|
||
"sfx": "distant_rain"
|
||
},
|
||
{
|
||
"type": "dialogue",
|
||
"character": "裴让",
|
||
"text": "这是她的外套。幸存者说,灰蓝色。",
|
||
"voice_id": "male_low_calm",
|
||
"emotion": "restrained",
|
||
"speed": "medium"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 短剧生产 Agent
|
||
|
||
14. 小说转短剧 Agent
|
||
把章节改成 3–5 分钟短剧剧本。
|
||
|
||
输出:
|
||
|
||
场次;
|
||
地点;
|
||
人物;
|
||
动作;
|
||
对白;
|
||
镜头提示;
|
||
本集钩子。
|
||
|
||
---
|
||
|
||
15. 分镜 Agent
|
||
把剧本拆成镜头。
|
||
|
||
输出:
|
||
|
||
镜头编号;
|
||
时长;
|
||
景别;
|
||
运镜;
|
||
角色;
|
||
动作;
|
||
场景;
|
||
道具;
|
||
情绪;
|
||
画面提示。
|
||
|
||
---
|
||
|
||
16. 视频提示词 Agent
|
||
把分镜变成 AI 视频提示词。
|
||
|
||
重点控制:
|
||
|
||
角色一致性;
|
||
服装一致性;
|
||
场景一致性;
|
||
动作清晰;
|
||
镜头语言;
|
||
时长;
|
||
比例;
|
||
画风;
|
||
负面提示词。
|
||
|
||
---
|
||
|
||
17. 视频质检 Agent
|
||
检查提示词是否适合生成:
|
||
|
||
是否动作过复杂;
|
||
是否角色描述不一致;
|
||
是否同一镜头人物太多;
|
||
是否场景难生成;
|
||
是否时长过长;
|
||
是否缺少镜头主体;
|
||
是否缺少负面约束。
|
||
|
||
---
|
||
|
||
18. 发布包 Agent
|
||
生成最终用于前端展示和视频流水线调用的完整包:
|
||
|
||
小说标题;
|
||
章节标题;
|
||
正文;
|
||
听书稿;
|
||
配音 JSON;
|
||
短剧剧本;
|
||
分镜;
|
||
视频提示词;
|
||
封面提示词;
|
||
字幕文件;
|
||
标签;
|
||
简介。
|
||
|
||
---
|
||
|
||
# 七、数据库需要增加哪些表?
|
||
|
||
你原来的表还要保留,但要新增这些。
|
||
|
||
## 1. novel_ip_assets 资产总表
|
||
|
||
```sql
|
||
CREATE TABLE novel_ip_assets (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
project_id BIGINT NOT NULL,
|
||
asset_type VARCHAR(50) NOT NULL,
|
||
asset_name VARCHAR(255) NOT NULL,
|
||
asset_key VARCHAR(100),
|
||
asset_json JSON,
|
||
prompt_base TEXT,
|
||
negative_prompt TEXT,
|
||
status VARCHAR(50),
|
||
created_at DATETIME,
|
||
updated_at DATETIME
|
||
);
|
||
```
|
||
|
||
`asset_type` 可以是:
|
||
|
||
```text
|
||
character_visual
|
||
character_voice
|
||
scene
|
||
prop
|
||
costume
|
||
music_style
|
||
video_style
|
||
```
|
||
|
||
---
|
||
|
||
## 2. audio_scripts 听书稿表
|
||
|
||
```sql
|
||
CREATE TABLE novel_audio_scripts (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
project_id BIGINT NOT NULL,
|
||
chapter_id BIGINT NOT NULL,
|
||
chapter_no INT NOT NULL,
|
||
audio_text LONGTEXT,
|
||
narration_json JSON,
|
||
dialogue_json JSON,
|
||
sfx_json JSON,
|
||
estimated_duration_sec INT,
|
||
status VARCHAR(50),
|
||
created_at DATETIME,
|
||
updated_at DATETIME
|
||
);
|
||
```
|
||
|
||
---
|
||
|
||
## 3. drama_scripts 短剧剧本表
|
||
|
||
```sql
|
||
CREATE TABLE novel_drama_scripts (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
project_id BIGINT NOT NULL,
|
||
chapter_id BIGINT NOT NULL,
|
||
episode_no INT,
|
||
chapter_no INT,
|
||
script_text LONGTEXT,
|
||
script_json JSON,
|
||
estimated_duration_sec INT,
|
||
ending_hook TEXT,
|
||
status VARCHAR(50),
|
||
created_at DATETIME,
|
||
updated_at DATETIME
|
||
);
|
||
```
|
||
|
||
---
|
||
|
||
## 4. shot_lists 分镜表
|
||
|
||
```sql
|
||
CREATE TABLE novel_shot_lists (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
project_id BIGINT NOT NULL,
|
||
chapter_id BIGINT NOT NULL,
|
||
episode_no INT,
|
||
shot_no INT,
|
||
scene_id BIGINT,
|
||
shot_json JSON,
|
||
duration_sec DECIMAL(5,2),
|
||
camera_type VARCHAR(100),
|
||
movement VARCHAR(100),
|
||
characters_json JSON,
|
||
props_json JSON,
|
||
status VARCHAR(50),
|
||
created_at DATETIME,
|
||
updated_at DATETIME
|
||
);
|
||
```
|
||
|
||
---
|
||
|
||
## 5. video_prompts 视频提示词表
|
||
|
||
```sql
|
||
CREATE TABLE novel_video_prompts (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
project_id BIGINT NOT NULL,
|
||
chapter_id BIGINT NOT NULL,
|
||
episode_no INT,
|
||
shot_no INT,
|
||
model_provider VARCHAR(100),
|
||
prompt_text LONGTEXT,
|
||
negative_prompt LONGTEXT,
|
||
prompt_json JSON,
|
||
duration_sec DECIMAL(5,2),
|
||
aspect_ratio VARCHAR(20),
|
||
resolution VARCHAR(50),
|
||
seed VARCHAR(100),
|
||
status VARCHAR(50),
|
||
created_at DATETIME,
|
||
updated_at DATETIME
|
||
);
|
||
```
|
||
|
||
---
|
||
|
||
## 6. video_tasks 视频任务映射表
|
||
|
||
如果你已经有视频流水线,这个表用来对接。
|
||
|
||
```sql
|
||
CREATE TABLE novel_video_tasks (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
project_id BIGINT NOT NULL,
|
||
chapter_id BIGINT NOT NULL,
|
||
episode_no INT,
|
||
shot_no INT,
|
||
video_prompt_id BIGINT,
|
||
external_task_id VARCHAR(255),
|
||
provider VARCHAR(100),
|
||
task_status VARCHAR(50),
|
||
result_url TEXT,
|
||
error_message TEXT,
|
||
created_at DATETIME,
|
||
updated_at DATETIME
|
||
);
|
||
```
|
||
|
||
---
|
||
|
||
## 7. subtitles 字幕表
|
||
|
||
```sql
|
||
CREATE TABLE novel_subtitles (
|
||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||
project_id BIGINT NOT NULL,
|
||
chapter_id BIGINT NOT NULL,
|
||
episode_no INT,
|
||
subtitle_format VARCHAR(20),
|
||
subtitle_text LONGTEXT,
|
||
subtitle_json JSON,
|
||
created_at DATETIME,
|
||
updated_at DATETIME
|
||
);
|
||
```
|
||
|
||
---
|
||
|
||
# 八、最关键优化:章节卡必须加入“改编字段”
|
||
|
||
原来的章节卡只服务小说。
|
||
现在章节卡要变成这种:
|
||
|
||
```json
|
||
{
|
||
"chapter_no": 1,
|
||
"title": "查无此人",
|
||
"novel_goal": "岑青接到复原无名女工身份的任务",
|
||
"audio_goal": "用克制悬疑的旁白建立身份缺失感",
|
||
"video_goal": "建立火灾废墟、门禁卡、系统查无此人的视觉钩子",
|
||
"scenes": [
|
||
{
|
||
"scene_no": 1,
|
||
"location_asset_key": "haifeng_building_exterior",
|
||
"time": "清晨",
|
||
"characters": ["岑青", "裴让"],
|
||
"props": ["灰蓝外套", "证物袋"],
|
||
"novel_function": "引出无名女工",
|
||
"drama_function": "开场视觉钩子",
|
||
"video_difficulty": "medium",
|
||
"estimated_video_seconds": 25,
|
||
"must_visualize": [
|
||
"火灾后的老楼",
|
||
"证物袋里的烧焦外套",
|
||
"岑青第一次沉默观察"
|
||
]
|
||
}
|
||
],
|
||
"ending_hook": "系统提示查无此人",
|
||
"adaptation_notes": {
|
||
"short_drama_episode": 1,
|
||
"estimated_episode_duration": 240,
|
||
"key_visual_hook": "电脑屏幕上的身份匹配失败",
|
||
"key_audio_hook": "雨声中出现系统提示音"
|
||
}
|
||
}
|
||
```
|
||
|
||
这样写小说时,系统已经知道:
|
||
|
||
这一章后面怎么听;
|
||
怎么拍;
|
||
怎么生成视频;
|
||
要复用哪些角色资产;
|
||
要复用哪些场景资产。
|
||
|
||
---
|
||
|
||
# 九、小说正文也要有“可改编元数据”
|
||
|
||
建议每章正文生成后,让 AI 自动解析:
|
||
|
||
```json
|
||
{
|
||
"adaptable_scenes": [
|
||
{
|
||
"scene_id": "ch01_sc01",
|
||
"start_text_anchor": "岑青第一次看见那件外套时",
|
||
"end_text_anchor": "系统里没有这个人",
|
||
"characters": ["岑青", "裴让"],
|
||
"location": "临时调查室",
|
||
"props": ["门禁卡", "电脑", "证物袋"],
|
||
"emotion": "冷静、不安",
|
||
"adaptation_priority": "high"
|
||
}
|
||
],
|
||
"dialogues": [
|
||
{
|
||
"speaker": "裴让",
|
||
"text": "这是她的外套。幸存者说,灰蓝色。",
|
||
"emotion": "克制",
|
||
"can_use_in_drama": true
|
||
}
|
||
],
|
||
"narration_candidates": [
|
||
{
|
||
"text": "城市里有太多人只在摄像头边缘出现。",
|
||
"use_for_audio": true,
|
||
"use_for_drama_voiceover": true
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
这个结构以后非常有用。
|
||
|
||
---
|
||
|
||
# 十、听书线怎么接?
|
||
|
||
小说正文不能直接拿去 TTS。
|
||
因为小说有些句子适合看,不适合听。
|
||
|
||
所以要加一个:
|
||
|
||
## NovelToAudio Agent
|
||
|
||
它负责把正文变成听书稿。
|
||
|
||
优化规则:
|
||
|
||
1. 长句拆短;
|
||
2. 指代变清楚;
|
||
3. 对话前补角色;
|
||
4. 重要场景保留;
|
||
5. 删除不适合听的复杂嵌套句;
|
||
6. 增加必要停顿;
|
||
7. 标记情绪;
|
||
8. 标记音效;
|
||
9. 标记 BGM;
|
||
10. 控制每章音频时长。
|
||
|
||
输出建议:
|
||
|
||
```json
|
||
{
|
||
"chapter_no": 1,
|
||
"audio_title": "第一章:查无此人",
|
||
"estimated_duration_sec": 480,
|
||
"segments": [
|
||
{
|
||
"segment_no": 1,
|
||
"type": "narration",
|
||
"speaker": "旁白",
|
||
"text": "岑青第一次看见那件外套时,外套已经没有颜色了。",
|
||
"emotion": "沉静",
|
||
"speed": "medium_slow",
|
||
"pause_after_ms": 600,
|
||
"sfx": "轻微雨声"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
# 十一、短剧线怎么接?
|
||
|
||
短剧不能直接由小说生成视频。
|
||
必须经过:
|
||
|
||
```text
|
||
小说章节
|
||
↓
|
||
短剧剧本
|
||
↓
|
||
分镜
|
||
↓
|
||
镜头提示词
|
||
↓
|
||
视频任务
|
||
```
|
||
|
||
## 1. 小说转短剧
|
||
|
||
输入小说正文和章节结构。
|
||
|
||
输出:
|
||
|
||
```json
|
||
{
|
||
"episode_no": 1,
|
||
"title": "查无此人",
|
||
"duration_sec": 240,
|
||
"scenes": [
|
||
{
|
||
"scene_no": 1,
|
||
"location": "海风大厦外",
|
||
"characters": ["岑青", "裴让"],
|
||
"action": "岑青看见证物袋里的烧焦外套",
|
||
"dialogues": [],
|
||
"visual_goal": "建立火灾后的冷峻气氛"
|
||
}
|
||
],
|
||
"ending_hook": "系统提示:查无此人"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 2. 短剧转分镜
|
||
|
||
输出:
|
||
|
||
```json
|
||
{
|
||
"shot_no": 1,
|
||
"duration_sec": 5,
|
||
"shot_size": "wide shot",
|
||
"camera_movement": "slow push in",
|
||
"character_refs": ["岑青"],
|
||
"scene_ref": "haifeng_building_exterior",
|
||
"action": "岑青站在警戒线外,望向焦黑的十四楼",
|
||
"emotion": "冷静、不安",
|
||
"dialogue": "",
|
||
"sfx": "远处消防车残余警笛声"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 3. 分镜转视频提示词
|
||
|
||
重点:引用资产,不要重新发明角色。
|
||
|
||
```json
|
||
{
|
||
"shot_no": 1,
|
||
"duration_sec": 5,
|
||
"prompt": "realistic cinematic shot, old burned residential building after fire, early morning grey-blue light, Chinese woman Cen Qing stands outside police tape, short black hair, slim face, calm restrained expression, wearing plain dark coat, looking up at the blackened 14th floor, slow push-in camera, low saturation, documentary realism",
|
||
"negative_prompt": "do not change character face, no cartoon, no exaggerated emotion, no fantasy style, no extra people, no text artifacts",
|
||
"aspect_ratio": "9:16",
|
||
"resolution": "720p"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
# 十二、你现有 AI 视频流水线怎么对接?
|
||
|
||
你现在已经有视频生成流水线,那小说系统只要输出标准任务即可。
|
||
|
||
建议定义一个统一接口:
|
||
|
||
```json
|
||
{
|
||
"source": "novel_pipeline",
|
||
"project_id": 1001,
|
||
"chapter_no": 1,
|
||
"episode_no": 1,
|
||
"shot_no": 1,
|
||
"model_provider": "doubao_video",
|
||
"duration_sec": 5,
|
||
"aspect_ratio": "9:16",
|
||
"resolution": "720p",
|
||
"prompt": "",
|
||
"negative_prompt": "",
|
||
"character_refs": [],
|
||
"scene_refs": [],
|
||
"voice_refs": [],
|
||
"subtitle_text": "",
|
||
"callback_url": ""
|
||
}
|
||
```
|
||
|
||
视频系统完成后回调:
|
||
|
||
```json
|
||
{
|
||
"external_task_id": "xxx",
|
||
"status": "completed",
|
||
"result_url": "https://xxx/video.mp4",
|
||
"duration_sec": 5,
|
||
"error_message": ""
|
||
}
|
||
```
|
||
|
||
小说系统接收后更新 `novel_video_tasks`。
|
||
|
||
---
|
||
|
||
# 十三、是否需要你提供当前代码设计进度?
|
||
|
||
**需要。**
|
||
|
||
如果只是继续聊架构,我可以完整设计。
|
||
但如果你要真正接入你已经在测试的 AI 视频流水线,就需要看你目前已有系统的边界。
|
||
|
||
你最好提供下面这些信息,不需要一次性发全部代码,先发结构就行。
|
||
|
||
## 你需要提供的内容
|
||
|
||
### 1. 当前视频流水线模块结构
|
||
|
||
比如:
|
||
|
||
```text
|
||
controllers/
|
||
services/
|
||
models/
|
||
queues/
|
||
providers/
|
||
```
|
||
|
||
或者项目目录截图/目录树。
|
||
|
||
---
|
||
|
||
### 2. 当前视频任务表结构
|
||
|
||
特别是:
|
||
|
||
视频任务怎么入库;
|
||
字段有哪些;
|
||
状态有哪些;
|
||
结果 URL 怎么保存;
|
||
失败怎么重试。
|
||
|
||
---
|
||
|
||
### 3. 当前 AI 视频 Provider 接口
|
||
|
||
比如你调用豆包、可灵、Runway、其他模型时,内部统一了吗?
|
||
|
||
我需要看:
|
||
|
||
```text
|
||
createTask()
|
||
queryTask()
|
||
cancelTask()
|
||
callback()
|
||
```
|
||
|
||
有没有统一封装。
|
||
|
||
---
|
||
|
||
### 4. 当前角色一致性怎么做
|
||
|
||
你现在视频生成测试中,有没有:
|
||
|
||
角色图片库;
|
||
角色 prompt 固定词;
|
||
seed;
|
||
参考图;
|
||
人物 ID;
|
||
服装 ID;
|
||
镜头连续性规则。
|
||
|
||
这是小说短剧联动最关键的部分。
|
||
|
||
---
|
||
|
||
### 5. 当前配音 / BGM / 字幕怎么做
|
||
|
||
你现在有没有:
|
||
|
||
TTS;
|
||
字幕;
|
||
BGM;
|
||
音效;
|
||
口型同步;
|
||
剪辑合成。
|
||
|
||
如果已经有,小说系统就只要输出标准音频脚本和字幕 JSON。
|
||
|
||
---
|
||
|
||
### 6. 你现在后台技术栈
|
||
|
||
需要确认:
|
||
|
||
后端语言;
|
||
数据库;
|
||
队列;
|
||
前端后台;
|
||
对象存储;
|
||
任务调度方式。
|
||
|
||
你之前说过系统 B / 漫剧系统可能用 uniapp、Geeker-Admin、后端未完全定,视频流水线正在测试。现在要以你实际代码为准。
|
||
|
||
---
|
||
|
||
# 十四、我建议你现在的最终架构
|
||
|
||
你最好不要把小说系统和视频系统完全混在一起。
|
||
|
||
建议拆成两个系统,中间用任务接口打通。
|
||
|
||
```text
|
||
A. Novel-IP 内容中台
|
||
负责:
|
||
小说、人物、场景、听书稿、剧本、分镜、提示词
|
||
|
||
B. AI Video 生产系统
|
||
负责:
|
||
图片生成、视频生成、配音、字幕、合成、成片
|
||
```
|
||
|
||
两边通过 `video_generation_tasks` 对接。
|
||
|
||
这样好处是:
|
||
|
||
小说系统可以独立生产内容;
|
||
视频系统可以独立升级模型;
|
||
后续换豆包、可灵、Sora、Runway,不影响小说系统;
|
||
同一个小说项目可以生成多个视频版本;
|
||
同一章可以生成短剧版、漫剧版、解说版、听书版。
|
||
|
||
---
|
||
|
||
# 十五、你原设计需要优化的重点清单
|
||
|
||
## 必须加
|
||
|
||
1. IP 圣经,而不是单纯小说圣经;
|
||
2. 人物视觉资产库;
|
||
3. 人物声音资产库;
|
||
4. 场景资产库;
|
||
5. 道具资产库;
|
||
6. 小说章节结构化解析;
|
||
7. 听书稿生成 Agent;
|
||
8. 配音拆分 Agent;
|
||
9. 小说转短剧 Agent;
|
||
10. 短剧转分镜 Agent;
|
||
11. 分镜转视频提示词 Agent;
|
||
12. 视频提示词质检 Agent;
|
||
13. 视频任务回调表;
|
||
14. 发布包表;
|
||
15. 人工审核闸门。
|
||
|
||
---
|
||
|
||
## 建议加
|
||
|
||
1. 角色一致性评分;
|
||
2. 镜头复杂度评分;
|
||
3. 每集预算估算;
|
||
4. 每集生成时长估算;
|
||
5. 每集失败率统计;
|
||
6. 热点标签提取;
|
||
7. 标题 / 简介 / 封面提示词生成;
|
||
8. 平台版本适配:抖音、快手、视频号、小说平台、听书平台;
|
||
9. A/B 版本生成;
|
||
10. 自动生成预告片脚本。
|
||
|
||
---
|
||
|
||
# 十六、最小升级版 MVP
|
||
|
||
不要一开始做太大。
|
||
|
||
你的第一版可以这样做:
|
||
|
||
## MVP 目标
|
||
|
||
输入一个小说项目 Brief,系统自动输出:
|
||
|
||
1. 小说圣经;
|
||
2. 人物视觉资产;
|
||
3. 人物声音资产;
|
||
4. 场景资产;
|
||
5. 第 1 章小说正文;
|
||
6. 第 1 章听书稿;
|
||
7. 第 1 集短剧剧本;
|
||
8. 第 1 集分镜;
|
||
9. 第 1 集视频提示词;
|
||
10. 推送到你现有视频流水线。
|
||
|
||
---
|
||
|
||
## MVP Agent
|
||
|
||
先做 8 个就够:
|
||
|
||
```text
|
||
1. IPBibleAgent
|
||
2. ChapterCardAgent
|
||
3. NovelWriterAgent
|
||
4. AudioScriptAgent
|
||
5. DramaScriptAgent
|
||
6. ShotListAgent
|
||
7. VideoPromptAgent
|
||
8. QualityCheckAgent
|
||
```
|
||
|
||
后面再加:
|
||
|
||
MemoryUpdateAgent;
|
||
ForeshadowAgent;
|
||
RepairAgent;
|
||
PublishPackageAgent。
|
||
|
||
---
|
||
|
||
# 十七、最终判断
|
||
|
||
你现在的上一个设计:
|
||
|
||
**适合自动写小说。**
|
||
|
||
但要达到你说的:
|
||
|
||
> 小说 / 小说语音听版 / AI短剧同步
|
||
|
||
必须升级为:
|
||
|
||
> **IP资产驱动的多模态内容生产流水线。**
|
||
|
||
核心不是“写完小说再改视频”,而是:
|
||
|
||
> **从小说策划阶段就让 AI 按可听、可拍、可生成视频的标准设计。**
|
||
|
||
这样你的小说流水线才能真正接上你已经在测试的 AI 视频流水线。
|
||
|
||
---
|
||
|
||
你下一步最好发我这 4 样东西中的任意一种:
|
||
|
||
1. 当前视频流水线目录结构;
|
||
2. 当前视频任务表结构;
|
||
3. 当前视频任务创建接口;
|
||
4. 当前视频生成提示词格式。
|
||
|
||
我可以直接帮你把“小说流水线 → 视频流水线”的接口、数据库、任务队列和 Agent 编排补成一份可给 Codex 开发的详细需求文档。
|