← ClaudeAtlas

caption-videolisted

Burn timed, styled captions into a finished video on the local machine, without re-rendering the source. This is the manual fallback to the API's captioning endpoint, POST /v1/captions, which stays the default path: come here when the style the user wants is outside the API's presets, when the wording has to be hand-corrected before it is burned into the pixels, or when the source was rendered with audio disabled and the API refuses it. Transcribes the audio with Whisper, groups words into reading phrases, renders the captions in a real browser via HyperFrames, and composites them over the source with ffmpeg using a real alpha channel. Use when the user has an MP4 with speech and asks to add captions, subtitles, burned-in text, TikTok-style captions or word-by-word text to it, and the API path has been ruled out. Runs out of band, so it costs no credits and works on any video file whoever generated it. Not for generating video (use the video skills) and not for a separate .srt/.vtt sidecar file.
novoads/claude-code-ads · ★ 9 · AI & Automation · score 72
Install: claude install-skill novoads/claude-code-ads
# Caption a finished video Takes a finished MP4 with speech and returns the same video with timed captions burned in. Nothing is regenerated: the source pixels and the source audio pass through untouched, and the captions are composited on top. **This skill makes no API calls.** It is ffmpeg + Whisper + HyperFrames on a local file, so it costs no credits and needs no API key. ## Check the API path first `POST /v1/captions` is the default, and it is one call against a finished asset with a set of preset styles and no local toolchain at all. Read the `novoads-api` skill's SKILL.md (*Burned-in captions*) for the call, and [prompting/guide.md](prompting/guide.md) here for the full side by side. **Offer both paths rather than picking silently**, because the API costs credits and this skill costs a first-time setup. > **REST key required. A Novoads MCP connector is not a substitute.** If > `NOVOADS_API_KEY` is missing or still the placeholder, stop before any > generation work and tell the user: "Before continuing, create an API key at > <https://novoads.ai/dashboard/settings?tab=api> and paste it into `.env`." > That holds even when `mcp__novoads__*` tools are connected and authenticated in > the session. Never call `mcp__novoads__*` tools from this repo's workflows: they > are a different surface with different behavior, including the units they quote > costs in. Repo installs verify with `./scripts/check-novoads-env.sh`; a solo > install checks `NOVOADS_API_KEY` in the envi