json-render-remotion▌
vercel-labs/json-render · updated Apr 8, 2026
Remotion renderer that converts JSON timeline specs into video compositions.
@json-render/remotion
Remotion renderer that converts JSON timeline specs into video compositions.
Quick Start
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
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
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
{
"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 |
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.6★★★★★31 reviews- ★★★★★Ganesh Mohane· Dec 24, 2024
We added json-render-remotion from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Ren Singh· Dec 16, 2024
json-render-remotion has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Anika Reddy· Dec 8, 2024
Useful defaults in json-render-remotion — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Valentina Kim· Dec 4, 2024
json-render-remotion fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Valentina Li· Nov 27, 2024
We added json-render-remotion from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Sakshi Patil· Nov 15, 2024
Useful defaults in json-render-remotion — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Yash Thakker· Nov 7, 2024
json-render-remotion fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Dhruvi Jain· Oct 26, 2024
json-render-remotion has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Ren Khan· Oct 26, 2024
Solid pick for teams standardizing on skills: json-render-remotion is focused, and the summary matches what you get after install.
- ★★★★★Lucas Iyer· Oct 18, 2024
json-render-remotion reduced setup friction for our internal harness; good balance of opinion and flexibility.
showing 1-10 of 31