HyperFrames Video Entry Point
heygen-com/hyperframes
Entry point for making, editing and rendering videos from HTML compositions with HyperFrames, routing each request to the right workflow.
End-to-end video production workflow for the AI Edit Video system - from the user request to the MP4 in outputs/, coordinating HyperFrames (scenes) and Remotion (assembly).
$ npx skills add notivn/AIEV --skill video-pipeline -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install notivn/AIEV video-pipeline --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/notivn/AIEV.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/video-pipeline .claude/skills/video-pipeline && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "video-pipeline" agent skill from https://github.com/notivn/AIEV/tree/main/.claude/skills/video-pipeline into .claude/skills/video-pipeline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "video-pipeline", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/notivn/AIEV/tree/main/.claude/skills/video-pipelineType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add notivn/AIEV --skill video-pipeline -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install notivn/AIEV video-pipeline --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/notivn/AIEV.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/video-pipeline .agents/skills/video-pipeline && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "video-pipeline" agent skill from https://github.com/notivn/AIEV/tree/main/.claude/skills/video-pipeline into .agents/skills/video-pipeline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "video-pipeline", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add notivn/AIEV --skill video-pipeline -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install notivn/AIEV video-pipeline --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/notivn/AIEV.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/video-pipeline .cursor/skills/video-pipeline && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "video-pipeline" agent skill from https://github.com/notivn/AIEV/tree/main/.claude/skills/video-pipeline into .cursor/skills/video-pipeline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "video-pipeline", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/notivn/AIEV.git --path .claude/skills/video-pipeline--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add notivn/AIEV --skill video-pipeline -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install notivn/AIEV video-pipeline --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/notivn/AIEV.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/video-pipeline .gemini/skills/video-pipeline && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "video-pipeline" agent skill from https://github.com/notivn/AIEV/tree/main/.claude/skills/video-pipeline into .gemini/skills/video-pipeline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "video-pipeline", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install notivn/AIEV video-pipelineInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add notivn/AIEV --skill video-pipeline -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/notivn/AIEV.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/video-pipeline .github/skills/video-pipeline && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "video-pipeline" agent skill from https://github.com/notivn/AIEV/tree/main/.claude/skills/video-pipeline into .github/skills/video-pipeline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "video-pipeline", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add notivn/AIEV --skill video-pipeline -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install notivn/AIEV video-pipeline --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/notivn/AIEV.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/video-pipeline .opencode/skills/video-pipeline && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "video-pipeline" agent skill from https://github.com/notivn/AIEV/tree/main/.claude/skills/video-pipeline into .opencode/skills/video-pipeline/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "video-pipeline", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
video-pipelineEnd-to-end video production workflow for the AI Edit Video system - from the user request to the MP4 in outputs/, coordinating HyperFrames (scenes) and Remotion (assembly).
Video Pipeline is an agent skill from notivn/AIEV. End-to-end video production workflow for the AI Edit Video system - from the user request to the MP4 in outputs/, coordinating HyperFrames (scenes) and Remotion (assembly). Read this when starting any video or when building the backend render queue.
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Media & Creative, covering Video production and Motion graphics. It works with Remotion and HeyGen. The repository describes itself as: Automatic AI video editing. Claude directs HyperFrames (HTML + GSAP motion graphics) and Remotion (timeline assembly) to turn raw footage into a finished MP4 - transcript… The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e40fe03. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxcurlffmpegnodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx and curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Video Pipeline loads about 2.9k tokens when it runs. Until then it costs about 66 tokens; SKILL.md has 1,440 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from notivn/AIEV at commit e40fe03, republished under its MIT licence (© notivn). 1,440 words, ~2,933 tokens.
.claude/skills/video-pipeline/SKILL.md (or your agent's skills folder).| Task | Engine | Why |
|---|---|---|
| Scene motion graphics: kinetic typography, karaoke captions, count-ups, data tables, callouts, shaders | HyperFrames | HTML + GSAP is its strength, and the Vietnamese skills already ship the fixes |
| Stitching scenes + source footage, transitions between scenes, mixing audio + sound effects, full-video caption overlay, final export | Remotion | Programmatic assembly, <Sequence>/<Audio>/<OffthreadVideo> |
How the two engines talk to each other: intermediate MP4 files in video-projects/<name>/renders/. HyperFrames does not know Remotion exists and vice versa - the only shared thing is the manifest.
video-projects/<kebab-case-name>/ with index.html, compositions/, assets/, renders/, hyperframes.json, meta.json.meta.json is the central manifest:{
"id": "tiktok-paper-gpt5",
"name": "Mổ xẻ paper GPT-5",
"width": 1080, "height": 1920, "fps": 30,
"status": "draft",
"scenes": [
{ "id": "s01-hook", "src": "compositions/s01-hook.html", "durationInFrames": 90, "render": "renders/s01-hook.mp4" },
{ "id": "s02-talking","srcVideo": "assets/talking-head.mp4", "from": 2.5, "to": 14.0 }
],
"audio": {
"voice": "assets/voice.mp3",
"sfx": [ { "file": "assets/sound-effects/whoosh-01.mp3", "atFrame": 88 } ]
},
"output": null
}scenes[] is the contract between the two engines: a scene with src is rendered by HyperFrames; a scene with srcVideo is footage used as-is. Remotion reads this file to assemble - never hardcode the scene list in the Remotion code.assets/brand/brand-tokens.css into the project, write compositions following the window.__timelines convention.background-clip correctly; check that every diacritic is present on the first/last frame of each reveal).npx hyperframes lint.npx hyperframes render --quality draft --output renders/<scene>.draft.mp4.ffmpeg -ss <hero-moment-seconds> -i renders/<scene>.draft.mp4 -frames:v 1 verify/<scene>.pngInspect every image: does the Vietnamese text keep all its diacritics? Is any text overflowing the edges? Any unexpected white/black frames? Is a face cropped? If anything is wrong, fix the scene - do not move on.
remotion-assemble skill for detailsmeta.json, builds <Sequence> entries from scenes[], and inserts sfx at atFrame.curl -s -X POST http://localhost:6869/api/projects/<id>/qc -H "content-type: application/json" -d "{}"The server measures the latest draft with ffmpeg and returns { report: { status, checks[] } }:
| check | meaning | what to do on fail |
|---|---|---|
resolution | dimensions/fps do not match meta.json | re-render with the correct settings |
loudness | far off -14 LUFS | adjust the mix volume, do not fix it by pulling the peak |
truepeak | clipping (> -0.5 dBTP) | lower the source gain, see "SFX loudness and lead silence" in the noti-tiktok-vn skill (voice headroom before layering SFX) |
blackframes | black frames in the MIDDLE of the video (leading/trailing fades are ignored) | a gap at a scene change - fix transitionOverlap/durationInFrames |
freeze | frozen picture >= 2s | the scene is missing animation, or the footage is broken |
tail-silence | silent tail > 1.2s | trim the tail |
av-duration | picture and sound differ by > 0.5s | wrong total durationInFrames |
safe-area | ALWAYS passes, returns frames = images with the obstructed bands outlined in red | you MUST Read every image and judge for yourself; if any text sits in the red zone, pull it inward, see the key-layout skill |
status: "fail" -> the server rejects the assemble-final job with 409 QC_REQUIRED / QC_FAILED. Fix the root cause, re-render the draft, run QC again. Do not use force: true to dodge it unless the user explicitly asks.status: "warn" -> consider fixing, not blocking.--quality standard.outputs/<project>-v<N>.mp4.meta.json: status: "done", output: "outputs/...". The web UI reads status from here.curl -s -X POST http://localhost:6869/api/projects/<id>/thumbnail -H "content-type: application/json" -d "{\"title\":\"...\",\"frameAt\":12}"
curl -s -X POST http://localhost:6869/api/projects/<id>/publish -H "content-type: application/json" -d "{}"publish generates .srt/.vtt from the transcript and has the AI write the title/description/hashtags for TikTok, YouTube and Facebook following the Style Design. Precondition: the transcript must be the FINAL one. If it was cut/remapped, write the final version to assets/transcript.final.json (the transcript loader prefers this file) - otherwise the subtitles will drift out of sync with the cut video.
id, projectId, type (scene-draft|scene-final|assemble-draft|assemble-final|image-gen), status, progress, log, startedAt, finishedAt.QUEUE_CONCURRENCY (default 2, configurable via env; set 1 on weak machines). Safety constraint: two jobs from the same project never run at the same time (to avoid trampling renders/meta) - parallelism only happens across different projects.assets/sound-effects/, every file has an entry in assets/sound-effects/library.json (file, tags, durationMs, and a description written in Vietnamese).video-projects/<name>/assets/sound-effects/ then declare it in meta.json - a project must contain all of its own assets (re-rendering must not depend on a library that may change).library.json, plays previews inline, and allows uploading new files (the backend updates the json).The number one reason the pipeline burns an entire hour: re-rendering a draft of the WHOLE video after every small edit. The rules:
npx hyperframes snapshot or inspect (a few seconds) instead of rendering
a full draft (tens of minutes). Render a full draft only ONCE, when every snapshot is good, and final ONCE.render -c <scene>),
do not re-render the whole composition. The split-scene + Remotion-assemble pipeline is built exactly for this.-w 8 --browser-gpu for every render; add --gpu (NVENC) for drafts. Final keeps CPU encoding
(libx264) for maximum quality. Measured in practice: ~30% faster on short scenes, more on long ones.transcript.json already exists, reuse it, NEVER transcribe again.npx remotion render/still by hand you MUST add):
--concurrency 8 --gl angle. WITHOUT --gl angle, Remotion's Chrome renders with the
software renderer (SwANGLE) - the CPU carries 100% while the GPU idles (symptom: Task Manager CPU ~95%,
GPU ~5%). On Linux use --gl angle-egl instead of angle.meta.json must respect the data-type contract (the web UI reads it directly - a wrong type crashes the page):
output is a path STRING (e.g. "outputs/<id>-v1.mp4"), NOT an object. Extra metadata
(duration, quality, renderedAt, ...) goes into a separate outputInfo field if needed. scenes[].durationInFrames
is a number; sfx are placed with atFrame (a frame number) as in the schema at the top of this file.
Rendering a single scene: use the -c flag, not a positional argument: npx hyperframes render -c compositions/s01.html --quality draft --output renders/s01.draft.mp4. A <template> sub-composition must be referenced by index.html through data-composition-src for -c to be able to render it.
Words running together on per-word reveals: the HyperFrames pipeline swallows the whitespace between inline-block <span>s - separate words with margin: 0 0.14em on .word, do not rely on whitespace in the HTML.
The sub_timeline_readiness_timeout warning when rendering a template file with -c: the render still comes out correct (best-effort) but wastes another 45s waiting - acceptable for drafts; if you want it gone entirely, render through index.html.
A TS comment containing the glob path */ (e.g. video-projects/*/meta.json) closes the block comment early -> a baffling compile error. Write video-projects/<id>/meta.json instead.
Vietnamese JSON sent with curl -d from Git Bash on Windows loses its diacritics (verified 2026-08: the
thumbnail title arrived at the server as "B?n th? kh?ch..." and rendered broken). The console codepage mangles
UTF-8 before curl sends it. For any API body containing Vietnamese, POST from Node instead:
node -e "fetch(url, { method: 'POST', headers: {'content-type': 'application/json'}, body: JSON.stringify({...}) })"
(or write the JSON to a file and use curl --data-binary @file).
auto-cut skill, a second silencedetect pass verified the cut version, and the report states the seconds/segments removedmeta.jsonfail checks (the report spells out any leftover warn checks)meta.json has updated status + output.srt/.vtt + metadata), using the FINAL post-cut transcript© notivn, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/video-pipeline of notivn/AIEV.
Open the folder on GitHubat commit e40fe03
Video Pipeline next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Video Pipeline this skillnotivn/AIEV | 127 | — | ~2.9k | Automated safety check: Pass | MIT | |
| HyperFrames Video Entry Pointheygen-com/hyperframes | 60k | 3 repos | ~5.2k | Automated safety check: Pass | Apache-2.0 | |
| Remotion to HyperFrames Porterheygen-com/hyperframes | 60k | 3 repos | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| Reference Video Replica QcPluviobyte/video-production-skills | 671 | — | ~1.8k | Automated safety check: Pass | None | |
| Black White Text OpenerPluviobyte/video-production-skills | 671 | — | ~1k | Automated safety check: Pass | None | |
| Remotion To Hyperframeschmonitor/chmonitor | 301 | 1 repos | ~2.5k | Automated safety check: Pass | GPL-3.0 |
heygen-com/hyperframes
Entry point for making, editing and rendering videos from HTML compositions with HyperFrames, routing each request to the right workflow.
heygen-com/hyperframes
Ports an existing Remotion (React) composition to HyperFrames HTML with GSAP, one way, and grades the result against a tiered set of reference fixtures.
Pluviobyte/video-production-skills
Analyze, recreate, align, and verify reference-video motion.
Pluviobyte/video-production-skills
Create reusable black-background white-text opening animations for new videos.
chmonitor/chmonitor
Port an existing Remotion (React) composition to HyperFrames HTML.
Bomx/super-video-maker-skill
End-to-end AI video production skill for agentic frameworks.
notivn/AIEV
Pick background music from the assets/music/ library and configure auto-ducking (music dips automatically under speech) via meta.json audio.music for the Remotion assembly layer.
notivn/AIEV
Color grading video in the AI Edit Video system - delog/tonemap HDR-HLG-log footage, apply the color preset the user approved in the UI, and the visual verification workflow.
notivn/AIEV
Build a Vietnamese vertical TikTok explainer in the "MỔ XẺ PAPER AI" (AI paper dissection) format with HyperFrames (HTML/CSS/GSAP → MP4), Noti.vn style.
notivn/AIEV
The standard for writing new skills for the AI Edit Video system - file structure, frontmatter, tone of voice, and how to accumulate production lessons into skills.
notivn/AIEV
Edit a Vietnamese vertical TikTok video (9:16) with HyperFrames following the Noti.vn/GĐT standard - talking-head + kinetic typography + karaoke captions + zoom/punch-in camera + timestamp-synced…
notivn/AIEV
Build a Vietnamese landscape 16:9 YouTube video (1920×1080) with HyperFrames (HTML/CSS/GSAP → MP4), keeping the Noti.vn/GĐT branding inherited from noti-tiktok-vn.
Categories
End-to-end video production workflow for the AI Edit Video system - from the user request to the MP4 in outputs/, coordinating HyperFrames (scenes) and Remotion (assembly). Video Pipeline is an agent skill from notivn/AIEV. End-to-end video production workflow for the AI Edit Video system - from the user request to the MP4 in outputs/, coordinating HyperFrames (scenes) and Remotion (assembly).
Video Pipeline fits situations like: tasks that involve Video production; tasks that involve Motion graphics.
Run `npx skills add notivn/AIEV --skill video-pipeline -a claude-code`. Or copy the skill folder (.claude/skills/video-pipeline in notivn/AIEV) into .claude/skills/video-pipeline in your project. Claude Code loads it when a task matches its description.
Run `npx skills add notivn/AIEV --skill video-pipeline -a codex`. Or copy the skill folder (.claude/skills/video-pipeline in notivn/AIEV) into .agents/skills/video-pipeline in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add notivn/AIEV --skill video-pipeline -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/video-pipeline, .gemini/skills/video-pipeline, .github/skills/video-pipeline and .opencode/skills/video-pipeline in your project.
Going by SKILL.md and its folder, Video Pipeline needs the command-line tools its instructions call (npx, curl, ffmpeg and node). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npx and curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Video Pipeline is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Video Pipeline: HyperFrames Video Entry Point (heygen-com/hyperframes, 60k stars), Remotion to HyperFrames Porter (heygen-com/hyperframes, 60k stars), Reference Video Replica Qc (Pluviobyte/video-production-skills, 671 stars) and Black White Text Opener (Pluviobyte/video-production-skills, 671 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
notivn (a GitHub organization) maintains it in notivn/AIEV, which has 127 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 9, 2026.
Source: notivn/AIEV on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.