1实现原理 · 为什么它能做到
两条硬规则被明确标为「平台约束而非审美」:intro 仅 3–5s、logo 可读时刻 1–2s,超出会实测掉留存。
1. **Keep the intro 3-5s, the logo hit 1-2s.** Anything longer than 5s causes measurable viewer drop-off, which hurts the video in the algorithm.
第二条硬规则同样来自平台机制:结束页元素只允许出现在最后 5–20s,且视频总长必须 ≥25s。
YouTube only allows end-screen elements in the final 5-20s, and the video must be at least 25 seconds long.
logo sting 被拆成 windup → impact → settle 三拍,并要求品牌标记精确落在音频最强瞬态那一帧。
The brand mark must land exactly on the sound's impact frame, not near it.
snap 的制作方式是 spring 从 1.18 过冲到 1,加 6 帧白闪衰减。
`spring` overshooting from 1.18→1 *is* the snap; the white `flash` decaying over 6 frames sells the impact.
outro 版式的核心是二分法:YouTube 的点击元素占右侧三分之二,自有品牌只能待在左三分之一。
YouTube's clickable elements live on the **right two thirds**; keep your own branding, channel name, and any face-cam in the **left third**.
元素原生尺寸被写死(订阅圈 294×294、下一个视频卡 615×345),并按这些尺寸在版式里画虚线占位框。
| Next-video card (thumbnail) | 615×345 | upper-right or center-right |
guides 只在预览构建里出现,成片必须丢掉,右侧刻意留白。
Ship the dashed guides only in a preview build; the final render drops them, leaving a clean plate whose right side is intentionally quiet.
两个 composition 共用一个 brand prop(name/logo/sting/bg/fg/accent),没有任何硬编码品牌信息。
Both compositions read a single `brand` prop — no hardcoded names, colors, logos, or audio.
验证必须专门检查 impact 帧(logo 满格 + 白闪衰减中),并要求成片去掉虚线参考框。
Verify the **impact frame** explicitly (logo snapped to full, white flash decaying) — the sting must land *on* it, not near it.
2核心能力
3外部依赖
| Kind | Dependency / Endpoint |
|---|---|
| cli | npx remotion still / render / compositions |
| cli | scripts/contact-sheet.sh + scripts/probe-mp4.sh(仓库根共享验证工具箱,SKILL.md 明列) |
| cli | 批量循环:`for f in brands/*.json` + basename 派生输出名(reference §7) |
| package | ffmpeg / ffprobe(系统依赖) |
4管控建议与判定依据
- scripts/: 执行本地脚本或命令: (SKILL.md 明列的验证回路)`npx remotion still Intro out/i-{windup,impact,settle}.pn
- 网络端点: 声明外部网络访问: `npx remotion …`:首次执行经 npm 官方渠道取包与 CLI(registry.npmjs.org,域名由 npm 决定,源码未硬编码
- 本地工作目录: 文件读写与工件输出: agent 按本 skill 构建的 Remotion 工程与 out/intro.mp4、out/outro.mp4(批量为 out/<brand>
5第二遍独立确认
- [ok] 平台时间常数在 SKILL.md 与 reference 是否一致(防一手数据两处不同) — SKILL.md:intro 3-5s、logo hit 1-2s、end-screen 只允许最后 5-20s、视频 ≥25s、outro plate 保持 ~20s;reference 表:"logo hit 1-2s"、"Whole intro | 3-5s max"、"End-screen window | last 5-20s"、"Outro plate hold | ~20s"、"Minimum total video length | 25s"。两处逐值对应,无矛盾。
- [ok] 元素尺寸与数量上限是否两处一致 — SKILL.md 给 Subscribe/channel circle 294×294、Next-video card 615×345、Playlist/link card 294×294,并在输出清单写「Up to 4 end-screen elements planned (1 video + 1 subscribe is the highest-CTR layout)」;reference 元素表同值(615×345 / 294×294 / 294×294)并写 "| Max elements | 4 | highest CTR layout = **1 video card + subscribe**, nothing else |"。一致。
- [discrepancy] Shorts(9:16)场景的覆盖是否存在缺口(第一遍只读 SKILL.md 会漏) — SKILL.md 的硬规则 2 是无条件表述:「The outro must be ≥20s of held, quiet layout, and the video ≥25s total.」并未提 Shorts 例外;而 reference §1 明确写 "for Shorts use a 2-3s end card and a verbal CTA instead of native end-screen elements (Shorts do not support them)",§5 另设「9:16 (Shorts) note」。结论:只读 SKILL.md 的 agent 可能给一条 45 秒的 Short 设计 20 秒 outro,直接吃掉整片——这是对 pin commit 有效的真实覆盖缺口(信息存在于 reference,未上提到 SKILL.md 的硬规则)。
- [unlocatable] 「Anything longer than 5s causes measurable viewer drop-off」是否有据 — SKILL.md 与 reference 都以肯定语气给出留存影响("retention drops measurably"),但仓库内无引用来源、无数据集、无链接;本次为只读侦查,不验证该断言,仅记为文档声明。平台机制部分(5-20s 窗口、≥25s 门槛)属 YouTube 公开规则,可信度高但仍未附官方链接。
- [ok] brand prop 是否真的无任何硬编码(防「模板化」空口宣称) — SKILL.md 的 LogoSting 与 EndScreen 组件里,颜色/字体/logo/sting 全部取自 `brand.bg` / `brand.fg` / `brand.accent` / `brand.logo` / `brand.sting`(仅字体族在示例里写 "700 56px Inter" 这类样式串);reference §7 定义 Brand 类型与 brands/pixelforge.json 示例,并强调 "Keep fonts, sizes, timing, and layout fixed in the components — only `brand.json` changes." 与 SKILL.md 的宣称一致。
- [ok] impact 帧对齐方法是否可操作(而非只喊「要对齐」) — reference §4 给出四步:「Open the sting in any waveform view… The impact is the tallest transient」「Read its time in seconds, e.g. 0.78s」「Set `IMPACT = Math.round(0.78 * fps)` and make the logo's `opacity`/`scale` snap key fall on that frame.」「If you can't move code, instead trim the audio so its transient sits at your fixed `IMPACT` (e.g. 0.8s)」。方法具体、可执行,且给了代码侧与音频侧两种收敛方向。
- [ok] 验收与交付是否覆盖「guides 不得进成片」 — SKILL.md 写 "Ship the dashed guides only in a preview build; the final render drops them",verify 段亦要求 "Drop the dashed end-screen guides for the final render; verify the right two-thirds is intentionally quiet.";reference §6 用 prop 开关实现同一组件的两种输出。纪律 + 机制 + 验收三处齐备(但仍是纪律而非强制渲染开关)。
6结论
9f3a594d22ab4694…