hyperframes
/hyperframes
Author HTML compositions that the `render_video` tool turns into deterministic MP4 video — animated charts and dashboards, data explainers, text/quote cards, kinetic typography, product teasers, and branded short-form social clips. Use when the user asks Brigade to make, render, animate, or produce a video from data, text, or a layout (NOT photoreal/AI footage — that's `generate_video`).
- Author
- spinabot ↗
- Repository
- brigade ↗
- Licence
- MIT
- Last repository change
- 15.09.2026
Assessment and security
- Files in this package
- 1
- Scripts
- 0
- HTML comments
- 1
- URLs in SKILL.md
- 2
No signals detected. Repository changed on 15.09.2026, without references to retired models or APIs.
MIT, open: use and modify while retaining author attribution.
- SKILL.md zawiera komentarze HTML (1). Nie widać ich w podglądzie Markdown, a model je czyta.
What it does and when to use it
Author HTML compositions that the `render_video` tool turns into deterministic MP4 video — animated charts and dashboards, data explainers, text/quote cards, kinetic typography, product teasers, and branded short-form social clips. Use when the user asks Brigade to make, render, animate, or produce a video from data, text, or a layout (NOT photoreal/AI footage — that's `generate_video`).
Original author description
Author HTML compositions that the `render_video` tool turns into deterministic MP4 video — animated charts and dashboards, data explainers, text/quote cards, kinetic typography, product teasers, and branded short-form social clips. Use when the user asks Brigade to make, render, animate, or produce a video from data, text, or a layout (NOT photoreal/AI footage — that's `generate_video`).
How it works
- The composition contract (this is what makes or breaks a render)
- GSAP + assets
- Workflow
- Design quality (make it look intentional, not templated)
- Requirements & install
SKILL.md preview
---
name: hyperframes
description: Author HTML compositions that the `render_video` tool turns into deterministic MP4 video — animated charts and dashboards, data explainers, text/quote cards, kinetic typography, product teasers, and branded short-form social clips. Use when the user asks Brigade to make, render, animate, or produce a video from data, text, or a layout (NOT photoreal/AI footage — that's `generate_video`).
homepage: https://github.com/heygen-com/hyperframes
metadata:
{
"brigade":
{
"emoji": "🎬",
"install":
[
{
"id": "npm",
"kind": "npm",
"package": "@hyperframes/producer",
"label": "Install the HyperFrames render engine (npm)",
},
],
},
}
---
# hyperframes — HTML → deterministic MP4
The `render_video` tool renders an **HTML composition** you write into a pixel-exact
MP4. A headless Chrome steps a **GSAP master timeline** frame by frame, captures one
image per frame, and FFmpeg encodes them — so the same HTML always produces the same
video. This is the right tool for anything **programmatic and data-driven**; reach for
`generate_video` only when you need photoreal/AI-generated footage.
**Great fits:** animated bar/line/donut charts, KPI dashboards, "N facts about X"
explainers, quote/announcement cards, kinetic typography, countdowns, before/after
reveals, branded intros/outros, vertical social clips.
## The composition contract (this is what makes or breaks a render)
Write ONE self-contained HTML document. Two things are mandatory and non-obvious:
1. **A paused GSAP timeline registered to `window.__timelines[<composition-id>]`.**
HyperFrames seeks *this* timeline to render each frame. **Total video duration =
`tl.duration()`** — you do NOT set duration with an attribute.
2. **`data-*` attributes** on the root and on every timed element.
**Root composition element** — required: `data-composition-id` (must match the
`window.__timelines` key), `data-width`, `data-height`, `data-start`; plus
`data-track-index`.
**Timed children** — `data-start` + `data-track-index` on every one; **visible
elements (`<img>`, text/graphic `<div>`s) also need `class="clip"`**; `<img>` also
takes `data-duration`. Do **not** put `data-duration` on the root/composition — its
duration comes from the timeline.
```html
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<!-- Load GSAP (see "GSAP + assets" below). -->
<script src="https://cdn.jsdelivr.net/npm/gsap@3/dist/gsap.min.js"></script>
<style>
body { margin: 0; }
.stage { width: 1080px; height: 1920px; position: relative; overflow: hidden;
background: #0b0b12; color: #fff; font-family: system-ui, sans-serif; }
.title { position: absolute; top: 220px; left: 80px; font-size: 96px;
font-weight: 800; opacity: 0; transform: translateY(24px); }
</style>
</head>
<body>
<div class="stage"
data-composition-id="promo"
data-width="1080" data-height="1920"
data-start="0" data-track-index="0">
<div class="title clip" data-start="0" data-duration="4" data-track-index="0">
Ship faster.
</div>
</div>
<script>
// A PAUSED timeline — HyperFrames drives playback by seeking it per frame.
const tl = gsap.timeline({ paused: true });
tl.to(".title", { opacity: 1, y: 0, duration: 0.7, ease: "power2.out" }, 0.4)
.to(".title", { opacity: 0, duration: 0.5, ease: "power2.in" }, 3.5);
// Register under the SAME id as data-composition-id. This is mandatory.
window.__timelines = window.__timelines || {};
window.__timelines["promo"] = tl;
</script>
</body>
</html>
```
- Vertical `1080×1920` for TikTok/Reels/Shorts, `1920×1080` for landscape,
`1080×1080` for square feed posts.
- Frame rate is an engine default (the tool doesn't expose an fps flag) — author for
smooth motion at 30fps.
## GSAP + assets
The tool renders a single standalone `index.html` (no project scaffold), so the
composition must bring its own GSAP and assets:
- **GSAP**: load it via a `<script src="…gsap.min.js">` (CDN as above) or paste the
minified source inline. It must be defined before your timeline script runs.
- **Assets**: embed images/fonts as `data:` URIs so nothing depends on external files.
- **Determinism**: never drive motion from `Date.now()`, `Math.random()`,
`setTimeout`, or a hand-rolled `requestAnimationFrame` loop — put *all* motion on the
GSAP timeline. Off-timeline animation desyncs from the frame stepper.
## Workflow
1. **Write the composition** to the contract above with real data/text (never lorem).
2. **Call `render_video`** with `{ html, output_name?, lint? }`. It lints, renders in an
isolated subprocess (a real render legitimately takes a minute or more), and returns
a saved MP4 as a `MEDIA:<path>` line.
3. **Deliver it** with `send_media({ path })`.
4. Handle failures by `errorType`:
- `composition_invalid` — read the lint message, fix the HTML, retry.
- `render_failed` — read the stderr excerpt (bad timeline id, missing GSAP, etc.).
- `render_timeout` — the composition is too heavy; simplify or shorten it.
- `render_unavailable` — the engine/FFmpeg isn't installed (see below).
## Design quality (make it look intentional, not templated)
- Pick a palette that fits the subject; commit to one accent and keep the rest quiet.
Set a real type scale; give headings weight and letter-spacing.
- Stagger reveals (offset each element's timeline position by 0.15–0.3s) so motion
reads as choreographed, not simultaneous.
- Keep text ≥64px from every edge on vertical video so platform UI never clips it.
- Ease everything (`power2.out` in, `power2.in` out). Linear motion reads robotic.
- For charts, animate the *value* (bar height, arc sweep, a counting number) on the
timeline rather than swapping static frames.
## Requirements & install
Needs **Node 22+**, the **`@hyperframes/producer`** engine (an optional dependency —
install it to enable video), and **FFmpeg** on PATH. A headless Chromium is
auto-downloaded by the engine on first render (needs network once).
```bash
npm i @hyperframes/producer # the render engine (optional; enables render_video)
# FFmpeg: brew install ffmpeg | winget install ffmpeg | apt install ffmpeg
```
Overrides: `BRIGADE_HYPERFRAMES_PATH` (explicit producer entry file), `FFMPEG_PATH`,
`BRIGADE_BROWSER_EXECUTABLE` / `PUPPETEER_EXECUTABLE_PATH`.
Versions
| Repository | Score | Licence |
|---|---|---|
| This page · spinabot/brigade | 100 | MIT |
| nexu-io/open-design | 100 | Apache-2.0 |
| anton-abyzov/vskill | 100 | MIT |
| cowork-os/cowork-os | 100 | MIT |
| chmonitor/chmonitor | 100 | GPL-3.0 |
| sma1lboy/rove | 100 | MIT |
| coco-research/coco | 100 | MIT |
| TerminalSkills/skills | 100 | Apache-2.0 |
| ekkolearnai/hermes-studio | 100 | MIT |
Database snapshot: 13.11.2026 · package version 31be6978f92e (SHA-256 digest of the entire package)
Downloads in the last 30 days: 0 · ranking
Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.
Similar skills
- 100frame-motion
Create deterministic motion-graphics videos with pure seek(t) HTML + Playwright frame capture + ffmpeg. Use for explainers, kinetic typography, animated charts, product walkthroughs, launch films, or any short motion design built from scratch where every frame comes from code… - 90hyperframes-composition
Author deterministic HyperFrames HTML/CSS/JS video compositions with scenes, dimensions, timelines, animations, subtitles, titles, transitions, charts, and brand-controlled layouts. Use for local or CI HTML-to-video rendering, not for prompt-to-video model calls. - 100remotion-motion-graphics
Create 2D motion graphics as code with Remotion and React — kinetic typography, logo reveals, explainers, animated charts, UI demos, social clips, subtitles, and data-driven or batch-rendered video. Use when the deliverable is primarily layout, text, and 2D graphics rather than… - 100combo-viral-launch-video
Orchestrates code-driven launch videos, kinetic typography teasers, and short films (Combo 5). Use when creating product launch trailers, Remotion/HyperFrames compositions, or programmatic motion graphics. - 100html-video-production
Build editable, scene-based HTML videos rendered to MP4, on HyperFrames (open-source HTML-to-video framework by HeyGen). Use when the user wants a reproducible, editable video from structured sources (PDF, GitHub repo/PR, CSV, slide deck, design doc, website URL, Figma design,… - 100reframe
Create and iterate motion-graphics videos (mp4) — title cards, lower thirds, kinetic typography, product teasers, data-driven video batches. Use when the user asks to make, edit, retime, personalize, or add sound to an animated video. Scenes are declarative data; renders are…