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.

Input
Output
Caption a UGC hook

Run it free in the playground, then call it from your app.

Video to caption. Clear speech, short clips (≤60s) work best.

Loading…

No inputs handy? Try one of these

Output appears here — run the skill, or pick an example to see a real input/output pair.

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
MCP· recommended for coding agents
claude mcp add --transport http puras https://mcp.puras.co/mcp

OAuth on first call — no key to paste. Then ask the agent to run auto-caption from skill puras/game-ad-studio.

CLI
pip install puras puras login # or set PURAS_API_KEY puras run puras/game-ad-studio/auto-caption -i key=value
Python SDK
import 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"})
HTTP API· wait=true blocks until the job finishes
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."
    }
  }
}
SpecDocs

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.