ai-drama-prompt-factory

SkillDB 作者 zhgarylu v1.0.0

AI短剧提示词工厂 - 端到端将小说/故事创意转化为结构化提示词包(角色立绘+场景+道具+分镜图片+视频+音频)的完整流水线。一个入口启动全流程,内部自动按阶段推进:策划→设计→剧本→诊断→提示词组装→API JSON输出。支持小说改编和原创短剧两条路径。触发词:AI短剧、短剧制作、小说转短剧、短剧提示词、提示词工厂、短剧全流程、小说改编短剧、生成短剧、AI视频剧本、短剧项目、分镜提示词、视频提示词、prompt factory。

源码 ↗

安装 / 下载方式

TotalClaw CLI推荐
totalclaw install skilldb:zhgarylu~ai-drama-prompt-factory
cURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/skilldb%3Azhgarylu~ai-drama-prompt-factory/file -o ai-drama-prompt-factory.md
Git 仓库获取源码
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