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外部依赖
| Kind | Dependency / Endpoint |
|---|---|
| cli | HyperFrames CLI(对编辑后的 HTML 跑 lint;用户要 render-ready 时渲染或冒烟渲染,用法由 ../hyperframes-cli 提供) |
| cli | 本地搜索/脚本工具(rg、Select-String、小型 Node/PowerShell 转录脚本) |
| package | Node.js(跑 lint/转录小脚本的环境前提) |
4管控建议与判定依据
- scripts/: 执行本地脚本或命令: 本 skill 自身 0 个脚本:目录只有 SKILL.md 与 agents/openai.yaml(find -type f 核对)
- 网络端点: 声明外部网络访问: 相邻面(不判级):`npx` 在依赖缺失时会从 npm registry 拉取官方 hyperframes 包;按同库先例属官方 CLI 常规使用(仓
- 本地工作目录: 文件读写与工件输出: 在目标项目内新建 compositions/beats/NNN-short-name.html(节拍子组合)
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…