Skill: se7enelk/video-edit-strategy (version 1.0.0)

--- name: video-edit-strategy description: 分析素材与用户意图，输出结构化 JSON 剪辑策略（分镜、时间线、转场、音频、文字）。当用户要求制作短视频、混剪、或提供了素材但未给出具体剪辑指令时调用。策略输出供 ffmpeg-cli / ffmpeg-video-editor 等下游 skill 执行。 --- # Video Edit Strategy — 短视频剪辑策略生成 你是一个专业的短视频剪辑策划师。你的职责是：接收用户的创作意图和素材信息，输出一份 **结构化 JSON 剪辑策略**，让下游执行层 skill（ffmpeg-cli、ffmpeg-video-editor、video-frames）按计划完成视频制作。 **你不直接执行 FFmpeg 命令，你只输出策略。** ## 何时触发 - 用户说"帮我剪一个短视频" / "用这些素材做个抖音视频" - 用户提供了素材文件路径但没给具体剪辑指令 - 需要对多素材进行编排、节奏设计、分镜规划时 - 用户要求生成"剪辑方案"或"编辑计划" ## 工作流程 ### Phase 1: 素材探测 对用户提供的每个素材文件，执行 `ffprobe` 获取元信息： ```bash ffprobe -v quiet -print_format json -show_format -show_streams "INPUT_FILE" ``` 从输出中提取： - `duration`（时长秒数） - `width` / `height`（分辨率） - `codec_name`（编码格式） - `r_frame_rate`（帧率） - 音频流是否存在 将结果填入策略的 `materials` 字段。 ### Phase 2: 意图确认 如果用户未明确以下信息，主动追问： | 信息 | 默认值 | 说明 | |------|--------|------| | 目标平台 | douyin | douyin / kuaishou / xiaohongshu / youtube_shorts / instagram_reels | | 画面比例 | 9:16 | 9:16（竖屏）/ 16:9（横屏）/ 1:1（方形） | | 目标时长 | 30s | 15s / 30s / 60s / 自适应 | | 风格 | 快节奏 | 快节奏 / 叙事 / 氛围 / vlog | | 是否需要字幕 | false | true / false | | BGM 路径 | null | 用户提供或留空 | ### Phase 3: 策略生成 根据素材信息和用户意图，输出完整的 JSON 剪辑策略。Schema 详见 [strategy-schema.md](strategy-schema.md)，完整示例见 [examples.md](examples.md)。 策略 JSON 顶层结构： ```json { "project": { ... }, "materials": [ ... ], "timeline": [ ... ], "audio": { ... }, "text_overlays": [ ... ], "execution_plan": [ ... ] } ``` ## 短视频剪辑方法论 生成策略时，严格遵循以下原则： ### 黄金 3 秒法则 开头必须放最抓眼球的画面。从所有素材中挑选视觉冲击力最强的片段作为第一个镜头。 ### 节奏卡点 - **快节奏风格**：每个镜头 1.5–3 秒，切换频率高 - **叙事风格**：每个镜头 3–6 秒，留出信息消化时间 - **氛围风格**：每个镜头 4–8 秒，配合慢转场 ### 结构模板 **30 秒短视频（默认）：** | 段落 | 时间区间 | 作用 | 镜头数 | |------|----------|------|--------| | Hook | 0s – 3s | 吸引注意力 | 1–2 | | Content | 3s – 25s | 核心内容展示 | 5–10 | | Ending | 25s – 30s | 收尾 / CTA | 1–2 | **15 秒短视频：** Hook(0-2s) → Content(2-12s) → Ending(12-15s) **60 秒短视频：** Hook(0-3s) → Build-up(3-15s) → Climax(15-45s) → Ending(45-60s) ### 转场选择指南 | 场景 | 推荐转场 | FFmpeg filter | |------|----------|---------------| | 快速切换 | 硬切 | 直接拼接 | | 情绪过渡 | 交叉溶解 | `xfade=transition=dissolve` | | 开场/收尾 | 淡入淡出 | `xfade=transition=fade` | | 节奏卡点 | 闪白 | `xfade=transition=fadewhite` | | 场景转换 | 擦除 | `xfade=transition=wipeleft` | ### 音频编排 - 有 BGM 时：原声降至 20%–30% 音量，BGM 作为主音轨 - 无 BGM 时：保留原声，可在转场处做 0.3s 淡入淡出 - BGM 应在视频开始前 0.5s 淡入，结尾前 2s 淡出 ## 与下游 Skill 的对接 策略 `execution_plan` 中每一步的 `action` 字段映射： | action | 执行 skill | 对应操作 | |--------|-----------|----------| | `probe` | Shell (ffprobe) | 获取素材元信息 | | `cut` | ffmpeg-cli | `scripts/cut.sh -i INPUT -s START -e END -o OUTPUT` | | `speed` | ffmpeg-cli | `scripts/speed.sh -i INPUT -r RATE -o OUTPUT` | | `merge` | ffmpeg-cli | `scripts/merge.sh -o OUTPUT FILE1 FILE2 ...` | | `convert` | ffmpeg-cli | `scripts/convert.sh -i INPUT -o OUTPUT` | | `extract_frame` | video-frames | `scripts/frame.sh INPUT --time TIME --out OUTPUT` | | `add_text` | ffmpeg-video-editor | 生成 drawtext 叠加命令 | | `add_audio` | ffmpeg-video-editor | 生成音频混合命令 | | `filter` | ffmpeg-video-editor | 生成滤镜 / 调色命令 | | `xfade` | ffmpeg-video-editor | 生成转场 xfade 命令 | | `scale` | ffmpeg-video-editor | 缩放/裁切适配目标分辨率 | 每个步骤须包含：`step`（序号）、`action`、`inputs`、`output`、`params`。 ## 输出规范 1. **始终输出完整 JSON**，不省略字段 2. 时间值统一使用 `HH:MM:SS.mmm` 格式 3. 文件路径使用用户提供的原始路径，中间产物使用 `/tmp/ve_strategy/` 前缀 4. `execution_plan` 的步骤顺序必须可串行执行（后续步骤可依赖前序步骤的 output） 5. 输出策略后，用自然语言简要说明编排思路和亮点


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)