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.
Cut silences and dead weight (fillers, repeated takes, false starts) out of a talking-head video BEFORE building the edit - call the measured /auto-trim API instead of hand-rolling ffmpeg, review…
$ npx skills add notivn/AIEV --skill auto-cut -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install notivn/AIEV auto-cut --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/auto-cut .claude/skills/auto-cut && 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 "auto-cut" agent skill from https://github.com/notivn/AIEV/tree/main/.claude/skills/auto-cut into .claude/skills/auto-cut/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "auto-cut", 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/auto-cutType 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 auto-cut -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install notivn/AIEV auto-cut --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/auto-cut .agents/skills/auto-cut && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "auto-cut" agent skill from https://github.com/notivn/AIEV/tree/main/.claude/skills/auto-cut into .agents/skills/auto-cut/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "auto-cut", 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 auto-cut -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install notivn/AIEV auto-cut --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/auto-cut .cursor/skills/auto-cut && 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 "auto-cut" agent skill from https://github.com/notivn/AIEV/tree/main/.claude/skills/auto-cut into .cursor/skills/auto-cut/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "auto-cut", 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/auto-cut--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 auto-cut -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install notivn/AIEV auto-cut --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/auto-cut .gemini/skills/auto-cut && 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 "auto-cut" agent skill from https://github.com/notivn/AIEV/tree/main/.claude/skills/auto-cut into .gemini/skills/auto-cut/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "auto-cut", 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 auto-cutInstalls 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 auto-cut -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/auto-cut .github/skills/auto-cut && 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 "auto-cut" agent skill from https://github.com/notivn/AIEV/tree/main/.claude/skills/auto-cut into .github/skills/auto-cut/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "auto-cut", 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 auto-cut -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 auto-cut --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/auto-cut .opencode/skills/auto-cut && 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 "auto-cut" agent skill from https://github.com/notivn/AIEV/tree/main/.claude/skills/auto-cut into .opencode/skills/auto-cut/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "auto-cut", 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.
auto-cutCut silences and dead weight (fillers, repeated takes, false starts) out of a talking-head video BEFORE building the edit - call the measured /auto-trim API instead of hand-rolling ffmpeg, review…
Auto Cut is an agent skill from notivn/AIEV. Cut silences and dead weight (fillers, repeated takes, false starts) out of a talking-head video BEFORE building the edit - call the measured /auto-trim API instead of hand-rolling ffmpeg, review the dead-weight candidates it returns, and do the one job only a human/AI can do (spotting repeated POINTS). Read this when the brief enables "Tự động cắt ngắn video" (autoCut) or the user complains that the video still has dead weight/silences.
Its SKILL.md is about 3.2k 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 FFmpeg. 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 1a4c2b0. 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.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
Auto Cut loads about 3.2k tokens when it runs. Until then it costs about 113 tokens; SKILL.md has 1,818 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 1a4c2b0, republished under its MIT licence (© notivn). 1,818 words, ~3,175 tokens.
.claude/skills/auto-cut/SKILL.md (or your agent's skills folder).assets/<source>.cut.mp4 + assets/transcript.cut.json -
every later step uses the cut version.silencedetect yourself
and do NOT pick a dB threshold by feel. Two measured facts killed that workflow:silencedetect at -30dB reported 48.6s of "silence" but only 18.2s of it sat in a real gap
between words; the other 30.4s was inside words (syllable breaks, unvoiced Vietnamese finals
c/t/p/ch). Cutting on sound level alone swallows speech.
The server does the measuring (autoTrim.ts) and the candidate generation (deadWeight.ts).
You do the reviewing. That split is the whole point.The whole guard depends on it. The server looks for assets/transcript.raw.json, then
assets/transcript.json. Without one, analysis still runs but comes back guarded: false, the
dead-weight list is empty, and the numbers are guesswork in both directions (it can pass a bad
cut and fail a good one). Transcribe first - never trim a Vietnamese talking head unguarded.
POST http://localhost:6869/api/projects/<id>/auto-trim/analyze
body: {} # or { "source": "assets/face.mp4", "level": "tight" }level is natural | default | tight and defaults to brief.autoCutLevel. Response:
silence - durationSec, the chosen thresholdDb + thresholdNote (why that threshold won),
measured noiseFloorDb, the silences that will be cut, keepRanges, removedSec, the full
sweep table, and wordGuard (how many seconds the transcript vetoed).deadWeight - candidates[] with kind (filler | stutter | repeat-take | hesitation),
start/end, text, confidence, reason, context; plus totalSec and byKind.guarded - true only when a transcript was found. If false, fix that before cutting.Nothing is encoded, so call it as often as you like (a 217s source analyzes in about a second).
The list is deterministic: same transcript, same candidates, same confidence. What it cannot do is understand meaning. Go through them one by one and keep only the ones you would defend:
đó, ấy, thế, mà, là are both filler particles and real
demonstratives/conjunctions.hoặc là, tức là, bởi vì là, với lại là) are the trap. Measured on a
real transcript: "…có thể là ok ứng dụng nó / Hoặc là / Tham khảo để tìm cách…" is a genuine
alternative - cutting it destroys one branch of the sentence. But "Còn trường hợp mà mọi người có
thể nghe / Hoặc là / Còn trường hợp mà người AI không ứng dụng được…" is an abandoned sentence
and should go. The surface form is identical; only the meaning separates them. That is exactly why
these come back with a low base confidence and a reason that says READ THE CONTEXT.repeat-take candidates: check that the later take really is the fuller one before approving.hesitation candidates are pure silence between words - usually safe, but check you are not
removing a deliberate beat before a punchline.Reject freely. A filler left in costs 0.4s; a real word cut makes the sentence nonsense and the viewer hears it immediately.
No detector catches this, and it is the dead weight users complain about most. Read the transcript as a piece of speech and analyze it semantically:
{start, end} range and send it with the approved candidates in Step 4.timestamp | sentence cut | reason | sentence kept - so the user can review every decision.POST http://localhost:6869/api/projects/<id>/auto-trim/apply
body: { "cutCandidates": [{ "start": 51.81, "end": 52.25 }, …] } # ONLY what you approved
-> 202 { job }Send an empty list if you approved nothing - the measured silences still get cut. Then poll
GET /api/jobs/<jobId> until it finishes. The job:
trim/atrim + setpts/asetpts + concat), writing assets/<stem>.cut.mp4.assets/transcript.cut.json.assets/auto-trim-report.json.If nothing is worth cutting, the job deliberately does NOT produce a .cut.mp4 (a re-encoded
identical copy only loses quality) - output in the report is null and you keep using the source.
assets/auto-trim-report.json holds: before/after duration, removed.silenceSec vs
removed.approvedSec, the chosen threshold and why, rejected candidates, and verification.
verdict: "pass" - the result meets the profile for that level.verdict: "fail" - the job still finished and the file is usable, but it did NOT meet the
profile. The log says so explicitly. Approve more dead weight (Step 2/3) and run apply again, or
state in the final report why you are accepting it. Never report the cut as done while ignoring a
fail.The pass criteria are not the old "no silence > 0.8s" rule - measurement showed that rule is far too
lax. A real file passed it while carrying 13 residual silences of 0.45-0.67s totalling 6.7s (4.2% of
the runtime), which sounds obviously draggy. The profiles now cap BOTH the longest single silence and
the total ratio (default: 0.5s / 3%).
From here on, captions, key layout, SFX timing and zooms read assets/transcript.cut.json and the
.cut.mp4. The QC check dead-air re-measures the assembled video against the transcript and FAILS
when brief.autoCut is on and dead air is still over the profile - that is the backstop, not the
plan.
Final report must include: the cut table from Step 3, seconds removed split into silence vs approved
dead weight, and the verification verdict. Take the numbers from auto-trim-report.json.
transcript.cut.json.*.cut.*
when picking a default)..cut.mp4 while the only transcript is the raw one -> the guard is aligned to the wrong
timeline. Match the source file to the transcript that describes it.data-media-start to trim inside HyperFrames
(see "SFX loudness and lead silence" in the noti-tiktok-vn skill), do not re-encode an audio file
just for 0.3s of leading silence.autoTrim.ts; the rule is
below, and it applies to any new code that cuts or concatenates audio.A cut lands mid-waveform. The last sample of one segment and the first sample of the next are unrelated, so the join is a vertical step, and a step is a click. The cause is not the encoder and not the source - it is the join itself, so it survives any re-encode downstream.
How much it matters depends on WHERE the cut lands, and the difference is large. Measured losslessly on a real 278s talking-head, comparing the same cut with and without the fade (largest sample-to-sample step at the join; anything above ~0.02 is audible):
| Kind of join | Before | After |
|---|---|---|
Silence trim, 40 joins (balanced) | median 0.0040, worst 0.0113 - none audible | median 0.0000 |
| Mid-speech, 4 joins (dead weight / repeated points) | 0.1195, 0.0744, 0.0232, 0.0064 - 3 of 4 audible | all ≤ 0.0008 |
For scale, the loudest step anywhere in normal speech in those files was 0.06-0.13. So a mid-speech join without the fade can be a bigger jump than anything the content itself produces, while a silence join is nowhere near audible.
Do not skip the fade on the strength of that first row. Plain silence trimming is the case where it happens not to matter; Step 3 (repeated points) and clip extraction cut straight through speech, and those are the joins that click.
Fix: fade both edges of every segment over 30ms. Long enough to kill the step, far too short to hear
as a fade. Use audioCutFade() in apps/server/src/util.ts; do not hand-roll the filter.
[0:a]atrim=start=S:end=E,asetpts=PTS-STARTPTS,afade=t=in:st=0:d=0.030,afade=t=out:st=D-0.030:d=0.030[aN]Three things that make it silently do nothing:
afade must come AFTER asetpts=PTS-STARTPTS. afade reads st off the stream's own
clock; on original timestamps st=0 is in the past and the fade-in never fires.D is the segment duration, so the fade-out start is D - 0.030. Clamp the fade to
D/2 or the two fades overlap on a short segment and swallow it.reframe.ts fades them via -af.One note on measuring this yourself: do not compare two AAC encodes. Re-encoding perturbs samples
everywhere, which buried the 40 real joins among 294 spurious difference regions and put a 54ms
offset between the two files. Render both variants straight to pcm_s16le instead - then the two are
sample-aligned and the joins sit exactly at the cumulative segment lengths.
© 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/auto-cut of notivn/AIEV.
Open the folder on GitHubat commit 1a4c2b0
Auto Cut 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 |
|---|---|---|---|---|---|---|
| Auto Cut this skillnotivn/AIEV | 126 | — | ~3.2k | Automated safety check: Pass | MIT | |
| HyperFrames Video Entry Pointheygen-com/hyperframes | 59k | 3 repos | ~5.2k | Automated safety check: Pass | Apache-2.0 | |
| Cut Silencesnateherkai/hyperframes-student-kit | 1.2k | — | ~1.2k | Automated safety check: Pass | Custom licence | |
| Anime Cel Video Makeredenfunf/reelmimic | 1.8k | — | ~1.6k | Automated safety check: Pass | MIT | |
| Paper Cut-out Animationedenfunf/reelmimic | 1.8k | — | ~1.5k | Automated safety check: Pass | MIT | |
| p5 Paint Animationheygen-com/hyperframes-community-skills | 183 | — | ~1.8k | Automated safety check: Pass | Apache-2.0 |
heygen-com/hyperframes
Entry point for making, editing and rendering videos from HTML compositions with HyperFrames, routing each request to the right workflow.
nateherkai/hyperframes-student-kit
Agent 1 of the video editing pipeline. An agent skill from nateherkai/hyperframes-student-kit.
edenfunf/reelmimic
Builds Japanese TV-anime style MP4 videos in code, with cel-shaded characters, painted backgrounds and staging effects, rendered in headless Chrome and encoded with ffmpeg.
edenfunf/reelmimic
Builds paper cut-out, stop-motion style MP4 videos in code, with jointed paper puppets, torn or scissor-cut edges and soft shadows, rendered frame by frame in headless Chrome.
heygen-com/hyperframes-community-skills
Turns a text prompt, photo or short video into hand-made looking p5.js animation: self-writing handwriting, brushstroke repaints and living paintings rendered offline.
edenfunf/reelmimic
Makes animated pixel-art videos in an indie-game style: a 480×270 canvas upscaled four times, limited palettes with dithering, procedural characters and dialogue captions, encoded as MP4.
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.
Works with
Categories
Cut silences and dead weight (fillers, repeated takes, false starts) out of a talking-head video BEFORE building the edit - call the measured /auto-trim API instead of hand-rolling ffmpeg, review…. Auto Cut is an agent skill from notivn/AIEV. Cut silences and dead weight (fillers, repeated takes, false starts) out of a talking-head video BEFORE building the edit - call the measured /auto-trim API instead of hand-rolling ffmpeg, review the dead-weight candidates it returns, and do the one job only a human/AI can do (spotting repeated POINTS).
Auto Cut fits situations like: tasks that involve Video production; tasks that involve Motion graphics.
Run `npx skills add notivn/AIEV --skill auto-cut -a claude-code`. Or copy the skill folder (.claude/skills/auto-cut in notivn/AIEV) into .claude/skills/auto-cut in your project. Claude Code loads it when a task matches its description.
Run `npx skills add notivn/AIEV --skill auto-cut -a codex`. Or copy the skill folder (.claude/skills/auto-cut in notivn/AIEV) into .agents/skills/auto-cut 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 auto-cut -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/auto-cut, .gemini/skills/auto-cut, .github/skills/auto-cut and .opencode/skills/auto-cut in your project.
SKILL.md names no scripts, command-line tools or credentials: Auto Cut is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Auto Cut is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.2k tokens (SKILL.md is roughly 13k 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 Auto Cut: HyperFrames Video Entry Point (heygen-com/hyperframes, 59k stars), Cut Silences (nateherkai/hyperframes-student-kit, 1.2k stars), Anime Cel Video Maker (edenfunf/reelmimic, 1.8k stars) and Paper Cut-out Animation (edenfunf/reelmimic, 1.8k 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 126 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 8, 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.