用途
render-whiteboard-explainer 是白板讲解视频广告格式的渲染器:一位讲解者用画外音说明一个观点,同时一块真实白板在黑色马克笔下被逐渐填满,像现场图像记录员工作那样。每一笔都落在它所对应的词上,白板会在段落之间被擦除并重复使用。它属于 chat-UI 系列渲染技能,同系列还有 render-imessage-chat 和 render-chatgpt-chat;当创意是“有人通过画图讲解一件事”时,应选用本技能。
主要能力
- 白板底板:每个品牌生成一次真实房间中空白白板的照片,再裁剪使白板填满画面、侧边移出镜头。可书写区域从图像中测量,并在任何映射发生前拉入字幕安全区。
- 线稿绘制:脚本提到的每个主体生成一张黑色线稿,按品牌生成一次,并描摹为有序笔画路径。生成时以第一张为链式基准,保证整组线宽一致。
- 自动版式:布局由 beats 求解,而非手工编写。文字行沿左列向下排列,图形沿右列向下排列,中间保留固定间距,内容占满白板全高。白板在接近均衡边界的停顿处分割,也就是人会擦板的位置。
- 视频渲染:笔画按绘制顺序逐笔出现,每一笔从自己的词开始;文字逐字母书写;段落之间擦板。字幕位于安全区内,不会跑在语音前面。
- 母版处理:先做温和压缩,再进行测量式两遍响度归一化,最后加限制器。目标为 -14 LUFS,真峰值低于 -1.5,并保留收尾停顿。
使用方式
输入包括:带词级时间轴的语音、beats 文件(示例见脚本旁)、以及提供品牌事实的 brand kit。语音必须带词级时间轴;create-vo-elevenlabs 只返回音频,而本格式需要每个词的时间。scripts/gen-voice.py --project <dir> 从 beats.json 读取 vo 和 voice,调用代理的 /with-timestamps 路由,写出 voice/vo.mp3 和 voice/words.json,make-episode.py 需要这两个文件。试运行会打印字符数和成本,--yes 才会实际花费。它通过 GooseWorks 代理(scripts/media_proxy.py)路由,绝不直接访问语音提供商,并拒绝已付费过的载荷。
beats 中每一行说明某个时刻“说了什么”和“画了什么”,可以是一行文字、一个图形或两者兼有;其中一个数字可标记为 hero,会以大号字母呈现而不是作为另一行。标题和副标题写在第一块板上;payoff 是收尾句,写在最后一块板上,并用一个环圈住它所指向的主张。boards 决定白板被擦除并复用的次数,三块适合半分钟视频;分割默认自动完成,也可在某个 beat 上设 "new_board": true 手动开启新板,任何此类标记都会关闭自动分割。
适用场景与限制
适用于以“边画边讲”为创意的短视频广告。运行条件:两个白板字体随 assets/fonts 提供(见其中的 NOTICE.md),图像工具位于本技能旁边。字幕胶囊在 Windows 上使用 Segoe Script Bold,其他地方使用 Permanent Marker,因此非 Windows 平台字幕外观略有不同。字幕胶囊结束于 y=1520 以上;review-finished-ad 会标记底部 400px,所以默认 caption_y 为 1440,布局会让每一行、图形和 payoff 都保持在胶囊上方。
构建过程会在以下检查失败时拒绝继续并指出问题:每个锚点是否解析到恰好一个目标词、段落是否按脚本顺序开始、每个标记是否在其白板被擦除前完成绘制、文字行是否留在列内且不会碰到图形、响度与真峰值以及 payoff 停顿是否达标。
费用与性能
白板照片和线稿是每品牌一次性成本。同一品牌的第二个视频只需支付画外音费用。其余部分(布局、文字、描摹、渲染和母版)免费且在本地完成。渲染半分钟视频耗时不到三分钟。
已知上限
与实拍参考相比,本技能大约只能达到其墨水覆盖率的五分之一,因为参考是更长绘制会话的延时摄影,而这里每个标记都要等待自己的词。填充内容能缩小差距但不能消除。如果需求确实需要填满整块白板,脚本必须更长,或者标记必须不再等待词。