--- name: remotion-render description: "Render videos from React/Remotion component code via inference.sh. Pass TSX code, get MP4. Supports all Remotion APIs: useCurrentFrame, useVideoConfig, spring, interpolate, AbsoluteFill, Sequence. Configurable resolution, FPS, duration, codec. Use for: programmatic video generation, animated graphics, motion design, data-driven videos, React animations to video. Triggers: remotion, render video from code, tsx to video, react video, programmatic video, remotion render, code to video, animated video, motion graphics code, react animation video" allowed-tools: Bash(infsh *) --- # Remotion Render Render videos from React/Remotion component code via [inference.sh](https://inference.sh) CLI. ![Remotion Render](https://cloud.inference.sh/app/files/u/4mg21r6ta37mpaz6ktzwtt8krr/01kg2c0egyg243mnyth4y6g51q.jpeg) ## Quick Start > Requires inference.sh CLI (`infsh`). Get installation instructions: `npx skills add inference-sh/skills@agent-tools` ```bash infsh login # Render a simple animation infsh app run infsh/remotion-render --input '{ "code": "import { useCurrentFrame, AbsoluteFill } from \"remotion\"; export default function Main() { const frame = useCurrentFrame(); return

Hello World

; }", "duration_seconds": 3, "fps": 30, "width": 1920, "height": 1080 }' ``` ## Input Schema | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `code` | string | Yes | React component TSX code. Must export default a component. | | `composition_id` | string | No | Composition ID to render | | `props` | object | No | Props passed to the component | | `width` | number | No | Video width in pixels | | `height` | number | No | Video height in pixels | | `fps` | number | No | Frames per second | | `duration_seconds` | number | No | Video duration in seconds | | `codec` | string | No | Output codec | ## Available Imports Your TSX code can import from `remotion` and `react`: ```tsx // Remotion APIs import { useCurrentFrame, useVideoConfig, spring, interpolate, AbsoluteFill, Sequence, Audio, Video, Img } from "remotion"; // React import React, { useState, useEffect } from "react"; ``` ## Examples ### Fade-In Text ```bash infsh app run infsh/remotion-render --input '{ "code": "import { useCurrentFrame, AbsoluteFill, interpolate } from \"remotion\"; export default function Main() { const frame = useCurrentFrame(); const opacity = interpolate(frame, [0, 30], [0, 1]); return

Welcome

; }", "duration_seconds": 2, "fps": 30, "width": 1920, "height": 1080 }' ``` ### Animated Counter ```bash infsh app run infsh/remotion-render --input '{ "code": "import { useCurrentFrame, useVideoConfig, AbsoluteFill } from \"remotion\"; export default function Main() { const frame = useCurrentFrame(); const { fps, durationInFrames } = useVideoConfig(); const progress = Math.floor((frame / durationInFrames) * 100); return

{progress}%

Loading...

; }", "duration_seconds": 5, "fps": 60, "width": 1080, "height": 1080 }' ``` ### Spring Animation ```bash infsh app run infsh/remotion-render --input '{ "code": "import { useCurrentFrame, useVideoConfig, spring, AbsoluteFill } from \"remotion\"; export default function Main() { const frame = useCurrentFrame(); const { fps } = useVideoConfig(); const scale = spring({ frame, fps, config: { damping: 10, stiffness: 100 } }); return
; }", "duration_seconds": 2, "fps": 60, "width": 1080, "height": 1080 }' ``` ### With Props ```bash infsh app run infsh/remotion-render --input '{ "code": "import { AbsoluteFill } from \"remotion\"; export default function Main({ title, subtitle }) { return

{title}

{subtitle}

; }", "props": {"title": "My Video", "subtitle": "Created with Remotion"}, "duration_seconds": 3, "fps": 30, "width": 1920, "height": 1080 }' ``` ### Sequence Animation ```bash infsh app run infsh/remotion-render --input '{ "code": "import { useCurrentFrame, AbsoluteFill, Sequence, interpolate } from \"remotion\"; function FadeIn({ children }) { const frame = useCurrentFrame(); const opacity = interpolate(frame, [0, 20], [0, 1]); return
{children}
; } export default function Main() { return

First

Second

Third

; }", "duration_seconds": 4, "fps": 30, "width": 1920, "height": 1080 }' ``` ## Python SDK ```python from inferencesh import inference client = inference() result = client.run({ "app": "infsh/remotion-render", "input": { "code": """ import { useCurrentFrame, AbsoluteFill, interpolate } from "remotion"; export default function Main() { const frame = useCurrentFrame(); const opacity = interpolate(frame, [0, 30], [0, 1]); return (

Hello from Python

); } """, "duration_seconds": 3, "fps": 30, "width": 1920, "height": 1080 } }) print(result["output"]["video"]) ``` ### Streaming Progress ```python for update in client.run({ "app": "infsh/remotion-render", "input": { "code": "...", "duration_seconds": 10 } }, stream=True): if update.get("progress"): print(f"Rendering: {update['progress']}%") if update.get("output"): print(f"Video: {update['output']['video']}") ``` ## Related Skills ```bash # Remotion best practices (component patterns) npx skills add remotion-dev/skills@remotion-best-practices # AI video generation (for AI-generated clips) npx skills add inference-sh/skills@ai-video-generation # Image generation (for video assets) npx skills add inference-sh/skills@ai-image-generation # Python SDK reference npx skills add inference-sh/skills@python-sdk # Full platform skill npx skills add inference-sh/skills@agent-tools ``` ## Documentation - [Remotion Documentation](https://www.remotion.dev/docs) - Official Remotion docs - [Running Apps](https://inference.sh/docs/apps/running) - How to run apps via CLI - [Streaming Results](https://inference.sh/docs/api/sdk/streaming) - Real-time progress updates