video-producer
视频制作原子能力集——意图路由、故事/剧本/分镜、素材 slot 与解析、渲染、混音对齐、拼接合成、动效审计、封面。子命令范式,产物文件存在性即 checkpoint。
来源信息
- 仓库
- TeamWiseFlow/xiaobei
- 最近来源活动
- 2026年9月14日 16:44
- 检测到的 SKILL.md 语言
- 中文
- 星标
- 8,540
- 分支
- 1,447
安装方式
默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。
检查来源文件
决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。
文件资源管理器
35 个文件正在显示 SKILL.md
SKILL.md
来源说明 · 只读预览- name
- video-producer
- description
- 视频制作原子能力集——意图路由、故事/剧本/分镜、素材 slot 与解析、渲染、混音对齐、拼接合成、动效审计、封面。子命令范式,产物文件存在性即 checkpoint。
# video-producer — 工具说明
> 本文是 `expert-video` 专家包内的工具说明书,不独立出现在技能列表中。制作流程(阶段链、两闸门、workflow 选择)由包内 SKILL.md 与 `workflows/` 编排,本文只写每个子命令的输入、输出与调用方式。
**调用方式**:`video-producer <子命令> [参数...]`(wrapper 转发到 `scripts/<子命令>.py`,子命令名即脚本名,零路径拼接)。`video-producer help` 列可用子命令。
**通用约定**:
- 多数子命令第一个位置参数是 `<project_dir>`(工作区目录),产物落该目录下约定子路径。
- **产物文件存在性即 checkpoint**:子命令先查产物文件是否存在,存在则 load 不重生成(允许手改 JSON 后续跑)。
- 退出码:`0` 成功 / `1` 参数错 / `2` env 未配(如 `AWK_API_KEY`、`VOLC_ASR_*`)。
## 子命令清单
| 子命令 | 入 | 出 | 用途 |
|--------|----|----|------|
| `intent-router` | brief.md(主题/关键词/类型) | `script/intent.json`(档位+主题) | 意图路由三档:故事讲述型 narrative / 纯画面动效型 motion / 蒙太奇剪接型 montage |
| `reference-concepts` | 甲方给的参考拆解报告(可选) | `reference/concepts.md` | 据报告出 2–3 个差异化概念;不做下载/转写/抽帧 |
| `story-develop` | intent.json | `script/story.md` | idea → 故事(受众/类型复述、100–200 词梗概、人物、分场) |
| `script-write` | story.md | `script/script.md`(含 enhancement_cues 六型 + delivery_cues) | 故事 → 分场剧本(同时间同地点分一场、可拍化描述、enhancer 润色) |
| `script-self-eval` | script.md | `script/self-eval.json` | 脚本自评 N 维打分,任一维 <3 必返工 |
| `storyboard-build` | script.md | `storyboard/storyboard.json` | 剧本 → 镜头表(每镜叙事目的/机位复用/位置朝向/不写不可见) |
| `shot-decompose` | storyboard.json | `storyboard/shot_decompose.json` | 每镜拆首帧静照/尾帧静照/运动描述(variation_type 三档) |
| `character-register` | storyboard.json + brief.md | `characters/registry.json` + 三视图 png | 角色 static/dynamic features 拆分 + front/side/back(调 `siliconflow-img-gen`) |
| `slot-plan` | storyboard.json + shot_decompose.json | `slots/slot-plan.json` | 素材 slot 规划(template + hero slot + tone→slot 数) |
| `asset-resolve` | slot-plan.json | `slots/asset-resolve.json`(含 rejected_picks)+ 素材落 `raw_materials/` | 按 slot 拉素材(Fast path:多源并发搜 + 缩略图人核;调 pexels-footage / pixabay-footage / aigc-video-gen) |
| `slideshow-risk` | storyboard.json + slot-plan.json + asset-resolve.json | `slots/slideshow-risk.json` | 六维幻灯风险打分(pre-compose 闸门,≥4.0 fail) |
| `delivery-promise-lock` | storyboard.json + brief.md | `slots/delivery-promise.json` | 交付承诺八类锁定 + motion_ratio 预估 |
| `render-shot` | shot_decompose.json + characters/ + slot-picks | `render/shot-NN/` 下产物 | 按 slot 渲染(AIGC 走 `aigc-video-gen` i2v 首尾帧插值;静图走 `siliconflow-img-gen`) |
| `motion-graphics` | `<project_dir> --spec mg.json [--out clip.mp4] [--duration] [--force]` | 单个动态图形 clip.mp4(默认 `render/mg/<spec-stem>/`) | 程序化逐帧动画(Stage 10 第二条渲染路径,与 render-shot 并列):声明式 spec,内置四模板(dimension_grid 逐维点亮 / scroll_cards 滚动卡组 / crew_panel 角色卡入位 / rec_highlight 录屏圈选)+ 基础元素(text/card/photo_circle/glow/band/highlight_zone/progress_bar)+ custom 插件逃生舱;帧级 checkpoint、时长/帧率断言;只出单段,不拼接不混音不做字幕 |
| `mix-audio` | script.md(delivery_cues) | `audio/` 目录 + `subtitles.srt` 模板 | 配音配乐四场景分流:A 人物对话声画同出 / B 旁白一次性 TTS 带字级时间戳 + 对齐 / C BGM 成片后统一生成 / D 甲方口播录音 → ASR 时间戳 → 按时间戳补素材 |
| `narration-align` | audio/narration.mp3 + audio/narration.subtitle.json | `audio/narration-segments.json` | 旁白字级时间戳对齐(**整段模式**:一条连续 narration.mp3;优先复用 `awk-tts --enable-subtitle` 的原生时间戳,缺失时回退火山 ASR 极速版,凭据 `VOLC_ASR_*`) |
| `narration-layout` | `<project_dir> --plan narration_plan.json [--srt ...] [--mix ...] [--force]` | `audio/abs_starts.json` + SRT + 可选混音 | 逐句旁白排布(**逐句模式**:每句独立 mp3,与 narration-align 互补):实测镜头时长累积起点 → 每句对齐镜头起点 + 防重叠守卫 → 逐句/末句越界断言(违反非零退出打印明细)→ SRT(样式参数化,force_style 落 abs_starts.json 供 burn-srt 引用)→ 可选一步混音(内部复用 audio-mix:N 路旁白 + BGM fade) |
| `clip-trim` | `--input/--output/--start/--end/--speed/--sync-audio/--pre-buffer/--duration/--normalize/--grade/--windows/--zoompan/--low-load` | 切好的片段 | 精确切素材段(入点/出点/倍速/前置缓冲,视频、音频、图片分别处理;`--pre-buffer 0.5` 防切 MP3 吞首字);`--normalize 1920x1080@25` 切片即归一(scale+pad+sar+fps);`--grade warm` 预设调色;`--windows "12.0:3.2,44.5:1.4"` 一镜多窗切后 concat;`--zoompan 1.08` 定帧缓推(视频源在 --start 取帧);`--low-load` 低载编码(nice19/veryfast/crf18/threads2) |
| `audio-mix` | `--track(可重复)/--delay/--volume/--fadein/--fadeout/--output/--duration` | 混合音频 | 多轨混音(每轨独立延时、音量与淡入淡出;`--duration` 为硬上限:短轨补虚、超出截断) |
| `timeline-compose` | `<project_dir> --timeline timeline.json [--transition ...]` | 合成片段 | 按时间轴 JSON 调 clip-trim + audio-mix 合成(`audio_mode=concat` 出连续轨;`audio_globals` 混全片 BGM) |
| `scene-compose` | `<project_dir> --scene scene.json [--output scene-01.mp4]` | 单 Scene 片段 | 分段合成(clips + narration + dialogue → 一个 Scene);内部调 clip-trim + audio-mix + assemble |
| `assemble` | `<project_dir> [--transition hard/fade/dissolve/xfade] [--width] [--fps] [--audio-format] [--low-memory] [--preview-duration] [--source-dir] [--manifest] [--verify-fps] [--expect-durations] [--duration-tolerance]` | `video.mp4`(+ 可选 `video-preview.mp4`) | 按序拼接成片:可选转场、分辨率/帧率归一化、自动统一音频格式(无音频段补静音)、低内存模式(ultrafast/crf28)、前 N 秒试听版;`--manifest segments.json` 显式有序段清单(手写/motion-graphics 管线产物绕开 shot-NN 命名约定);`--verify-fps 25` 拼接后帧率断言;`--expect-durations plan.json` 逐段时长 vs 计划 ± 容差校验(兼容 shotdur.json 的 beats 形态) |
| `add-silent-audio` | `--input/--output/--duration/--sample-rate/--channels` | 含静音音轨的视频 | 给无音频片段补静音轨(concat 前置;assemble 内部也自动调) |
| `make-outro` | `<project_dir> --image <形象图> --slogan <文本> [--color color.json] [--duration 5] [--width 1080] [--fps 30]` | 标准比例片尾段 | 形象图 + 黑边 + 烧字幕 + 静音轨 |
| `motion-audit` | video.mp4 + delivery-promise.json | `review/motion-audit.json` | motion_led 抽查(兑付交付承诺) |
| `make-cover` | brief.md(封面主文案)+ storyboard 关键帧 | `cover.jpg` | 封面生成(调 `siliconflow-img-gen`,必含封面主文案) |
## 注意事项
- **不自己下载/转写/抽帧**:参考视频拆解归 main 的 `viral-chaser`;本工具只吃甲方给的报告或素材。
- **不引入 CLIP / torch 系本地模型**:素材匹配走 Fast path 人核缩略图。
- **图库源固定**:Pexels + Pixabay 两源,不扩充。
- **AIGC 输出路径约束**:`aigc-video-gen` 要求输出相对路径落在 `output_videos/` 下,调用时 workdir 必须是 Content Producer workspace 根。
- **env 依赖**:`AWK_API_KEY`(静帧/视频生成)、`VOLC_ASR_*`(narration-align 回退与口播录音转写)。缺 env 时子命令 exit 2,补齐属 IT engineer 职责,不要静默降级。
- **闸门不是子命令**:GATE A / GATE B 由 agent 按包内 SKILL.md 执行(呈交摘要 → 结束本轮回复 → 等甲方逐闸门批准)。
## 后期处理子命令(Stage 13c 与可选后期)
同在 `video-producer` wrapper 下,调用方式与其他子命令一致:`video-producer <子命令> [参数...]`,每个都支持 `--help` 查完整入参。
| 子命令 | 用途 | 必跑/可选 | 落点 |
|--------|------|----------|------|
| `normalize` | ffmpeg loudnorm 双 pass 归一化到 -14 LUFS(抖音 / 视频号 / B站竖屏发布通用标准) | **必跑** | 阶段链 Stage 13c:成片合成后、自检与交付前强制跑 |
| `burn-srt` | libass 把 SRT 硬烧进画面(烧录后不可关) | 可选(Brief 或甲方要字幕时) | 归一化前后均可;串联时以上一步产物为输入 |
| `duck` | sidechaincompress 让旁白作 sidechain 触发 BGM 自动压低(默认 threshold -25dB / ratio 8:1) | 可选(要专业混音且可分轨时) | 混音阶段 |
| `denoise` | afftdn(默认)/ arnndn(RNN,要模型文件)去环境噪声 | 可选(仅甲方素材音质差时;AIGC 音轨本来就干净,跳过) | 素材入库后 |
| `interp` | minterpolate 补帧到 30/60fps | 可选(仅低 fps 源材,如 24fps AIGC 片) | 渲染或拼接前 |
**干湿分离(五个都守)**:输出落 `<stem>_<处理名>.mp4`(`_normalized` / `_burned` / `_ducked` / `_denoised` / `_interp`),不覆盖输入;多步串联时下一步以上一步产物为输入(如 ducking 后再 normalize),原产物保留作回退。
常用调用:
```bash
video-producer normalize <video.mp4> --output <out.mp4> # 默认 -14 LUFS / true peak -1.5 dB / LRA 11
video-producer burn-srt <video.mp4> <subs.srt> --output <out.mp4> # 默认 Noto Sans CJK SC 24px,可 --font-name/--font-size/--force-style
video-producer duck <video.mp4> <narration.mp3> --output <out.mp4> # 视频自带 BGM
video-producer duck <video.mp4> <narration.mp3> --bgm-source <bgm.mp3> --output <out.mp4> # 外挂 BGM
video-producer denoise <user-footage.mp4> --output <out.mp4> # 更强降噪:--method arnndn --rnn-model <model.rnn>
video-producer interp <video.mp4> --target-fps 30 --output <out.mp4> # 更顺但慢:--mode mci(高运动易出鬼影)
```
旁路条件(不满足就报错退出,不静默降级):
- `normalize`:无声轨 / 音频畸变 → exit 2,退回 Stage 12 重生;input_i 已在 target ±0.3 LUFS 内 → 自动跳过渲染直接拷贝
- `burn-srt`:ffmpeg 不带 libass → exit 1,改发外挂 SRT;SRT 不存在或格式错 → exit 1
- `duck`:AI 声画同出模式混轨不可分 → 报甲方决策;视频无声轨且没传 `--bgm-source` → exit 1
- `denoise`:ffmpeg 不带 afftdn/arnndn → exit 1;`--method arnndn` 没传 `--rnn-model` → exit 1
- `interp`:源 fps ≥ 目标 fps → 自动跳过拷贝;ffmpeg 不带 minterpolate → exit 1;mci 出鬼影 → 退 blend
在 GitHub 查看