# Hyperframes Open-source programmatic video framework from HeyGen. Create videos from HTML/CSS/JS — no React, no proprietary DSL. Designed for AI agent workflows. ## Capabilities | Integration | Available | Notes | |-------------|-----------|-------| | API | - | Library, not a hosted service | | MCP | - | - | | CLI | Yes | `npx hyperframes render` | | SDK | Yes | Node.js/TypeScript package | ## Why Hyperframes - **LLM-native**: AI models generate better HTML than React components — plain web standards, no framework DSL - **Deterministic**: Same input always produces identical output (ideal for automation) - **Open source**: Apache 2.0 license, zero per-render fees - **Agent-friendly**: Any coding agent that can write HTML can create videos ## Install ```bash npm install hyperframes ``` Requires: Node.js 22+, Chrome/Chromium (for rendering) ## Quick Start ```typescript import { render } from "hyperframes"; await render({ frames: [ { html: `

Welcome to Acme

`, duration: 3, }, { html: `

Ship faster with AI

Try it free today

`, duration: 3, }, ], output: "intro.mp4", width: 1080, height: 1920, // 9:16 vertical fps: 30, }); ``` ## Core Concepts ### Frames Each frame is an HTML document rendered at a specific point in the timeline. Think of it as a slide with a duration. ```typescript { html: "
...
", // Full HTML content duration: 3, // Seconds to display css?: "body { ... }", // Optional external CSS } ``` ### Transitions CSS transitions and animations work between frames: ```html

Slide In

``` ### Data-Driven Videos Generate frames from data for batch production: ```typescript const features = ["Analytics", "Automation", "AI Insights"]; const frames = features.map((feature) => ({ html: `

${feature}

`, duration: 2.5, })); await render({ frames, output: "features.mp4", width: 1080, height: 1920 }); ``` ## Common Marketing Templates ### Product Announcement ```typescript const frames = [ { html: hookSlide("Something new is here"), duration: 2 }, { html: featureSlide(title, description, screenshot), duration: 4 }, { html: ctaSlide("Try it free →", url), duration: 3 }, ]; ``` ### Testimonial Video ```typescript const frames = [ { html: quoteSlide(testimonial.text), duration: 4 }, { html: attributionSlide(testimonial.author, testimonial.company), duration: 2 }, { html: ctaSlide("Join 1,000+ happy customers"), duration: 3 }, ]; ``` ### Stats/Metrics Video ```typescript const metrics = [ { label: "Users", value: "10,000+" }, { label: "Uptime", value: "99.9%" }, { label: "NPS", value: "72" }, ]; const frames = metrics.map(m => ({ html: metricSlide(m.label, m.value), duration: 2.5, })); ``` ## Aspect Ratios | Platform | Width | Height | Ratio | |----------|-------|--------|-------| | TikTok/Reels/Shorts | 1080 | 1920 | 9:16 | | YouTube | 1920 | 1080 | 16:9 | | Instagram Feed | 1080 | 1080 | 1:1 | | Instagram Feed | 1080 | 1350 | 4:5 | ## Hyperframes vs. Remotion | Factor | Hyperframes | Remotion | |--------|-------------|----------| | Language | HTML/CSS/JS | React/TypeScript | | Agent compatibility | Better (plain HTML) | Good (needs React knowledge) | | Animation | CSS transitions/keyframes | Spring physics, interpolation | | Cloud rendering | Not built-in | Lambda (AWS) | | License | Apache 2.0 (free) | Company license for commercial use | | Ecosystem | New, growing | Mature, large community | **Use Hyperframes when:** AI agent is generating the video, simple animations, batch templated content, cost-sensitive. **Use Remotion when:** Complex animations needed, already using React, need Lambda for massive scale, want larger ecosystem. ## Relevant Skills - video - social - ad-creative