remotion-render

作成者: qu-skills

React/Remotionのコンポーネントコードからinference.sh経由で動画をレンダリングします。TSXコードを渡すとMP4が出力されます。useCurrentFrame、useVideoConfig、spring、interpolate、AbsoluteFill、Sequenceなど、すべてのRemotion APIに対応。解像度、FPS、長さ、コーデックを設定可能。用途:プログラムによる動画生成、アニメーショングラフィック、モーションデザイン、データ駆動型動画、Reactアニメーションの動画化。トリガー:remotion、コードから動画をレンダリング、tsxから動画へ、react動画、プログラム動画、remotionレンダリング、コードから動画へ、アニメーション...

npx skills add https://github.com/qu-skills/skills --skill remotion-render

Install the belt CLI skill: npx skills add belt-sh/cli

Remotion Render

Render videos from React/Remotion component code via inference.sh CLI.

Remotion Render

Quick Start

Requires inference.sh CLI (belt). Install instructions

belt login

# Render a simple animation
belt app run infsh/remotion-render --input '{
  "code": "import { useCurrentFrame, AbsoluteFill } from \"remotion\"; export default function Main() { const frame = useCurrentFrame(); return <AbsoluteFill style={{backgroundColor: \"#000\", display: \"flex\", justifyContent: \"center\", alignItems: \"center\"}}><h1 style={{color: \"white\", fontSize: 100, opacity: frame / 30}}>Hello World</h1></AbsoluteFill>; }",
  "duration_seconds": 3,
  "fps": 30,
  "width": 1920,
  "height": 1080
}'

Input Schema

ParameterTypeRequiredDescription
codestringYesReact component TSX code. Must export default a component.
composition_idstringNoComposition ID to render
propsobjectNoProps passed to the component
widthnumberNoVideo width in pixels
heightnumberNoVideo height in pixels
fpsnumberNoFrames per second
duration_secondsnumberNoVideo duration in seconds
codecstringNoOutput codec

Available Imports

Your TSX code can import from remotion and react:

// 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

belt 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 <AbsoluteFill style={{backgroundColor: \"#1a1a2e\", display: \"flex\", justifyContent: \"center\", alignItems: \"center\"}}><h1 style={{color: \"#eee\", fontSize: 80, opacity}}>Welcome</h1></AbsoluteFill>; }",
  "duration_seconds": 2,
  "fps": 30,
  "width": 1920,
  "height": 1080
}'

Animated Counter

belt 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 <AbsoluteFill style={{backgroundColor: \"#000\", display: \"flex\", justifyContent: \"center\", alignItems: \"center\", flexDirection: \"column\"}}><h1 style={{color: \"#fff\", fontSize: 200}}>{progress}%</h1><p style={{color: \"#666\", fontSize: 30}}>Loading...</p></AbsoluteFill>; }",
  "duration_seconds": 5,
  "fps": 60,
  "width": 1080,
  "height": 1080
}'

Spring Animation

belt 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 <AbsoluteFill style={{backgroundColor: \"#6366f1\", display: \"flex\", justifyContent: \"center\", alignItems: \"center\"}}><div style={{width: 200, height: 200, backgroundColor: \"white\", borderRadius: 20, transform: `scale(${scale})`}} /></AbsoluteFill>; }",
  "duration_seconds": 2,
  "fps": 60,
  "width": 1080,
  "height": 1080
}'

With Props

belt app run infsh/remotion-render --input '{
  "code": "import { AbsoluteFill } from \"remotion\"; export default function Main({ title, subtitle }) { return <AbsoluteFill style={{backgroundColor: \"#000\", display: \"flex\", justifyContent: \"center\", alignItems: \"center\", flexDirection: \"column\"}}><h1 style={{color: \"#fff\", fontSize: 80}}>{title}</h1><p style={{color: \"#888\", fontSize: 40}}>{subtitle}</p></AbsoluteFill>; }",
  "props": {"title": "My Video", "subtitle": "Created with Remotion"},
  "duration_seconds": 3,
  "fps": 30,
  "width": 1920,
  "height": 1080
}'

Sequence Animation

belt 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 <div style={{ opacity }}>{children}</div>; } export default function Main() { return <AbsoluteFill style={{backgroundColor: \"#000\", display: \"flex\", justifyContent: \"center\", alignItems: \"center\", flexDirection: \"column\", gap: 20}}><Sequence from={0}><FadeIn><h1 style={{color: \"#fff\", fontSize: 60}}>First</h1></FadeIn></Sequence><Sequence from={30}><FadeIn><h1 style={{color: \"#fff\", fontSize: 60}}>Second</h1></FadeIn></Sequence><Sequence from={60}><FadeIn><h1 style={{color: \"#fff\", fontSize: 60}}>Third</h1></FadeIn></Sequence></AbsoluteFill>; }",
  "duration_seconds": 4,
  "fps": 30,
  "width": 1920,
  "height": 1080
}'

Python SDK

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 (
    <AbsoluteFill style={{
      backgroundColor: "#1a1a2e",
      display: "flex",
      justifyContent: "center",
      alignItems: "center"
    }}>
      <h1 style={{ color: "#eee", fontSize: 80, opacity }}>
        Hello from Python
      </h1>
    </AbsoluteFill>
  );
}
""",
        "duration_seconds": 3,
        "fps": 30,
        "width": 1920,
        "height": 1080
    }
})

print(result["output"]["video"])

Streaming Progress

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

# 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@infsh-cli

Documentation

qu-skillsのその他のスキル

ai-video-generation
qu-skills
Google Veo、Seedance 2.0、HappyHorse、Wan、Grokなど40以上のモデルをinference.sh CLI経由でAI動画を生成。モデル:Veo 3.1、Veo 3、Seedance 2.0、HappyHorse 1.0、Wan 2.5、Grok Imagine Video、OmniHuman、Fabric、HunyuanVideo。機能:テキストから動画、画像から動画、参照から動画、動画編集、リップシンク、アバターアニメーション、動画アップスケーリング、フォーリーサウンド。用途:ソーシャルメディア動画、マーケティングコンテンツ、説明動画、製品デモ、AIアバター。トリガー:動画生成、AI動画、...
videocreativemedia
ai-image-generation
qu-skills
GPT-Image-2、FLUX、Gemini、Grok、Seedream、Reveなど50以上のモデルを使用して、inference.sh CLI経由でAI画像を生成します。モデル:GPT-Image-2、FLUX Dev LoRA、FLUX.2 Klein LoRA、Gemini 3 Pro Image、Grok Imagine、Seedream 4.5、Reve、ImagineArt。機能:テキストから画像、画像から画像、インペインティング、LoRA、画像編集、アップスケーリング、テキストレンダリング。用途:AIアート、製品モックアップ、コンセプトアート、ソーシャルメディアグラフィック、マーケティングビジュアル、イラスト。トリガー:flux、画像生成、AI画像、テキストから...
creativemediaimage
ai-avatar-video
qu-skills
inference.sh CLI経由でAIアバターとトーキングヘッド動画を作成。推奨:P-Video-Avatar(最速、最安、内蔵TTS)。他に:OmniHuman、Fabric、PixVerse。音声:Inworld TTS-2(100以上の言語、キャラクター向け感情制御)、ElevenLabs、Kokoro。機能:音声駆動アバター、テキストからアバター、リップシンク動画、トーキングヘッド生成、バーチャルプレゼンター、UGCコンテンツ。用途:AIプレゼンター、解説動画、バーチャルインフルエンサー、吹き替え、マーケティング動画、UGC広告、ゲームアバター、...
videocreativemedia
twitter-automation
qu-skills
inference.sh CLIを使用して、投稿、エンゲージメント、ユーザー管理によるTwitter/Xの自動化を行います。アプリ: x/post-tweet、x/post-create(メディア付き)、x/post-like、x/post-retweet、x/dm-send、x/user-follow。機能: ツイートの投稿、コンテンツのスケジュール、投稿へのいいね、リツイート、DMの送信、ユーザーのフォロー、プロフィールの取得。用途: ソーシャルメディア自動化、コンテンツスケジュール、エンゲージメントボット、オーディエンス拡大、X API。トリガー: twitter api、x api、tweet automation、post to twitter、twitter bot、social media automation、x...
api
agent-browser
qu-skills
inference.sh経由でAIエージェント向けのブラウザ自動化。ウェブページのナビゲーション、@e参照を使った要素操作、スクリーンショット撮影、動画録画が可能。機能:ウェブスクレイピング、フォーム入力、クリック、タイピング、ドラッグ&ドロップ、ファイルアップロード、JavaScript実行。用途:ウェブ自動化、データ抽出、テスト、エージェントブラウジング、リサーチ。トリガー:ブラウザ、ウェブ自動化、スクレイプ、ナビゲート、クリック、フォーム入力、スクリーンショット、ウェブ閲覧、playwright、ヘッドレスブラウザ、ウェブエージェント、インターネットサーフィン、動画録画
browser-automationweb-scrapingtesting
web-search
qu-skills
TavilyとExaを使用したウェブ検索とコンテンツ抽出(inference.sh CLI経由)。アプリ:Tavily Search、Tavily Extract、Exa Search、Exa Answer、Exa Extract。機能:AI駆動検索、コンテンツ抽出、直接回答、リサーチ。用途:研究、RAGパイプライン、ファクトチェック、コンテンツ集約、エージェント。トリガー:ウェブ検索、tavily、exa、search api、コンテンツ抽出、研究、インターネット検索、ai検索、検索アシスタント、ウェブスクレイピング、rag、perplexity代替
researchweb-scrapingapi
agent-tools
qu-skills
inference.sh CLI経由で250以上のAIアプリを実行 - 画像生成、動画作成、LLM、検索、3D、Twitter自動化。モデル: FLUX、Veo、Gemini、Grok、Claude、Seedance、OmniHuman、Tavily、Exa、OpenRouterなど多数。AIアプリの実行、画像/動画生成、LLM呼び出し、ウェブ検索、Twitter自動化の際に使用。トリガー: inference.sh、infsh、ai model、run ai、serverless ai、ai api、flux、veo、claude api、image generation、video generation、openrouter、tavily、exa search、twitter api、grok
developmentapicreative
python-executor
qu-skills
Execute Python code in a safe sandboxed environment via [inference.sh](https://inference.sh). Pre-installed: NumPy, Pandas, Matplotlib, requests, BeautifulSoup, Selenium, Playwright, MoviePy, Pillow, OpenCV, trimesh, and 100+ more libraries. Use for: data processing, web scraping, image manipulation, video creation, 3D model processing, PDF generation, API calls, automation scripts. Triggers: python, execute code, run script, web scraping, data analysis, image processing, video editing, 3D...
developmentdata-analysisweb-scraping