add-captions
Add TikTok-style, karaoke, YouTube or minimal captions to your Remotion video. Gets word-level captions through the official…
Review a Remotion video with AI vision. Starts with a cheap local check of rendered still frames, then has TwelveLabs watch the full render and score it against a JSON rubric (pacing, composition, text legibility, audio sync and more) with timestamped fixes, applies the fixes
$ npx -y skills add DojoCodingLabs/remotion-superpowers --skill review-video --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/review-videoContext preview
The summary Claude sees to decide when to auto-load this skill.
Review a Remotion video with AI vision. Starts with a cheap local check of rendered still frames, then has TwelveLabs watch the full render and score it against a JSON rubric (pacing, composition, text legibility, audio sync and more) with timestamped fixes, applies the fixes
name: review-video description: Review a Remotion video with AI vision. Starts with a cheap local check of rendered still frames, then has TwelveLabs watch the full render and score it against a JSON rubric (pacing, composition, text legibility, audio sync and more) with timestamped fixes, applies the fixes and re-reviews. The feedback loop that closes the production circle.
You are reviewing a Remotion video and providing professional feedback: first from a few rendered frames, then by having TwelveLabs "watch" the full render. This closes the production loop — preview, review, improve, repeat.
**Load the `remotion-production` skill** for the `video-analysis` rule. Rendering follows the official `remotion-render` skill.
**Rendering is allowed here.** Invoking `/review-video` is an explicit request to render for review, so you don't need to ask again.
Before uploading anything, render a handful of still frames and look at them yourself, as official `remotion-render` shows:
npx remotion render [CompositionId] out/review-frames --frames=0,45,90,150,240 --image-format=png
Pick frames that cover the hook, each scene's midpoint, the busiest moments (captions, overlays) and the last frame. Read the PNGs and check:
If these frames show obvious bugs, fix them first (see step 6) and repeat this step. That's much cheaper than a full render plus a TwelveLabs upload.
Look for an existing render:
ls -t out/ 2>/dev/null | grep -E '\.(mp4|webm|mov)$'
If there's none, or the code changed since it was made, render it now:
npx remotion render [CompositionId] out/video.mp4
create-asset: file: [absolute path to the render, e.g. /path/to/project/out/video.mp4]
Keep the returned asset ID. No index is needed. If the analyse call says the asset isn't ready, wait a few seconds and retry.
Run **one** `sync-analyse-video` call that returns the whole review as JSON (renders over 1 hour: `async-analyse-video` with the same `prompt` and `jsonSchema`, then poll `get-analyse-task`):
sync-analyse-video: assetId: [asset ID] modelName: "pegasus1.5" temperature: 0.2 prompt: "You are a video director reviewing a [duration]s [platform] video at [WxH]. Intent: [one-line brief]. Script: [narration, per scene]. Score each dimension 1-10 and list concrete fixes with timestamps in seconds. Check: framing and composition; whether on-screen text is readable and on screen long enough; transitions; blank, frozen or glitchy frames; pacing (scenes too long or too short); whether the voiceover matches what's on screen; SFX timing; music mood and level under the voice; whether the first 3 seconds hook; whether the CTA is clear." jsonSchema: [the rubric below]
Always pass `modelName: "pegasus1.5"`: the server's default model has been removed from the API.
**Rubric (`jsonSchema`):**
{
"type": "object",
"properties": {
"overall_score": { "type": "integer", "description": "1-10" },
"scores": {
"type": "object",
"properties": {
"hook": { "type": "integer", "description": "1-10, first 3 seconds" },
"pacing": { "type": "integer", "description": "1-10" },
"composition": { "type": "integer", "description": "1-10, framing and layout" },
"text_legibility": { "type": "integer", "description": "1-10, size, contrast, time on screen" },
"transitions": { "type": "integer", "description": "1-10" },
"audio_sync": { "type": "integer", "description": "1-10, voiceover and SFX against visuals" },
"audio_mix": { "type": "integer", "description": "1-10, voice clarity, music level" },
"cta": { "type": "integer", "description": "1-10, clarity of the ending" }
},
"required": ["hook", "pacing", "composition", "text_legibility", "transitions", "audio_sync", "audio_mix", "cta"]
},
"working": { "type": "array", "items": { "type": "string" } },
"fixes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"start": { "type": "number", "description": "seconds" },
"end": { "type": "number", "description": "seconds" },
"dimension": { "type": "string", "enum": ["hook", "pacing", "composition", "text_legibility", "transitions", "audio_sync", "audio_mix", "cta", "glitch"] },
"severity": { "type": "string", "enum": ["critical", "major", "minor"] },
"issue": { "type": "string" },
"fix": { "type": "string" }
},
"required": ["start", "end", "dimension", "severity", "issue", "fix"]
}
},
"priority_fix": { "type": "string" }
},
"required": ["overall_score", "scores", "working", "fixes", "priority_fix"]
}Save the JSON (e.g. `out/review-1.json`) so the next pass can be compared with this one, then clean up:
delete-asset: assetId: [asset ID]
Every review uploads a new asset, and assets count against the account's storage.
To look closer at one stretch (say a fix at 12-18 s), run `sync-analyse-video` again with `startTime`/`endTime` around it (the window must be at least 4 s) before deleting the asset.
Format the JSON as a professional director's review. Convert each fix's timestamps to frames (`Math.round(seconds * fps)`) and name the scene it falls in, so the fix points at code:
🎬 Video Review: [filename] Duration: [X]s | Resolution: [WxH] 📊 Overall Score: [overall_score]/10 Hook [x] · Pacing [x] · Composition [x] · Text [x] · Tr
🎬 Full video production studio for Remotion — for Claude Code, Codex, Gemini CLI & any Agent Skills agent. AI voiceovers, music, stock footage, image/video generation, TikTok captions, transitions & AI review loop. 15 skills, 5 MCP servers. Free & open source by Dojo Coding.
Add TikTok-style, karaoke, YouTube or minimal captions to your Remotion video. Gets word-level captions through the official…
Generate background music and add it to your Remotion project. Describe the mood/genre you want, and this will generate a…
Add professional scene transitions to your Remotion video. Choose from fade, slide, wipe, flip, clock-wipe and light-leak…
Generate a voiceover narration and add it to your Remotion project. Provide a script or describe what the narration should say,…
Analyze existing video files with TwelveLabs AI. Get a timestamped scene map of your footage, ask questions about it, find…
Create a short-form vertical video (TikTok, Instagram Reels, YouTube Shorts). Optimized 9:16 pipeline with a live Studio preview,…