AI 产品视频은(는) 무엇을 하나요?
核心分工:
- 3D 或产品照片:决定东西在哪、多大、怎么动、什么时候变。
- 图像模型:负责让画面看起来像真的。
- 视频模型:负责让画面动起来。
- 代码:拿产品事实和 3D 当尺子,量 AI 的每一张图和每一段视频,量不过就不花钱。
剪辑、字幕、引线标注和声音都是数据驱动的叠加层,改一个字不用重新生成画面。
这套方法来自一个真实项目:一支智能硬件产品的投资人演示片,路线改了四次才跑通,匿名复盘见 examples/case-study.md。下面写的是跑通之后的通用版本,适用于讲解片,也适用于广告。
为什么不能照搬 AI 漫剧流水线
AI 漫剧的流程是:设定 → 分镜 → 资产库 → 锁定静帧 → 视频模型让画面动起来 → 配音剪辑。它没有 3D 模型,观众也能容忍细节走样,所以 AI 画出的图就是标准答案。
产品视频卖的是"这个东西长这样、能这样用"。接口方向、字样、灯光位置画错,片子就在说假话。所以:
- 照搬骨架:资产先行、先静后动、按镜头选模式、提示词只写变化、低清试错、逐镜质检。
- 只改一处:标准答案不是 AI 图,而是产品事实 + 3D(或产品实拍/CAD 图)。
还有一条经验:3D 渲染的像素不要直接进成片,无论多精细都会有 CG 味。让图像模型在 3D 底图上重画一遍,再用这张图当视频的首帧和尾帧,真实感才出得来。
第一步:立项,先问清这 8 件事
细节和给用户的问法见 references/01-intake.md。
- 时间预估:第一条回复就说清大约多少分钟或几天、几点完成,按阶段列出,包括用户要亲自做的步骤;延误时立刻更新。
- 片型和投放位置:讲解片、品牌广告、竖版短视频、电商视频还是发布会短片,在哪里播放,时长和画幅各是多少。按
references/02-formats.md选打法;一次制作可以出多个交付版本。 - 观众是内部还是公开:内部和投资人可以看爆炸图、透视图、内部结构;公开发布的版本不放任何内部结构,也不写元件名称。这决定了能拍哪些镜头。
- 产品事实确认单(
templates/product_facts.md):每个功能靠什么部件、从哪里出来、镜头里长什么样、不能长什么样,是设计目标还是已经实现,能不能公开。你推断的条目一律标"待确认",等负责人确认。 - 质量标杆:请用户给一部参考片,测量它的运动量和制作方式,只学画质,不学结构。
- 用户手上的工具:
- 图像模型:只有订阅、需要用户手动画,还是有 API 可以由脚本调用?
- 视频模型:API 账号(脚本能调),还是网页或 App 会员(只能手动生成:用手动视频包,先查商用条款,不假设能草稿升级)?
- 有没有产品 3D 模型或 CAD;没有时,有没有实物样品或任何渲染图。没有 3D 就走"无 3D 路线"(
references/03-previs.md第 10 节)。
- 预算和计费:计价公式、套餐和代金券实际能抵多少、账户余额、总上限。大批量生成和高清升级之前,必须先请用户看一眼余额。
- 小测再定路线:同一个镜头出两条低清草稿,一条用 3D 或产品图当首帧,一条用图像模型画的写实关键帧当首帧,几块钱、几分钟就能看出差别。
项目文件夹约定
所有脚本都以 --project 指定的文件夹为根(默认是当前目录),新项目请按这个结构建:
<project>/
.env 密钥(ARK_API_KEY 等),不进版本库,不在聊天里出现
brief/ creative_brief.md、product_facts.md、benchmark.md、budget.md、decisions.md、feedback_brief.md、claims.md、licenses.md
shots/shot_list.json 镜头表,时间轴的唯一来源
shots/prompts/<id>.txt 每个镜头的视频提示词(改动时加版本号,旧版保留)
plates/<id>/ 3D 底图、遮罩、相机坐标(无 3D 时放产品参考图)
packs/ look_bible.txt(统一设定,唯一来源)、手动出图包、手动视频包
keyframes/keyframes.json 关键帧清单(母版、首尾帧、上传顺序)
keyframes/raw/ 图像模型的原图
keyframes/norm/ 统一到输出尺寸后的关键帧
footage/ 实拍、录屏、真实界面截图等不是生成的素材(可选)
gen/ 视频模型的输出,以及 video_log.jsonl(调用和花费账本)
qc/ 逐帧拼图、Gate K / Gate V 报告
edit/ edl.json、captions.json、callouts.json、approved_drafts.json、approved_bridges.json
renders/ 剪辑器输出的无声画面和 .timeline.json(edit.py 的默认输出位置)
sound/ 音乐和音效分轨、cue sheet、混音窗口
deliver/ 成片(公开版和内部版分开放)
work/ 项目自己的脚本和工作流(生成 EDL、出图包、检查),每步结果写盘
templates/ 里的模板复制进对应文件夹:creative_brief.md、product_facts.md、benchmark.md、budget.md、feedback_brief.md、claims.md、licenses.md 进 brief/,decision_list.md 存成 brief/decisions.md;shot_list.json 进 shots/;keyframes.example.json 存成 keyframes/keyframes.json;填好的 prompts/look_bible.md 代码块存成 packs/look_bible.txt;sfx_cue_sheet.md 进 sound/;edl、captions、callouts、approved_drafts、approved_bridges 五个 *.example.json 去掉 .example 进 edit/。
画幅写在数据里,不靠记命令:
- 视频生成:首尾帧任务的画幅跟随首帧(关键帧先用
scripts/qc/normalise_keyframes.py --size 1080x1920统一);参考模式竖版要加--aspect 9:16。 - 剪辑:
edit/edl.json写"size": [1080, 1920],之后uv run scripts/edl_editor/edit.py --project <project> --edl edit/edl.json --dry就按竖版排;--res 480出同画幅的小预览,--size WxH另出别的画幅。 - 竖版信息流:
edit/captions.json的style写"preset": "feed_safe",字幕、片尾小字进保守安全框,--dry逐条检查。
第一天就 git init,并把 .env、gen/、renders/、.cache/ 写进 .gitignore。每类数据只认一个文件作为来源:
- 产品外观:规格文件或 3D 母版;统一设定:
packs/look_bible.txt; - 时间轴:
shots/shot_list.json; - 字幕:
edit/captions.json; - 剪辑:
edit/edl.json; - 批准的镜头:
edit/approved_drafts.json、edit/approved_bridges.json; - 宣称和授权:
brief/claims.md、brief/licenses.md; - 用户意见:
brief/feedback_brief.md。
流水线
两条轨道并行:画面轨和声音轨。声音不要等画面升完高清才开始,剪辑结构一定下来就动手。
| # | 阶段 | 产出 | 用户把关 | 自动检查 / 记录 | 详见 |
|---|---|---|---|---|---|
| 1 | 立项与事实 | 创意简报、产品事实确认单、交付清单 | 确认事实、片型、预算 | — | 01、02 |
| 2 | 创意与镜头表 | 结构、节拍、镜头表(每镜:机位、动作、效果、产品状态、模式、转场、字幕、音效) | 定结构和措辞方向 | 时长和阅读时间是否装得下 | 02、rulebook §1 |
| 3 | 预演与底图 | 3D 母版、每张关键帧的底图契约、需要时的灰模视频;无 3D 时用产品参考图 | 看底图总览 | 从每个真实机位检查朝向、线缆、穿模 | 03 |
| 4 | 设定母版 | 产品母版、场景母版、人物设定(资产先行,先于所有镜头关键帧) | 逐张过检查点 | — | 04 §2、§3 |
| 5 | 关键帧 | 每张一个出图包,或由脚本调 API;统一尺寸 | 手动画或审图 | Gate K(项目脚本):轮廓、比例、效果状态、缩放一致、重复文件 | 04 |
| 6 | 视频草稿 | 480p 草稿 | 开通、付款由用户自己点;批量前看余额;看草稿 | 演练与拒发条件(含提示词检查);逐 0.25 秒拼图;Gate V(项目脚本) | 05 |
| 7 | 审片与账本 | edit/approved_drafts.json、edit/approved_bridges.json、粗剪 | 给意见,编号写进 brief | 人工放行绑定文件指纹 | 05 §13 |
| 8 | 剪辑与字幕 | EDL 预览:转场、AI 过渡镜头、字幕、引线标注、片头片尾卡 | 改措辞和顺序 | --dry 检查间隔和阅读时间;字幕静帧审阅 | 06 |
| 9 | 高清升级 | 批准镜头原样升 1080p | 顺序和字幕定稿后放行;先看余额 | 时长和中间帧一致性 | 05 §6 |
| S1 | 声音设计(与 8、9 并行) | 选曲和授权、音效 cue sheet、产品自带声音、需要时配旁白 | 选曲(发可播放的文件)、试听过渡 | 授权记录 | 07 |
| S2 | 混音 | 平衡后的成片音轨 | 听成片 | 按时间窗实测"音效减音乐"的 dB;响度目标 | 07 |
| 10 | 交付 | 母版、30 MB 以内的分享版、各平台画幅、15/6 秒剪短版 | 定片头文字、要成片 | 时长、音视频流、响度、关键帧画面 | 08 |
| 11 | 多语言 | 一份文案文件生成平行的字幕和 EDL | 定文案 | 原版逐像素不变;残留原语言字符为 0 | 08 |
| 12 | 合规终检 | brief/claims.md、brief/licenses.md、AI 标识 | 签字 | 词表检查 + 逐句对照产品事实 | 09 |
最重要的 12 条
完整的 139 条见 references/rulebook.md。
- 先写立项单:片型、观众(内部还是公开)、平台、时长、画幅,再谈创意。
- 产品事实先成文、先确认;一处更正就一次改完所有下游(3D、底图、出图提示词、视频提示词、字幕、标注、brief),再全局搜残留词。
- 3D 只定位置,最终像素交给 AI 画;每个镜头都问一句"最终像素从哪来"。
- AI 关键帧要当首帧、尾帧来驱动镜头,不能只做一堆参考图里的一张。
- 喂给视频模型的每个像素都会被照抄:灰模统一灰色并降噪,参考包里不放机位不同的图,参考图本身必须正确。
- 视频提示词写成逐秒剧本,数字从 3D 或镜头表导出,不手写;只写变化,不重复描述外观。
- 效果按摄影机拍到的样子写,并写清"不是什么";常亮的灯写"亮度恒定";用量用肉眼可查的标准卡住。
- 花钱分两级:先过免费检查、出 480p 草稿;批准后才原样升高清,升之前先看余额。
- 逐帧看原片:首尾帧模式会在中间偷偷叠化;独立审查必须看生成的原片。
- 字幕、标注、声音都放在剪辑层,由时间线数据生成;改字、调序、升级高清都不用重新生成画面。
- 合规两道关:先过词表(极限词、功效、医疗、数字),再逐句对照产品事实查"暗示的功能"。AI 标识的默认做法是开头画面标一次(至少约 2 秒)、片尾小字说明一次,再加上平台的 AI 声明;不挂常驻角标,除非平台要求。
- 用户的每条意见按原话编号写进 brief,所有 agent 和终审都对照它。长对话会被压缩,文件不会。
和用户协作
- 时间:先给预估;长任务没有可见输出时,主动报告当前阶段、最后一次活动的时间和新的预计时间。
- 轮到用户动手时一次交齐:完整的说明文件、能直接打开或播放的素材,发到手机上(单个文件 30 MB 以内)。母版告诉用户放在哪个文件夹。
- 听清工作方式:"先只分析"就只分析;"中间不要停"就一路做到交付;"最后一轮"就跳过中间的试听。
- 结论先行:用户问"要推翻重来吗",第一句给结论,再讲理由,最后列出需要用户拍板的点。
- 安全:
- 不读、不显示、不索要密钥(只放
.env); - 不注册账号、不输入密码或支付信息;
- 同意协议、付款、开通、充值都停在按钮前,说清代价,由用户自己点;
- 下载文件前先问。
- 不读、不显示、不索要密钥(只放
- 长任务:
- 开跑前请用户接上电源、把系统睡眠设为"从不",再申请保持唤醒;
- workflow 和批处理要能从磁盘续跑;
- 提交和查询结果分两步;
- 3D 渲染一次只开一个进程。
细节见 references/10-working-with-user.md。
对外发布
凡是公开的内容,包括广告投放、社交平台、公开演讲配图:
- 不放爆炸图、透视图、能看到内部结构的镜头,不写内部元件名称和工作原理;
- 社交平台的图文里不点名具体的 AI 产品(写"图像大模型""视频模型""3D 软件");
- 不晒花费;
- 踩坑写成通用的流程问题,不写个人经历;
- 加上平台要求的 AI 生成声明。
详见 references/09-compliance.md。
工具
所有脚本都用 uv run 运行,依赖写在各脚本开头的 PEP 723 块里,ffmpeg 来自 imageio-ffmpeg。
| 脚本 | 用途 |
|---|---|
scripts/edl_editor/edit.py | 按 EDL 出片:卡片、叠化、黑场、光晕、甩镜、AI 过渡镜头、字幕、引线标注、角标;支持 16:9、9:16、1:1;--dry 演练,输出 timeline.json。用 make_demo.py 可以一键生成演示项目 |
scripts/edl_editor/typeset.py | 字幕和卡片排版引擎:中英文层级、标点挤压、安全区、跨平台字体回退;--specimen 可以检查本机字体 |
scripts/video_api/seedance.py | 火山方舟 Seedance 客户端:首尾帧、参考图等模式,草稿与高清升级,可续跑的查询,费用估算和账本,--dry 不联网、只做检查(含提示词检查);也可以照着它给别的视频模型写适配 |
scripts/audio/mix.py | 音乐和音效分轨按时间窗平衡,实测 dB 差,限幅和两遍响度标准化,再合成进画面 |
scripts/qc/strip.py | 每 0.25 秒抽一帧拼成长图,画运动和亮度曲线,标出硬切、跳变和定格 |
scripts/qc/contact_sheet.py | 带标签的图片网格,用来审阅底图、关键帧和草稿 |
scripts/qc/normalise_keyframes.py | 关键帧 raw → norm:镜头帧裁成输出画幅,母版和参考图只缩不裁,放大和硬裁切会警告 |
scripts/qc/lint_prompts.py | 视频提示词的禁用词族扫描(含本产品的机理禁用词),没扫到文件时报错 |
不附带、要项目自己写进 work/ 的脚本:Gate K 和 Gate V 的判定(seedance.py 不读 Gate K 报告,"没有报告不提交"由项目自己的提交步骤保证)、出图包生成(keyframes.json → packs/)、shot_list.json → EDL 和字幕草稿。要求写在 04、05、06 和 templates/prompts/keyframe_pack.md。
使用说明见各目录的 README。模型的能力、价格和限制变化很快,用之前先核对官方文档,各参考文件末尾的"模型备注"都标了核对日期。
什么时候读哪个文件
| 文件 | 什么时候读 |
|---|---|
references/01-intake.md | 新项目第一天 |
references/02-formats.md | 定片型、时长、画幅、结构,或者做广告和竖版短视频时 |
references/03-previs.md | 搭 3D 预演或底图之前;没有 3D 模型时 |
references/04-keyframes.md | 写出图包、定统一设定、检查关键帧时 |
references/05-video-gen.md | 写视频提示词、选生成模式、提交、审草稿、高清升级时 |
references/06-edit-type.md | 剪辑、转场、字幕、标注、片头片尾卡 |
references/07-sound.md | 选曲、音效、旁白、混音 |
references/08-delivery.md | 交付、各平台版本、剪短版、多语言 |
references/09-compliance.md | 写任何上屏文字或旁白之前;公开发布之前 |
references/10-working-with-user.md | 和不写代码的用户协作、长任务、安全边界、环境问题 |
references/rulebook.md | 某个阶段拿不准时,查对应的那一组 |
references/pitfalls.md | 出问题时,先按现象查 |
templates/ | 开工时复制到项目里,填写后使用 |
examples/case-study.md | 想看一个完整项目是怎么走下来的 |