Log in
WorkflowBy HypernaturalVersion 1, updated

Add captions and motion graphics to video

hn/workflow-add-captions-and-motion-graphics-to-video

Take footage someone already has (a webcam or talking-head video, a creator short, a cut of best takes) and make it more exciting in their brand: captions in a chosen style, kinetic titles, type behind the person, titles that react to their face and hands, graphics for the words, punch-ins and shakes on hits, and synthesized sound effects, at the intensity they pick from captions-only to go wild. Free and local; the first build takes about an hour. Use for 'add captions and motion graphics', 'make my video pop', 'go wild with graphics', augmenting shorts, reels and webcam videos.

SKILL.md

The person brings footage they already have (a webcam video, a talking head, a short they posted, a rough cut of best takes), their brand kit if they have one, and how far to go. You deliver the same footage with captions and motion graphics in their brand, rendered at the footage's own size and rate. Everything is local and free; the first build takes about an hour, rebuilds a few minutes. Keep the brand direction and rules in refs/brand.md; record the intensity and picks with the job's notes.

Steps

  1. A cut to build on. Raw retakes go through guide-cut-best-takes first (its gate included); a finished short is used as it is. Every later step reads this cut's frames.
  2. Brand direction and assets (guide-capture-a-brand): use the supplied kit and brief, or propose a direction from the footage. Its personality, tone and intended audience inform the graphics as well as its fonts and colours. Resolve missing choices that affect the look; show that look at step 6.
  3. Ask the intensity, and record it:
    • Captions: captions and one or two titles on the key words.
    • Standard: plus titles behind the person, graphics for the words, sound.
    • Go wild: every move below, the hand and face moves and a punch-in or shake on every hit.
  4. Word times of the cut (whisper-cli-transcribe-with-word-times, read with python-read-word-timings), names checked by ear.
  5. Track the person (python-track-face-and-hands) when anything sits behind them or reacts to them: track.json, the person cutout, the hands-only cutout and the end freeze frame (a 1.4 s hold).
  6. The first look (guide-add-titles-and-motion-graphics, Process 1): the opening seconds in two looks from the kit, the caption style included (guide-caption-a-video; karaoke in the brand's caption face by default). Gate: the look.
  7. Build the spec from one build script (hn4a-compositor, build script):
    • the camera that punches in and shakes over footage, with its layer order (hn4a-compositor, references/spec-format.md): footage, titles behind, the person cutout, graphics in front, the hands cutout; captions outside the camera;
    • titles as PNGs in the headline font, drawn big so fit: fill can squash and stretch them (hn4a-compositor-hand-interactive-titles); text layers only for captions and counters;
    • in-scene effects (hn4a-compositor-in-scene-titles), the face and hand moves (hn4a-compositor-hand-interactive-titles), type lying on a desk or wall in a plane group (hn4a-compositor-perspective-planes);
    • the graphics menu below for the words.
  8. Sound (python-synth-sfx-for-motion-graphics; realistic sounds through guide-add-sound-effects): the build script writes the cue list, one sound per kind of graphic, mixed at 0.6 under the voice; brand sounds replace synthesized ones.
  9. Check (python-check-title-occlusion): every title behind the person at most 0.2 hidden; then stills at every effect on one sheet (python-contact-sheet) for edge clipping, whole words hidden and every brand rule. Gate: the live spec (hn4a-compositor, Live spec, then render).
  10. Render and deliver per the core skill: frame count, a contact sheet, a listen (or the person's), loudness (ffmpeg-normalize-loudness; −14 LUFS for a short).

The graphics menu

Moves that worked, for the words being said:

  • Opening: one big word over the speaker, then the first phrase stacked on one side of the head and the next on the other; both fly out sideways before the hero word, which the hands squash to the floor.
  • Graphics for the words: a bar chart that grows (anim.box), a progress bar with a stepped % counter, marquee bulbs blinking around the frame, comic starburst sound words, confetti cannons in the brand colours, a spinner that resolves to a check, a title sliced in half with clip-path polygons, a stamp, a take counter that ends on ∞, a real duration squashed into the real cut's length.
  • An "any style" line: each caption word in its own style, an emoji-able word replaced by its symbol.
  • A brand character riding a palm or hopping onto a title, by its own rules: its art as transparent PNGs in the brand colours, with mirrored copies for direction.

Choices this workflow makes

  • The intensity is asked, not assumed. The same footage can want captions and one title, or everything.
  • All composited, all local. Nothing generated; the footage's own pixels and sound.
  • Titles live in the footage's camera, so punch-ins and shakes move type and person together, and the cutout keeps the person in front.
  • A re-cut rebuilds from the top: re-cut, re-transcribe, re-track, re-make the cutouts and end frames, rebuild, then the sound and the occlusion check. Notes on the graphics re-cue in the build script, never by hand in the JSON.

Dead ends

  • Type placed by eye behind the head: a still looked fine while the head moved into the word a second later. Measure every frame (python-check-title-occlusion).
  • Wide words near the frame edge in an overscanned camera: a punch-in pushed them off. Keep their centres 400 px or more from the edges.
  • A whoosh on every graphic: one sound repeated grates within 20 s; one sound per kind of graphic.
  • Textured display fonts plus outlines plus offset strokes: busy; one bold face, one flat colour, one hard offset shadow in an accent.

Worked example

A founder's webcam explainer about a product's free features, recorded as a run of retakes and cut to its best takes first. Brand kit: a heavy italic display face, an acid green with a deep blue offset shadow, a mascot with rules for how it may appear. Intensity: go wild.

PartWhat went on itNote
Openingthe first phrase stacked either side of the head, then the hero word squashed flat by both handsthe squash flattened at once while the hands rested low; it starts at the top of the push now
Middlekaraoke captions with the active word in the green, the key words as big titles either side of the head, the mascot popping from a palmtitles that wouldn't fit beside the head went above the eyes
Endthe freeze frame held 1.4 s under the last title

Every sound synthesized; nothing paid. First build about an hour, each rebuild a few minutes.

Related workflows

FAQs

Take footage someone already has (a webcam or talking-head video, a creator short, a cut of best takes) and make it more exciting in their brand: captions in a chosen style, kinetic titles, type behind the person, titles that react to their face and hands, graphics for the words, punch-ins and shakes on hits, and synthesized sound effects, at the intensity they pick from captions-only to go wild. Free and local; the first build takes about an hour. Use for 'add captions and motion graphics', 'make my video pop', 'go wild with graphics', augmenting shorts, reels and webcam videos.

Install Hypernatural Desktop, a free Mac app, and connect it to Claude Code, Codex or Claude Desktop. Then describe the video you want and your agent finds the workflow itself, or paste this page's link (https://hypernatural.ai/skill/hn/workflow-add-captions-and-motion-graphics-to-video) and it installs hn/workflow-add-captions-and-motion-graphics-to-video and follows it.

Nothing. The workflow is free and runs with tools on your own Mac, like python, ffmpeg, ffprobe, whisper-cli and hn4a-compositor.

It calls 17 smaller skills for its steps, including Cut best takes, Capture a brand and Whisper cli transcribe with word times. Each one is listed on this page, and your agent loads them as the job needs them.

Yes. Ask your agent to adjust it for your job, or to save its own version. You can publish your version under your own handle so anyone can install it.

Go make something cool.

Install the app, open your agent, describe the video. That's the whole onboarding.

Sticker HypernaturalSticker BannerSticker TVBoy