AI 视频脚本
用途
把主题、故事、产品资料或知识点整理成可审阅、可生图、可配音、可合成的视频脚本。该 Skill 负责策划和交接,不代替图像生成、视频合成或公众号发布工具。
触发场景
- 需要生成短视频、故事视频、知识视频、产品介绍或口播视频脚本。
- 需要把长文本拆成镜头,并为每个镜头准备画面提示词、旁白和字幕。
- 需要把脚本交给
story-to-scenes、image-service、video-creator或wechat-publisher继续处理。 - 需要批量生成不同平台、时长或风格的脚本版本。
不因单独的图片生成、视频合成、字幕烧录或公众号发布请求触发本 Skill;这些请求交给对应的兄弟 Skill。
安全边界
- 只规划和整理内容,默认不调用外部服务、不发布、不写入凭证。
- 只使用相对路径和占位符,例如
projects/{project_id}/scenes/scene-01.png。 - 不写入个人姓名、个人路径、内部品牌、私有配置、Token、Cookie、AppSecret 或固定绝对路径。
- 不修改
story-to-scenes、image-service、video-creator、wechat-publisher的文件;交接只通过约定字段和相对产物路径完成。 - 未得到明确确认时,只输出草稿和待确认项,不执行生图、合成或发布。
输入契约
先收集下表字段。缺失非关键字段时使用默认值,并在结果中记录默认值;缺失主题、用途或时长时先提出一个最小澄清问题。
| 字段 | 必填 | 默认值或约束 |
|---|---|---|
topic |
是 | 主题、故事、产品或知识点 |
purpose |
是 | 共鸣、科普、转化、品牌认知或其他目标 |
audience |
否 | 普通观众 |
platform |
否 | 通用视频;短视频平台通常使用竖屏 |
duration_sec |
是 | 建议 15–180 秒;未提供时询问,不擅自猜测 |
aspect_ratio |
否 | 通用默认 16:9;明确短视频平台时采用 9:16 |
style |
否 | 清晰、节奏紧凑、视觉统一 |
source_material |
否 | 公开文本、要点、产品资料或故事梗概 |
cta |
否 | 无;仅在确有目标时添加行动号召 |
constraints |
否 | 敏感词、版权、品牌用语、画面禁用项等 |
标准输出契约
每次交付都生成一份人类可读脚本,并按需生成结构化交接数据。推荐的脚本交付包如下:
projects/{project_id}/
├── script.md # 审阅版脚本,必需
├── script.yaml # 结构化脚本,需下游自动化时提供
├── prompts/ # 每个镜头的中文提示词,可选
│ ├── scene-01.txt
│ └── scene-02.txt
└── handoff/ # 下游交接清单,可选
├── scene-manifest.yaml
├── image-manifest.yaml
├── narration-plan.yaml
└── wechat-article.md
项目级字段
schema_version: "1.0"
project:
id: "{project_id}"
title: "{title}"
topic: "{topic}"
purpose: "{purpose}"
audience: "{audience}"
platform: "{platform}"
duration_sec: 30
aspect_ratio: "16:9"
style: "{style}"
cta: "{cta_or_empty}"
status: draft
global_visual:
style_prefix_zh: "{全片统一风格前缀}"
palette: "{色彩基调}"
continuity_rules:
- "{角色、道具、场景或镜头连续性规则}"
negative_prompt_zh: "无水印、无随机文字、无多格拼接"
scenes: []
镜头级字段
每个镜头至少填写以下字段;时码在未完成 TTS 前只能标记为估算:
- id: "scene-01"
title: "{镜头标题}"
purpose: "hook"
timecode:
start_sec_estimate: 0
end_sec_estimate: 4
duration_sec_estimate: 4
final_duration_sec: null
duration_source: "pending_tts"
visual:
description_zh: "主体、动作、环境、细节、构图和光线"
shot_type: "特写"
camera_motion: "缓慢推进"
prompt_zh: "{可直接交给图像 Skill 的中文提示词}"
negative_prompt_zh: "{中文排除词}"
reference_assets: []
output_path: "projects/{project_id}/scenes/scene-01.png"
audio:
narration: "{旁白}"
subtitle: "{屏幕字幕}"
emotion: "{语气和情绪}"
sound_design: "{环境声或音效;没有则留空}"
continuity:
characters: []
locations: []
props: []
handoff:
story_to_scenes: false
image_service: true
video_creator: true
wechat_publisher: false
硬性要求:最终交给 video-creator 的 final_duration_sec 必须来自 TTS 生成的 narration.json 时间戳,禁止使用估算值、平均分配或 duration: auto。
标准工作流
1. 解析需求
提取主题、目的、受众、平台、时长、比例、风格、资料和行动号召。将不确定项列为“待确认”,不要把猜测写成事实。
2. 设计内容结构
按视频目的选择结构:
- 转化类:问题钩子 → 产品或方案 → 证据 → 行动号召。
- 故事类:设定 → 冲突 → 转折 → 结果或余韵。
- 科普类:反常识钩子 → 核心解释 → 示例 → 结论。
- 口播类:一句结论 → 三个要点 → 一句收束。
为每个镜头标注 purpose,避免只有画面描述而没有叙事功能。
3. 拆分镜头
根据语义变化、动作变化、信息点和节奏切镜,不按字数机械平均。每个镜头必须同时说明:
- 画面主体和动作;
- 环境、时间、光线和色彩;
- 景别、构图和镜头运动;
- 旁白、字幕和情绪;
- 角色、道具、地点的连续性;
- 中文生图提示词、排除词和相对输出路径。
优先保持同一项目的风格前缀、比例、色彩和角色描述一致。画面文字只有在脚本明确需要时才加入;默认排除水印、随机字母、乱码和多格拼接。
4. 编写旁白与字幕
- 旁白使用口语化短句,先保证信息完整,再压缩节奏。
- 字幕与旁白保持语义一致,单条字幕只承载一个信息点。
- 不把尚未确认的事实、价格、效果或承诺写成确定结论。
- 将旁白拆成可供 TTS 返回时间戳的句段,并在
narration-plan.yaml中保持句段与镜头映射。
5. 执行交接前检查
完成以下检查后再输出交接包:
- 所有镜头都有唯一
id,编号连续,顺序与脚本一致。 - 时长估算总和与目标时长一致;最终时长仍标记为
pending_tts。 - 每条
prompt_zh都写明主体、动作、环境、细节、风格和色彩。 - 所有画面使用同一比例;存在参考图时记录相对路径。
- 旁白、字幕、画面和音效没有互相矛盾。
- 输出路径全部为相对路径或占位符。
- 删除个人信息、内部信息、凭证和私有配置。
与现有 Skill 的交接契约
本 Skill 只提供内容与字段,不复制或修改下游 Skill。按需求选择下表中的一条或多条交接路径。
| 下游 Skill | 触发条件 | 交给它的最小输入 | 它负责的结果 | 本 Skill 的边界 |
|---|---|---|---|---|
story-to-scenes |
输入是故事、课程、绘本或长文本,需要角色和场景一致性 | scene-manifest.yaml:角色、地点、场景描述、镜头类型、风格前缀、比例 |
角色胚子、场景图和图集索引 | 不代替角色锁定、场景图生成或断点续传 |
image-service |
需要生成或编辑镜头画面 | image-manifest.yaml:prompt_zh、排除词、比例、参考图相对路径、输出相对路径 |
图片或编辑后的图片 | 不读取私有配置,不直接调用图像 API |
video-creator |
旁白已确认,需要 TTS、字幕和视频合成 | narration-plan.yaml、图片清单、比例、BGM/片尾偏好 |
narration.mp3、narration.json、字幕、校验后的配置和视频 |
不伪造最终时长;TTS 后必须回填时间戳并通过对齐校验 |
wechat-publisher |
明确要求把脚本改成公众号草稿或发布素材 | wechat-article.md:标题、摘要、正文、相对图片路径、公开链接 |
排版预览或公众号草稿 | 不在脚本阶段注入凭证,不默认发布 |
story-to-scenes 交接字段
project_id: "{project_id}"
source_type: story
aspect_ratio: "16:9"
style_prefix_zh: "{统一风格}"
characters:
- id: "character-01"
name: "{角色名}"
description_zh: "{可复用外貌描述}"
locations:
- id: "location-01"
name: "{地点名}"
description_zh: "{环境描述}"
scenes:
- id: "scene-01"
description_zh: "{场景动作和叙事目的}"
shot_type: "中景"
mood: "{情绪}"
image-service 交接字段
project_id: "{project_id}"
aspect_ratio: "16:9"
style_prefix_zh: "{统一风格}"
items:
- scene_id: "scene-01"
mode: text_to_image
prompt_zh: "{中文提示词}"
negative_prompt_zh: "{中文排除词}"
reference_assets: []
output_path: "projects/{project_id}/scenes/scene-01.png"
video-creator 交接字段
project_id: "{project_id}"
aspect_ratio: "16:9"
narration:
text: "{完整旁白}"
segments:
- id: "narration-01"
scene_ids: ["scene-01"]
text: "{句段旁白}"
images:
- scene_id: "scene-01"
file: "projects/{project_id}/scenes/scene-01.png"
duration_source: "narration.json"
final_duration_sec: null
subtitles_path: "projects/{project_id}/subtitles.srt"
video_config_path: "projects/{project_id}/video_config.yaml"
在 TTS 完成后,将 narration.json 的句段起止时间映射回 scene_ids,计算每张图的最终时长,运行下游的对齐校验,再允许合成。
wechat-publisher 交接字段
只有在明确要求时生成:
---
title: {公开标题}
cover: ./assets/cover.jpg
---
# {公开标题}
> {一句话摘要}
## 视频看点
{从脚本整理出的公开内容}

## 观看与行动
{公开链接或行动号召}
封面和配图必须使用相对路径;草稿提交前由 wechat-publisher 完成内容、安全和权限检查。
质量检查单
内容
- 开头在目标平台的首个节奏点提出明确问题、冲突或收益。
- 每个镜头都推进信息、情绪或动作,删除无功能的空镜。
- 结尾与
purpose一致;没有 CTA 时不强行添加 CTA。
视觉
- 同一项目统一比例、风格前缀、色彩和角色描述。
- 提示词包含主体、动作、环境、细节、风格和色彩。
- 默认排除水印、随机文字、乱码、多格拼接和无关人物。
- 故事类项目先交给
story-to-scenes处理角色/场景一致性,再交给image-service生成具体画面。
音画
- 旁白句段可被 TTS 清晰切分。
- 字幕与旁白语义一致、长度可读。
-
final_duration_sec在 TTS 前为空,TTS 后来自narration.json。 - 视频合成前已经运行
video-creator的音画对齐校验。
脱敏与交付
- 没有个人姓名、个人路径、内部品牌、私有配置或凭证。
- 所有资源路径为相对路径或占位符。
- 仅在明确要求时生成
wechat-article.md,且不默认提交或发布。
可复用资源
templates/video-script.md:标准中文脚本模板,包含项目字段、镜头字段和交接字段。examples/product-launch.md:一个脱敏的 30 秒产品介绍示例,用于检查字段是否完整。