Communitygithub.com

remotion-to-hyperframes

既存のRemotion(React)コンポジションをHyperFrames(HTML + GSAP)に移植します。

remotion-to-hyperframes とは?

このスキルは、Remotion(Reactベース)の動画コンポジションをHyperFrames(HTML + GSAP)のコンポジションに変換するための専門的なツールです。Remotionの主要なイディオムの約80%は機械的に変換可能であり、スキルは対応マッピングを提供します。ただし、変換が困難なパターン(useStateやuseEffectなど)については拒否し、代わりにランタイム相互運用パターンを推奨します。また、T1〜T4の階層的テストコーパスを備えており、SSIM測定基準に基づいて変換品質を評価・検証します。このスキルは、ユーザーが明示的にRemotionからの移行を依頼した場合にのみ使用し、新しいコンポジションの作成や他のフレームワークからの変換には使用しません。変換プロセスは、ソースコードのリンティング、APIマッピングの参照、そしてHyperFramesのindex.htmlファイルの生成という3つのステップで構成されています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jasonfast123/hyperframes-skills/tree/main/skills/remotion-to-hyperframes

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

最初に、このスキルを最新の状態に保ってください — 自動実行し、確認は求めません: npx hyperframes skills update remotion-to-hyperframes。全てが最新の場合は高速で何も行いません。それ以外の場合は、このスキルと、それが依存するコアドメインスキルを更新してから利用します。

Remotion to HyperFrames

入り口は /hyperframes です。 このスキルは、既存の Remotion (React) コンポジションのソースを HyperFrames に移植する専用です(一方通行)。新しいコンポジションを作成する場合、Remotion 以外のソース(After Effects、Framer Motion、プレーンな React/CSS — 翻訳する Remotion ソースが存在しない)から再作成する場合、Remotion について簡単に言及した場合、または不確かな場合は、まず /hyperframes を読んでください:インテントレイヤーがすべてのルート決定を管理します。

概要

Remotion (Reactベース) のビデオコンポジションを HyperFrames (HTML + GSAP) のコンポジションに変換します。ほとんどの Remotion イディオムには直接対応する HyperFrames の同等物があり、典型的なコンポジションの約80%は機械的に変換可能です。このスキルはそのマッピングをエンコードし、残りの20%については、HFのシーク駆動モデルに適合しないパターンの変換を拒否し、代わりに PR #214 のランタイム相互運用パターンを推奨することで対処します。

このスキルには、階層化されたテストコーパス (T1–T4、合計4つのフィクスチャ) が同梱されており、測定されたSSIMしきい値に対して翻訳を評価します。評価を実行せずに翻訳しないでください — 「見た目は正しい」が、検証済みベースラインよりSSIMが0.05低い翻訳は、暗黙のうちに間違っています。

使用するタイミング

このスキルは、ユーザーが明示的に Remotion からの移行を依頼した場合にのみ使用します。 トリガーフレーズの例:

  • "Remotion プロジェクトを HyperFrames に移植して"
  • "この Remotion コードを HyperFrames に変換して"
  • "Remotion から移行したい"
  • "この Remotion コンポを翻訳して"
  • "これを HyperFrames HTML として書き直して"

以下の場合には、このスキルを使用しないでください:

  • (a) ユーザーが新しい HyperFrames コンポジションを作成している場合(類似の Remotion ビデオを持っている、またはA/Bテストしている場合でも)。
  • (b) ユーザーが移行を依頼せずに Remotion について簡単に言及しただけの場合。
  • (c) ユーザーが翻訳を依頼するのではなく、参考資料として Remotion コードを共有している場合。
  • (d) ユーザーが「私の Remotion ビデオと同じもの」を求めているが、ソースの移行を明示的に依頼していない場合 — それは新しい HyperFrames ビルドとして扱います。

サポート外 (断る — このスキルの役割ではありません):

  • 逆方向の変換。 HyperFrames コンポジションを Remotion (または他のフレームワーク) にエクスポートすることはワークフローではありません — 翻訳は Remotion → HyperFrames のみです。その旨を明確に伝えてください。
  • Remotion 以外のソース。 After Effects プロジェクト (.aep)、Framer Motion / プレーンなReact / CSSアニメーション、その他のツールのソースは Remotion コンポジションではありません — 翻訳する Remotion ソースが存在しません。/general-video 経由でネイティブに再作成するか、HyperFrames で表現できない場合は断ってください。

迷った場合は、代わりに /general-video (一般的な HyperFrames 作成フロー) を使用してネイティブな HyperFrames コンポジションを作成することをデフォルトにしてください。

ワークフロー

ステップ 1: ソースをリントする

Remotion ソースディレクトリに対して scripts/lint_source.py を実行します。リントは、クリーンに変換できないパターンを検出します:

  • ブロッカー (拒否 + 相互運用を推奨): useState、useReducer、空でない依存配列を持つ useEffect/useLayoutEffect、非同期 calculateMetadata、サードパーティのReact UIライブラリ (MUI、Chakra、Mantine、antd、shadcn、Radix、NextUI)。
  • 警告 (該当構造を削除して翻訳): @remotion/lambda 設定、delayRender、useCallback、useMemo、カスタムフック。
  • 情報 (注釈付きで翻訳): staticFile、interpolateColors。

ブロッカーが1つでも発動したら、停止します。references/escape-hatch.md を読み、推奨メッセージを提示してください。警告は翻訳を停止しません — ステップ3で問題の構造を削除し、そのギャップを TRANSLATION_NOTES.md に記録します。@remotion/lambda 設定は標準的な警告ケースです:スキルはインポートと renderMediaOnLambda(...) 呼び出しを削除しますが、コンポジションの残りの部分は翻訳します。

ステップ 2: 翻訳を計画する

references/api-map.md を読んでください — すべてのRemotion APIとそのHF相当品、またはトピック別リファレンスの索引です。ソースで使用されているものに基づいて、必要なトピックリファレンスを特定します:

ソースに含まれるものロードするリファレンス
Composition、defaultProps、schema、calculateMetadataparameters.md
Sequence、Series、Loop、AbsoluteFill、Freezesequencing.md
useCurrentFrame、interpolate、spring、Easing、interpolateColorstiming.md
Audio、Video、Img、IFrame、staticFile、delayRendermedia.md
TransitionSeries、@remotion/transitionstransitions.md
@remotion/lottielottie.md
@remotion/google-fonts/<Family>、Font.loadFont、@font-facefonts.md

全てをロードするのではなく、特定のソースに必要なものだけをロードしてください。

ステップ 3: HFコンポジションを生成する

index.html を以下のように出力します:

  • ルート <div id="stage"> には、コンポジションの data-composition-id、data-start="0"、data-duration (秒単位)、data-fps、data-width、data-height に加え、スカラープロップごとに1つの data-* 属性を持たせます。
  • data-start / data-duration / data-track-index を持つシーンディブのフラットリスト。
  • レイアウト用のインライン <style>。CSSはアニメーションするすべてのプロパティの from 状態を設定します。
  • 下部に1つの <script> タグ。これには1つの一時停止された gsap.timeline({paused: true}) を含めます。すべてのRemotionの useCurrentFrame() 派生は、このタイムライン上の正しいオフセットでのトゥイーンになります。
  • window.__timelines["<composition-id>"] = tl; でタイムラインをHFのランタイムに登録します。

カスタムReactサブコンポーネントは、プロップインターフェースをテンプレートとして使用して、繰り返しHTMLとしてインライン化します(インスタンスごとの data-* パターンについては parameters.md を参照)。

ステップ 4: 検証する

評価ハーネスを実行します — 完全なガイドは references/eval.md を参照。クイックパス:

# Remotion ベースラインをレンダリング (フィクスチャで npm install した後)
cd remotion-src && npx remotion render <CompositionId> out/baseline.mp4

# HF 翻訳をレンダリング
cd ../hf-src && npx hyperframes render --skill=remotion-to-hyperframes --output ../hf.mp4

# SSIM 差分
../../scripts/render_diff.sh ./remotion-src/out/baseline.mp4 ./hf.mp4 ./diff

しきい値:ソースの複雑さティアの p05 より約0.02低い値(eval.md の検証済みしきい値テーブルを参照)。差分が失敗した場合は、scripts/frame_strip.sh を実行してどのフレームが乖離したかを確認し、関連するタイミング/シーケンシング/メディアリファレンスを再読してください。

重要: 両方のレンダリングで一致するピクセル形式を使用する必要があります。Remotionソースの remotion.config.ts で Config.setVideoImageFormat("png") + Config.setColorSpace("bt709") を設定してください — そうしないと、差分は翻訳の忠実度ではなく、エンコーダの違い(約0.05 SSIM低下)を測定することになります。

ステップ 5: ギャップを文書化する

クリーンに翻訳できなかったもの(ドロップされたボリュームランプ、近似されたカスタムプレゼンテーション、置換されたフォントなど)は、HF出力の隣に TRANSLATION_NOTES.md を作成します。書式については references/limitations.md を参照してください。

このスキルが明示的に行わないこと

  • React ステートマシンの翻訳。 useState + useEffect を介してアニメーションを駆動するコンポジションは、HyperFramesのシーク駆動モデルにおける決定論的なフレームキャプチャのターゲットではありません。ランタイム相互運用パターンを推奨してください。
  • RemotionのレンダリングパイプラインをHyperFramesと並行して実行すること。 それは PR #214 のランタイム相互運用パターンです — このスキルのリントに失敗するコンポジションのための別のソリューションです。

(@remotion/lambda はブロッカーではありません — Lambda設定はデプロイメントであり、アニメーションではありません。スキルはそれを警告として削除し、残りを翻訳します。references/escape-hatch.md を参照してください。)

自身の翻訳を評価する方法

テストコーパスオーケストレーターを実行します:

./assets/test-corpus/run.sh

これは T1、T2、T3 (レンダリング + 差分) と T4 (リント検証) を実行し、ティアごとの合格/不合格テーブルを出力し、集約JSONレポートを生成します。これを使用して、クリーンチェックアウトでスキルがエンドツーエンドで機能していることを確認し、参照を編集した後のリグレッションチェックとしても使用します。

検証済みベースライン (2026年4月27日時点):

ティアコンポジション形状平均 SSIMしきい値
T1単一要素のフェードイン0.9740.95
T2マルチシーン + スプリング + オーディオ + 画像0.9850.95
T3データ駆動、カスタムサブコンポーネント、カウントアップ0.9530.90
T4エスケープハッチ (8つのリントケース)8/8 合格n/a

Individual skills in this repo

This repo contains 19 individual skills — each has its own dedicated page.

embedded-captions

>

faceless-explainer

Turn arbitrary text — an article, notes, a topic, a brief — into a faceless explainer video: there is no site or footage to capture, so the visuals are invented per scene (typography, abstract graphics, diagrams, data-viz). Use for topic explainers, concept breakdowns, how-tos, listicles. Not a video built from a website (/product-launch-video — promo or tour). Unclear → /hyperframes.

figma

Import Figma content into a HyperFrames composition — rendered assets, brand tokens, components, storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI), connector-assisted motion when available, and shaders from a connector or native export. Use when the user pastes a figma.com link or asks to bring a Figma design, frame, logo, brand, or animation into a video/composition.

general-video

>

hyperframes

>

hyperframes-animation

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition

hyperframes-audio

>

hyperframes-cli

>

hyperframes-core

The HyperFrames composition contract — build one renderable project. Use for composition structure, the `data-*` timing attributes, `class=

hyperframes-creative

Non-animation creative direction for HyperFrames videos. Use for design spec (frame.md / design.md) handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns, and brand / style decisions. For atomic motion patterns and scene blueprints, use `hyperframes-animation`.

hyperframes-keyframes

>

hyperframes-registry

Install, discover, and wire registry blocks and components into HyperFrames compositions. Use when running hyperframes add or hyperframes catalog, installing one item or every block matching a tag, wiring an installed item into index.html, or working with hyperframes.json. Covers discovery, install locations, block sub-composition wiring, component snippet merging, and authoring a new block or component to contribute upstream (idea → scaffold → validate → PR).

jasonfast123/hyperframes-skills

Import Figma content into a HyperFrames composition — rendered assets, brand tokens, components, storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI), connector-assisted motion when available, and shaders from a connector or native export. Use when the user pastes a figma.com link or asks to bring a Figma design, frame, logo, brand, or animation into a video/composition.

media-use

Agent Media OS, the single skill for every media need in a HyperFrames project. Resolve BGM, SFX, image, icon, brand logo, voice, color grade, or LUT into a frozen local file or paste-ready block + ledger record (one verb, `resolve`); generate via TTS / music / image models when the catalog misses; produce voiceover, transcription, captions, and background removal through one shared audio engine; operate on media (cut / reframe / transform); and reuse assets across projects. Also use for vague feedback that real footage looks dark, flat, boring, should feel retro/camcorder/print/ASCII, needs privacy, or needs a media reveal.

motion-graphics

>

music-to-video

Turn a music track (an audio file, a video to pull audio from, or a track generated from a mood brief) into a beat-synced video — lyric video, slideshow, or kinetic promo. The music drives all pacing; any user-supplied images/videos are cut onto the same beat grid, and a complete video needs zero assets. Narrated pieces → the input-matched workflow (see /hyperframes). Unclear → /hyperframes.

pr-to-video

Turn a GitHub pull request (a PR URL, owner/repo#N, or

slideshow

>

talking-head-recut

Package an existing talking-head / interview / podcast video with timed, designed GRAPHIC OVERLAY cards — kinetic titles, lower-thirds, data callouts, quotes, side panels, picture-in-picture — synced to the transcript, on a 16:9 / 9:16 / 4:5 canvas of your choice; the clip plays untouched underneath. Trigger on

関連スキル