captions

Installation
SKILL.md

Captions

The user edits the video; we burn captions into their finished edit (usually Resolve exports in video-N/deliverables/raw*/). Tool: scripts/captions.py (Python 3 with Pillow, plus ffmpeg). Word times come from the transcribe skill's helper, so install it alongside. Fonts are bundled in fonts/ (TikTok Sans and Montserrat, both OFL).

Templates

The user names one ("template-3"); don't ask them to describe the style again. If they name none, ask which, showing templates/all.png. Each was locked with the user on a real Mysa ad.

# From Look Words per caption
1 video-3 #111 TikTok Sans SemiBold 54 on one merged white box with rounded corners and filleted steps; block bottom y 1480. Red #EA4040 section labels at y 245 for 3 s. 2 lines, ~36 chars (50 max), breaks at commas
2 video-6 ALL CAPS white TikTok Sans ExtraBold 68, 3 px black outline, soft shadow (blur 7, dy 4); baseline y 1420; punctuation kept. 1 line, ≤3 words, ~13 chars
3 video-10 ALL CAPS white Montserrat ExtraBold, 6 px black outline, hard 50% shadow; the word being spoken turns lime #C8FF00; centre y 1440; no punctuation. Usually with a hook title (below). 1 line, ≤3 words, ≤18 chars
4 video-7 Sentence-case white Montserrat ExtraBold 68, 3 px outline, soft shadow; baseline y 1420; punctuation kept. 1 line, ≤3 words, ~13 chars

Samples: templates/template-N.png (the red frame is the safe box). captions.py templates prints the list.

Every template keeps text inside the Meta/TikTok caption safe box, x 40–1050, y 220–1500 on 1080×1920: lines are capped at 900 px, and a single word wider than that is shrunk, never allowed past the edge.

Installs
1
First Seen
Oct 13, 2026