Auto-Caption Burner
Burns word-synced karaoke captions onto your video — the whole line stays on screen and each word lights up as it's spoken, the look built for muted TikTok, Reels, and Shorts feeds. Add your brand or product names and it spells them correctly every time.
Run it free in the playground, then call it from your app.
No inputs handy? Try one of these
For developers
Run it from your own stack.
This skill is an API. One call runs the whole pipeline server-side as a long-running job and returns the result — from Python, plain HTTP, or an MCP-connected coding agent.
API access — MCP · Python SDK · cURL · JSON schemas
claude mcp add --transport http puras https://mcp.puras.co/mcpOAuth on first call — no key to paste. Then ask the agent to run auto-caption from skill puras/game-ad-studio.
pip install puras
puras login # or set PURAS_API_KEY
puras run puras/game-ad-studio/auto-caption -i key=valueimport puras
client = puras.Client() # PURAS_API_KEY from env
result = client.run("puras/game-ad-studio/auto-caption", {"video":"https://uozfqcfhlhugotnevscg.supabase.co/storage/v1/object/public/puras-public-skills/chordie_source.mp4","max_line_chars":32,"caption_position":"bottom"})curl -X POST "https://api.puras.co/v1/jobs?skillpack=puras/game-ad-studio&wait=true" \
-H "Authorization: Bearer $PURAS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"skill":"auto-caption","inputs":{"video":"https://uozfqcfhlhugotnevscg.supabase.co/storage/v1/object/public/puras-public-skills/chordie_source.mp4","max_line_chars":32,"caption_position":"bottom"}}'Input schema (JSON Schema)
{
"type": "object",
"required": [
"video"
],
"properties": {
"video": {
"type": "video",
"description": "Video to caption. Clear speech, short clips (≤60s) work best."
},
"captions": {
"type": "array",
"items": {
"type": "object",
"required": [
"text"
],
"properties": {
"end": {
"type": "number",
"description": "Optional end time in seconds."
},
"text": {
"type": "text",
"description": "The caption line to show."
},
"start": {
"type": "number",
"description": "Optional start time in seconds. Omit to auto-distribute evenly across the clip."
}
}
},
"description": "Pre-written caption lines, for a video that has NO spoken audio (e.g. a visual montage carrying on-screen copy like \"Lvl 1 → Lvl 50\"). When set, transcription is skipped and these lines are burned directly with the same high-contrast renderer. Omit for spoken videos — those are transcribed automatically. Give timing per line, or omit it to auto-distribute evenly.\n"
},
"text_color": {
"type": "color",
"default": "#FFFFFF",
"description": "Color of the caption line text."
},
"brand_terms": {
"type": "array",
"items": {
"type": "string",
"maxLength": 50,
"minLength": 1
},
"maxItems": 100,
"description": "Optional brand/product/proper-noun names to keep verbatim and spell correctly. One entry per name.",
"uniqueItems": true
},
"language_code": {
"type": "string",
"maxLength": 8,
"description": "Optional language hint (e.g. \"en\", \"tr\"). Empty = auto-detect."
},
"max_line_chars": {
"type": "integer",
"default": 32,
"maximum": 60,
"minimum": 12,
"description": "Max characters per caption line. Smaller = snappier cuts."
},
"caption_position": {
"enum": [
"bottom",
"center",
"top"
],
"type": "string",
"default": "bottom",
"description": "Where the caption band sits. Bottom by default."
},
"highlight_enabled": {
"type": "boolean",
"default": true,
"description": "Light up the currently-spoken word with a colored pill (karaoke look). Turn off for a plain, static line in text_color with no per-word highlight.\n"
},
"highlight_bg_color": {
"type": "color",
"default": "#A855F7",
"description": "Background color of the pill behind the currently-spoken word."
},
"highlight_text_color": {
"type": "color",
"default": "#FFFFFF",
"description": "Text color of the currently-spoken word while it sits on the pill."
}
}
}Output schema (JSON Schema)
{
"type": "object",
"properties": {
"video_url": {
"type": "video",
"description": "Drive path to the captioned video; served to readers as a stable media URL. The playground renders it with a <video> player."
}
}
}Call Auto-Caption Burner from your app.
Run it free in the playground above, then wire it in with one call — from Python, TypeScript, or your coding agent over MCP. Every run returns an exact cost receipt.
Every run is billed to the cent — see pricing.