Communitygithub.com

akachandan1/video-studio

Fast CapCut-style chop-cut reel with a story — showreels, hype edits, launch teasers, "make it punchy". One canvas engine on a beat grid (punch-ins on cuts, flash frames, impact shakes, whip pans, speed ramps, freeze frames) rendered in HyperFrames, in 16:9 and 9:16 from one edit, with an original synthesized score locked to the cuts.

What is video-studio?

video-studio is a Claude Code agent skill that fast CapCut-style chop-cut reel with a story — showreels, hype edits, launch teasers, "make it punchy". One canvas engine on a beat grid (punch-ins on cuts, flash frames, impact shakes, whip pans, speed ramps, freeze frames) rendered in HyperFrames, in 16:9 and 9:16 from one edit, with an original synthesized score locked to the cuts.

Works with✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/akachandan1/video-studio/tree/HEAD/.claude/skills/chop-reel

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

Chop reel (HyperFrames)

Proven on "The Brief" showreel. People judge reels by pace and narrative, not polish alone — a plain montage of nice scenes reads as "basic". Give it a story with stakes.

1. Story first (before any code)

Write a 5–8 beat story where each beat showcases one capability and the edit itself tells it. The pattern that worked: hook (a problem + a clock) → work montage (one skill per section) → twist/obstacle (freeze frame, client feedback) → smash cut answer → payoff blitz → delivered → end card. A persistent HUD (clock that jump-cuts, stage label) keeps viewers oriented through fast cuts.

Then a cue sheet on a grid: 150 BPM = beat 0.4 s, bar 1.6 s (or 120 BPM = 0.5 s). Every cut, slam and caption sits on a beat; sections change on bar lines. Hook = 1 word per beat for the first 1.6–3.2 s.

2. Start from the template

cp -R templates/chop-reel videos/<name> && cd videos/<name>
../../.venv/bin/python score.py   # writes assets/audio/score.wav
python3 build.py 169        # writes index.html (16:9);  build.py 916 for 9:16
npx --yes [email protected] lint && npx --yes [email protected] render -o ../../out/<name>-169.mp4

reel.js structure — edit in this order:

  • Scenes: function scene(g, l) draws a whole frame at local time l. Use relative units (W, H, M, PORT) so both aspects work; fit() shrinks text to a max width.
  • SHOTS: [t0, t1, scene] — the edit. null = covered by a transition.
  • FX lists: PUNCH (1.06× zoom decaying over 0.2 s on each cut + extra beats), FLASH (2-frame white on drops, half-white on section cuts), SHAKES [start, dur, amp], WHIPS (motion-blurred push between scenes, 9 sub-frame renders averaged).
  • Video clips (huashu art, caption-kit renders, AI shots) go on top as <video class="clip"> in build.py with their own punch tweens in GSAP; the canvas draws black underneath.

3. Moves library

For named moves use the motion-prompt skill: node ~/.claude/skills/motion-prompt/scripts/motion-prompt.mjs get 001 043 returns each move's published spec (curves, durations, overshoot). Port the numbers exactly into reel.js and cite them in a comment (// #043 whip pan: …) — the user notices when moves are "inspired by" instead of used. Useful: #001 pop-in, #005 mask reveal, #007 count-up, #008 kinetic type, #010 overshoot, #017 mask, #020 zoom through, #023 glitch, #024 impact shake, #038 speed ramp, #040 freeze frame, #043 whip pan, #046 smash cut.

4. Sound

Use the score skill: copy examples/phonk_150bpm_45s.py for a full-length trap/phonk score, or extend the template's score.py. Every slam/flash in reel.js gets a hit at the same time (impact, clap, riser into drops, record scratch on the freeze, silence before the smash cut). VO via Kokoro, ducked under; captions via caption-video.

5. Check & deliver

  • Snapshot each section in both aspects and look: nothing cropped in 9:16, text ≥ 4% of short side.
  • Render both, loudnorm −14 LUFS, send both. Name out/<Title> (16x9).mp4 / (9x16).mp4.
  • Revisions: change SHOTS / scene fns → rebuild both aspects → render.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

akachandan1/video-studio

Painterly and illustrated animation — Kurzgesagt-style flat science explainers ("what's inside", scale, mechanisms), art-history styles (Van Gogh, Monet, Lichtenstein, Kusama, Matisse, cubism, ink wash, 8-bit, Roman mosaic, cave painting, Persian miniature…). Uses the huashu-art-motion canvas engine with CUSTOM scenes, renders MP4s, and assembles/scores them in HyperFrames. Also the claude-animation plugin for hand-drawn 2D.

akachandan1/video-studio

Add styled, word-synced captions (and an optional scroll-stopping hook) to a talking video. The user gives a video; you transcribe it, show every caption style rendered on their own footage, they pick a style and hook, and you render the captioned MP4. Use when the user uploads/gives a video and says "caption this", "add captions/subtitles", "make captions", "caption styles", "add a hook", or invokes /caption-video.

akachandan1/video-studio

Guided studio for narrated, fact-checked explainer videos in a Vox-style editorial look (bold collage, flat colour fields, marker annotations, big numbers) or a paper-diorama documentary look. One idea in → sourced script in 10-second blocks → style key + per-scene prompts (or free code-built collage scenes) → offline voiceover fitted to each block → HyperFrames cut with captions, animated number callouts and an original score, in 16:9 and/or 9:16. Use for "Vox-style video", "explainer", "animated explainer", "data-driven video", "make a video about X", "why does X happen".

akachandan1/video-studio

Apple / OpenAI-style product launch film or premium spec ad (30–60 s) — minimal supers, big product moments, signature transition, piano/pulse score, end-card lockup. Shots come from code (HyperFrames scenes), Higgsfield AI image→video, or real product footage, all assembled and rendered in HyperFrames. Includes the fold-cut builder (shots hinge shut/open on the centre line).

Related Skills