用途:制作品牌动态图形短片或视频广告(如 InboxMate、psquared 等品牌)。核心是一个 HTML 文件 template/reel.html,其中 render(t) 绘制时间 t 的帧;不使用 CSS 过渡,因此每帧精确可复现。template/render.cjs 用 Playwright 抓帧,并与音乐一起管道给 ffmpeg 合成。
主要能力与偏好:广告时长 30 秒,不拉伸场景而是新增场景;节奏约 87 BPM(一拍约 0.69 秒),每场景一个想法,仅在真实音乐重音处快切;元素密度可高(如开场字母雨约 120 个字母);无 showreel HUD(无角标、角文字、时间码),仅保留细进度条;布局需适配,标签与胶囊按文字宽度测量(getComputedTextLength),线条箭头不穿过插画;品牌色为 emerald #10b981、ink #0b1410、paper #f6f7f3 加点阵,标题用 SF Pro Display 900,强调词用 Newsreader 斜体 emerald,插画来自 psquared-websites/apps/inboxmate/media/illu/,每次切换有短白闪;德语文案用“Sie”,标题不用破折号;结尾为 logo 组合、内含 logo 的二维码、“Termin buchen”和 URL。始终输出横竖两种格式,60 fps。
用法:先在节拍网格上做故事板,模板以 128 BPM 音乐时间运行,用 SLOW 放慢到真实节奏(87 BPM 时 SLOW=(60/87)/(60/128),DUR=30/SLOW)。将模板复制到工作目录。音乐可用 ElevenLabs(付费计划):/usr/bin/python3 scripts/elevenlabs_music.py cand 2 87 30,密钥取 ELEVENLABS_API_KEY;用 python3 scripts/analyse_music.py cand1.mp3 84 90 测量。API 会忽略段落时长(返回约 31 秒)但速度精确;选最佳律动与自然结尾,再用 scripts/edit_music.py 按网格剪辑,重复一小节而非时间拉伸;无 API 时用 compose_fallback.py 合成。二维码用 scripts/make_qr.sh https://inboxmate.at <workdir> 生成 qr.json,纠错 H,logo 仅覆盖中心 7x7 模块。预览:node render.cjs preview 1.9,6.6,10.7,...(竖版加 VERT=1),用 ffmpeg tile 拼接触点表检查。渲染:node render.cjs video 60 与 VERT=1 node render.cjs video 60。验证:ffprobe 检查时长与大小、最终文件触点表、用 OpenCV 从后段帧解码二维码,结果复制到 ~/Desktop/。
限制:所有产品或法律声明必须与网站、隐私政策及代码一致。已知(InboxMate,09/2026)可用的说法包括“Daten in Frankfurt”“Standard: EU-KI-Modelle”“Auftragsverarbeitungsvertrag (AVV)”“Für DSGVO-konformen Einsatz gebaut”;不可用“Verarbeitung in der EU”作为绝对说法、“AI-Act-konform”或任何证书、“garantiert DSGVO-konform”。价格、客户名、合作伙伴(Doppler、neverlost)不得出现。不确定时删除声明或询问用户。音乐剪辑时间点需通过测量而非听感确认。