1实现原理 · 为什么它能做到
定位是「审片编辑」而非「生成器」:把口播视频 + 转录变成有节奏的动效节拍组,原则是不遮挡说话人、不为填空而加图。
Use this skill to turn a talking-head video plus transcript into a paced set of motion graphics that support the narration without covering the speaker unnecessarily.
第一步是读工程现状:AGENTS.md、根 composition、现有节拍表、共享 CSS、转录,然后从 data-start/data-duration 或 master SHOW 数组建覆盖图。
3. Build a coverage map from the root `data-start` / `data-duration` entries or the master `SHOW` array. … 5. Identify topic spans by narration, not by arbitrary timestamps.
两类节拍有明确分工:整屏皱纸(paper takeover)用于论点/清单/章节/引言/数据,玻璃下三分(glass lower-third)用于解释型、话题标签、公式式心智模型,且必须不遮脸。
Use a paper takeover when the narration reaches a major thesis, list, section marker, quote, or stat that should briefly become the whole frame. … Use a glass lower-third when the speaker should remain visible and the graphic should support the current idea.
节奏用可量化的覆盖阈值兜底:开头不超过 20-30 秒无节拍,正文不超过 30-45 秒,并把 30s 设为严格扫描阈值、45s 设为正文上限。
- Early video: avoid more than 20-30 seconds without a visual beat. … - Main body: avoid more than 30-45 seconds without a beat.
对时方法锚在词上:找到话题起始词、提前 0.2-0.6 秒进场、话题结束或自然交棒才收起,下一拍紧接时提前 0.1-0.5 秒清场。
2. Start the beat 0.2-0.6 seconds before that anchor when possible. … 4. If the next beat begins immediately, clear 0.1-0.5 seconds before it unless the handoff is intentional.
把 HyperFrames 的硬约束写成实现清单:每个挂载的定时元素要有 data-start/data-duration/data-track-index,子组合要注册暂停的 GSAP 时间线到 window.__timelines,并用 tl.set({}, {}, SLOT); 钉住槽位,不许出现非确定性逻辑。
- Every mounted timed element needs `data-start`, `data-duration`, and `data-track-index`. … - Sub-compositions should register a paused GSAP timeline on `window.__timelines`. … - Pin each sub-composition timeline with `tl.set({}, {}, SLOT);`.
收尾是自检 + 汇报:跑 lint、清零错误、单列已知非阻断告警;若用户要可渲染产物就渲染或冒烟渲染,并给出精确的文件路径与时间戳。
1. Run the HyperFrames linter. 2. Fix all errors. 3. Mention warnings separately if they are known and non-blocking. … 5. Give the user exact file paths and timestamps changed.
2核心能力
3外部依赖
| 类型 | 依赖 |
|---|---|
| cli | HyperFrames CLI(对编辑后的 HTML 跑 lint;用户要 render-ready 时渲染或冒烟渲染,用法由 ../hyperframes-cli 提供) |
| cli | 本地搜索/脚本工具(rg、Select-String、小型 Node/PowerShell 转录脚本) |
| package | Node.js(跑 lint/转录小脚本的环境前提) |
4风险提醒 风险提醒:蓝色 · 知晓即可
- 依赖具体工程形态(SHOW 数组 / data-start 可见表) — 覆盖扫描与对时都假定项目有可解析的可见性表或 master SHOW 数组;换到结构不同的 HyperFrames 工程时需要先做适配,否则缺口报告会失真。
- 阈值只是经验值,硬套会出问题 — 20-30s / 30-45s 是为长视频留存调的;短片、教程型内容或已经过用户删减的节拍表,照搬阈值反而会加出多余图形——文档自己也提醒以用户口味优先。
- 改写用户工程文件,回滚需靠版本管理 — 流程会新增 composition 文件并修改 index.html 与可见性表;skill 无备份机制,建议在 git 工作区里操作。
- 内容层注入的相邻面 — 转录与项目内既有文案都会被当作事实来源读入上下文;不受信任的转录内容可能影响节拍与文案撰写,尽管不会带来代码执行。
5第二遍独立确认
- [ok] 目录文件清单 — find 返回 SKILL.md(8.4KB)与 agents/openai.yaml(250B);无 scripts/、无 references/、无二进制资产。
- [ok] 网络/凭证面反例搜索 — 全目录 0 处 http(s) URL、0 处 fetch、0 处 env/API_KEY/TOKEN/SECRET;唯一外部命令是 `npx hyperframes lint` 与本地 rg/Select-String。
- [ok] 数字口径跨章节一致性 — Pacing Heuristics 的 20-30s / 30-45s 与 Coverage Scan 的『30s 严格、45s 上限』自洽;Timing Method 的 0.2-0.6s 进场与 Practical Defaults 的『Beat start lead-in: 0.2-0.6 seconds』一致;整屏 4-12s 上限与 Practical Defaults 的 5-8s/8-10s 分档相容。
- [ok] 实现规则是否可被 lint 校验 — 时序元素属性(data-start/data-duration/data-track-index)、子组合时间线注册(window.__timelines)、SLOT 锚(tl.set({}, {}, SLOT);)、同轨不重叠 —— 均为同仓 HyperFrames 系列 skill 反复出现的 lint 口径,文档并明确 Run `npx hyperframes lint`。
- [ok] 是否夸大了自动化 — 文档要求人工/agent 判断(不为填空加图、按话题而非时间戳定位、保留用户口味),并给定扫描阈值与人工复核点,无『全自动生成』表述。
- [ok] 宿主元数据内容 — agents/openai.yaml 仅含 interface.display_name / short_description / default_prompt 三项展示字段,无权限、无命令、无环境变量。
6结论
f17e6d21395b29b4…0d30152a82