1仕組みと動作原理
6段階のオーケストレーション+ステップごとのゲート管理:Setup → Capture → Design System → Storyboard/Script → Audio → Visual Design → Frames → Finalize。各ステップに「このステップで禁止される事項」と通過条件が明確に定められており、ステップのスキップは禁止されています。
You are the orchestrator. Work in `videos/<project>/`. Run steps in order and pass each gate before continuing. User-gated steps are Step 0, Step 3, and Step 6.
素材収集はローカルリポジトリのCLIによるサイトスクレイピングで実行:`npx hyperframes capture "<URL>" -o ./capture --json`。スクリプト自体がページとアセットの取得を担い、スクレイピング失敗時はハードストップとなり、偽装フォールバックは許可されません。
A non-zero exit, JSON `ok: false`, or `capture/BLOCKED.md` is a **hard stop** for the capture path: report the recorded reason and do not consume partial screenshots, DOM, tokens, or assets. Do not manufacture a synthetic no-capture fallback after a failed URL capture.
オプションのビジョン機能は環境変数内のキーにより決定:GEMINI_API_KEY / GOOGLE_API_KEY / OpenRouterキーが検出されると、キャプチャフェーズでアセットの説明がasset-descriptions.mdに自動生成されます。キーが存在しない場合はDOMコンテキストを使用して続行します。
If `GEMINI_API_KEY`, `GOOGLE_API_KEY`, or an OpenRouter key exists, capture auto-captions assets into `capture/extracted/asset-descriptions.md`. This is not a review gate. Without a vision key, use DOM context and continue.
デザインシステムは手動変更不可:提供済みのframe presetから1つを選択することのみが許可され、build-frame.mjsがpresetのFRAME.mdとブランドトークンを「ロールに基づく色の再マッピング+フォント置換」によって決定論的に処理し、自己検証を行います。
// Remix rule — ONLY `colors:` values and `typography:` fontFamily change; keys, // structure, geometry, and components are untouched: // colors — map brand tokens onto the preset's keys BY ROLE: the ink-role key takes // the brand ink (darkest/ink-named), the canvas-role key takes the brand // canvas (lightest), and every other color is repainted with the nearest // brand accent's hue+saturation while KEEPING its own lightness
ナレーション/BGMはHeyGen(ログイン状態)またはローカルエンジンを利用:`auth status`のexit 1は「未ログイン」を示す通常のセマンティクスであり、skillはこれを失敗として再試行したり&&で連結したりしないよう明記しています。認証情報は~/.heygenに保持されます。
Note the exit code contract: `auth status` **exits 1 when not signed in** (and when the stored credential is rejected) — that non-zero exit is the normal signed-out state, not a command failure, so don't treat it as an error, don't retry it, and don't chain it with `&&`/`set -e` in a way that would abort the workflow.
フレーム間の連続性はワーカー同士の推測ではなく数値ハンドオフ規約(handoff_out / handoff_in)で担保:各フィールドを網羅的に記述し、定数も明示的に記載する必要があります。
When an element visibly continues across a frame boundary, give both workers the same numerical handoff in `STORYBOARD.md`: add `handoff_out:` to the outgoing frame and a matching `handoff_in:` to the incoming frame. Name the element and its exact x/y position, scale, opacity, and motion direction/speed at the cut — state every field even when it does not change, because a constant is `opacity: 1`, not an omission.
検証および承認チェーンによる仕上げ:トランジションのinject/verify → lint → check → コンタクトシートスナップショット → 手動/自動承認 → preview → render。レンダリング完了後はチェックを重複実行しません。
Render only after user approval (autonomous mode: after the preview-or-render question): `npx hyperframes render --skill=product-launch-video --quality high --output renders/video.mp4` Do not rerun `lint`, `check`, or `snapshot` after rendering unless the user asks.
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| cli | hyperframes CLI:capture(抓站)/ init / lint / check / snapshot / preview / render / auth status / skills update |
| network | 被抓取的目标网站(任意用户给定 URL;含抓取期的页面导航与资产下载) |
| api | HeyGen Audio API(TTS 与音乐库检索)/ 凭证文件 ~/.heygen |
| api | 视觉模型 key(仅探测是否可用,用于抓取期资产描述) |
| cli | ffprobe / ffmpeg(BGM 时长探测与循环补齐,缺失时降级为警告) |
| network | GSAP CDN(写进装配后的 index.html / caption 皮肤,带 SRI 完整性校验) |
| cli | media-use 侧脚本(prefs.mjs 记录偏好、recipe.mjs 应用配方、audio/scripts/heygen-tts.mjs 列语音) |
| package | 兄弟 skill 依赖(/hyperframes 路由、/hyperframes-core、/hyperframes-creative、/hyperframes-animation、/media-use、/figma) |
4推奨統制措置と判定根拠
- scripts/: ローカルスクリプトまたはコマンドの実行: node scripts/build-frame.mjs --preset <name> --hyperframes .(presetのFRAMをコピー
- 网络端点: 外部ネットワークアクセスの宣言: npx hyperframes capture "<URL>"(ユーザー指定の製品Webサイトをスクレイピング:スクリーンショット、DOM、トークン、アセット)
- 本地工作目录: ファイルの読み書きと成果物の出力: videos/<project>/BRIEF.md、hyperframes.json、STORYBOARD.md、SCRIPT.md、audio_me
5二重目の独立検証
- [ok] 『外部资源』逐条回查调用点是否真实存在 — hyperframes capture 命令原文在 Step 1;~/.heygen 与 HeyGen Audio API 在 Step 3.1 原文;GEMINI/GOOGLE/OpenRouter key 探测在 Step 1 原文;ffprobe/ffmpeg 在 assemble-index.mjs 的 ensureBgmCovers 内真实 spawnSync;gsap CDN 在 assemble-index.mjs:727 与 captions.mjs:480;media-use 的 prefs.mjs/recipe.mjs/heygen-tts.mjs 在 Step 0/3.1 原文。无一条属于推测。
- [ok] 凭证读取是否被夸大或漏报 — 脚本层(23 个 mjs)未发现任何读取 ~/.heygen 或 env key 的代码——凭证读取发生在 media-use / hyperframes CLI 侧,本 skill 只以文字指令调用它们。SKILL.md 同时明令不得把 key 写进 per-repo .env。判定为『授权链式凭证读取』而非本 skill 直读,橙色理由已按此措辞。
- [ok] 抓取失败是否真的硬停(有无隐藏的合成兜底) — Step 1 原文 'Do not manufacture a synthetic no-capture fallback after a failed URL capture.';no-capture 路径被限定为『原始 brief 自带素材』或『用户在失败后明确改用提供的截图/brief』两种情形。未发现绕过路径。
- [ok] 验证:抓取/装配脚本是否有未声明的网络调用 — 对 23 个 mjs 做 fetch/axios/http.request/urllib 扫描 → 0 命中;唯一的对外引用是 HTML 模板字符串里的 CDN URL(浏览器侧加载)。脚本自身不发起 HTTP 请求,网络行为全在 hyperframes CLI 与 media-use 侧。
- [ok] 与同批 skill 的组内一致性(默认 provider/voice 与静音标记) — 本 skill 与 faceless-explainer 都用 'Marcia (female) on HeyGen / am_michael on Kokoro' 作默认声线、都用 `music: none` 作静音标记;本 skill 额外要求传 `--provider <provider>`(因为它需要在 Step 0 就确定 provider 并在 Step 0 展示登录态语义)。差异有据,未见矛盾。
6結論
744e4c9d6dfc554d…