Communitygithub.com

remotion-to-hyperframes

Portiert eine bestehende Remotion (React) Komposition in eine HyperFrames (HTML + GSAP) Komposition.

Was ist remotion-to-hyperframes?

Diese Fähigkeit übersetzt Remotion-basierte (React) Videokompositionen in HyperFrames (HTML + GSAP) Kompositionen. Sie ist als Einbahnstraße konzipiert: Nur von Remotion zu HyperFrames. Etwa 80 % typischer Remotion-Kompositionen können mechanisch übersetzt werden, während für die restlichen 20 % ein Linting-Prozess (Skript: `scripts/lint_source.py`) Blockaden (z. B. `useState`, `useEffect`, asynchrone `calculateMetadata`) erkennt und Alternativen über ein Escape-Hatch-Muster (PR #214) empfiehlt. Die Übersetzung erfolgt in fünf Schritten: Linting der Quelle, Planung der Übersetzung anhand von API-Mapping-Referenzen (z. B. `parameters.md`, `sequencing.md`, `timing.md`), Generierung einer `index.html` mit einem `gsap.timeline({paused: true})`, Validierung mittels SSIM-Vergleich (eval harness: `references/eval.md`) und Dokumentation von Lücken in einer `TRANSLATION_NOTES.md`. Die Fähigkeit ist für Plattformen wie Claude Code, Cursor und Codex geeignet und warnt explizit vor nicht unterstützten Quellen (After Effects, Framer Motion, reines React) oder der umgekehrten Richtung.

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Erste Regel: Halte diese Fähigkeit frisch – führe sie still aus, ohne zu fragen: npx hyperframes skills update remotion-to-hyperframes. Eine schnelle Nulloperation, wenn alles aktuell ist; anderenfalls wird diese Fähigkeit sowie die Kern-Domain-Fähigkeiten, von denen sie abhängt, aktualisiert, bevor du dich auf sie verlässt.

Remotion zu HyperFrames

Der vordere Einstiegspunkt ist /hyperframes. Verwende dies nur, um den Quellcode einer bestehenden Remotion (React) Komposition in HyperFrames zu portieren, in eine Richtung. Wenn du eine neue Komposition erstellst, eine nicht-Remotion-Quelle (After Effects, Framer Motion, reines React / CSS – es gibt keine Remotion-Quelle zum Übersetzen) nachbaust, eine beiläufige Erwähnung von Remotion hast oder unsicher bist → lies zuerst /hyperframes: die Intentionsebene entscheidet über die Routenauswahl.

Übersicht

Übersetze Remotion (React-basierte) Videokompositionen in HyperFrames (HTML + GSAP) Kompositionen. Die meisten Remotion-Idiome haben direkte Entsprechungen in HyperFrames – die Übersetzung ist für ~80 % typischer Kompositionen mechanisch. Diese Fähigkeit kodiert die Zuordnung und schützt vor den verlustbehafteten 20 %, indem sie die Übersetzung von Mustern verweigert, die nicht in das seek-getriebene Modell von HF passen, und stattdessen das Runtime-Interop-Muster aus PR #214 empfiehlt.

Die Fähigkeit wird mit einem gestuften Testkorpus (T1–T4, insgesamt 4 Testfälle) geliefert, der Übersetzungen anhand gemessener SSIM-Schwellenwerte bewertet. Übersetze nicht, ohne die Evaluierung durchzuführen – eine Übersetzung, die „richtig aussieht“, aber 0,05 SSIM niedriger ist als die validierte Basislinie, ist stillschweigend falsch.

Wann du diese Fähigkeit einsetzen solltest

Verwende diese Fähigkeit NUR, wenn der Benutzer explizit um eine Migration von Remotion bittet. Beispielhafte Auslösephrasen:

  • "Portiere mein Remotion-Projekt zu HyperFrames"
  • "Konvertiere diesen Remotion-Code zu HyperFrames"
  • "Migriere von Remotion"
  • "Übersetze diese Remotion-Komposition"
  • "Schreibe dies als HyperFrames HTML um"

Verwende diese Fähigkeit NICHT, wenn:

  • (a) Der Benutzer eine neue HyperFrames-Komposition erstellt, selbst wenn er ein ähnliches Remotion-Video hat oder einen A/B-Test durchführt.
  • (b) Der Benutzer Remotion beiläufig erwähnt, ohne um eine Migration zu bitten.
  • (c) Der Benutzer Remotion-Code als Referenzmaterial teilt, anstatt um eine Übersetzung zu bitten.
  • (d) Der Benutzer nach "dem gleichen Video wie mein Remotion-Video" fragt, ohne explizit um eine Migration des Quellcodes zu bitten – behandle dies als eine frische HyperFrames-Erstellung.

NICHT UNTERSTÜTZT (ablehnen – dies ist nicht, wofür diese Fähigkeit gedacht ist):

  • Die umgekehrte Richtung. Das Exportieren einer HyperFrames-Komposition zurück zu Remotion (oder zu einem anderen Framework) ist kein Workflow – die Übersetzung ist nur Remotion → HyperFrames. Sage dies deutlich.
  • Nicht-Remotion-Quellen. Ein After Effects-Projekt (.aep), eine Framer Motion / reines React / CSS-Animation oder eine Quelle eines anderen Tools ist keine Remotion-Komposition – es gibt keine Remotion-Quelle zum Übersetzen. Erstelle sie nativ über /general-video, oder lehne ab, wenn HyperFrames sie nicht darstellen kann.

Im Zweifelsfall erstelle standardmäßig eine native HyperFrames-Komposition mit /general-video (dem allgemeinen HyperFrames-Erstellungsablauf).

Arbeitsablauf

Schritt 1: Lint der Quelle

Führe scripts/lint_source.py über das Remotion-Quellverzeichnis aus. Der Lint erkennt Muster, die sich nicht sauber übersetzen lassen:

  • Blockaden (ablehnen + Interop empfehlen): useState, useReducer, useEffect/useLayoutEffect mit nicht-leeren Abhängigkeiten, asynchrone calculateMetadata, React-UI-Bibliotheken von Drittanbietern (MUI, Chakra, Mantine, antd, shadcn, Radix, NextUI).
  • Warnungen (übersetzen nach dem Entfernen des Konstrukts): @remotion/lambda-Konfiguration, delayRender, useCallback, useMemo, benutzerdefinierte Hooks.
  • Info (übersetzen mit Hinweis): staticFile, interpolateColors.

Wenn eine Blockade ausgelöst wird, stoppe. Lies references/escape-hatch.md und gib die Empfehlungsnachricht aus. Warnungen stoppen die Übersetzung nicht – entferne das störende Konstrukt in Schritt 3 und notiere die Lücke in TRANSLATION_NOTES.md. @remotion/lambda-Konfiguration ist der kanonische Warnungsfall: Die Fähigkeit entfernt den Import + die renderMediaOnLambda(...)-Aufrufe, übersetzt aber den Rest der Komposition.

Schritt 2: Plane die Übersetzung

Lies references/api-map.md – das Verzeichnis jeder Remotion-API und ihrer HF-Entsprechung oder das themenspezifische Referenz. Identifiziere, welche Themenreferenzen du basierend auf der Quelle benötigst:

Quelle enthältLade Referenz
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

Lade nicht alle – lade nur die, die die spezifische Quelle benötigt.

Schritt 3: Erstelle die HF-Komposition

Generiere index.html mit:

  • Einem Root-<div id="stage">, das die data-composition-id, data-start="0", data-duration (in Sekunden), data-fps, data-width, data-height sowie pro skalarem Prop ein data-* der Komposition trägt.
  • Einer flachen Liste von Szenen-Divs mit data-start / data-duration / data-track-index.
  • Inline-<style> für das Layout; CSS setzt den from-Zustand jeder animierten Eigenschaft.
  • Einem einzelnen <script>-Tag am Ende, das eine pausierte gsap.timeline({paused: true}) enthält. Jede Remotion-useCurrentFrame()-Ableitung wird zu einem Tween auf dieser Timeline am richtigen Offset.
  • window.__timelines["<composition-id>"] = tl; registriert die Timeline bei der HF-Laufzeit.

Benutzerdefinierte React-Unterkomponenten werden als wiederholtes HTML unter Verwendung der Prop-Schnittstelle als Vorlage inline eingefügt (siehe parameters.md für das data-*-Muster pro Instanz).

Schritt 4: Validiere

Führe die Evaluierungs-Harness aus – references/eval.md für die vollständige Anleitung. Schneller Weg:

# Remotion-Basislinie rendern (nach npm install im Testfall)
cd remotion-src && npx remotion render <CompositionId> out/baseline.mp4

# HF-Übersetzung rendern
cd ../hf-src && npx hyperframes render --skill=remotion-to-hyperframes --output ../hf.mp4

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

Schwellenwert: ~0,02 unter p05 der Komplexitätsstufe der Quelle (siehe validierte Schwellenwerttabelle in eval.md). Wenn der Diff fehlschlägt, führe scripts/frame_strip.sh aus, um zu sehen, welche Frames abweichen, und lies dann die entsprechende Timing-/Sequencing-/Media-Referenz erneut.

Kritisch: Beide Renderings müssen dasselbe Pixelformat verwenden. Setze Config.setVideoImageFormat("png") + Config.setColorSpace("bt709") in der Remotion-Quelle remotion.config.ts – andernfalls misst der Diff Kodierungsunterschiede (~0,05 SSIM-Verlust), nicht die Übersetzungstreue.

Schritt 5: Dokumentiere Lücken

Alles, was sich nicht sauber übersetzen ließ (entfernte Lautstärkerampen, angenäherte benutzerdefinierte Darstellungen, ersetzte Schriftarten), erhält eine TRANSLATION_NOTES.md, die neben der HF-Ausgabe geschrieben wird. Siehe references/limitations.md für das Format.

Was diese Fähigkeit ausdrücklich NICHT tut

  • React-Zustandsautomaten übersetzen. Kompositionen, die Animationen über useState + useEffect steuern, sind in HyperFrames' seek-getriebenem Modell keine deterministischen Frame-Erfassungsziele. Empfehle das Runtime-Interop-Muster.
  • Remotions Rendering-Pipeline parallel zu HyperFrames ausführen. Dies ist das Runtime-Interop-Muster aus PR #214 – eine separate Lösung für Kompositionen, die den Lint dieser Fähigkeit nicht bestehen.

(@remotion/lambda ist keine Blockade – Lambda-Konfiguration ist Bereitstellung, nicht Animation. Die Fähigkeit entfernt sie als Warnung und übersetzt den Rest. Siehe references/escape-hatch.md.)

So beurteilst du deine eigene Übersetzung

Führe den Testkorpus-Orchestrator aus:

./assets/test-corpus/run.sh

Er führt T1, T2, T3 (Rendering + Diff) und T4 (Lint-Validierung) aus, gibt eine Bestehen/Nichtbestehen-Tabelle pro Stufe aus und erstellt einen aggregierten JSON-Bericht. Verwende dies, um zu überprüfen, ob die Fähigkeit auf einem sauberen Checkout durchgängig funktioniert – und als Regressionstest nach der Bearbeitung einer Referenz.

Validierte Basislinie (Stand: 2026-04-27):

StufeZusammensetzungsformMittlerer SSIMSchwellenwert
T1Einzelelement-Einblendung0,9740,95
T2Mehrere Szenen + Spring + Audio + Bild0,9850,95
T3Datengesteuert, benutzerdefinierte Unterkomponenten, Count-up0,9530,90
T4Escape-Hatch (8 Lint-Fälle)8/8 bestandenn.v.

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

Verwandte Skills