auto-short-video · git:20260828.21694dd · 2026-08-28 · sha256 b5d4b4dd62d9f0de
auto-short-video git:20260828.21694ddA
Immutable. This exact content is served forever at /api/v1/blob/b5d4b4dd62d9f0de.
---
name: auto-short-video
description: "一句话主题 → 成品短视频:自动串联 文案→配图/AI视频→配音→字幕→BGM→合成,把 Easel 制作层零件编排成一条'一键出片'流水线。**单条视频、口播/资讯向,画面默认逐句配图 + Ken Burns 缓动,需要动态时才逐段图生视频**。当用户说 一键生成视频、自动做短视频、主题生成视频、帮我做条视频、口播视频一条龙、自动出片、短视频一键生成 时使用。**有剧情/角色/对白/反转/多集的短剧改用 short-drama(每镜强制图生视频、不用静态图冒充);只写脚本用 video-script;只生成单个片段用 ai-video-gen。**"
layer: produce
---
# 一键短视频(端到端编排)
> 输入一个主题,自动产出一条短视频。本 SKILL 是**编排层**:把已有制作零件串成流水线——
> 文案(video-script) → 逐句配图(ai-image-gen)或片段(ai-video-gen) → 配音(tts-voiceover) →
> 字幕(auto-subtitle) → BGM(ai-music) → **合成(scripts/assemble.py)**。
> 沉淀自 Pixelle-Video / MoneyPrinterTurbo 的自动短视频引擎思路。
## 输入
- 主题 / 文案(必填)
- 可选:目标时长、风格、是否要配音/字幕/BGM、配图用 AI 生图还是用户素材
- **画幅确认硬门**:用户或上游任务未明确横版/竖版(或 16:9/9:16/具体分辨率)时,制作/付费调用前必须追问并等确认;不得从平台、Profile 或默认值静默推断,已明确则不重复问
## 输出
成品短视频写入 `outputs/主题名/final.mp4`;分镜图、配音、字幕和 storyboard 写入 `outputs/主题名/assets/`。
## 执行步骤(按需裁剪,缺 API key 的环节自动降级或询问)
1. **写脚本分镜**:用 [video-script](../video-script/SKILL.md) 把主题写成口播文案,拆成 N 句(每句一个分镜),每句配一个画面描述。
2. **生成画面**(每个分镜一张图/一段片):
- 有图像 API key → [ai-image-gen](../ai-image-gen/SKILL.md) 逐句 text2img(按已确认画幅)
- 要动态 → [ai-video-gen](../ai-video-gen/SKILL.md) text2video/image2video
- 用户自带素材 → 用 [image-editing](../image-editing/SKILL.md) `pad` 到已确认画幅
- 都没有 → 按已确认画幅选图卡(竖版用 card-xiaohongshu/poster-hero,横版用 card-quote)再 pad,避免画幅错配。
3. **配音**:[tts-voiceover](../tts-voiceover/SKILL.md) 把文案合成口播(同时出 SRT)。**配了 `VOICE_PROVIDER` 默认走闭源好嗓子**(有情感、像真人),没 key 才退 edge(机械)——想要口播不"生硬"务必配闭源 key。不需要配音才跳过。
4. **字幕**:用 TTS 附带的 SRT,或对配音跑 [auto-subtitle](../auto-subtitle/SKILL.md);也可让 assemble 用各分镜 caption 自动生成。
5. **BGM**:[ai-music](../ai-music/SKILL.md) 生成,或用用户提供的音乐。可选。
6. **合成成片**:把上面的素材写成 storyboard JSON,调合成器:
```bash
python skills/openclaw/auto-short-video/scripts/assemble.py assemble \
--storyboard outputs/主题名/assets/storyboard.json \
-o outputs/主题名/final.mp4
```
storyboard 结构(图/片二选一,narration/bgm/subtitle 可选,缺 duration 时按配音均分):
```json
{
"size": "<已确认尺寸,如1080x1920或1920x1080>",
"image_motion": "ken-burns",
"shots": [
{"image": "outputs/主题名/assets/shot1.png", "duration": 3, "caption": "第一句", "motion": "static"},
{"video": "outputs/主题名/assets/clip2.mp4", "caption": "第二句"}
],
"narration": "outputs/主题名/assets/voice.mp3",
"bgm": "outputs/主题名/assets/bgm.mp3",
"subtitle": "outputs/主题名/assets/voice.srt"
}
```
`image_motion` 设整条图片默认运动,单镜 `motion` 可覆写:照片用 `ken-burns`,含文字的 slide/图表/界面必须用
`static`(等比缩放 + 补边,不裁切、不平移)。
合成器自动做:按 `image_motion` 生成静帧或 Ken Burns、补边到画幅、拼接、配音+BGM 混音(BGM 自动压低)、烧录字幕。
7. **交付**:产出 final.mp4,附一句制作说明(用了哪些环节、哪些降级了)。
## 编排原则
- **零件可缺**:缺图像/视频/TTS API key 的环节自动降级(图卡兜底 / 跳过配音),不阻断整体,并如实告知用户降级了什么。
- **先出 Plan**:涉及多个付费 API(生图/生视频/生乐)时,先向用户说明将调用哪些、大致耗时/花费,确认后再跑。
- **中间产物留档**:分镜图、配音、字幕和 storyboard 都写进 `outputs/主题名/assets/`,方便单独替换后重新合成。
## Profile 感知
- 有 Profile:从 `style.md` 取调性/视觉风格贯穿文案与配图 prompt;`platforms.md` 只用于给出画幅/时长建议,画幅仍须确认;`preferences.md` 红线过滤。
- 无 Profile:先确认横版/竖版,再用通用口播风格。