品牌推广片 (工作室样片) 是做什么的?
该技能通过一个配置文件 promo.json 生成完整的推广视频。画布场景在 headless Chrome 中逐帧渲染,视频完全由动态设计构成,无需模板或素材库:
- 画面: 品牌自有片段、标志动画、文字。
- 配乐: 代码生成的原创合成音轨(128 bpm)。每个剪辑、转场和高潮都位于节拍上。
- 旁白: VoxCPM2,本地运行。
- 音效: 每个作品的音频在其聚光灯下播放。
视频结构固定,适用于任何品牌规模。仅内容发生变化。
| 时间 | 段落 |
|---|---|
| 0-3.4 秒 | 逐字打出 { 每个故事 },然后“都值得被 呈现。” |
| 3.2-7.6 秒 | 3D 卡片环(所有作品的剧照):“这里有五个 我们的。” |
| 7.6 秒(第4小节) | 高潮:品牌名称在故障风格的强调框中出现,附带副标题 |
| 9.5 秒 + 每段5.6秒 | 每个作品的聚光灯:标题模块 + 作品显示在倾斜卡片(16:9)或手机(9:16)上,“完整视频 · m:ss”标签,其自身音频伴有实时电平条 |
| 停顿 | “你的故事” 然后在旁白行最后一个词上显示大的“接下来。” |
| 飞驰 | 所有片段在3D空间中飞过,旁白的短语间显示三个词(撰写·配音·动画) |
| 结尾 | 液体标志落在最终高潮上,向左滑出,名称擦入,然后是标签和网址 |
长度为:5个作品时51.5秒,4个作品时45.9秒,3个作品时40.2秒。
要求:
- ffmpeg, Node 22+ 和 Google Chrome 或 Chromium(
CHROME_PATH)。 - 带有 numpy 和 scipy 的 Python 环境(
PROMO_PY)。 - 对于旁白,需要 VoxCPM2(
VOX_PY,参见scripts/voices.py)。没有它则推广片无旁白,或者您可以将自己的录音文件放入build/vox/<id>.wav。
工作流程
1. 收集推广所需内容
-
3-5 个作品: 品牌完成作品的视频,长度不限。竖屏视频在手机上播放,横屏视频在卡片上播放。注意:
- 每个作品要有一个好的 声音时刻,例如句首或笑点:在聚光灯中播放该作品4秒的音频。在
promo.json中提供其开始时间作为sound,或者留空,则自动选取视频约35%位置附近安静间隙的开始。 - 如果不想播放某作品的音频,设置
"mute": true。
- 每个作品要有一个好的 声音时刻,例如句首或笑点:在聚光灯中播放该作品4秒的音频。在
-
标志动画,需带透明通道。最佳来源是使用液体风格运行
/generate-logo:generate-logo/scripts/animate.sh logo.png --styles liquid --prores这将生成
<name>-5s-liquid-alpha.mov及其-sfx.wav。透明-alpha.webm或透明 PNG 也可用。 -
品牌信息:
- 名称,分为两种颜色部分(例如
["KumNit", " Studio"])。 - 颜色:两个用于名称的渐变、一个强调色、一个次要强调色和一个暖色强调色。从标志中读取这些颜色。
- 网址。
- 品牌制作内容:四个标签。
- 名称,分为两种颜色部分(例如
-
语言:
"lang": "en"或"km"。对于高棉语,所有文字和旁白行均使用自然高棉语书写。Kantumruy Pro 和 Koulen 字体已包含。
2. 编写项目
为项目创建一个文件夹,并将 examples/kumnit-showreel.json 复制到其中,重命名为 promo.json,然后编辑它。每个键的描述见 references/config.md。保持文本简短:标题一至三个词,每行最多六个词。长行会自动缩小以适应,但可读性会变差。
在 voice.lines 中为每个时刻编写一句简短的旁白:
next行应以显示为大的词结尾。例如,“你的故事可能就是 你的。”rush需要三个短语,用逗号分隔,每个对应一个飞驰词(“我们撰写它,配音它,并动画每一帧。”)。
3. 预览(约30秒)
<skill>/scripts/promo.sh <project>/promo.json --preview
此命令将剪辑素材、规划时间线并渲染12张静态帧到 out/<name>-preview.png。 请仔细阅读 并检查:
- 卡片显示正确的时刻。
- 没有标题被挤压。
- 标志构图恰当(其标记应填充约60%的画面框)。
- 聚光灯交替出现在两侧。
要修改画面,请更改该作品的 sound 开始时间。然后删除 assets/clips/p<k>、assets/bites/p<k>.wav 和 assets/manifest.json,重新运行预览。
4. 渲染(首次约10分钟)
<skill>/scripts/promo.sh <project>/promo.json # 在后台运行
各阶段按顺序执行:素材、声音、规划、音乐、混音、渲染、编码。
- 声音: 首次运行加载模型(约2分钟),之后每行旁白需要10-60秒。已存在的行会被保留,因此如需重新生成某行,请删除
build/vox/<id>.wav。 - 渲染: 使用2个 Chrome 进程约需4分钟。
- 恢复: 使用
--from mix(或render、encode)从该阶段开始重新运行。
输出:out/<name>-1080p60.mp4 和 out/<name>-contact.png(每秒一帧)。
5. 交付前检查
- 阅读联系表。
- 使用
ffprobe检查时长是否符合预期(5个作品时51.5秒)。 - 混音已标准化至 -14 LUFS。
- 您无法听到结果,因此请告知用户您已检查的内容(时间、电平、帧)并请他们聆听。特别注意每个作品自身音频上的旁白。
调优
- 音效: 设置
sfxDir为用户自己的音效文件夹,scripts/audio.py中的文件名(SFX)会优先尝试。缺少的音效会由程序合成,因此该技能无需音效库也能工作。 - 时间: 时间基于
scripts/plan.py中的旁白测量。每个作品的音频在其旁白行之后开始,并在下一个聚光灯之前停止。如需更改规则,请编辑plan.py,而不是场景文件。 - 外观: 颜色来自
brand配置,所有动画均在scripts/scene.mjs中,配乐位于scripts/music.py,其小节布局在文件顶部有说明。