HyperFrames — generate videos with MCP
HeyGen's HTML-native video framework — describe a video and render it to MP4/WebM/MOV through the HyperFrames MCP.
HyperFrames is HeyGen's open-source framework for turning HTML, CSS, media, and animation into deterministic MP4 / WebM / MOV videos — built for agents. In Cowork (and other hosted Claude surfaces) you drive it through the HyperFrames MCP: describe the video you want, and the tools compose an HTML project and render it for you, no timeline editor required.
Two ways to run it
Hosted MCP — Cowork & the Claude app
The full surface: compose and render_video run in the cloud, producing a hosted HeyGen project with a live canvas at app.heygen.com/projects/{id}.
Local skills — Claude Code & CLI agents
Standalone HTML/GSAP files on disk, rendered locally. In CLI/IDE agents the MCP's compose / render_video are disabled — install the skills instead. The read tools work in both.
Connect it
- 1
In Cowork / the Claude app — add the MCP
Add the HyperFrames (HeyGen) MCP as a connector, then authenticate with your HeyGen account or an API key. Thecompose/render_videotools become available in the session. - 2
In Claude Code / CLI — install the skills
Skills teach the agent the full production loop (plan → HTML → animation → media → lint → preview → render).bashnpx skills add heygen-com/hyperframes - 3
…or drive the CLI directly
Scaffold, preview, and render a project by hand (requires Node 22+ and FFmpeg).bashnpx hyperframes init my-video cd my-video npx hyperframes preview # browser preview, live reload npx hyperframes render # encode to MP4
The MCP tools
Six tools cover the whole loop, from composing to tracking a render:
| Tool / command | What it does |
|---|---|
| compose | Create or edit a video composition (the HTML project) from your description. |
| render_video | Kick off the render pipeline — HTML composition → MP4 / WebM / MOV. |
| list_projects | List your HyperFrames projects. |
| get_project | Fetch a project's details. |
| get_project_status | Check a project's state. |
| get_render_status | Track render progress until the video is ready. |
Where each works
compose and render_video are available on hosted clients (Cowork, Claude.ai web/desktop). On local CLI agents they're disabled — use the skills above — but list_projects, get_project, get_project_status, and get_render_status work everywhere.The skills & CLI commands
After installing the skills, these slash commands are available:
| Tool / command | What it does |
|---|---|
| /hyperframes | Main composition flow: plan → write valid HTML → wire seekable animation → add media → lint → preview → render. |
| /hyperframes-cli init | Scaffold a new video project. |
| /hyperframes-cli lint | Validate a composition. |
| /hyperframes-cli preview | Preview in the browser with live reload. |
| /hyperframes-cli render | Encode the composition to MP4. |
| /hyperframes-media TTS | Text-to-speech narration. |
| /hyperframes-media transcribe | Speech-to-text from audio. |
| /hyperframes-media remove-background | Remove a background from footage. |
Add ready-made blocks
The catalog has reusable transitions, overlays, and charts you can drop into a composition:npx hyperframes add flash-through-white # shader transition
npx hyperframes add instagram-follow # social overlay
npx hyperframes add data-chart # animated chartGenerate a video
- 1
Describe it
Tell the agent what you want — duration, scenes, media, music, captions.textUsing /hyperframes, create a 10-second product intro: a fade-in title, a background video, and subtle background music. - 2
Compose
composewrites the HTML project and wires the animation timeline; preview to check it. - 3
Render
render_videostarts the pipeline; pollget_render_statusuntil it finishes. - 4
Collect the output
Grab the MP4 / WebM / MOV — or open the hosted project on the HeyGen canvas to keep editing.
How a composition works
A video is just HTML. Data attributes set timing and tracks; a paused GSAP (or CSS, Lottie, Three.js, Anime.js, WAAPI) timeline, exposed on window.__timelines, makes it seekable. The renderer seeks each frame in headless Chrome and encodes with FFmpeg — so the same input always produces the same video.
<div id="stage" data-composition-id="launch" data-start="0" data-width="1920" data-height="1080">
<video class="clip" data-start="0" data-duration="6" data-track-index="0" src="intro.mp4" muted playsinline></video>
<h1 id="title" class="clip" data-start="1" data-duration="4" data-track-index="1">Launch day</h1>
<audio data-start="0" data-duration="6" data-track-index="2" data-volume="0.5" src="music.wav"></audio>
<script src="https://cdn.jsdelivr.net/npm/gsap@3/dist/gsap.min.js"></script>
<script>
const tl = gsap.timeline({ paused: true });
tl.from("#title", { opacity: 0, y: 40, duration: 0.8 }, 1);
window.__timelines = window.__timelines || {};
window.__timelines.launch = tl;
</script>
</div>frame.md — your design system, for the camera
HyperFrames adds frame.md: it takes a web-oriented design spec and inverts it for video — same tokens and rules, rewritten so an agent can compose a promo without guessing at scale. It's a DESIGN.md superset your whole toolchain can read.
Pairs with your DESIGN.md
If you already keep a design system as DESIGN.md (e.g. from Stitch), frame.md is the camera-ready translation of it — one source of truth across UI and video.What you can build
- Product-launch videos and feature announcements
- PR walkthroughs with animated code diffs, narration, and captions
- Data visualizations, chart races, and map animations
- Social videos with kinetic captions, overlays, and music
- Docs-to-video, PDF-to-video, and website-to-video explainers
- Reusable motion graphics for automated content pipelines
Learn more
- github.com/heygen-com/hyperframes — the framework, skills, and MCP
- hyperframes.dev — playground to preview, remix, and render
- catalog — ready-made blocks & effects
- showcase — finished videos you can watch and remix