# Short Drama

制作多集 AI 微短剧：建立剧集圣经和角色参考，完成分集剧本、逐镜 I2V、对白审计、配音字幕 BGM 与成片，保持跨镜跨集一致性。...

- Repository: https://github.com/ZJU-REAL/Easel (4293 stars)
- Category: Media
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add ZJU-REAL/Easel --skill short-drama -g -a claude-code -y`
Codex: `npx skills add ZJU-REAL/Easel --skill short-drama -g -a codex -y`
Cursor: `npx skills add ZJU-REAL/Easel --skill short-drama -g -a cursor -y`
Gemini CLI: `npx skills add ZJU-REAL/Easel --skill short-drama -g -a gemini-cli -y`

## Description

制作多集 AI 微短剧：建立剧集圣经和角色参考，完成分集剧本、逐镜 I2V、对白审计、配音字幕 BGM 与成片，保持跨镜跨集一致性。 当用户说“AI/横屏/竖屏/微短剧、拍短剧、分集剧本、连续剧情视频、做几集短剧”时使用。 单条非剧情视频用 auto-short-video；只写单条脚本用 video-script；只生成一个视频片段用 ai-video-gen。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# AI 短剧制作（横屏/竖屏微短剧，多集）
> **配置检查路径铁律**：整条流水线开始前先 `cd` 到运行时说明给出的 Easel 项目根，确认 `.env` 与 `skills/shared/scripts/` 存在。生图、视频、配音配置必须从这里运行注册表/`check`；不得在任何执行引擎的 workspace 或共享脚本副本中检查，不得用 `env` / `printenv` 判定缺少 `IMG_BASE_URL`、`VOICE_BASE_URL` 或 Key。发现缺项先核对 `pwd`，回项目根并显式传 `--env-file .env` 重查。
## ⛔ 三条铁律（最容易翻车，动手前先记死）

1. **每镜必须「图生视频」成动态片段, , 绝不能拿静态图冒充。** 关键帧图(frame)只是 I2V 的**首帧**，必须再用 **ai-video-gen `image2video`** 驱动成会动的 `clip`。跳过这步 = 一堆静态图配音，垃圾。合成前 `storyboard` 会**硬拦**只有 frame 没 clip 的镜头。
2. **配音必须闭源云 provider（有情感、像真人）, , 绝不用 edge(AI 味平读)。** 先 `.env` 配 `VOICE_PROVIDER` + `voice_clone.py check` 验 key；配了 key 后 `dubbing align/dub` **合成前就硬拦** edge，任何角色（含旁白）想落到 edge 直接失败。只有完全没 key 才 `--allow-edge` 兜底。
3. **原生音频优先、环境音每镜必留、台词务必喂给模型。** 视频模型原生音频（环境音/脚步/物理音效）质量好，**环境音默认整轨全用**。**头号要点：生视频必须把台词写进 `generation_prompt`（`prepare` 生成）喂给模型**，否则模型不知说啥、台词全错。默认 **native-first**（让模型逐字说、能说就用、不默认丢 TTS）→ `audit` 逐镜 ASR 核验：对上用原生对白（常态）、说错转 `dub` 换 TTS、旁白/动作镜走 TTS/环境音。决策与探针细节见步骤 16/18 及 `references/native-audio-workflow.md`。
4. **画面/声音/字幕按时间线对齐，自然播放。** 画面用真实片段全长（台词只占其中一段，按实际说话时间放置），**绝不慢放/循环/冻结**；片段盖不住台词就重生成/拆镜（`align` 硬拦）。

> **⚠️ 不许抄近路（执行纪律，最常翻车）**：`prepare → drama_ops.py generate(生视频) → audit → align` 是**不可跳的链**，脚本已加**链式硬门**：① 生视频**必须走 `drama_ops.py generate`**（它逐镜读 `generation_prompt` 自己调视频模型，agent 无从传成只有画面的 prompt）, , 别再逐镜手调 ai-video-gen；② `generate`/`audit` 见有台词的镜缺 `generation_prompt` → 判定「没跑 prepare」直接失败；③ `align` 见缺 `clip-audit.json` → 判定「没跑 audit」直接失败（不再静默把全部对白降级成 TTS）。「手调生视频只传画面 prompt + 直接 TTS」这条错误捷径会被拦回来, , 才有「台词喂给模型 + 用视频原声」。

> 编排层 SKILL：创意（圣经/剧本/分镜/lines）你 LLM 写，生成动作全委派已有 SKILL（ai-image-gen/ai-video-gen/ai-music），确定性 IO 走 `scripts/drama_ops.py` + `scripts/dubbing.py`；角色一致性靠「先定参考图再 I2V」+ 剧集圣经锁成同一部剧。

## 输入

The rest: https://github.com/ZJU-REAL/Easel/blob/HEAD/skills/builtin/short-drama/SKILL.md
