remotion-to-hyperframes

Port an existing Remotion (React) composition's source to HyperFrames HTML. Use ONLY on an explicit ask to port/convert/migrate/translate a Remotion source — one-way, Remotion-only. A passing Remotion mention, reference-only code, or "make something like my Remotion video" is a fresh build (/general

By heygen-com · 274,198 installs

npx skills add heygen-com/hyperframes --skill remotion-to-hyperframes

Source repository · Upstream listing

Plugin installs: Before setup or freshness commands, follow [plugin execution rules](../hyperframes/references/plugin installation.md) when this skill is inside a HyperFrames plugin. Import into HyperFrames HyperFrames is the container: its tracks, sub compositions and variables are editable in Studio whatever runs inside a clip. Bring each part in at the highest level it supports and record which level you used. Level For How Editable in Studio afterwards Native code that can become HTML + GSAP: most Remotion, HTML/CSS/GSAP animation, simple Motion Canvas translate it, then verify frame by frame every element; variables, catalog, presets apply Hosted code that can draw any requested frame in a browser: canvas, p5.js, Three.js, Lottie, WebGL, other JS animation keep the code and drive it from HyperFrames time timing, position, exposed parameters Media anything that outputs video or frames: Manim, After Effects, Blender, PIL, moviepy render to a file and use it as a clip cut, place, layer; not the pixels inside Code that depends on wall clock time, live physics or the network can only come in as media. Native: translate, then verify 1. For Remotion, run python3 <SKILL DIR /scripts/lint source.py <source dir first. Blockers ( useState , useReducer , useEffect with dependencies, async calculateMetadata , React UI kits such as MUI, Chakra, Mantine, antd, shadcn, Radix, NextUI) don't translate: host them or refactor them out, never approximate ( references/escape hatch.md ). Warnings ( @remotion/lambda config, delayRender , useMemo , custom hooks) are dropped and noted. 2. Translate to the /hyperframes contract: one sub composition per scene, times in seconds ( frame / fps ), asset paths root relative. Each Remotion API's equivalent is in references/api map.md . Put Remotion's render page rule { box sizing: border box; } once in the root index.html <style : without it every bordered or padded element grows by its border and padding. 3. Keep it editable: the source's props become data composition variables bound with data var text , data var src or var( id) ; each Sequence becomes a timed clip or a sub composition; a reused component becomes one sub composition mounted several times with data variable values . 4. Compare frame by frame: npx hyperframes snapshot at <t,… against <original.mp4 saves the original's frame at each time next to yours. Sample every scene and both sides of every cut; look for one late or recoloured element, not only the overall picture. For a scored check, scripts/render diff.sh <original.mp4 <hf.mp4 <out gives SSIM per frame and scripts/frame strip.sh shows which frames diverged (thresholds per complexity tier in references/eval.md ). Render the Remotion side with Config.setVideoImageFormat("png") and Config.setColorSpace("bt709") , or the diff measures the encoders (about 0.05 SSIM). 5. Write what didn't translate cleanly (dropped volume ramps, approximated presentations, substituted fonts) to TRANSLATION NOTES.md . Remotion Read Composition , defaultProps , schema , calculateMetadata references/parameters.md Sequence , Series , Loop , AbsoluteFill , Freeze references/sequencing.md useCurrentFrame , interpolate , spring , Easing , interpolateColors references/timing.md Audio , Video , Img , IFrame , staticFile , delayRender references/media.md TransitionSeries , @remotion/transitions references/transitions.md @remotion/lottie references/lottie.md @remotion/google fonts , Font.loadFont , @font face references/fonts.md What can't be ported references/limitations.md Before hand building a named visual the source used, search npx hyperframes catalog query "<the visual, in English " json : it ranks the whole registry with nothing installed. Hosted Keep the code and let HyperFrames own the clock: it draws the frame for the time it is given. The seek protocol and the built in adapters for Lottie, Three.js, anime.js, WAAPI and CSS animations are in ../hyperframes/references/runtimes.md . No requestAnimationFrame loop or timer as the time source, seeded randomness only, and data duration on the root when nothing else defines the length. Media <video class="clip" data has audio="true" src="assets/x.mp4" ... , or muted when it is silent. Nothing else is needed. In the final message, list each imported part with its level, what a person can change in Studio, and how the frame by frame comparison came out.