remotion-render

โดย qu-skills

เรนเดอร์วิดีโอจากโค้ดคอมโพเนนต์ React/Remotion ผ่าน inference.sh ส่งโค้ด TSX รับไฟล์ MP4 รองรับ Remotion API ทั้งหมด: useCurrentFrame, useVideoConfig, spring, interpolate, AbsoluteFill, Sequence ปรับแต่งความละเอียด FPS ระยะเวลา และโค้ดแยกได้ ใช้สำหรับ: การสร้างวิดีโอแบบโปรแกรม, กราฟิกแอนิเมชัน, การออกแบบโมชัน, วิดีโอที่ขับเคลื่อนด้วยข้อมูล, การแปลง React แอนิเมชันเป็นวิดีโอ ทริกเกอร์: remotion, เรนเดอร์วิดีโอจากโค้ด, tsx เป็นวิดีโอ, react video, programmatic video, remotion render, code to video, animated...

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

Skills เพิ่มเติมจาก qu-skills

ai-video-generation
qu-skills
สร้างวิดีโอ AI ด้วย Google Veo, Seedance 2.0, HappyHorse, Wan, Grok และโมเดลอีกกว่า 40 รุ่นผ่าน CLI ของ inference.sh โมเดล: Veo 3.1, Veo 3, Seedance 2.0, HappyHorse 1.0, Wan 2.5, Grok Imagine Video, OmniHuman, Fabric, HunyuanVideo ความสามารถ: ข้อความเป็นวิดีโอ, รูปภาพเป็นวิดีโอ, อ้างอิงเป็นวิดีโอ, ตัดต่อวิดีโอ, ลิปซิงค์, แอนิเมชันอวาตาร์, ปรับขนาดวิดีโอ, เสียงประกอบ ใช้สำหรับ: วิดีโอโซเชียลมีเดีย, เนื้อหาการตลาด, วิดีโออธิบาย, การสาธิตผลิตภัณฑ์, อวาตาร์ AI ทริกเกอร์: การสร้างวิดีโอ, วิดี
videocreativemedia
ai-image-generation
qu-skills
สร้างภาพ AI ด้วย GPT-Image-2, FLUX, Gemini, Grok, Seedream, Reve และโมเดลอีก 50+ รุ่นผ่าน CLI inference.sh โมเดล: GPT-Image-2, FLUX Dev LoRA, FLUX.2 Klein LoRA, Gemini 3 Pro Image, Grok Imagine, Seedream 4.5, Reve, ImagineArt ความสามารถ: ข้อความเป็นภาพ, ภาพเป็นภาพ, การเติมแต่งภาพ, LoRA, การแก้ไขภาพ, การเพิ่มความละเอียด, การเรนเดอร์ข้อความ ใช้สำหรับ: ศิลปะ AI, ภาพจำลองผลิตภัณฑ์, คอนเซปต์อาร์ต, กราฟิกโซเชียลมีเดีย, ภาพการตลาด, ภาพประกอบ ทริกเกอร์: flux, image generation, ai image, text to...
creativemediaimage
ai-avatar-video
qu-skills
สร้างวิดีโอ AI avatar และ talking head ผ่าน CLI ของ inference.sh แนะนำ: P-Video-Avatar (เร็วที่สุด ถูกที่สุด มี TTS ในตัว) นอกจากนี้: OmniHuman, Fabric, PixVerse เสียง: Inworld TTS-2 (100+ ภาษา ปรับอารมณ์ตัวละครได้), ElevenLabs, Kokoro ความสามารถ: avatar ที่ขับเคลื่อนด้วยเสียง, ข้อความเป็น avatar, วิดีโอ lipsync, การสร้าง talking head, ผู้บรรยายเสมือน, เนื้อหา UGC ใช้สำหรับ: ผู้บรรยาย AI, วิดีโออธิบาย, อินฟลูเอนเซอร์เสมือน, การพากย์, วิดีโอการตลาด, โฆษณา UGC, avatar ในเกม,...
videocreativemedia
twitter-automation
qu-skills
ทำให้ Twitter/X เป็นอัตโนมัติด้วยการโพสต์ การมีส่วนร่วม และการจัดการผู้ใช้ผ่าน CLI inference.sh แอป: 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
การทำงานอัตโนมัติของเบราว์เซอร์สำหรับเอเจนต์ AI ผ่าน inference.sh นำทางหน้าเว็บ โต้ตอบกับองค์ประกอบโดยใช้ @e refs จับภาพหน้าจอ บันทึกวิดีโอ ความสามารถ: การขูดข้อมูลเว็บ การกรอกฟอร์ม การคลิก การพิมพ์ การลากและวาง การอัปโหลดไฟล์ การเรียกใช้ JavaScript ใช้สำหรับ: ระบบอัตโนมัติทางเว็บ การดึงข้อมูล การทดสอบ การเรียกดูของเอเจนต์ การวิจัย ทริกเกอร์: เบราว์เซอร์, ระบบอัตโนมัติทางเว็บ, ขูดข้อมูล, นำทาง, คลิก, กรอกฟอร์ม, จับภาพหน้าจอ, เรียกดูเว็บ, playwright, เบราว์เซอร์ไร้หัว, เว็บเอเจนต์, ท่องอินเทอร์เน็ต, บันทึกวิดีโอ
browser-automationweb-scrapingtesting
web-search
qu-skills
การค้นหาเว็บและดึงเนื้อหาด้วย Tavily และ Exa ผ่าน CLI ของ inference.sh แอปพลิเคชัน: 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
เรียกใช้แอป AI 250+ รายการผ่าน CLI inference.sh - สร้างภาพ, สร้างวิดีโอ, 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
We need to translate the given text from English to Thai. The text describes a skill called "python-executor" but the instruction says not to include the name unless it appears in the source text. The name does appear in the source? Actually the source text starts with "Execute Python code..." and does not mention "python-executor" explicitly. The instruction says "Do not include the name unless it appears in the source text." The name is given in the context but not in the <text> block. So we should not add it. We need to preserve product names, protocol names, URLs, numbers, technical terms. So "Python", "NumPy", "Pandas", "Matplotlib", "requests", "BeautifulSoup", "Selenium", "Playwright", "MoviePy", "Pillow", "OpenCV", "trimesh", "inference.sh", "PDF" etc. should remain as is or transliterated? Usually technical terms like library names are kept in English. URLs are kept. Numbers like "100+" are kept. The text
developmentdata-analysisweb-scraping