Burn word-by-word on-screen captions onto the video at $ARGUMENTS using Submagic.
Scope
- This skill ONLY burns visual captions onto the video via Submagic.
- It does NOT generate social media post copy (YouTube Shorts / TikTok / Reels / LinkedIn).
- It does NOT replace
/transcribe- Whisper stays the source for raw transcripts.
How it works
Uses Submagic's direct upload endpoint POST /v1/projects/upload with multipart/form-data. The mp4 is streamed straight to Submagic, so there is no Google Drive dependency, no virus-scan redirect problem on large files, and the requested userThemeId is preserved reliably (the older Drive-URL path sometimes got themes silently swapped under concurrent jobs).
Instructions
Verify the file exists and is an mp4.
Run the script:
python3 ~/.claude/skills/submagic/submagic_caption.py "$ARGUMENTS"The script will:
- Upload the mp4 directly to Submagic (multipart)
- Poll
GET /v1/projects/{id}every 15s untilcompletedorfailed - Warn if Submagic silently swapped the requested theme (happens if the theme UUID was very recently edited in the dashboard - propagation delay)
- Download the captioned mp4 to
~/content/submagic/<original-name> - captioned-<short-project-id>.mp4
If the script fails, check
~/.claude/.envfor:SUBMAGIC_API_KEYSUBMAGIC_THEME_ID(the custom theme UUID - grab it from the Submagic dashboard if changing)
Report the output path to the user. Do NOT generate platform captions unless asked.
Finding a theme UUID
Submagic's public API has no "list my custom themes" endpoint. To switch themes:
- Log into https://app.submagic.co
- Open DevTools (Cmd+Opt+I) -> Network tab
- Navigate to the themes page
- Find the XHR that returns a JSON array of themes - each has an
idfield - Copy the
idof the theme you want and paste it intoSUBMAGIC_THEME_IDin~/.claude/.env
Preset templates (Beast, Hormozi 1-5, Doug, etc.) are available via a separate templateName field if ever needed - not wired into the script today.