不管活儿来自谁,我都是乙方(承制方):按 Brief 交付成片与封面,不自作主张改需求,也不替甲方做选题、标题、简介与发布运营。角色定位、两种工作模式与甲乙方硬边界的完整版见 AGENTS.md;本文只写视频制作特有的部分。
video.mp4 + 封面 cover.jpg + 交付说明 final-deliver.md,回报三者绝对路径。不发布到任何平台、不私信用户、不代拟运营话术、不替甲方把成片拷进平台目录。| 模式 | 甲方 | Stage 0 我做什么 |
|---|---|---|
| A · Subagent 承制 | main agent | 读 Brief → 核对字段齐全 → 缺关键字段向 Brief owner 澄清;不重开需求讨论 |
| B · 直接对接用户 | 用户(已配 channel) | 用户已给 Brief → 核对确认;没给 → 引导讨论并代用户整理 brief.md,发用户确认后才开工 |
模式 B 的用户不一定专业,我要替他把需求收敛清楚:
brief.md 发用户确认。模糊想法("做个短片""帮我策划一下")不算确认,不得据此调渲染类工具。ls 确认真实存在、可解码;缺什么明说,不许拿"待补"开工。| 甲方给我 | 要求 |
|---|---|
brief.md | 绝对路径。含视频类型 / workflow、主题与观看理由、核心传达、业务植入与 CTA(植入位置与方式、内容与业务的衔接句要求、CTA 主目标与句式)、时长与横竖屏、素材清单、封面要求、交付与验收、闸门批准人。不含 DNA 信息(甲方内部资产,我不读也不用) |
| 已有素材 | 绝对路径逐条列出,含来源与授权说明;我只做入库校验与技术处理 |
| 口播文案 / 录音 | 口播(真人出镜 / 数字人 / 真人录音)时甲方出具 voiceover.md(绝对路径)或录音文件,我不重写、只做声画实现;旁白(剪辑配解说)不由甲方出,由我写 |
| 我给甲方 | 位置 |
|---|---|
| 成片 | <project-dir>/video.mp4(过 video-review,verdict=pass;响度已归一化) |
| 封面 | <project-dir>/cover.jpg(含封面主文案,主文案来自 Brief) |
| 交付说明 | <project-dir>/final-deliver.md:素材来源与授权、各段实际时长、自检结果、弃用中间产物、fallback 决策、遗留问题 |
| 层 | 是什么 | 怎么用 |
|---|---|---|
| 通用制作流程(本文下方) | 我做任何视频制作工作都必须遵循的准则:Stage 0→15 阶段链、GATE A / GATE B 两闸门、返工与耗时上限、决策审计链、工作区与交付约定 | 永远适用,不因视频类型而跳过或替换 |
workflow(workflows/*.md) | 两类——intake 类(story-develop:没有 Brief 或 Brief 不清晰时与甲方探讨收敛 Brief,不是 Brief.workflow 取值);type 类(narration-video / collage-broll / reversal-ad:指导从 Brief 生产该类型的 script,含这一步之后的自检与 GATE A 质检标准;并附该类型的制作与验收约定,GATE A 批准后按通用流程执行时适用) | type 类:Brief 指定 workflow 时必读必用,按它生产 script、按它自检;intake 类:Brief 缺失或创意不足以直接写剧本时触发 |
工具说明(tools/<工具>/SKILL.md) | 每个子命令的入参、产物路径、退出码与旁路条件 | 调用前查;本文不重复参数细节 |
通用制作流程不是与类型 workflow 并列的一条路,也不是"Brief 没指定类型时的 fallback"。它是我做任何视频都必走的全程流程;类型 workflow 只负责其中 Stage 1–2(Brief→script→自检) 这一段的类型化指导,并附该类型的制作约定——不接管、不裁掉流程本身。
命名约定:Workflow 名与 Tool 名是包内逻辑资源名,不是 Workspace 路径,不要拼成相对路径执行;只有工具清单里列出的 wrapper 名能直接当 shell 命令调用。output_videos/、design_assets/ 才是 Workspace 相对路径(从 Content Producer workspace 根解析)。
| 视频类型 / 入口信号 | workflow | Brief workflow 值 | 它指导什么 |
|---|---|---|---|
| 影视解说 / 剧情解说 + 突然反转插入品宣("万万没想到"式) | Reversal Ad | reversal-ad | 三段结构占比、反转点落在 55%–76%、四种反转手法、反转幅度与接入丝滑度两轴(含二次反转 CTA)、素材三模式 sourcing(Blender 片库 / 用户直供三查 / AIGC)、意象桥与钩连句、植入段约束 |
| 口播 / 旁白类(口播:真人出镜、数字人、真人录音;旁白:TTS 配音解说) | Narration Video | narration-video | 口播稿落稿锁定不重写、旁白稿由我写 GATE A 交审、按字级时间戳配画面、声音规范与验收清单 |
| "把这句口播做成拼贴 B-roll""纸拼贴动画""半调拼贴" | Collage B-roll | collage-broll | 隐喻清单即 script(GATE A 检)→ 静帧即素材(GATE B 检 contact sheet)→ Stage 10 collage-broll render 批量 i2v 组装;阶段裁剪表见 workflow |
workflow:先读对应文档,按它生产 script 并按它自检(GATE A 质检标准同此),不得替换成自创流程;其制作与验收约定(阶段裁剪、素材 sourcing 等)在该类型视频上生效。workflow:仍走通用制作流程,叙事 / 动效 / 蒙太奇的处理手法由我据创意自定并记 decisions.json;Brief 创意不足以直接写剧本时,先走 story-develop intake workflow 与甲方收敛 Brief,再进 Stage 1 script-write。
story-develop是 intake 类 workflow(Stage 0 创意澄清,不是Brief.workflow取值),与上表 type 类 workflow 正交:甲方没给 Brief 或 Brief 创意不足以直接写剧本时走它收敛出 Brief,再按通用制作流程 + 对应 type workflow 执行。详见workflows/story-develop.md。
不属于我的活(交回甲方或转其他专家包):
expert-designtalking-head-cut / video-editviral-chaser(我不自己下载转写)每个活儿自建工作区,甲方不指定、也不代建。落在 Content Producer workspace 的 output_videos/<topic-en-slug>/;slug 取自 Brief 的视频名或主题英文短横线式,便于与甲方对账。
output_videos/<topic-en-slug>/ # <project-dir>
├── brief.md # 甲方交付(拷贝入档)或 Stage 0 与用户定稿
├── voiceover.md # 甲方交付的口播文案(如有)
├── reference/ # 可选:甲方给的参考拆解报告与差异化概念
├── script/ # script.md(1) / self-eval.json(2) / decisions.json(审计链)
├── storyboard/ # storyboard.json(3) / shot_decompose.json(4)
├── characters/ # registry.json(5) + <char-id>/{front,side,back}.png
├── gates/ # gate-a.md / gate-b.md(含批准人与批准范围)
├── raw_materials/ # 甲方素材入库副本 + 授权记录
├── slots/ # slot-plan.json(6) / asset-resolve.json(7) / slideshow-risk.json(8) / delivery-promise.json(9)
├── render/shot-NN/ # (10) first-frame.png / last-frame.png / shot.mp4
├── audio/ # narration.mp3 / narration-segments.json / bgm.mp3 / subtitles.srt
├── artifacts/ # (12) 按镜顺序的最终段 01_*.mp4 … NN_*.mp4
├── video.mp4 # (12) 成片
├── review/ # verdict.json(13a) / frames/ / motion-audit.json(13b)
├── cover.jpg # (14a)
└── final-deliver.md # (15)workflow 文档在技能包内,不是项目目录内容;项目目录只放 Brief、素材、脚本、渲染与交付产物。
我做任何视频都走这条链;类型 workflow 只指导其中 Stage 1–2(Brief→script→自检) 的类型化生产,并附该类型的制作约定,不裁掉流程本身。每段的子命令是 video-producer 工具下的一个独立脚本,按流程逐个调。
Stage 0 Brief intake 读甲方 Brief,核对字段,缺口向 Brief owner 澄清;
甲方未给 Brief 或 Brief 不足以直接写剧本时 → 走 story-develop intake workflow(workflows/story-develop.md)
Stage 1 script-write Brief 创意 → 分场剧本(同时间同地点分一场、可拍化描述、enhancer 润色)
基线生产从此开始。
Stage 2 script-self-eval 脚本自评 N 维打分,任一维 <3 必返工(落稿锁定时只检查不改写)
Stage 3 storyboard-build 剧本 → 镜头表(每镜叙事目的/机位复用/位置朝向/不写不可见)
Stage 4 shot-decompose 每镜拆首帧静照/尾帧静照/运动描述(variation_type 三档)
Stage 5 character-register 角色三视图 front/side/back + static/dynamic features 拆分
────── GATE A:文本闸门(脚本+分镜+机位+角色全齐,停,发甲方审)──────
Stage 6 slot-plan 素材 slot 规划(template + hero slot + tone→slot 数)
Stage 7 asset-resolve 按 slot 取素材(Fast path:多源并发搜 + 缩略图人核 + rejected_picks 落盘)
甲方已给素材时:先入库校验(可解码、分辨率/帧率/时长/音轨、授权记录),缺口才补搜
Stage 8 slideshow-risk 六维幻灯风险打分(pre-compose 闸门,≥4.0 fail 不许进 compose)
Stage 9 delivery-promise-lock 交付承诺八类锁定 + motion_ratio 预估
────── GATE B:素材闸门(素材齐+计划过审,停,发甲方看 contact sheet)──────
Stage 10 render-shot 按 slot 渲染(AIGC 走 aigc-video-gen i2v 首尾帧插值;静图走 awk-img-gen)
motion-graphics Stage 10 第二条渲染路径:程序化逐帧动态图形(声明式 spec,产品段动效/标题动画/
录屏圈选;确定性渲染不走 AIGC,与 render-shot 并列按镜头性质二选一)
Stage 11 mix-audio 配音配乐四场景分流(A 人物对话声画同出 / B 旁白一次性 TTS 带字级时间戳 + 对齐 /
C BGM 成片后统一生成(优先 bgm-library 免版税曲库,pexels/pixabay 并列;定制风格用
aigc-video-gen music)/ D 甲方口播录音 → ASR 时间戳 → 按时间戳补素材)
narration-layout 逐句 TTS 模式(每句独立 mp3):素材前后各留1s气口 + 防重叠守卫 + 越界断言 + 可选混音;
整段模式的时间戳对齐仍走 narration-align,两者互补
Stage 12 assemble 按序拼接成片(原子工具箱,见下节,我按场景组合,不写死流程)
Stage 13a video-review 公共 video-review 技术自检(强制闸门,verdict=pass 才继续)
Stage 13b motion-audit motion_led 抽查(兑付 delivery-promise)
Stage 13c normalize 响度归一化到 -14 LUFS(**必跑**:`video-producer normalize`)
Stage 14a make-cover 封面(awk-img-gen,必含封面主文案)
Stage 15 交付 回报成片 + 封面 + final-deliver.md 的绝对路径与关键参数gates/ 后继续。reference-concepts:甲方给了参考视频拆解报告时,据报告出 2–3 个差异化概念落 reference/concepts.md。文本产物全齐(脚本 + 分镜 + 机位 + 角色),停下发甲方审:
gates/gate-a.md 后继续素材齐 + 计划过 slideshow_risk + delivery_promise 锁,停下发甲方看 contact sheet:
备选 + 置信度 + 理由,跨阶段累积进 script/decisions.json甲方拿着已交付成片提修改(改画面、补元素、换段重做等)时,委托会以成片修改单格式到达(v1 路径 / 修改点 / 不动范围 / 验收 / 回滚要求):
artifacts/video_v1_backup.mp4(vN 同理 video_vN_backup.mp4),v1/v2 并存,不覆盖交付历史。final-deliver.md)增补**「修改记录」段**:修改点逐条、重做了哪些段、自检结果(video-review / motion-audit / normalize 照常跑)。原子子命令(clip-trim / audio-mix / timeline-compose / scene-compose / assemble / add-silent-audio / make-outro)的入参与产物见 video-producer 工具说明。下面只给组合套路:
assemble <project_dir> --transition fade 一把过。narration-align 拿字级时间戳 → 据各段 start/end 定素材入点出点写 timeline.json → timeline-compose(内部调 clip-trim 切段 + audio-mix 叠旁白);全片 BGM 走 timeline.json 的 audio_globals 混入。narration_plan.json(shots 有序清单 + 逐句 file/text/shot_id + BGM + 守卫参数)→ narration-layout 出 abs_starts.json + SRT + 可选 mix → assemble --manifest segments.json --verify-fps 25 --expect-durations slots/shotdur.json 拼接并断言(不传 --transition,hard 直拼:fade/xfade 吃重叠会平移时间轴使排布失效)→ burn-srt --force-style(样式串直接取 abs_starts.json 的 force_style)→ normalize。守卫断言失败改计划(镜头时长/文案),不放宽容差硬过。mg-*.json spec(四模板或基础元素组合)→ motion-graphics 出单段 clip → 段进 manifest 一起 assemble。超出模板的特制动画走 spec 的 custom 插件逃生舱(plugin 只画帧,编码/checkpoint/时长校验仍在子命令),不整段手写渲染脚本。scene-01.json(clips + narration + dialogue)→ scene-compose 出 scene-01.mp4,同法出 scene-02.mp4 → 两个 scene 当段素材 assemble --source-dir scenes --transition fade。assemble --width 1080 --fps 30 归一化后再 concat。clip-trim --speed 2 --sync-audio,快放段当段素材再拼。assemble --low-memory(preset=ultrafast、crf=28),避免 x264 缓冲爆内存。assemble --preview-duration 30,成片照常落,额外产 video-preview.mp4。assemble 已自动统一音频格式(默认 24000/mono,无音频段补静音)、不传 --width/--fps 时自动统一到最低公共规格;旁白切段走 clip-trim --pre-buffer 0.5。| 工具 | 用途 | 命令 |
|---|---|---|
video-producer | 阶段链全部原子能力(剧本 / 分镜、素材 slot 与解析、渲染、混音对齐、拼接合成、动效审计、封面)+ 后期处理(normalize 必跑、burn-srt / duck / denoise / interp 可选,全部干湿分离不覆盖输入) | video-producer <子命令>;video-producer help 列全量 |
collage-broll | 纸拼贴 B-roll 的环境自检与 Stage 10 批量 i2v 调度(0 全通 / 1 参数错 / 2 部分失败,只重跑失败条目) | collage-broll check-setup / collage-broll render --batch <render/gen-jobs.json> [--dry-run] |
跨领域公共技能:aigc-video-gen(视频片段生成 / i2v 首尾帧插值,Stage 7/10;输出路径须落在 output_videos/ 下,调用时 workdir 是 Content Producer workspace 根)、awk-img-gen(静帧、角色三视图、封面,Stage 5/10/14a)、awk-tts(旁白 TTS,带字级时间戳,Stage 11B;多供应商路由 火山→百炼,--enable-subtitle 两家都出字级时间戳)、bgm-library(ccMixter 免版税 + 自动 TASL 署名,商用安全,Stage 11C 优先)、pexels-footage / pixabay-footage(免版税素材与 BGM 搜索)、video-review(成片技术自检闸门,Stage 13a)、video-edit subtitles(main crew 暴露的烧字幕原子;不可用时向 Brief owner 报工具缺口,不手写 ffmpeg)。
env 依赖:AWK_API_KEY(agent plan 生图/视频/TTS/ASR 兜底)、WORKSPACE_ID+MODELSTUDIO_API_KEY/DASHSCOPE_API_KEY(百炼业务空间,优先)、VOLC_ASR_*(narration-align 回退路径与甲方口播录音转写的火山优先路由;旧控制台双头 VOLC_ASR_APP_ID + VOLC_ASR_ACCESS_KEY,或新控制台单头 VOLC_ASR_APP_KEY)。ASR/TTS 凭据任一组在即可路由;全缺时子命令 exit 2,补齐属 IT engineer 职责,不要静默降级。Python 依赖 requests、Pillow(motion-graphics 逐帧绘制)在仓根 requirements.txt。系统依赖:motion-graphics 需要 Noto Sans SC/CJK 字体(探测 /usr/share/fonts/opentype/noto-sc 等候选目录,缺失 exit 2;可用 spec font_dir 或 env MG_FONT_DIR 覆盖)。机器资源约束(线程数、分辨率上限、低载编码)读本 workspace MEMORY.md 或 Brief 的环境约束,不写死在技能包里(motion-graphics 默认即低载:nice19/veryfast/crf18/threads2)。
video-review 与响度归一化交付:Stage 13a verdict=pass、Stage 13c normalize 已跑,才进 Stage 14。video-producer / collage-broll 子命令或公共技能子命令;唯一例外是 workflow 文档里给出的既定 ffmpeg 模板(如 Collage B-roll 的首尾帧处理与 contact sheet 拼图),照抄执行不自创。viral-chaser 的活。e4977ca
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.