1实现原理 · 为什么它能做到
批量机制:一个数据驱动模板 × CSV = N 个变体,每行一个已 message-matched 的完整广告,逐行渲染。
The payoff: author the ad once, then let a CSV drive the matrix. Each row is one fully-formed, message-matched variant. Render once per row.
确定性渲染纪律:模板只读一个 variant 对象,所有动画值必须是 useCurrentFrame() 的纯函数。
Make every animated value a pure function of `useCurrentFrame()` so each frame renders deterministically (no CSS transitions, no library timers — they desync the render).
实验可解释性纪律:一次只变一个字段,其余布局/动效/配色/时长全部锁死。
Hold layout, motion, colors, and timing constant; swap *only* the field under test (hook, or offer, or CTA). Mixing two changes makes the winner uninterpretable.
hook 与 CTA 必须消息对齐:3 秒内的承诺=按钮兑现的承诺。
The promise made in the first 3 seconds must be the promise the button pays off.
多比例导出:hook/产品/CTA 全部设计在 1:1 中心方块内,靠重新居中而不是 letterbox。
Design the hook text, product, and CTA inside the **1:1 center square** so they survive every crop.
平台安全区是真规格:9:16 底部三分之一被平台 UI 占据,必须预留 bottomSafe。
The 9:16 bottom third is the single most violated zone — captions, the CTA button, and the handle stack there.
坏数据必须 fail loud:解析器累计错误后 exit 1,不产出任何坏广告。
error(s) — no broken ads written.
验证环:先渲染便宜 PNG stills,再用 shipped props(真实数据行)判定而非 defaultProps。
Cheap PNGs first, full encode only once they're clean. Render with the **shipped** props (the real row), not just `defaultProps`.
2核心能力
3外部依赖
| 类型 | 依赖 |
|---|---|
| package | remotion(帧驱动渲染框架) |
| cli | npx remotion render / still |
| package | zod(输出契约要求的 props schema) |
| cli | ffmpeg / ffprobe(仓库共享 contact-sheet.sh、probe-mp4.sh) |
| network | iart.ai(reference 尾部推广链接,具 utm 参数;仅读者点击才请求) |
4风险提醒 风险提醒:橙色 · 评估后使用
- 远程包依赖(工具链面) — remotion/zod/@remotion/cli 经 npx 从 npm 取包并执行;skill 无版本锁文件与哈希校验,供应链风险由 npm 生态承担。
- 渲染期在本地执行项目代码 — Remotion 会 bundle 并运行被渲染项目的 React 代码(框架固有属性);把不可信第三方模板并入工程即等于执行其代码。
- 文案内容不被审真伪 — hook/proof/CTA 中的「Teams save 11 hrs a week」这类数字由数据行提供并原样上屏,skill 只校验格式不校验事实。
- 示例代码存在小瑕疵 — 解析器的全局 error 计数会在首个坏行后停写后续合法行;`scripts/` 相对路径与 skill 目录不一致,照抄命令行会失败。
- 归属与引流 — 每份 reference 末尾固定带 iart.ai 推广段与 utm 链接,属商业引流位,读者需自行判断中立性。
5第二遍独立确认
- [ok] skill 目录内是否藏脚本或凭证读取 — 目录只有 README.md(0B)/SKILL.md/references/*.md;全仓 token 扫描 process.env|API_KEY|TOKEN|cookie|keychain|Bearer 零实质命中(唯一命中是 product-demo reference 的 `.cookie-banner{display:none!important}`,属 UI 清理样式,非凭证读取)。
- [ok] SKILL.md 与 reference 的渲染命令是否自洽 — SKILL.md 走「扁平 props/ + --props-merge 传 aspect」,reference 走「props/<ar>/ 目录 + calculateMetadata 解析尺寸」;两条路线实现同一目标,非矛盾。
- [discrepancy] CSV 解析器校验的真实行为 — `if (errors) return;` 用的是全局错误计数:首个坏行之后,后续原本合法的行也不会写盘(注释宣称的语义是「不产出坏广告」)。行为偏保守、不会产出错误广告,但会让使用者误以为只有 1 行坏。
- [ok] hook 长度告警阈值与平台规格是否一致 — 解析器 `if (row.hook && row.hook.length > 60) console.warn(...)` 与 platform-specs 的 hook 在 9:16 ≤ ~60 chars 的规格对得上。
- [discrepancy] `Packaged helper (scripts/)` 的路径可解析性 — SKILL.md 写 `scripts/contact-sheet.sh` / `scripts/probe-mp4.sh` 这类相对路径,但这些脚本位于**仓库根** scripts/,skill 目录内并无 scripts/(skill 位于 skills/ad-creative-video/);从 skill 目录直接执行会找不到文件。
- [ok] 跨 skill 指名与边界声明 — SKILL.md 用结构描述而非 skill 名排除促销与证言类("Not for sale/discount countdown promos, and not for testimonial/review-driven ads"),不存在跨仓库依赖或指纹不明的外部 skill 调用。
6结论
6cc9db5805b68bad…0de0f2a1c1