got an idea?

Let's build
something

allaboutaibygiri@gmail.comStart a conversation
Giridhar
Chettiar.

AI Engineer and Full Stack Software Engineer. Building agents and apps, and explaining them in 60 seconds on Instagram.

Quick links

  • Home
  • About
  • Projects
  • Blogs
  • Ideas
  • Contact

Let's connect

  • GitHub
  • LinkedIn
  • YouTube
  • Instagram
  • X (Twitter)

Contact

  • allaboutaibygiri@gmail.com
  • Adelaide, Australia

© 2026 Giridhar Chettiar. All rights reserved.

Privacy PolicyTerms of ServiceSitemap
Giri.
HomeAboutProjectsReviewsBlogsIdeas
Contact
where to?
HomeAboutProjectsReviewsBlogsIdeas
Contact me
All posts
AI & ML
November 5, 2026
12 min read

How to Edit with Claude — Part 2: A Reusable Video Template, in Code

Claude is probabilistic: the same prompt four times gives four correct edits in four different shapes. Part 2 is the fix: a video template written in HTML, CSS and JS and rendered with HyperFrames. A brand kit with one type scale, reusable scenes you can play live in this post, a storyboard that holds the timing, and an edit-my-video skill that uses it in any editor.

Giridhar Chettiar
Giridhar Chettiar
wrote this one
How to Edit with Claude — Part 2: A Reusable Video Template, in Code
Contents8 sections
  1. 1Four correct answers, four different shapes
  2. 2One prompt, three parts
  3. 3The brand kit: five colours, two fonts, one scale
  4. 4The scenes, live
  5. 5The timing lives in one file
  6. 6The skill that uses it
  7. 7Try it yourself
How to edit with Claude · a 3-part series
Part 1Teach Claude your style
Part 2 · you are hereA template, in code
Part 3Claude in Premiere + review loop
Companion to the Instagram series on @allaboutaibygiriPrompts and files to download at the end of each part
Episode 2.2 cover: Workflow template by Claude
Watch the episode

Episode 2.2 · Workflow template

The 60-second version of this post. The full template prompt is pinned in the comments.

Watch on InstagramYouTube channel

Episode 1 of my reel series took six rounds of notes before I'd post it. Episode 2.1 was done in one. Same footage quality, same Claude, same me reviewing. Part 1 explained half of the difference: a my-style skill that describes my taste in numbers. This post is the other half, and honestly the bigger one. A template written in code, so that every edit comes out with the same bones.

Episode 1 · no template
6 rounds
of notes before I'd post it. Every round, a different structure came back.
The differencemy-templatebrand kit + scenes + a skill
Episode 2.1 · with template
1 round
Captions, title card, step cards, outro: all already mine before I saw the first frame.
Builds on: my-style from Part 1Renderer: HyperFrames (HTML + CSS + JS → MP4), Node 22+Output: my-template/ brand kit, scenes, and an edit-my-video skill

Four correct answers, four different shapes

Here's the thing about Claude, Codex, Gemini, Grok, any of them: they're probabilistic. Give the same prompt four times and you get four correct answers in four different structures. For writing code that's fine, tests catch the drift. For a video it's a disaster, because "the title is two seconds longer and the captions moved up 40 px" is correct and wrong, and you only find out by watching the whole thing. Tap the toggle to see what I mean.

"Edit this into a reel with a title, captions and an outro." Four runs. All four are usable. None of them match, so every note I give applies to one of them.

run 1 · title 2.0 s
run 2 · title at 4 s
run 3 · captions up
run 4 · outro first?

Same prompt, but the folder has my-template. The structure is fixed in code; only the words and the footage change. A note about the step card now fixes the step card in every future edit.

run 1
run 2
run 3
run 4
Tap the two tabs. Orange is the title beat, grey is captions, dark is the body.

Part 1 gave Claude eyes and ears. This part gives it hands. The analogy I keep coming back to: a style guide tells a designer what good looks like; a component library stops them from having to redraw the button every time. my-style is the guide. my-template is the library.

One prompt, three parts

The whole template is built by one prompt, run in the same folder as my-style. It does three things in order, and it stops to ask between them. Here's the text, exactly as pinned under the reel.

The Episode 2.2 prompt
same folder as my-style
PromptRead my-style and build me a reusable video template called my-template, in code: 9:16, 1080x1920, HTML + CSS + JS rendered with HyperFrames (if it's missing, check for Node.js 22+ and run "npx hyperframes doctor").

Why HTML + CSS + JS. Because Claude is very, very good at it, and because a web page is seek-safe: every frame is a pure function of time, so a render is deterministic. HyperFrames is the engine that turns that page into an MP4 (and, with a transparent ground, into a ProRes 4444 MOV I can drop over my footage in Premiere). No proprietary project format, no plugin to learn; the template is files I can read.

Part 11) BRAND KIT: put my fonts, colours and logo in one folder, my-template/brand, and write one brand file: my colours, my fonts by role (titles / captions / labels) and one type scale for every text size. Never invent a font, colour or logo I didn't give you. Ask me about anything missing, one question at a time.

"Fonts by role" is the detail that took me a review to learn: Anton is for one big word, never for a paragraph; captions get the body face; labels get the body face at a smaller step. And "one question at a time": a wall of twelve questions gets three answers. One question gets one answer, every time.

Part 22) SCENES: build the pieces every video of mine uses as reusable blocks: hook title, word-by-word captions, name card (intro), step card, before/after, outro. Every size and timing comes from my-style and the brand file. Render a still of each on one sheet so I can approve them in one go.

"On one sheet." Six scenes, six stills, one image. I approve or reject in a minute instead of opening six files. This is the same trick I use for every review in Part 3: when Claude has to show me a choice, it renders the candidates side by side and I answer with a number.

Part 33) EDIT-MY-VIDEO: after I approve, use /skill-creator to make a skill called edit-my-video. Ask me which software I edit in (Premiere Pro, After Effects, DaVinci Resolve, HyperFrames or Remotion) and write step-by-step instructions for using my-template there: transcribe my clip, cut fillers and long pauses, add my captions, drop in the scenes where my words call for them (I say "Step 2" → step card), check the layout, render preview.mp4.

"I say Step 2 → step card." That one line is the whole idea of a template with a transcript: my words become the trigger for my graphics. I don't place a step card on a timeline; I say "step two" on camera, and the skill knows what to do.

Step through the four tabs. Full prompt is downloadable at the end.

The brand kit: five colours, two fonts, one scale

My brand file is tiny, and that's deliberate. Five colours, two typefaces, and a rule for every text size. Claude is told it may use these and never invent one; if a scene truly needs a new colour, that's a question for me, not a decision for it.

my-template / brand

Giri Design System, at video scale

Web tokens ×3 for the 1080 × 1920 frame. Anton for display, Geist for everything else. The DS defines no display size on purpose; display sizes come from the type scale below.

Paper #F6F3EAOatmilk #EBEBDFInk #0D0D0DInk-700 #3B352CAtomic Orange #E9631A

The scale is the part I'd never have thought of before a tutorial taught it to me (that's the first row of the lessons table in Part 1). Every text size in a scene is the base size (my body text, 48 px at video scale) times one ratio to some power. Pick the ratio once per scene and it sets the vibe: golden for a dramatic hook, root-two for a tech explainer, minor third for a text-heavy card. Nobody, Claude included, types a pixel value. Try the ratios:

One ratio per scene, every size a step
base 48 px × ratio^n
ts-1label · caption30 px
ts0body · the base48 px
ts1kicker78 px
ts2Headline126 px
ts3Hook203 px
Dramatic, premium. Hooks, hero words, title cards. The jumps are big, so there's room for only three or four sizes before you run out of frame.
ts-1label · caption34 px
ts0body · the base48 px
ts1kicker68 px
ts2Headline96 px
ts3Display136 px
ts4Hook192 px
Modern, geometric: the default for tech explainers. The fixed names in my kit (96 · 136 · 192 · 271 px) are exactly steps 2–5 of this scale.
ts-1label · caption36 px
ts0body · the base48 px
ts1kicker64 px
ts2Headline85 px
ts3Display114 px
ts4Hook152 px
Balanced: a headline with a subhead that doesn't fight it. My default for step cards.
ts-1label · caption38 px
ts0body · the base48 px
ts1kicker60 px
ts2Headline75 px
ts3Display94 px
ts4Hook117 px
Soft: text-heavy cards, lists, UI mock-ups. Lots of steps fit, none of them shout.
ts-1label · caption40 px
ts0body · the base48 px
ts1kicker58 px
ts2Headline69 px
ts3Display83 px
ts4Hook100 px
Subtle, editorial: quotes, magazine layouts. The scale you'd use for a pull quote, not a hook.
Tap a ratio. Samples are scaled down ~3× to fit the page; the px column is the real size in the 1080 × 1920 frame.

A script in the kit checks every scene against this and prints a warning for any size that isn't a step. Sounds pedantic; it ended an entire category of "why does this title feel slightly off" notes.

The scenes, live

This is the part I'm proudest of, so I've embedded it rather than describing it. Below are nine of the twenty-one scenes in my motion kit, playing in your browser exactly the way HyperFrames renders them: same HTML, same CSS, same GSAP timelines. Hit a scene name to jump; toggle the safe-area guide to see the Instagram UI zones every scene has to respect (top 220 px and bottom 320 px belong to the app, not to me).

Motion kit · 9 of 21 scenes · 1080 × 1920 scaled to fitOpen full ↗

Every scene follows the same grammar, and the grammar is written down in the kit so Claude builds new ones the same way:

01
Letters cascade from a blur
Fade up from blur(16px) with a small rise, left to right, the word assembled in ≈ 0.5 s. Fast attack, long soft settle. No bounce, ever.
One element moves at a time
Each helper returns the time its move reads as settled; the next move chains from it. If the cut, the camera and a graphic all move at once, nothing reads.
Frozen once assembled
No idle drift, jitter or pulsing. The only continuous motion allowed is meaningful: a counter, a waveform, a slow push.

Under the hood each scene is one HTML file: a <template> with the markup, a <style> scoped to the scene's id, and a script that adds tweens to a paused GSAP timeline. Here's the simplest one, the wordmark you saw first in the player. Thirteen lines of animation.

<template id="s01-claude-template">
  <div id="s01-claude" data-composition-id="s01-claude" data-width="1080" data-height="1920">
    <div class="scene">
      <div class="panel-top on-oat">
        <div class="panel-center">
          <h1 class="display d3 word">Claude</h1>
          <div class="bar-wrap"><span class="underline"></span></div>
          <p class="kicker line">can now learn a task</p>
        </div>
      </div>
    </div>
    <script>
      (function () {
        var root = document.getElementById("s01-claude");
        var tl = gsap.timeline({ paused: true });
        var t = Kit.cascadeIn(tl, root.querySelector(".word"), 0.08);
        t = Kit.underline(tl, root.querySelector(".underline"), t);
        Kit.cascadeIn(tl, root.querySelector(".line"), t + 0.05, { by: "word", blur: 8 });
        window.__timelines["s01-claude"] = tl;
      })();
    </script>
  </div>
</template>

Notice there's no font-family in the scene and no pixel sizes: .display.d3 and .kicker come from the kit, which comes from the brand file. Change the brand, and twenty-one scenes change with it.

The timing lives in one file

Scenes are pieces. What makes them a video is a storyboard: one JSON file that says which scene plays when, for how long, and which beat of the source it mirrors. A script reads it and regenerates the host page and the cue sheet, so nobody (me or Claude) ever hand-edits the assembled file.

{
  "reel": "DbYM0olp2t7",
  "title": "Record a Skill",
  "duration": 58,
  "scenes": [
    { "id": "s01-claude", "start": 0, "duration": 1.8, "layer": "split", "type": "wordmark",
      "says": "Claude can now learn a task", "onscreen": "Claude — can now learn a task",
      "mirrors": "shot 1: logo build" },
    { "id": "s07-hit-record", "start": 12.4, "duration": 3.2, "layer": "full", "type": "button-press",
      "says": "step one, hit record", "onscreen": "Step 01 · Hit record",
      "mirrors": "shot 6: record button screen recording" }
  ]
}

Three fields do most of the work. layer decides whether the graphic covers me (full), sits in the top half while I stay on screen (split), or floats over me with the face kept clear (overlay). says is the line from my script that plays underneath. mirrors is which shot of the reference this scene replaces, which is how the pacing from Part 1's measurements becomes a timeline instead of a table.

For my own footage there's a second file with the same philosophy, the edit decision list: clips with in/out points on word boundaries, punch-ins, inserts and captions, all as data. It's downloadable below. The rule for both files is the same one as for the brand kit: the file is the edit. If something's wrong, I fix the file and re-render; I never patch the output.

The skill that uses it

Part 3 of the prompt makes edit-my-video. It asks which software I edit in, then writes the instructions for using the template there. This matters because the template is renderer-agnostic by design: the brand file and the scene list are facts about my videos, not about a tool.

You edit inWhat the template becomesWhat stays editable
HyperFrames (my default)the scenes render straight to MP4 + a transparent MOV overlayevery scene file, the storyboard, the EDL
Premiere Proan FCP7 XML timeline Premiere imports; graphics come in as ProRes 4444 MOVsthe .prproj, plus the XML it was built from
After Effectsa JSX script builds one comp per scene from the same brand filethe .aep; re-render one comp, not the film
DaVinci Resolvesame timeline-as-XML idea; graphics as alpha MOVsthe Resolve project
Remotionscenes as React components reading the same tokensthe React project

My own edit-my-video is HyperFrames-first (the whole kit you saw above is HTML), with Premiere and After Effects as the second route. How Claude drives those two apps when their versions are too old for any public MCP is the entire subject of Part 3.

Try it yourself

Try it yourself

The Episode 2.2 prompt, my brand tokens as a starting point to replace with yours, and the two data files that make a template a video. The motion kit itself is the live demo above; its CSS and JS are linked so you can read them.

⬇ ep2-2-reusable-template.md 2 KB · the prompt⬇ tokens.css 1 KB · brand tokens, replace with yours⬇ storyboard.example.json 1 KB · scene timing⬇ edl.example.json 2 KB · the edit as datakit.css 11 KB · tokens + type scale + elementskit.js 11 KB · the motion primitives

Before you run the prompt:

  • Have my-style first. The template reads its numbers. Without it, Claude falls back to the average again, just more consistently.
  • Approve the sheet before Part 3. The prompt stops after the scene stills on purpose. Say what's wrong there; it's six stills, not six videos.
  • Name the software honestly. "HyperFrames" if you're fine with files and a terminal. "Premiere" if you want a timeline you can scrub. Both are fine; a vague answer gets a vague skill.

What I learned

  • Consistency is a property of code, not of prompts. A better prompt made run 2 better. A template made runs 1–4 identical.
  • Templates and skills are different things. The skill decides what to do (cut here, step card there). The template decides how it looks. Keep them separate and each one stays small.
  • "Render a sheet" is the best review tool I have. One image of six candidates, answered with a number, beats any amount of describing.
  • Six rounds to one. That's the number that convinced me this was worth writing up. It isn't magic; it's the same reason design systems exist.

In Part 3: my Premiere Pro is from 2022 and my After Effects from 2020. No MCP server supported either, so Claude built one. And then it learned to review its own edit before I ever see it.

Tags

Claude Code
AI Video Editing
HyperFrames
Motion Graphics
GSAP
Keep reading

Related articles

AI & ML

How to Edit with Claude — Part 1: Teach Claude Your Style

Same clips, same Claude: one edit came out generic, the other in my style. The difference was one skill. Part 1 of the companion series to my Instagram reels: why a general model edits like everyone's average, how a learn-style skill turns reference reels into measured rules (cuts per 10 s, caption words, punch-ins, pace), and the three exact prompts that build it.

Read
AI & ML

How to Edit with Claude — Part 3: Claude Inside Premiere Pro, and the Review Loop

No MCP server supported my Premiere Pro 2022 or After Effects 2020, so Claude built its own: a local server, a CEP bridge panel, ExtendScript and aerender. Then the real game changer: a review loop where Claude checks its own render, fixes what it finds, sends one preview, and turns every note into a rule. Plus the gotchas table from getting it working.

Read
Read more articles

On this page

  • Four correct answers, four different shapes
  • One prompt, three parts
  • The brand kit: five colours, two fonts, one scale
  • The scenes, live
  • The timing lives in one file
  • The skill that uses it
  • Try it yourself
  • What I learned
  • 8What I learned
  • Design Systems
    Content Creation