3.0.0-beta.15). Features may change before the next stable release.Switch to stable →Skills
Render HeyGen HyperFrames videos with ak:hyperframes
Wrap the HeyGen HyperFrames CLI to render HTML-first programmatic videos through a pinned npx invocation, local preview, lint and check gates, and optional cloud render.
Use ak:hyperframes to turn an HTML composition annotated with HyperFrames
data-* timing attributes into a local MP4 through the published
hyperframes CLI. It fits
short vertical or social clips, product-launch loops, and motion graphics
whose source of truth is HTML markup instead of a React component tree or
a timeline editor.
Choose HeyGen HyperFrames rendering
Use ak:hyperframes when
- The composition is authored as HTML with HyperFrames timing attributes.
- You want a scaffolded project, browser preview, lint and check gates, and MP4 render from one CLI, without wiring the HeyGen source into your project.
- The target is a short vertical or social video, product-launch clip, or promo loop that reads naturally as HTML.
- You need an optional cloud render path through HeyGen credentials while the local render still works without them.
Choose another workflow when
- The composition is naturally a React component tree with frame math or
captions. Use
ak:remotion. - You want a template-driven HTML-to-MP4 engine with Studio editing rather
than the HyperFrames composition contract. The Skill's bundled
nexu-io/html-videoreference covers that alternative; use it only when its template catalog or an existing install fits the request better. - You only need transcode, trim, thumbnail, HLS or DASH, or batch FFmpeg
work. Use
ak:media-processing. - The task is to route across every installed video or motion Skill. Use the installed motion-graphics router when it is present.
Prepare the engine and composition brief
Before you start:
- Complete Onboarding, and confirm Engineer Kit is installed for the current runtime and scope.
- Define aspect ratio, duration, source assets, target resolution, output path, whether local or cloud rendering is required, and whether the clip is a draft or a polished export.
- Make Node.js 22 or newer available, put FFmpeg and FFprobe on
PATH, and make a headless Chrome available (hyperframes browser ensurefinds or downloads one). Configure HeyGen credentials (HEYGEN_API_KEYorhyperframes auth login) only when you plan to use the cloud render path. - Run the bundled prerequisite verifier
(
node scripts/verify-prereqs.mjs) before scaffolding a composition. It checks Node, FFmpeg, and FFprobe; prefer the--jsonoutput when a runtime consumes the result. - Pin the CLI version. Every invocation in this Skill uses
hyperframes@0.8.77; bump the pin in one place when upgrading and never fall back to an unpinnednpx -y hyperframes ...in scripts or docs.
| Runtime | Invocation | Availability boundary |
|---|---|---|
| Claude Code | /ak:hyperframes ... | The Skill can orchestrate npx, files, a local preview server, Chrome, FFmpeg, and (optionally) the HeyGen cloud endpoint when the session permits those processes and HeyGen credentials are configured. |
| Cursor | /ak:hyperframes ... | Slash invocation is user-verified; equivalent Node, browser, shell, and network behavior depend on Cursor. |
| Codex | $ak:hyperframes ... | Native discovery is supported; Node, FFmpeg, Chrome, ports, network access, and HeyGen credentials are not bundled runtime guarantees. |
Create a bounded HyperFrames project
/ak:hyperframes "Scaffold a 6-second 1080x1920 draft product-launch loop under ./assets/videos/launch/, preview locally, pass check before rendering, and render an MP4 to ./assets/videos/launch/launch.mp4 without contacting the HeyGen cloud endpoint"/ak:hyperframes "Scaffold a 6-second 1080x1920 draft product-launch loop under ./assets/videos/launch/, preview locally, pass check before rendering, and render an MP4 to ./assets/videos/launch/launch.mp4 without contacting the HeyGen cloud endpoint"$ak:hyperframes "Scaffold a 6-second 1080x1920 draft product-launch loop under ./assets/videos/launch/, preview locally, pass check before rendering, and render an MP4 to ./assets/videos/launch/launch.mp4 without contacting the HeyGen cloud endpoint"Use the live CLI workflow
| Stage | Command family | Evidence |
|---|---|---|
| Diagnose | node scripts/verify-prereqs.mjs [--json] | Node, FFmpeg, and FFprobe readiness before scaffolding |
| Scaffold | npx -y hyperframes@0.8.77 init <name> --resolution portrait --non-interactive | New composition project directory with HTML skeleton; -e/--example picks a starter |
| Preview | npx -y hyperframes@0.8.77 preview <name> | Studio URL with a scrubbable timeline; in a non-interactive shell it runs in the background (--status, --stop) |
| Lint | npx -y hyperframes@0.8.77 lint <name> | Fast timing-attribute feedback while editing |
| Check | npx -y hyperframes@0.8.77 check <name> | Final gate: reruns lint, then audits runtime errors, failed requests, layout overlap, and contrast in a browser |
| Snapshot | npx -y hyperframes@0.8.77 snapshot <name> --at 1,3.5,6 | Key-frame stills for review without a full render |
| Render (local) | npx -y hyperframes@0.8.77 render <name> --strict --output <path> | MP4 written to the requested output path; --strict fails on lint errors |
| Render (cloud) | npx -y hyperframes@0.8.77 cloud render <name> with HeyGen credentials | Cloud job and remote-render artifact; --dry-run inspects the upload without authenticating |
| Verify | ffprobe -v error -show_streams -show_format -of json <path> | Nonzero duration, expected dimensions, streams, and format |
Always pass check before render; check reruns lint. Most render failures
come from malformed data-start, data-duration, or data-composition-id
attributes, or a missing timeline registration, that lint and check catch
before Chrome and FFmpeg pay the full render cost. validate, inspect, and
layout are deprecated aliases of check.
Observe the render stages
- The Skill pins the video brief. Aspect, duration, source assets, output path, local versus cloud render, and publication boundary are captured.
- It verifies the engine. Node, FFmpeg, FFprobe, headless Chrome, the
pinned
hyperframesCLI, and (when cloud rendering) HeyGen credentials are checked. - It scaffolds a composition.
initcreates a project directory with an HTML skeleton and the HyperFrames timing-attribute contract. - You edit the HTML composition. The root carries
data-composition-id,data-start="0",data-width,data-height, and usuallydata-duration; each timed clip carriesid,data-start, anddata-duration. - It previews in Studio. The returned URL is checked for layout, typography, missing assets, motion, timing, console failures, and network use. Only previews started for this task are stopped.
- It lints and checks the composition. Timing, composition-id, runtime, layout, and contrast issues surface before rendering.
- It renders through Chrome and FFmpeg. Local rendering encodes the MP4 at the explicit output path; cloud rendering hands the composition to HeyGen and returns a remote artifact reference.
- It probes the artifact.
ffprobemust report nonzero duration and expected dimensions before the export is treated as complete.
Control code, network, process, and storage effects
HyperFrames executes HTML, CSS, and JavaScript in Chrome
Treat compositions and any remote assets as code and network-capable input. Review their origin and behavior before rendering, and do not expose local secrets, authenticated pages, private files, or unrestricted network access.
npx -y hyperframes@0.8.77resolves the pinned package from the public registry. Confirm the pin, review upstream changes before bumping it, and do not fall back to an unpinned invocation in scripts or docs.- The preview server binds a local port during
preview. Bind and expose it only as intended, stop it after use (--stop), and do not treat the page as safe on a shared network. - Local rendering starts Chrome and FFmpeg and can consume heavy CPU, memory, disk, temporary files, and time. Test a short draft first.
- Cloud rendering sends the composition to HeyGen. Only use it when you have permission to submit the source assets, and store HeyGen credentials per your project's secret policy.
- HTML compositions, fonts, images, and scripts can make external requests. Record or block network effects when privacy or reproducibility matters.
- Confirm rights for images, logos, copy, fonts, audio, and templates. The Skill does not grant publication or redistribution rights.
- The workflow writes project state, preview files, lint and check reports, and MP4 output. It does not commit, upload, publish, or deploy them without separate authority.
Verify the video and evidence
A complete result should include:
- Node, FFmpeg, FFprobe, and (when cloud rendering) HeyGen credential verification.
- Pinned CLI version (
hyperframes@0.8.77) and any documented deviation. - Scaffolded composition name, HTML source, and used timing attributes.
- Preview URL, visual review notes, lint and check reports, render command, and MP4 path (or cloud job reference).
ffprobeevidence for duration, dimensions, streams, format, and file size.- Local port, network access, storage, rights, privacy, or publication limitations that remain.
The release does not pin an upstream HeyGen source revision, prove a published HeyGen build, or guarantee cross-runtime cloud-render parity.
Troubleshoot and interpret limits
| Symptom | Safe next step |
|---|---|
hyperframes reports an unknown flag | The pinned version may be behind upstream; run npx -y hyperframes@0.8.77 --help to confirm current flags before updating the pin. |
render fails with a blank or short MP4 | Run check first; malformed data-start, data-duration, or data-composition-id attributes, or a missing timeline registration, are the most common causes. |
command not found: ffmpeg or ffprobe | Run node scripts/verify-prereqs.mjs for the exact platform remediation, install FFmpeg (which usually ships FFprobe) through the approved platform package manager, and re-verify. |
| Preview shows missing assets or blank layout | Inspect the returned preview URL, check the console, verify file references, and review the composition's network policy before rendering. |
| Cloud render is refused | Confirm HeyGen credentials resolve for the current process (HEYGEN_API_KEY or hyperframes auth login), confirm the account is entitled to the requested composition, and retry the cloud render subcommand. |
| The MP4 dimensions do not match the composition | Re-run check, confirm the root data-width and data-height attributes, then render again to the explicit --output path. |
| Rendering exhausts local resources | Reduce duration, resolution, asset size, or concurrency and render a smaller draft before retrying. |
| The runtime does not recognize the Skill | Confirm target and scope, restart the runtime session, then follow Runtime cannot find a Skill or Agent. |
Transform local media with ak:media-processing
Inspect, convert, resize, encode, stream, or remove backgrounds with explicit source preservation and resource limits.
Apply evidence-led reasoning with ak:fable-thinking
Frame the real outcome, ground load-bearing claims, compare hypotheses, attack conclusions, and mechanically verify constrained outputs before delivery.