$npx -y skills add aliang2052/aliang-skills --skill aliang-shortvideo短剧全流程制作流水线——把一句话灵感逐步做成可拍/可播的短剧:① 剧情大纲 → ② 分集剧本(含台词) → ③ 分镜表 → ④ 用百炼 bl CLI 批量生成每镜关键帧图片 → ⑤ 图生视频合成最终成片。支持多题材(草根逆袭/复仇打脸/都市甜宠/悬疑反转/家庭伦理/古装重生/战神赘婿/搞笑沙雕),支持按单镜指定时长(5s/10s/15s)。每阶段产出后暂停等用户确认再继续。⚠️ 视频生成费钱:开发/测试/演示阶段默认只产出视频命令、不实跑,需用户显式确认要为某段付费才生成。当用户说"做短剧""短剧剧本""短剧分镜""把这个点子做成短剧""短剧出图
| 1 | # 短剧全流程制作流水线 |
| 2 | |
| 3 | 把一句话灵感做成可播短剧,**五阶段、每步暂停确认**: |
| 4 | |
| 5 | ``` |
| 6 | ① 剧情大纲 → ② 分集剧本(台词) → ③ 分镜表(枢纽) → ④ 批量出图 → ⑤ 图生视频(成片) |
| 7 | ``` |
| 8 | |
| 9 | ⚠️ **视频生成费钱**。①~④ 可放心跑;**⑤ 图生视频默认不自动实跑**——开发/测试/演示时只产出每段的 `bl video` 命令交给用户,或等用户显式确认要为某段付费,再逐段生成。功能要做全,钱不替用户烧。 |
| 10 | |
| 11 | ## 前置 |
| 12 | |
| 13 | - `bl`(百炼 CLI)可用并已登录(`bl auth status` 可查)。出图阶段需要它。 |
| 14 | - 开工先确认 4 件事,其余用默认:**① 一句话灵感**(必问);**② 题材**(用 AskUserQuestion 给 3-4 个高频项让用户选,见 `references/genres.md`);**③ 总时长**(用 AskUserQuestion 给 15s / 30s / 60s + 自定义;用户已在灵感里说了时长就别再问);**④ 画风**(用 AskUserQuestion 从 `references/styles.md` 的 22 个预设里让用户挑,分写实/动漫/3D-CG/插画/风格化 5 类;按题材把最搭的放第一标「(推荐)」。**问画风时务必明确邀请上传参考图**:在选项里加一项「📎 我发一张参考图(照着这张的画风做)」,并提示用户可直接把图片拖/粘贴进对话、或给本地路径/URL。用户发了图就走参考图模式,见下条)。画风是画面质量的头号变量,**必须开工就定**,别拖到出图。比例默认竖版 9:16、单镜默认 5s,用户没要求就别追问。 |
| 15 | - **时长换算**:图片张数 ≈ 总时长 ÷ 5(每 5s 一镜一张)。15s≈3 张、30s≈6 张、60s≈12 张。总时长定了,镜数就定了。 |
| 16 | - **可选·参考图**:用户甩了参考图(海报/截图/角色图)时,别只靠肉眼翻译——① 用 `bl vision` 把它读成一段精准的 `style` 串;② 把图路径填进 `storyboard.json` 的 `style_ref`,出图脚本会用 `bl image edit` 直接迁移这张图的画风,还原度更高。两者可并用。 |
| 17 | |
| 18 | ## 工作流 |
| 19 | |
| 20 | ### 阶段 ① 剧情大纲 |
| 21 | |
| 22 | 1. 确认题材后,读 `references/genres.md` 取该题材的**爽点库 + 结构模板 + 红线**。 |
| 23 | 2. 抽爽点:跑 `python3 scripts/pick_beats.py --genre <题材>`(真随机抽 8-12 个,避免套路雷同)。 |
| 24 | 3. 按该题材结构写约 500 字**纯叙事**大纲,融入抽到的爽点,遵守反套路 + 内容健康红线。 |
| 25 | 4. 输出大纲 + 列出本次用的爽点 + 逆袭/反转路径标注。 |
| 26 | 5. **暂停**:请用户确认大纲走向,改完再进下一阶段。 |
| 27 | |
| 28 | ### 阶段 ② 分集剧本 |
| 29 | |
| 30 | 把大纲扩成可拍剧本: |
| 31 | - 按节奏切场(每场一个地点+冲突单元),标注 **场景 / 人物 / 动作 / 台词**。 |
| 32 | - 台词口语化、短、有冲突感;旁白克制。 |
| 33 | - 黄金 3 秒原则:第一场就抛冲突/悬念。 |
| 34 | - 短剧分集可选:若用户要多集,每集结尾留扣。 |
| 35 | - **暂停**:用户确认剧本,再进分镜。 |
| 36 | |
| 37 | ### 阶段 ③ 分镜表(枢纽) |
| 38 | |
| 39 | 读 `references/storyboard.md`,产出**两份同源数据**: |
| 40 | 1. 给人看的**分镜表格**(镜号/时长/景别/运镜/画面/角色动作/台词/情绪)。 |
| 41 | 2. 给脚本用的 **`storyboard.json`**(存到项目目录),含全片统一 `style`、固定 `characters[].desc`、每镜 `image_prompt`。 |
| 42 | |
| 43 | 关键: |
| 44 | - **镜数由总时长定**:镜数 ≈ 总时长 ÷ 5(单镜默认 5s)。先按这个铺满镜数,再按剧情节奏微调。 |
| 45 | - **单镜时长用户可逐镜调**:分镜表每镜都有「时长」列,用户可指定某镜 5s/10s/15s。给某镜 10s/15s 时,按 5s 为单位拆成多个子镜(视频阶段每段 5s),图片阶段每个子镜出 1 张——所以加长某镜会增加该镜的图片数。拆完把总时长/总张数报给用户对一下。 |
| 46 | - `image_prompt` 只写画面,不写台词/镜号。 |
| 47 | - **落实画风**:把开工选定的画风预设(`references/styles.md` 里的 style 串)写进 `storyboard.json` 的 `style`;有参考图就填 `style_ref`。此处只做应用/微调,不重新问(开工已定)。 |
| 48 | - 先定全片 `style` 串和主角 `desc`(一致性命脉,见 storyboard.md 第六节)。 |
| 49 | - **暂停**:用户确认分镜 + 各镜时长 + 画风,再出图。 |
| 50 | |
| 51 | ### 阶段 ④ 批量出图 |
| 52 | |
| 53 | 画风和分镜定了后,跑脚本批量出关键帧: |
| 54 | |
| 55 | ```bash |
| 56 | python3 scripts/gen_images.py --storyboard <项目>/storyboard.json --outdir <项目> |
| 57 | ``` |
| 58 | - 每镜 1 张,存到 `<项目>/images/shot_NN.png`。 |
| 59 | - 脚本自动把 `style` + 角色 `desc` 拼进每张图的 prompt,保证画风/长相统一。 |
| 60 | - **建议先验主角脸**:先只出主角首次登场那 1-2 镜(`--only 1,2`),用户确认长相满意,再 `--only` 跑全量;不满意就调 `characters[].desc` 或换 `--seed` 重跑。 |
| 61 | - 想更稳的人物一致性:给主角选一张满意的图设为 `characters[].ref`(基准图),脚本会自动切到 `bl image edit` 带参考图模式。 |
| 62 | - 先 `--dry-run` 可只看命令不烧额度。 |
| 63 | - **暂停**:把 `images/` 的图按镜号给用户预览确认,满意后进入成片。 |
| 64 | |
| 65 | ### 阶段 ⑤ 图生视频(最终成片 · 💰 费钱,确认后再跑) |
| 66 | |
| 67 | 每张关键帧用 i2v 生成一段视频,再按镜号拼成成片。**这是真正的最终产物,但每段都要花钱。** |
| 68 | |
| 69 | 🚦 **花钱闸门——务必遵守**: |
| 70 | - **默认不自动实跑** `bl video generate`。先为每镜产出对应命令清单(填好 `--image`/运镜 prompt/时长),交给用户。 |
| 71 | - 用户**显式确认**要为哪些段付费后,再逐段生成(可先只跑 1 段试效果,满意再批量)。 |
| 72 | - 开发、调试、演示阶段一律**只产命令不实跑**,别替用户烧钱。 |
| 73 | |
| 74 | 每段命令(约 5s/段,10s 镜=2 段,与分镜的子镜对应): |
| 75 | ```bash |
| 76 | bl video generate --image <项目>/images/shot_01.png \ |
| 77 | --prompt "<该镜运镜与动作,如:缓慢推近,人物抬头>" \ |
| 78 | --ratio 9:16 --duration 5 --download <项目>/video/shot_01.mp4 |
| 79 | ``` |
| 80 | - 运镜 prompt 取分镜表的 `camera` + 动作。 |
| 81 | - 全部段生成后用 ffmpeg 按镜号拼接成片;要加字幕/转场/配乐可转交 `video-editor`(Remotion)skill。 |
| 82 | - **交付**:`<项目>/video/` 各段 mp4 + 拼接成片。 |
| 83 | |
| 84 | ## 项目目录结构 |
| 85 | |
| 86 | ``` |
| 87 | <项目名>/ |
| 88 | ├── outline.md # ① 大纲 |
| 89 | ├── script.md # ② 剧本 |
| 90 | ├── storyboard.md # ③ 分镜表(人看) |
| 91 | ├── storyboard.json # ③ 分镜数据(脚本用) |
| 92 | ├── images/shot_NN.png # ④ 关键帧 |
| 93 | └── video/shot_NN.mp4 # ⑤ 各段视频 + 拼接成片(💰 确认后才生成) |
| 94 | ``` |
| 95 | |
| 96 | ## 参考文件 |
| 97 | |
| 98 | - `references/genres.md` — 8 大题材的爽点库、结构模板、反套路/内容红线、题材选择表。 |
| 99 | - `references/styles.md` — 22 种画风预设 style 串(写实/动漫/3D-CG/插画/风格化 5 类,按题材选)+ 参考图模式用法。**画质头号变量,定画风时必读**。 |
| 100 | - `references/storyboard.md` — 分镜表格 + `storyboard.json` 结构、时长拆分规则、画面 prompt 写法、画风/角色一致性锚点。 |
| 101 | - `scripts/pick_beats.py` — 按题材真随机抽爽点。 |
| 102 | - `scripts/gen_images.py` — 读 storyboard.json 批量出图(文生图 / 带参考图编辑两种模式)。 |