ai-drama-prompt-factory
AI短剧提示词工厂 - 端到端将小说/故事创意转化为结构化提示词包(角色立绘+场景+道具+分镜图片+视频+音频)的完整流水线。一个入口启动全流程,内部自动按阶段推进:策划→设计→剧本→诊断→提示词组装→API JSON输出。支持小说改编和原创短剧两条路径。触发词:AI短剧、短剧制作、小说转短剧、短剧提示词、提示词工厂、短剧全流程、小说改编短剧、生成短剧、AI视频剧本、短剧项目、分镜提示词、视频提示词、prompt factory。
安装 / 下载方式
TotalClaw CLI推荐
totalclaw install skilldb:zhgarylu~ai-drama-prompt-factorycURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/skilldb%3Azhgarylu~ai-drama-prompt-factory/file -o ai-drama-prompt-factory.mdGit 仓库获取源码
git clone https://github.com/openclaw/skills/commit/2fd611c67e19e0592cc78ecc2c19f367acd0e3bc# AI短剧提示词工厂 (AI Drama Prompt Factory)
端到端将小说或故事创意转化为结构化提示词包,输出标准JSON供外部AI生成工具消费。
**系统边界:只生产提示词数据,不做图片/视频/音频的实际生成。**
---
## ⚡ 启动协议(每次任务开始时必须执行)
**任何短剧相关任务触发后,在执行任何工作之前,必须先向用户确认以下信息:**
### Step 1:确认项目类型
向用户确认:
- **A 小说改编** — 用户提供小说/故事文本,改编为短剧提示词
- **B 原创短剧** — 用户提供创意/主题,从零创建短剧提示词
### Step 2:确认执行模式
向用户确认交付方式:
- **🚀 全程模式** — 一次跑完全部Phase,中间不停,最终一次性交付所有产出文件
- **📋 分阶段模式** — 每个Phase完成后输出交付物,等用户确认/修改后再进入下一阶段(推荐)
- **🎯 单阶段模式** — 只执行用户指定的某个Phase(需已有前序Phase的产出)
### Step 3:确认基础参数
向用户确认:
- **视觉风格** — 电影写实 / 日系动漫 / 2.5D(默认:电影写实)
- **剧本风格** — 标准叙事 / 爽文漫剧(默认:标准叙事)
- **目标集数** — 预计多少集(可后续调整)
- **每集时长** — 1分钟 / 2分钟 / 3分钟(默认:1-2分钟)
- **剧本分镜Markdown输出** — 是否同时输出可读性更强的Markdown分镜表格文档?(默认:否,仅输出JSON)
**确认完成后,开始执行第一个Phase。**
---
## 核心铁律(Phase 5组装时必须遵守)
**铁律一:分镜图片提示词中必须使用角色和道具的名字**
```
✅ 张慧芬转身替病床上的陈易(觉醒前)整理输液管
❌ 48岁中年女性转身替24岁苍白男性整理输液管
```
**铁律二:视频提示词必须基于分镜图片提示词派生**
视频是图片的动态延伸,不能独立生成。
**铁律三:提示词使用中文自然语言描述**
连贯的场景叙述句,不是英文标签堆叠。
---
## 全流程架构
```
启动协议 → Phase 1 策划 → Phase 2 设计 → Phase 3 剧本 → Phase 4 诊断 → Phase 5 组装
↑ │
└────────┘
(修改≤3轮)
```
| 路径 | 流程 | 诊断 |
|------|------|------|
| A: 小说改编 | 全5阶段 | 必须 |
| B: 原创短剧 | Phase 1→2→3→5 | 可选 |
---
## Phase 1:策划
### 📥 输入
- 路径A:小说/故事文本(短篇直接读取,超过3万字先建索引,参见 [references/doc-reader-guide.md](references/doc-reader-guide.md))
- 路径B:用户的创意描述/主题
### 📤 交付物(2个文件)
**文件1:`planning/story-outline.md`**
必须包含以下完整结构:
```markdown
# 故事大纲:{作品名称}
## 1. 基础信息
- 作品名称:{名称}
- 来源:{原创/改编自《XX》}
- 写作视角:{第一人称/第三人称全知/等}
- 视觉风格:{电影写实/日系动漫/2.5D}
- 剧本风格:{标准叙事/爽文漫剧}
- 目标集数:{N}集
- 每集时长:{N}分钟
## 2. 时空背景
{年代、地点、社会环境、特殊设定,150-300字}
## 3. 叙事结构
- 结构类型:{三幕/五幕/单元剧}
- 递进模式:{描述}
- 情绪曲线概要:{描述}
## 4. 核心冲突
{主角+困境+对抗力量+逆袭路径,100-200字}
## 5. 角色清单
### 主要角色
| 角色名 | 性别 | 年龄 | 身份 | 核心特征 | 外观变体 |
|--------|------|------|------|---------|---------|
| 陈易 | 男 | 24 | 大学生/觉醒者 | 外表懦弱内心坚韧 | 觉醒前、觉醒后 |
| ... | | | | | |
### 次要角色
| 角色名 | 性别 | 身份 | 故事功能 |
|--------|------|------|---------|
| ... | | | |
## 6. 关键道具
| 道具名 | 外观概述 | 剧情功能 | 首次出现 |
|--------|---------|---------|---------|
| 天机古卷 | 泛黄线装古书 | 主角能力来源 | 第1集 |
## 7. 核心场景清单
| 场景名 | 类型 | 出现集数 |
|--------|------|---------|
| 医院普通病房 | 室内 | 第1-2集 |
| 世界杯决赛球场 | 室外 | 第5-6集 |
```
**文件2:`planning/episodes-plan.md`**
```markdown
# 分集规划
## 第1集「{标题}」
- 核心事件:{一句话概述}
- 涉及角色:{角色列表}
- 主要场景:{场景列表}
- 情绪走向:{如:压抑→微光}
- 集尾钩子:{悬念/反转描述}
- 预计镜头数:{N}
## 第2集「{标题}」
...
```
### ✅ Phase 1 完成标志
- story-outline.md 包含全部7个章节
- episodes-plan.md 覆盖所有目标集数
- 每集有明确的集尾钩子
### ⏸️ 分阶段模式
输出以上2个文件后,告知用户:
> Phase 1 策划完成。请查看故事大纲和分集规划,确认无误后我将进入 Phase 2 设计阶段。如需调整请告知。
---
## Phase 2:设计
### 📥 输入
- Phase 1 的 story-outline.md(角色清单、场景清单、道具清单、风格定义)
### 📤 交付物(4类文件)
**文件1:`characters/{角色名}.json`(每个角色一个文件)**
```json
{
"name": "陈易",
"character_id": "char_chenyi",
"gender": "男",
"age": 24,
"identity": "被雷劈获得超能力的普通大学生",
"personality": {
"core_traits": "外表懦弱内心坚韧",
"speech_style": "初期怯懦,觉醒后沉稳有力",
"motivation": "证明自己的价值"
},
"voice_default": {
"gender": "male",
"age_desc": "青年男性",
"timbre": "初期虚弱低沉,觉醒后清亮有力"
},
"variants": {
"觉醒前": {
"description": "病号服状态,虚弱苍白",
"appearance": "短发凌乱/黑色、面色苍白",
"outfit": "蓝白条纹病号服、病号裤、无鞋、无配饰",
"prompt": "现代、24岁、男、短发凌乱/黑色、蓝白条纹病号服、病号裤、无、面色苍白,电影写实风格,高质量,真实光影,电影级打光,8K分辨率,超高清细节,全身,纯色背景,面向镜头"
},
"觉醒后": {
"description": "运动装状态,精神焕发",
"appearance": "短发利落/黑色、目光锐利",
"outfit": "灰色运动外套、深蓝色运动裤、白色运动鞋、无配饰",
"prompt": "现代、24岁、男、短发利落/黑色、灰色运动外套、深蓝色运动裤、白色运动鞋、无配饰,电影写实风格,高质量,真实光影,电影级打光,8K分辨率,超高清细节,全身,纯色背景,面向镜头"
}
}
}
```
**角色提示词公式:**
```
{时代}、{年龄}岁、{性别}、{发型/发色}、{上装}、{下装}、{鞋/配饰}、{面部特征},
{风格标签},全身,纯色背景,面向镜头
```
**文件2:`scenes/{场景名}.json`(每个场景一个文件)**
```json
{
"name": "医院普通病房",
"scene_id": "scene_hospital_room",
"type": "室内",
"era": "中国现代",
"key_elements": ["白色墙面", "输液架", "病床", "窗户"],
"variants": {
"白天": {
"lighting": "窗户透入柔和自然光",
"prompt": "中国现代,电影写实风格,室内,白天,现代医院普通病房,白色墙面干净整洁,输液架立在病床旁,病床白色床单,窗户透入柔和自然光"
},
"夜晚": {
"lighting": "走廊灯光透过门缝微弱照入",
"prompt": "中国现代,电影写实风格,室内,深夜,现代医院普通病房,白色墙面,病床旁输液架,走廊灯光透过门缝微弱照入,氛围安静压抑"
}
}
}
```
**场景提示词公式:** `{时代},{风格},{室内/室外},{时间},{环境详描}`
**文件3:`props/{道具名}.json`(每个关键道具一个文件,普通道具不需要)**
```json
{
"name": "天机古卷",
"prop_id": "prop_ancient_book",
"type": "信物",
"story_function": "主角能力来源,被雷劈时的护身符",
"prompt": "中国古代,电影写实风格,信物,泛黄卷边的线装书,封面为深蓝色布面,边角磨损严重,书页间夹有干枯的银杏叶书签,纸质泛黄,封面深蓝色布面,书签枯黄色"
}
```
**道具提示词公式:** `{时代},{风格},{类型},{外观详描},{材质/颜色}`
**文件4:`style/style-guide.json`(全局唯一)**
```json
{
"style_type": "电影写实",
"era": "中国现代",
"character_prompt_suffix": "电影写实风格,高质量,真实光影,电影级打光,8K分辨率,超高清细节",
"scene_prompt_suffix": "电影写实风格",
"storyboard_prompt_suffix": "写实风格,电影级打光,8K分辨率,超细节刻画",
"storyboard_enhance_tags": ["高对比度光影", "动态模糊感", "电影级质感", "8K超高清"],
"target_ratio": "9:16"
}
```
**详细规范:** [references/design-guide.md](references/design-guide.md)
### ✅ Phase 2 完成标志
- 所有主要角色都有 .json 文件,每个角色至少1个variant且含完整prompt
- 所有核心场景都有 .json 文件,至少1个variant且含完整prompt
- 所有关键道具都有 .json 文件且含完整prompt
- style-guide.json 已创建
- 所有提示词风格后缀与 style-guide 一致
### ⏸️ 分阶段模式
输出所有设计文件后,向用户展示:
> Phase 2 设计完成。共生成 {N} 个角色(含 {M} 个状态变体)、{N} 个场景、{N} 个道具的设计卡和提示词。
>
> 角色一览:
> - 陈易:觉醒前(病号服)/ 觉醒后(运动装)
> - 张慧芬:默认(护士装)
> - ...
>
> 请确认角色/场景/道具设计是否需要调整,确认后进入 Phase 3 剧本生成。
---
## Phase 3:剧本
### 📥 输入
- Phase 1 的 episodes-plan.md
- Phase 2 的全部角色/场景/道具设计文件
- 路径A:原著对应章节文本
### 📤 交付物(每集2-3个文件)
**文件1:`scripts/ep{NN}/script.json`(核心交付物)**
```json
{
"episode": {
"number": 1,
"title": "天降奇才",
"duration_target": "90s",
"style": "标准叙事",
"emotion_arc": "压抑→微光"
},
"shots": [
{
"shot_id": "ep01_sh01",
"shot_number": 1,
"duration": "3s",
"characters": [
{ "name": "陈勇", "variant": "默认" },
{ "name": "张慧芬", "variant": "默认" },
{ "name": "陈易", "variant": "觉醒前" }
],
"scene": "医院普通病房",
"scene_variant": "白天",
"shot_type": "近景",
"camera_movement": "固定",
"action_desc": "画面右侧陈勇背影离去,张慧芬转身替病床上的陈易整理输液管,轻叹气,眼神略带无奈",
"dialogue": {
"speaker": "张慧芬",
"text": "唉,陈易,你的医药费已经拖欠三天了...",
"emotion": "无奈叹息"
},
"sfx": ["脚步声远去", "输液管碰撞"],
"bgm": "无",
"source_anchor": "P-003",
"emotion_level": 2,
"narration": null
},
{
"shot_id": "ep01_sh02",
"shot_number": 2,
"...": "..."
}
],
"episode_summary": {
"total_shots": 15,
"characters_used": ["陈易", "张慧芬", "陈勇"],
"scenes_used": ["医院普通病房"],
"hook": "陈易在病床上突然睁开双眼,瞳孔中闪过金色光芒"
}
}
```
**每个shot必须包含的字段:**
| 字段 | 类型 | 必须 | 说明 |
|------|------|------|------|
| shot_id | string | ✅ | `ep{NN}_sh{NN}` 全局唯一 |
| shot_number | int | ✅ | 集内序号 |
| duration | string | ✅ | 目标时长(如"3s") |
| characters | array | ✅ | 出场角色,每个含name和variant |
| scene | string | ✅ | 场景名(对应scenes/下的文件) |
| scene_variant | string | ✅ | 场景变体(白天/夜晚等) |
| shot_type | string | ✅ | 特写/近景/中景/全景/远景 |
| camera_movement | string | ✅ | 固定/推/拉/摇/跟 |
| action_desc | string | ✅ | 动作+表情+位置的自然语言描述 |
| dialogue | object/null | ✅ | 有对白时:speaker+text+emotion;无对白时:null |
| sfx | array | ✅ | 音效列表(可为空数组) |
| bgm | string | ✅ | BGM描述或"无" |
| source_anchor | string | ✅ | 原文锚点(改编)或"原创" |
| emotion_level | int | ✅ | 情绪强度1-5 |
| narration | string/null | ✅ | 旁白文本(爽文风格时使用)或null |
**文件2:`continuity/ep{NN}-state.json`(连贯性状态)**
```json
{
"episode": 1,
"character_states": {
"陈易": {
"variant": "觉醒前",
"location": "医院病房",
"emotion": "昏迷中",
"carrying": []
},
"张慧芬": {
"variant": "默认",
"location": "医院病房",
"emotion": "无奈疲惫",
"carrying": []
}
},
"planted_threads": [
{ "thread": "陈易的医药费问题", "planted_at": "ep01_sh01" }
],
"resolved_threads": [],
"props_status": {
"天机古卷": "在陈易枕头下"
},
"next_hook": "陈易在病床上突然睁开双眼,瞳孔中闪过金色光芒"
}
```
**详细规范:** [references/script-generation-guide.md](references/script