remotion · vercel-labs — Claude Code skill: video from JSON
A skill that turns JSON timeline specs into ready-made video compositions via Remotion. Use it when you need to generate videos programmatically or assemble video clip catalogs from data.
npx skills add vercel-labs/json-render --skill remotion -a claude-codeWhat remotion does
remotion is an integration for @json-render/remotion that lets code build videos straight from JSON specifications. Instead of writing Remotion components by hand, you describe video structure in JSON—clips, tracks, effects, transitions—and the skill renders it into a video composition.
It comes with standard components: TitleCard for titles, TypingText for animated text, ImageSlide, SplitScreen, QuoteCard, StatCard, and overlays (TextOverlay, LowerThird). Need custom ones? Define them with Zod schema and pass to Renderer. Timeline spec describes composition (resolution, fps, duration), tracks, clips with props, and audio.
Requires Node.js and @json-render/remotion package. Works in Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, and OpenCode.
What it helps with
- Generate videos from JSON specs without manual Remotion code
- Build video clip catalogs with consistent style and animation
- Embed video rendering into AI workflows for content creation
- Use pre-built video components instead of writing from scratch
- Control video composition through data rather than code
Example prompts for the agent
- Create a video from JSON spec with TitleCard and TypingText clips using this template.
- Add a custom MyGradientBg component to the remotion catalog and pass it to Renderer.
- Generate a JSON timeline for a 30-second 1920x1080 video with three image slides.
How to install remotion
1Skills CLI (Vercel)
npx skills add vercel-labs/json-render --skill remotion -a claude-code2Manually: put the files in place
~/.claude/skills/remotion/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/remotion/
1Skills CLI (Vercel)
npx skills add vercel-labs/json-render --skill remotion -a codex2Manually: put the files in place
.agents/skills/remotion/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add vercel-labs/json-render --skill remotion -a cursor2Manually: put the files in place
.cursor/skills/remotion/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install vercel-labs/json-render remotion2Manually: put the files in place
.github/skills/remotion/SKILL.md1Skills CLI (Vercel)
npx skills add vercel-labs/json-render --skill remotion -a gemini-cli2Platform CLI
gemini skills install https://github.com/vercel-labs/json-render --path skills/remotionManually: put the files in place
.devin/skills/remotion/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add vercel-labs/json-render --skill remotion -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set20
The whole set →Other versions of remotion
Similar
Questions about remotion
How do I install remotion skill in Claude Code?
Run npx skills add vercel-labs/json-render --skill remotion -a claude-code, then check the config at ~/.claude/skills/remotion/SKILL.md.
What does the remotion skill include?
A Renderer to convert JSON timeline specs into Remotion compositions, standard components (TitleCard, TypingText, ImageSlide, QuoteCard and more), hooks for transitions and effects, and a timeline schema for describing video structure.
How do I add a custom component to remotion?
Define it with Zod schema (props, type, defaultDuration, description), add it to the components array in defineCatalog, then pass it to Renderer's inputProps along with its React implementation.
Source text
SKILL.md · Apache-2.0
---
name: remotion
description: Remotion renderer for json-render that turns JSON timeline specs into videos. Use when working with @json-render/remotion, building video compositions from JSON, creating video catalogs, or rendering AI-generated video timelines.
---
# @json-render/remotion
Remotion renderer that converts JSON timeline specs into video compositions.
## Quick Start
```typescript
import { Player } from "@remotion/player";
import { Renderer, type TimelineSpec } from "@json-render/remotion";
function VideoPlayer({ spec }: { spec: TimelineSpec }) {
return (
<Player
component={Renderer}
inputProps={{ spec }}
durationInFrames={spec.composition.durationInFrames}
fps={spec.composition.fps}
compositionWidth={spec.composition.width}
compositionHeight={spec.composition.height}
controls
/>
);
}
```
## Using Standard Components
```typescript
import { defineCatalog } from "@json-render/core";
import {
schema,
standardComponentDefinitions,
standardTransitionDefinitions,
standardEffectDefinitions,
} from "@json-render/remotion";
export const videoCatalog = defineCatalog(schema, {
components: standardComponentDefinitions,
transitions: standardTransitionDefinitions,
effects: standardEffectDefinitions,
});
```
## Adding Custom Components
```typescript
import { z } from "zod";
const catalog = defineCatalog(schema, {
components: {
...standardComponentDefinitions,
MyCustomClip: {
props: z.object({ text: z.string() }),
type: "scene",
defaultDuration: 90,
description: "My custom video clip",
},
},
});
// Pass custom component to Renderer
<Player
component={Renderer}
inputProps={{
spec,
components: { MyCustomClip: MyCustomComponent },
}}
/>
```
## Timeline Spec Structure
```json
{
"composition": { "id": "video", "fps": 30, "width": 1920, "height": 1080, "durationInFrames": 300 },
"tracks": [{ "id": "main", "name": "Main", "type": "video", "enabled": true }],
"clips": [
{ "id": "clip-1", "trackId": "main", "component": "TitleCard", "props": { "title": "Hello" }, "from": 0, "durationInFrames": 90 }
],
"audio": { "tracks": [] }
}
```
## Standard Components
| Component | Type | Description |
|-----------|------|-------------|
| `TitleCard` | scene | Full-screen title with subtitle |
| `TypingText` | scene | Terminal-style typing animation |
| `ImageSlide` | image | Full-screen image display |
| `SplitScreen` | scene | Two-panel comparison |
| `QuoteCard` | scene | Quote with attribution |
| `StatCard` | scene | Animated statistic display |
| `TextOverlay` | overlay | Text overlay |
| `LowerThird` | overlay | Name/title overlay |
## Key Exports
| Export | Purpose |
|--------|---------|
| `Renderer` | Render spec to Remotion composition |
| `schema` | Timeline schema |
| `standardComponents` | Pre-built component registry |
| `standardComponentDefinitions` | Catalog definitions |
| `useTransition` | Transition animation hook |
| `ClipWrapper` | Wrap clips with transitions |
© vercel-labs · Apache-2.0 · vercel-labs/json-render