| name | video-replication-sop-cy |
| description | 视频复刻生产 SOP,基于参考视频按固定 7 步流程(Step 0-6)复刻出完整分镜包。 当用户说"视频复刻"、"复刻视频"、"拉片"、"视频分镜"、"复刻SOP"、 "视频复刻SOP"、"复刻这个视频"、"帮我拉片"、"分镜复刻"时触发。 当用户给出一个视频链接并希望将其拆解为可独立生产的 10 秒分镜段时, 也应该触发此技能。此技能覆盖从拉片到分镜图生成的完整流程, 不包含配音/BGM/合成等后期步骤。 |
| allowed-tools | Bash, Read, Write, Agent, Glob, Grep |
| metadata | {"clawdbot":{"emoji":"🎬"}} |
视频复刻生产 SOP
基于参考视频稳定复刻,输出一段段固定 10 秒的分镜,用于 AI 生成分镜图片和对应视频。
核心原则
- Gemini CLI 提取视频内容,本 SOP 定义完整生产流程 — 调用 Gemini CLI 直接看视频获取详细内容,再按本技能定义的 Step 0-6 流程输出生产级分镜脚本
- 角色/风格/场景一致 — 所有产出必须贴合原视频视觉风格
- 每段可独立生产 — 分镜脚本每个时间片都是一条完整的 AI 生成 prompt,拿出来就能直接用
总流程(固定顺序,不能跳步)
Step 0|环境检查与准备
→ Step 1|下载视频 + Gemini 全量分析
→ Step 2|角色卡文字版(基于 Gemini 分析,用户确认锁定)
→ Step 3|分镜脚本(核心产出,每个时间片 = AI 生成 prompt)
→ Step 4|角色卡图片版
→ Step 5|分镜图生成
→ Step 6|一致性质检
每一步完成后告知用户当前进度,等待确认后再进入下一步。
Step 0|环境检查与准备
在开始之前,检查所有必需工具是否已安装,缺少的自动安装。
0.1 工具检查与安装
逐个检查以下工具,未安装的提示用户并执行安装:
| 工具 | 用途 | 检查命令 | 安装命令 |
|---|
| yt-dlp | 视频下载 | which yt-dlp | brew install yt-dlp 或 pip install yt-dlp |
| ffmpeg | 截帧 / 拼联系图 | which ffmpeg | brew install ffmpeg |
| whisper | 语音转写(ASR) | which whisper | pip install openai-whisper |
| gemini | 视频内容理解 | which gemini | npm install -g @google/gemini-cli |
for tool in yt-dlp ffmpeg whisper gemini; do
if command -v "$tool" &>/dev/null; then
echo "✅ $tool 已安装: $(command -v "$tool")"
else
echo "❌ $tool 未安装"
fi
done
如果有工具未安装,告知用户缺哪些,并询问是否自动安装。
0.2 API Key 配置
Gemini CLI 需要 API Key 才能运行。检查是否已配置:
if [ -n "$GEMINI_API_KEY" ]; then
echo "✅ GEMINI_API_KEY 已配置"
else
echo "❌ GEMINI_API_KEY 未配置"
echo "请设置: export GEMINI_API_KEY=你的密钥"
echo "获取地址: https://aistudio.google.com/apikey"
fi
如果未配置,引导用户获取并设置 API Key,设置完成后再继续。
0.3 工作目录
在当前目录下创建项目文件夹,所有产出文件统一放在这里:
mkdir -p ./video-replication && cd ./video-replication
所有工具就绪、API Key 配置完成后,告知用户环境准备完毕,进入 Step 1。
Step 1|下载视频 + Gemini 全量分析
这一步完成所有素材提取和内容分析,后续步骤全部基于这里的输出。
1.1 下载视频
yt-dlp -o "./video.mp4" "视频链接"
1.2 Gemini 视频分析(核心)
用 Gemini CLI 直接分析视频文件,一次性提取所有内容:
gemini "$(cat <<'PROMPT'
你是一名专业分镜师,需要把视频画面描述到画师可以直接画出来的程度。
请对这个视频进行完整详细的分析,输出以下所有内容:
## 一、全局画面风格
- 画风类型:(3D动画 / 2D动画 / 写实 / 半写实 / 水彩 / 赛博朋克 等)
- 色调倾向:(冷色调 / 暖色调 / 高饱和 / 低饱和 / 偏青 / 偏橙 等)
- 光线特征:(自然光 / 室内暖光 / 顶光 / 侧光 / 逆光 / 阴天漫射 等)
- 画面质感:(细腻写实 / 卡通渲染 / 油画质感 / 胶片颗粒 等)
- 整体氛围:(古风 / 现代 / 奇幻 / 日常 / 末日 等)
- 画面比例:(16:9 / 9:16 / 4:3 / 1:1 / 2.35:1 等,基于视频实际画面判断)
- 参考关键词(英文,5-8个,可直接用于AI图片生成)
## 二、整体剧情
- 故事梗概:谁、在哪里、发生了什么、结果怎样(用具体画面描述)
- 叙事结构:开端/发展/高潮/结尾分别在哪个时间段
- 反转点:剧情走向变化的关键时刻
- 关键视觉元素:贯穿全片的重要道具、动作、场景
## 三、角色列表
为视频中出现的每个角色输出完整描述:
- 称呼/身份
- 性别、民族、年龄感
- 脸型、体型、气质
- 发型(长度、颜色、样式)
- 服装(材质、颜色、款式、磨损程度)
- 在剧情中的作用
- 情绪基调
## 四、逐段详细画面分析(每10秒一段)
将视频按每10秒切分为一段,对每一段输出以下内容。
⚠️ 这是最重要的部分,必须极其详细,让没看过视频的人读完能在脑中完整还原画面。
每段格式:
### S01(0:00-0:10)
按画面变化切分时间片(不固定时长),每个时间片用一段**连贯的叙事文字**描述画面,台词直接融入动作和剧情中,不要单独列出。
示例写法:
> 0-3.5s:男主(东亚男性,约25岁,短发约3cm,灰色粗布棉袄)蹲在雪地上,右手前伸持烤鸭(棕褐油亮,约30cm长)递向白狐(纯白皮毛,小型犬体型)。白狐低头咬住鸭腿。两人相距约半臂。无台词,环境音为风声。场景:雪地树林,白雪覆盖。镜头:中近景固定。光线:冷蓝灰漫射自然光。
>
> 3.5-7s:白衣女性(白色及踝长裙,黑色长发至腰,约20出头)从院门走入,目光直视男主方向,嘴型张开说出"你怎么又在这?",眉头微皱、步速偏快。男主站起转身面向她,双手自然下垂。两人相距约2米。场景:土墙院落。镜头:中景推至中近景。光线:自然侧光偏暖。
每个时间片必须包含以下所有要素,融合在连贯的描述中(不要分条列出):
- 角色完整外观(性别、年龄感、发型、服装材质颜色、体型)
- 台词融入动作(谁说了什么 + 说的时候什么表情动作,无台词写环境音)
- 动作具体到身体部位(哪只手、什么方向、什么角度)
- 空间关系(距离、朝向)
- 场景环境
- 镜头(景别、机位、运动方式)
- 光线色调
- 道具(材质、颜色、大小、状态)
**本段场景变化:**(如:雪地树林 → 土墙院落)
**本段出现角色:**(列出角色名称)
**本段关键道具:**(列出所有道具)
**本段画面风格:**(基于全局风格,结合本段实际画面描述色调/光线/氛围的变化)
---
请严格按以上格式逐段输出,每一段的详细程度必须一致,不能前面详细后面潦草。
@./video.mp4
PROMPT
)" -o json > gemini_analysis.json
⚠️ 关于 Gemini 提示词的使用说明:
- 以上是标准提示词模板,实际执行时根据视频内容微调
-o json 输出 JSON 格式便于后续解析,也可以用 -o text 输出纯文本
- 如果视频较长(>5分钟),可以分段让 Gemini 分析,每次分析一部分
- Gemini 分析结果保存到文件,后续步骤全部基于这个文件
1.3 截图 + 联系图
用 ffmpeg 提取关键帧,按 10 秒分段拼联系图,帧带编号和时间点。供用户预览和后续校验使用。
DURATION=$(ffprobe -v error -show_entries format=duration -of csv=p=0 ./video.mp4 | cut -d'.' -f1)
echo "视频总时长: ${DURATION}s"
mkdir -p frames
ffmpeg -i ./video.mp4 -vf "fps=1" -q:v 2 frames/frame_%04d.jpg
mkdir -p contact_sheets
TOTAL_FRAMES=$(ls frames/*.jpg | wc -l | tr -d ' ')
SEGMENT=0
for START in $(seq 1 10 $TOTAL_FRAMES); do
END=$((START + 9))
[ $END -gt $TOTAL_FRAMES ] && END=$TOTAL_FRAMES
COUNT=$((END - START + 1))
SEGMENT=$((SEGMENT + 1))
SEGMENT_START=$(( (SEGMENT - 1) * 10 ))
SEGMENT_END=$(( SEGMENT_START + COUNT - 1 ))
ffmpeg -y \
$(for i in $(seq $START $END); do printf -- "-i frames/frame_%04d.jpg " $i; done) \
-filter_complex "
$(for i in $(seq 0 $((COUNT-1))); do
T=$((SEGMENT_START + i))
echo "[${i}:v]drawtext=text='${T}s':fontsize=28:fontcolor=white:borderw=2:bordercolor=black:x=10:y=10[t];[t]|*w0_*h0 \
-map contact_sheets/S$( )_-s.jpg
如果上面的拼图命令太复杂或报错,可以用更简单的 ImageMagick 替代方案:
for START in $(seq 1 10 $TOTAL_FRAMES); do
END=$((START + 9))
[ $END -gt $TOTAL_FRAMES ] && END=$TOTAL_FRAMES
SEGMENT=$(( (START - 1) / 10 + 1 ))
SEGMENT_START=$(( (SEGMENT - 1) * 10 ))
FILES=$(for i in $(seq $START $END); do printf "frames/frame_%04d.jpg " $i; done)
montage $FILES -tile 5x2 -geometry +2+2 -title "S$(printf '%02d' $SEGMENT) | ${SEGMENT_START}s-$((SEGMENT_START + END - START))s" \
contact_sheets/S$(printf "%02d" $SEGMENT).jpg
done
1.4 ASR 台词时间线
用 Whisper 从音频中转录台词(精确到秒点),用于与 Gemini 结果交叉校验。如有出入,以 Gemini 为准(因为 Gemini 能结合画面理解上下文)。
ffmpeg -i ./video.mp4 -vn -acodec pcm_s16le -ar 16000 -ac 1 ./audio.wav
whisper ./audio.wav --model medium --language zh --output_format srt --output_dir ./
转录完成后,将 SRT 字幕与 Gemini 分析报告中的台词进行交叉校验。
输出物
- Gemini 视频分析报告(包含:全局风格、画面比例、整体剧情、角色列表、逐段详细画面分析)
- 截图 + 联系图(供用户预览和校验)
- ASR 台词时间线(供交叉校验,与 Gemini 有出入时以 Gemini 为准)
将 Gemini 分析报告完整输出给用户(不做删减),等待确认后再进入下一步。
Step 2|角色卡文字版
基于 Step 1 Gemini 分析报告中的角色列表,提取并标准化每个角色的完整描述。这一步锁定角色外观,后续分镜脚本中所有角色描述都必须与这里保持一致。
| 字段 | 说明 |
|---|
| 身份与剧情作用 | 这个角色在故事里是谁、做什么 |
| 外观 | 性别、民族、年龄感、脸型、体型、气质 |
| 发型 | 长度、颜色、样式 |
| 服装 | 材质、颜色、款式、磨损程度,贴合视频风格 |
| 情绪基调 | 角色整体的情绪倾向 |
| 风格归属 | 必须贴视频视觉风格,不能跑偏 |
如果 Gemini 分析中角色描述不够详细,可以针对特定角色让 Gemini 补充分析:
gemini "请仔细观察视频中这个角色的外观细节:[角色名]。描述其发型、服装材质和颜色、体型、面部特征。 @./video.mp4"
等待用户确认后再进入下一步。
Step 3|分镜脚本
这是整个 SOP 的核心产出。基于 Step 1 的 Gemini 分析结果和 Step 2 锁定的角色描述,输出每段 10 秒的分镜脚本。
目标:每个时间片就是一条完整的 AI 生成 prompt —— 人物外观、台词、动作、场景、光线、镜头、道具全部融合在一段连贯的描述文字中,拿出来就能直接交给 AI 生成图片或视频。
一次性输出全部段落,不逐段确认,整体输出完成后等待用户统一确认。
每段输出格式
⚠️ 关键规则:每段时间线从 0 开始(0-10s),不使用全局时间。因为每段会独立用于生成。
【S01】全局 0-10s | 段内 0-10s
【画面风格】写实古风 / 前段冷蓝灰雪地、后段中性偏暖院落 / 自然漫射光 / 画面质感细腻
【剧情作用】开篇建立人物关系 — 男主与白狐的温情互动,随即切入院落冲突
【段间衔接】承接:无(首段) → 引出:白衣女性与男主的正面对峙
0-5.5s:
男主(东亚男性,约25-30岁,短发耳上约3cm,中等偏结实体型,灰色粗布棉袄、
袖口有轻微磨损,深色棉裤)蹲在雪地上,左膝着地、右膝弓起,身体前倾约20度,
右手前伸持一整只烤鸭(棕褐色油亮表皮,约30cm长,完整熟食状态)递向面前的
白狐(纯白皮毛,小型犬体型,尾巴蓬松下垂)。白狐低头咬住烤鸭腿部,
头部贴近男主手掌。男主与白狐相距约半臂(0.4米),男主面朝白狐正前方。
此时无台词,环境音为风声和雪地踩踏声。
场景:雪地树林,地面白雪覆盖,背景有灰褐色树干,远处树林轻微虚化。
镜头:中近景,机位约胸口高度,固定不动,浅景深。
光线:雪地漫射自然光,整体偏冷蓝灰,雪面高亮反光打亮男主右脸。
道具:烤鸭(棕褐油亮,前臂长度,表皮完整)。
5.5-10s:
……(同样格式)
写作标准:让 AI 读完就能画出来
每个时间片是一段连贯的画面描述文字,必须融合以下所有要素(缺一不可):
- 角色 + 完整外观 — 每个出场角色都要写:民族/性别/年龄感、脸型、体型、发型(长度+颜色+样式)、服装(材质+颜色+款式+磨损程度)。必须引用 Step 2 角色卡的标准描述,每个时间片都完整写出,不能省略或写"同前"
- 台词 — 融入动作描述中,写明谁说了什么(如:嘴型张开说出"你敢还手?")。无台词时标注"无台词"或写环境音
- 动作 + 姿态 — 具体到身体部位:哪只手、朝什么方向、什么角度、什么幅度。用身体动作替代情感标签(不写"她很愤怒",写"她眉头紧锁、右手食指指向对方胸口、下颌微收")
- 空间关系 — 人与人/物的距离(用米数或步数)、朝向、接触方式
- 场景 — 地面材质、墙体、天空、植被、建筑等环境细节
- 镜头 — 景别(特写/近景/中近景/中景/全景)、机位高度、运动方式(固定/推/拉/摇/跟)、构图特点
- 光线与色调 — 光源方向、色温冷暖、明暗对比、整体色调倾向
- 道具 — 每个出现的道具都要写:材质、颜色、大小、状态(新/旧/破损等)
信息来源优先级
- Gemini 视频分析(主要来源)— 画面内容、动作、场景、道具
- Step 2 角色卡(角色描述锚点)— 确保角色外观一致
- ASR 台词时间线(交叉校验)— 有出入时以 Gemini 为准
禁用词表(出现即不合格):
动作性上升、动势、施压、收束、抬升、推进、前压、冲突启动、
对抗态、应答态、审问态、发问态、收束态、高压、紧绷、焦灼、
操作性道具、冲击性视觉元素、环境物件介入、场景线条压迫、
无强道具、道具弱化、背景弱化、主线人物、对方阵营、结果态度
等待用户确认后再进入下一步。
Step 4|角色卡图片版
生成角色卡图片,硬性规范:
- 纯白底 — 不能有任何背景
- 无文字/标签/边框/水印 — 干干净净只有角色
- 全身图 — 头到脚完整呈现
- 每个角色单独一张
- 角色视觉必须贴视频风格 — 不能出现"影棚模特感"
执行顺序:先出主角色 → 用户确认 → 再出其他角色。
角色未定版之前,不推进后续大量出图。这是为了避免返工 — 角色形象一旦定了,后面所有分镜都以此为准,如果角色卡不对,后面全部要重做。
Step 5|分镜图生成(先文后图)
执行流程
- 先给该段文字脚本,用户确认后才生成图
- 按下方【生图提示词组装规则】拼接完整提示词
- 附带参考图一起发给 AI 生成工具
- 一段一张多宫格(见下方多宫格规范)
生图提示词组装规则
每段分镜图的提示词必须包含以下字段,按顺序拼接:
| 序号 | 字段 | 来源 |
|---|
| 1 | 画面比例 | Step 1 全局画面风格中的「画面比例」 |
| 2 | 画面风格关键词 | Step 1「参考关键词(英文)」+ 本段【画面风格】 |
| 3 | 多宫格布局 | 根据本段时间片数量决定几行几列,标注每格对应的时间编号 |
| 4 | 各格内容(逐格描述) | 每格对应一个时间片,包含以下全部子项 |
| 4a | └ 场景描述 | Step 3 分镜脚本中该时间片的场景环境 |
| 4b | └ 角色描述 | Step 2 角色卡的标准描述(每个出场角色完整写出) |
| 4c | └ 角色动作与台词 | Step 3 分镜脚本中该时间片的动作描述 |
| 4d | └ 镜头与构图 | Step 3 分镜脚本中该时间片的镜头信息 |
| 4e | └ 光线与色调 | Step 3 分镜脚本中该时间片的光线描述 |
参考图附带规则
- 角色参考图:该段分镜中出现的每个角色,都必须将其 Step 4 定版的角色卡图片作为参考图一起传给 AI 生成工具,确保人物外观一致
- 上一段分镜图(按需):如果当前段与上一段属于同一场景或需要保持视觉连贯,附带上一段分镜图作为参考;如果场景完全切换,则不需要引用
多宫格规范
- 每段(10s)一张多宫格图,里面按时间片分格(如 S01 有 2 个时间片就是 1x2 = 2 格)
- 每格对应一个时间片,提示词中标注时间编号(如
[Left cell — 0-3.5s])
- 整张多宫格的画面比例与原视频一致(如原视频 16:9,则多宫格整体也是 16:9)
- 布局规则:2 格用 1x2,3 格用 1x3,4 格用 2x2,超过 4 格用 2xN
- 提示词必须描述完整的多宫格布局:开头写明几行几列、每格比例,然后逐格描述内容
Step 6|一致性质检
逐段检查以下维度:
不合格的段落回炉重做,直到通过。
交付格式(完整包)
最终交付给用户的完整产出清单:
- Gemini 视频分析报告(全局风格 + 剧情 + 角色 + 逐段画面)
- 角色卡文字版
- 分镜脚本(每段每个时间片可独立用于 AI 生成)
- 角色卡图片版(纯白底、无字、全身)
- 分镜图(每段一张)
- 一致性质检结果
执行红线
以下是绝对不能违反的规则:
- 不跳过"先文字确认" — 每个需要确认的步骤,必须等用户说 OK 才继续
- 不把全局约束只写一次 — 分镜脚本每段都要写完整画面风格
- 台词必须融入时间片 — 不能单独列台词区,必须写在动作描述中(谁说了什么)
- 角色外观每个时间片都要写全 — 不能省略或写"同前",因为每个时间片是独立的生成 prompt
- 用身体动作替代情感标签 — 不写"她很愤怒",写具体的面部表情和肢体动作
- 不用非白底/带字角色卡 — 角色卡必须纯白底、无任何文字
- 不在角色未定版时推进后续大量出图 — 角色卡确认后才能批量生成分镜图
- 视频内容分析必须基于 Gemini CLI 直接看视频的结果 — 不能仅靠截图猜内容