OYYH-Apple

video-storyboard-generator

生成专业讲解视频分镜脚本,支持头脑风暴需求澄清。用于创建带有详细运镜指导、画面设计和旁白的时间轴分镜文档。当用户需要制作教学/讲解视频、概念演示视频,或需要Remotion视频分镜脚本时使用此skill。

OYYH-Apple 35 5 Updated 3mo ago
GitHub

Install

npx skillscat add oyyh-apple/video-storyboard-generator

Install via the SkillsCat registry.

SKILL.md

Video Storyboard Generator

通过头脑风暴与用户共同确定视频需求,然后生成结构化的讲解视频分镜脚本。

核心原则

段落是主题驱动的,不是标准化的:分镜的段落结构完全取决于视频主题和内容需求。不存在"标准5段式",每个视频的段落规划都应根据主题特点定制。

需求需要共同探索:用户可能对视频的具体表现形式不够清晰,需要通过头脑风暴一起确定时长、风格、主角、运镜风格等关键要素。

工作流程

阶段1:头脑风暴 - 需求澄清

当用户提出视频分镜需求时,首先进行头脑风暴,通过对话澄清以下要素:

必需明确的信息:

  1. 主题内容 - 视频要讲解的核心概念/技术/产品是什么?
  2. 目标受众 - 给谁看?(初学者/专业人士/普通大众)
  3. 核心信息 - 观众看完后应该记住什么?

需要共同决策的要素:
4. 视频时长 - 根据内容复杂度决定(30秒/1分钟/3分钟/5分钟)
5. 视觉风格 -

  • 科技感(深蓝+粒子+神经网络)
  • 活泼轻松(明亮色彩+卡通元素)
  • 严肃专业(简洁+数据可视化)
  • 其他自定义风格
  1. 主角/吉祥物 - 是否需要拟人化角色?(机器人/大脑/抽象图形/无角色)
  2. 旁白风格 -
    • 专业权威型
    • 风趣调侃型
    • 亲和教学型
    • 无旁白(纯视觉)
  3. 运镜偏好 -
    • 快速动感(适合技术演示)
    • 缓慢优雅(适合概念讲解)
    • 混合节奏

澄清示例对话:

  • "这个主题是技术概念还是产品介绍?"
  • "目标观众是初学者还是专业人士?"
  • "你希望视频风格是活泼轻松还是严肃专业?"
  • "需要设计一个吉祥物角色吗?"
  • "核心信息是什么?观众看完后应该记住什么?"

阶段2:段落结构设计

根据主题特点和头脑风暴结果,设计段落结构。段落类型可能包括(但不限于):

常见段落类型(根据主题选择):

  • 开场引入(Hook)
  • 问题/痛点陈述
  • 核心概念解释
  • 原理/机制展示
  • 数据/案例展示
  • 对比分析
  • 实操演示
  • 架构/流程展示
  • 优势总结
  • 应用场景
  • 结尾号召(CTA)

设计原则:

  • 段落数量根据时长和内容复杂度决定(通常3-8个段落)
  • 每个段落服务于一个清晰的叙事目标
  • 段落间有逻辑递进关系

阶段3:生成分镜脚本

基于确定的段落结构,生成包含以下要素的分镜脚本:

总体规格

  • 视频标题和版本信息
  • 总时长(秒数 + 帧数)
  • 背景风格描述
  • 视觉风格定义
  • 旁白风格说明
  • 主角/吉祥物设定

分镜段落

每个段落包含:

  1. 段落目标 - 该段落要传达什么信息
  2. 时间区间 - 开始和结束时间(秒)
  3. 画面顺序(镜头序列) - 段落内的多个镜头切换
    • 每个镜头包含:
      • 镜头编号(shot_id)
      • 时间范围(time_range)
      • 镜头类型(shot_type)
      • 运镜描述(camera)
      • 画面布局(layout)
      • 视觉元素(visual)
      • 过渡方式(transition)
  4. 旁白内容 - 具体的解说词

OpenCode执行提示词

自动生成可在OpenCode中直接使用的提示词,用于执行视频制作:

提示词格式:

remotion,创建一个严格{X}秒(durationInFrames: {Y})的{风格}视频,总时长控制在{Z}分钟以内。

必须优化:
- 画面紧凑:元素满屏分布,多用grid/flex多列布局,文字/图标放大填充80-90%屏幕,减少任何留白。
- 动画流畅自然:所有过渡用spring()高系数弹簧 + interpolate多关键帧 + easeInOut + stagger子元素延迟,避免任何生硬线性或突然出现。
- 运镜专业动态:严格按分镜运镜描述实现({运镜列表}),节奏{节奏描述}。

背景{背景描述},主色{主色},代码高亮专业,{视觉风格描述},{背景音乐},{旁白描述},自动生成旁白同步字幕。

严格按以下分镜实现,分镜细节:[完整的分镜脚本内容,去除换行符压缩为长文本]

阶段4:文件保存

确认保存位置:
在生成分镜文档前,必须确认文件保存位置。

默认位置: 用户当前项目的 /docs 文件夹

  • 如果 /docs 文件夹不存在,询问是否创建
  • 提供其他可选位置供用户选择

文件名格式: {标题}_storyboard.md

示例对话:

  • "分镜脚本将保存在您项目的/docs文件夹中,文件名为'{标题}_storyboard.md',确认吗?"
  • "您希望将分镜文件保存在其他位置吗?"

运镜类型参考

参考 references/camera-movements.md 获取完整运镜类型和技术参数。

常用运镜类型:

  • 推近 (Dolly In) - 强调主体,适合开场和重点
  • 拉远 (Dolly Out) - 展示全景,适合过渡和总结
  • 环绕 (Orbiting) - 360度展示,适合3D结构
  • 跟拍 (Tracking) - 跟随运动,适合流程展示
  • 摇移 (Pan) - 水平移动,适合宽画面展示
  • 特写 (Close-up) - 强调细节,适合数据展示

参考资产

  • assets/storyboard-template.md - 分镜模板文件(变量化模板)
  • references/camera-movements.md - 运镜类型参考手册
  • references/story-patterns.md - 常见叙事模式参考

最佳实践

头脑风暴阶段

  • 不要假设用户知道他们想要什么
  • 提供选择而非开放式问题("A风格还是B风格?"比"你喜欢什么风格?"更好)
  • 根据主题特点给出建议(技术主题推荐科技感,产品推荐活泼风格)

段落设计阶段

  • 开场前3秒必须抓住注意力
  • 每个段落时长控制在8-20秒
  • 复杂概念拆分成多个短段落
  • 保持段落间的视觉和叙事连贯性

画面顺序设计

  • 开场段落(建议3个镜头):快速切入 → 主体展示 → 细节特写
  • 核心段落(建议2-4个镜头):环绕展示 → 跟随流程 → 特写强调
  • 结尾段落(建议2个镜头):汇聚元素 → 拉远全景
  • 镜头时长:单个镜头通常3-6秒,过渡0.5-1秒

脚本生成阶段

  • 运镜描述要具体(速度、方向、缓动函数)
  • 画面布局强调紧凑(80-90%占屏)
  • 旁白与视觉同步,避免"看字听音"
  • 技术提示词包含所有视觉规范

输出格式

1. 分镜文档 (.md)

生成的分镜脚本包含以下章节:

# [主题] 讲解视频分镜脚本

## 视频总体规格
- 时长:X秒(Y帧)
- 背景:[背景风格]
- 风格:[视觉风格]
- 主角:[主角描述]
- 旁白:[旁白风格]

## 分镜段落设计
### 段落1:开场引入(0-12秒)

**段落目标**:建立兴趣,介绍主题背景

**画面顺序**:
#### 镜头1:推近 (Dolly In)(0-3秒)
- **运镜**:从全黑快速 spring dolly in,主角从底部升起
- **布局**:主角占屏40%,标题满幅覆盖
- **视觉**:标题文字从四角stagger飞入汇聚
- **过渡**:无缝过渡

#### 镜头2:环绕 (Orbiting)(3-12秒)
- **运镜**:360°环绕展示主角
- **布局**:主角居中,周围环绕关键信息气泡
- **视觉**:主角表情变化,背景粒子动态流动
- **过渡**:平滑过渡

**旁白**:"大家好!今天介绍..."

## 技术实现提示词
[技术规范]

## OpenCode执行提示词(直接复制使用)
[可直接在OpenCode中使用的提示词]

## 文件保存位置
建议保存位置:./docs/[标题]_storyboard.md

2. OpenCode提示词格式

生成的OpenCode提示词为单行长文本格式,可直接复制到OpenCode中执行:

remotion,创建一个严格{X}秒(durationInFrames: {Y})的{风格}视频...

必须优化:
- 画面紧凑:...
- 动画流畅自然:...
- 运镜专业动态:...

背景{背景}...自动生成旁白同步字幕。

严格按以下分镜实现,分镜细节:段落1(时间)目标-...镜头序列-镜头1(0-3秒)-推近(Dolly In),镜头2(3-12秒)-环绕(Orbiting);旁白-... | 段落2(时间)目标-...镜头序列-镜头1(12-16秒)-推近(Dolly In),镜头2(16-24秒)-环绕(Orbiting);旁白-... | ...

提示词特点:

  • 分镜细节被压缩为单行长文本(去除换行符,用" | "分隔各段落)
  • 每个段落包含:目标、镜头序列(多个镜头)、旁白
  • 镜头序列描述每个镜头的时间范围和类型
  • 可直接复制粘贴到OpenCode聊天框中使用

3. 文件保存

必须确认保存位置

默认保存位置:./docs/[标题]_storyboard.md

对话示例:

✅ 分镜脚本已生成完毕!

📄 建议保存位置:./docs/microGPT_storyboard.md
   
❓ 是否确认保存到该位置?
   - 输入 "确认" 使用默认位置
   - 输入其他路径自定义保存位置
   - 例如:./docs/video/microGPT.md

注意事项:

  • 如果 /docs 文件夹不存在,询问是否自动创建
  • 文件名自动处理特殊字符(替换为下划线)
  • 建议用户保留生成的 .md 文件作为参考文档

CLI 工具使用

除了通过 Claude 对话生成分镜脚本,还提供了命令行工具 cli.py,支持更灵活的使用方式。

前置要求

cd scripts
pip install -r requirements.txt

交互式模式(推荐新手)

python cli.py interactive

跟随 5 步向导:

  1. 基本信息(标题、时长)
  2. 视频类型(4种预置)
  3. 视觉设置(角色设置)
  4. 输出格式(Markdown/JSON/YAML)
  5. 确认生成

命令行模式(推荐高级用户)

# 基本用法
python cli.py generate --title "视频标题" --duration 60

# 指定视频类型
python cli.py generate --title "技术讲解" --video-type tech_tutorial --duration 90

# 导出 JSON 格式
python cli.py generate --title "产品介绍" --format json --duration 30

# 指定输出路径
python cli.py generate --title "教程" --output ./custom/path.md

批量生成

创建 batch.yaml 配置文件:

- title: "视频1"
  duration: 60
  video_type: "tech_tutorial"
- title: "视频2"
  duration: 30
  video_type: "product_promo"

运行批量生成:

python cli.py batch batch.yaml

格式转换

将已有 Markdown 分镜转换为 JSON/YAML:

# 转换为 JSON
python cli.py convert --input ./docs/examle.md --format json

# 转换为 YAML
python cli.py convert --input ./docs/example.md --format yaml --output ./output/example.yaml

参数参考

generate 命令参数

参数 简写 说明 默认值
--title -t 视频标题(必填) -
--duration -d 视频时长(秒) 60
--video-type -v 视频类型 -
--config -c 配置文件路径 -
--output -o 输出文件路径 ./docs/
--format -f 输出格式 markdown

视频类型

  • tech_tutorial - 技术教程
  • product_promo - 产品推广
  • story_telling - 故事讲述
  • data_insight - 数据洞察

配置文件

默认配置

位置:config/default-config.yaml

设置默认值:

  • 视频 FPS、默认时长
  • 默认视觉风格
  • 输出目录、文件名模式
  • 镜头序列设置

视频类型配置

位置:config/video-types.yaml

4 种预置视频类型的完整配置模板。


完整输出示例

头脑风暴或 CLI 完成后,生成的内容包含:

  1. 结构化的分镜文档 - 便于人类阅读和参考
  2. OpenCode执行提示词 - 可直接用于执行视频制作
  3. 保存位置确认 - 确保文档妥善保存

📌 Claude Skill 配置说明

如何让 Claude 加载本 Skill

本 skill 可以通过以下方式被 Claude 加载:

方法 1: 通过 Claude.config 配置(推荐)

如果你使用的是支持 skill 功能的 Claude 环境:

  1. 将本 skill 文件(SKILL.md)放置在 Claude 可访问的目录中
  2. 在配置中添加 skill 路径
  3. 重启 Claude 或刷新配置

方法 2: 直接粘贴到对话中

在 Claude 对话中直接输入:

@video-storyboard-generator

然后提出你的视频分镜需求即可。

方法 3: 作为参考文档参考

即使不作为 skill 加载,也可以:

  1. 告诉 Claude:"请参考 video-storyboard-generator skill 的工作流来帮我生成视频分镜"
  2. 或将 SKILL.md 的部分内容复制粘贴给 Claude

Skill 自动触发场景

本 skill 会在以下情况被触发:

  • 用户提到"视频分镜"、"storyboard"、"讲解视频"等关键词
  • 需要制作 Remotion 视频分镜脚本
  • 需要设计视频叙事结构
  • 需要规划镜头运镜

💡 和其他 Skill 的配合

本 skill 可以与以下 skill 配合使用:

  • remotion-best-practices - 生成 Remotion 视频代码时参考最佳实践
  • video-editing - 视频剪辑建议(如果有)
  • script-writing - 剧本写作技巧(如果有)

🔄 使用场景示例

场景 1:技术概念讲解

用户:我想做一个 Transformer 注意力机制的分镜脚本

Claude(自动触发本 skill):

  1. 头脑风暴 → 确认:技术教程、60秒、科技风、AI机器人助手
  2. 段落设计 → 5个段落,每个3-4个镜头
  3. 生成带镜头序列的分镜脚本
  4. 用户可以要求调整某个镜头的运镜或时长

场景 2:产品发布视频

用户:帮我设计一个产品的发布视频分镜,30秒

Claude:

  1. 头脑风暴 → 确认:产品推广、30秒、活泼风格、产品吉祥物
  2. 段落设计 → 3个段落(开场/核心/结尾),快速节奏
  3. 生成分镜脚本,每个段落2-3个镜头,强调快速切换

场景 3:教学视频脚本

用户:我需要一个3分钟的 AI 基础教学视频

Claude:

  1. 头脑风暴 → 确认:故事讲述、180秒、温暖柔和风格、小导师角色
  2. 段落设计 → 7个段落,逐步深入讲解
  3. 生成长分镜脚本,每个段落2-3个镜头

⚠️ 重要提示

必经步骤:头脑风暴

本 skill 的核心优势是头脑风暴引导,不要跳过!

❌ 不要这样:

用户:生成一个60秒的分镜脚本
Claude:[直接给出模板化的分镜]

✅ 应该这样:

用户:生成一个60秒的技术讲解分镜
Claude:好的!在生成前,我想先确认一下...

(Claude 会引导你:主题、受众、风格、时长、角色、运镜...)

[头脑风暴完成后,再生成定制化的分镜脚本]

镜头序列的重要性

从 v2.0.0 开始,画面顺序(镜头序列)是核心功能:

  • 每个段落通常包含 2-4 个镜头
  • 每个镜头独立指定:
    • 时间范围(如 "0-3秒")
    • 镜头类型(推近/环绕/特写等)
    • 运镜描述
    • 画面布局
    • 视觉元素
    • 过渡方式

优势:

  • 精确控制每个镜头的时长
  • 丰富视觉表达
  • 明确运镜规划

完整输出示例

头脑风暴或 CLI 完成后,生成的内容包含:

  1. 结构化的分镜文档 - 便于人类阅读和参考
  2. OpenCode执行提示词 - 可直接用于执行视频制作
  3. 保存位置确认 - 确保文档妥善保存