Community코딩 & 개발github.com

Remotion 렌더

렌더-반복 루프를 구동합니다: 컴포지션을 MP4로 변환하고, 자연어 피드백을 받아 최소한의 수정을 가한 후 다시 렌더링합니다.

Remotion 렌더란 무엇인가요?

이 스킬은 Remotion 기반 동영상 프로젝트의 렌더링 및 반복 개선 워크플로우를 자동화합니다. 사용자는 컴포지션 ID와 진입점 파일을 입력하고, 원하는 해상도, 화면 비율, 코덱, 투명도 여부 등을 설정할 수 있습니다. 또한, 스튜디오 미리보기를 통해 자연어 피드백을 주면, 에이전트가 피드백을 분석하여 최소한의 코드 수정(예: 값, 색상, 타이밍 변경)만 수행하고 재렌더링합니다. 배치 변형을 위해 JSON 기반 프롭(prop) 세트를 지원하며, 로컬 병목 시 AWS Lambda를 통한 분산 렌더링도 가능합니다. 일반적인 실패 원인(프레임 수 불일치, asset 경로 오류, 폰트 깜빡임)에 대한 문제 해결 가이드도 포함되어 있어 생산성을 크게 향상시킵니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add SkillMedev/skills

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Remotion 렌더은(는) 무엇을 하나요?

렌더-반복 루프를 구동합니다: 컴포지션을 MP4로 변환하고, 자연어 피드백을 받아 최소한의 수정을 가한 후 다시 렌더링합니다. 비용이 많이 드는 실패 패턴은 반대 루프, 즉 사소한 복사본 수정을 위해 전체 장면 파일을 다시 작성하거나 모든 확인에 대해 전체 품질로 재렌더링하는 것입니다. 이는 승인된 작업과 Remotion을 유용하게 만드는 반복 속도를 모두 파괴합니다.

운영 절차

1단계: 입력 수집

  • 컴포지션 ID (src/Root.tsx의 <Composition>에 있는 id, 파일명이 아님) 및 진입점 (registerRoot를 호출하는 파일, 일반적으로 src/index.ts).
  • 대상: 플랫폼/화면 비율 (가로 16:9, 세로 9:16, 정사각형), 해상도 (1080p 기본값, 4K는 요청 시), 투명도 필요 여부.
  • 머신 코어 수 (동시성용) 및 단일 렌더, 반복 세션, 배치 여부.

2단계: 기본 렌더

npx remotion render src/index.ts <CompositionId> out/video.mp4

기본 출력은 컴포지션의 자체 너비/높이/fps를 사용하는 H.264 MP4입니다. Remotion은 필요 시 out/ 디렉토리를 생성합니다.

3단계: 해상도, fps, 코덱 사전 설정

해상도와 fps는 <Composition> (width/height/fps)에 있습니다. 소스에서 변경하세요. 플래그는 확장 및 컨테이너에만 사용하십시오:

# 1080p 가로 - 컴포지션이 1920x1080@30으로 작성됨
npx remotion render src/index.ts ProductDemo out/1080p.mp4

# 4K - 레이아웃을 건드리지 않고 1080p 캔버스를 업스케일
npx remotion render src/index.ts ProductDemo out/4k.mp4 --scale=2

# 9:16 세로 - 1080x1920으로 작성된 컴포지션 렌더
npx remotion render src/index.ts ProductDemoVertical out/vertical.mp4

코덱 규칙:

  • 소셜/웹 전송은 H.264 MP4 (기본값)를 사용합니다. 최고의 호환성.
  • 투명도: --codec=vp8 또는 vp9 (WebM), 또는 알파 채널이 있는 --codec=prores (편집 파이프라인용). H.264는 알파를 지원할 수 없습니다.
  • 진정한 60fps는 프레임 수가 일치하도록 조정된 fps={60}을 컴포지션에 설정해야 합니다. 플래그만으로 fps를 변경하면 프레임 단위로 시간이 지정된 모든 애니메이션이 동기화 해제됩니다.

4단계: 동시성 조정

렌더링은 CPU 바운드입니다 (각 프레임은 헤드리스 Chromium 스크린샷). 기본값은 대략 코어 수의 절반이며, 명시적 조정이 가장 쉬운 로컬 속도 향상 방법입니다:

npx remotion render src/index.ts ProductDemo out/video.mp4 --concurrency=8

물리적 코어 수에서 시작하십시오 (--concurrency=50%는 백분율을 허용합니다). 머신이 스와핑하거나 열 스로틀링을 시작하면 줄이십시오. 적정 지점을 넘으면 Chromium 탭이 많을수록 속도가 느려지고 빨라지지 않습니다.

5단계: 반복적 개선 루프 실행

스튜디오를 열어 두십시오 (npx remotion studio, http://localhost:3000). 사용자가 즉시 미리보기를 볼 수 있도록 하고, 최종 승인을 위해 전체 렌더를 예약하십시오.

  1. 사용자가 스튜디오에서 미리보기를 보고 평어로 피드백을 제공합니다.
  2. 이를 정밀한 수정으로 변환합니다 - 관련 값만 변경:
    • "너무 빠르다" → interpolate 입력 범위를 넓히거나 스프링 damping을 높입니다.
    • "로고가 더 돋보여야 한다" → 스프링 damping을 낮추거나 오버슈트를 추가합니다.
    • "CTA 문구를 변경" → prop / defaultProps를 수정하고, 다른 것은 건드리지 않습니다.
    • "다른 강조 색상" → colors 객체에서 16진수 하나를 변경합니다.
    • "마지막 피쳐를 더 오래 유지" → 해당 <Sequence>의 durationInFrames를 늘리고 컴포지션의 전체 durationInFrames를 다시 계산합니다.
  3. 재렌더링하거나, 시각적 확인을 위해 스튜디오 핫 리로드를 사용합니다.

정밀 수정 vs 재작성: 변경 사항이 값, prop, 색상, 또는 한 장면의 타이밍일 경우 제자리에서 수정하고, 장면 구조가 변경될 때만 재작성합니다 (장면 추가/제거/재정렬 - 구조적 작성은 remotion-compose로 라우팅). 기본값은 정밀 수정입니다: 이미 승인된 모든 것을 보존합니다.

6단계: 배치 변형

컴포지션은 데이터 기반이므로 N개의 변형 = JSON 파일의 N개의 prop 세트:

[
  { "out": "out/acme.mp4",   "props": { "logoText": "Acme",   "colors": { "accent": "#6C5CE7" }, "cta": "Try Acme" } },
  { "out": "out/globex.mp4", "props": { "logoText": "Globex", "colors": { "accent": "#00B894" }, "cta": "Try Globex" } }
]

--props는 인라인 JSON 또는 파일 경로를 허용합니다. 두세 개 이상의 변형이 있는 경우 JSON을 읽고 항목별로 셸 명령을 실행하는 작은 Node 스크립트를 작성하거나, @remotion/renderer의 renderMedia()를 사용하여 타입이 지정된 루프를 만드십시오. 로컬라이즈 또는 A/B 복사 및 색상은 전적으로 JSON을 편집하여 수행합니다.

7단계: 로컬이 병목일 때 Lambda 사용

단일 렌더가 로컬에서 몇 분이 걸리거나 배치가 큰 경우에 Lambda를 사용하십시오. 서버리스 워커에 프레임을 분산시킵니다. 그 외의 경우 로컬이 더 간단하고 무료입니다.

npx remotion lambda functions deploy            # AWS 계정/리전당 한 번
npx remotion lambda sites create src/index.ts --site-name=product-demo
npx remotion lambda render product-demo ProductDemo --props='{"logoText":"Acme"}'

Remotion의 Lambda 설정에 따라 AWS 자격 증명과 IAM 권한이 필요합니다.

8단계: 세 가지 일반적인 실패 문제 해결

  1. 프레임 수 불일치 - 애니메이션이 조기에 끝나거나 클립에 불필요한 꼬리가 있음. 원인: <Sequence> 기간이 변경되었지만 컴포지션 전체 기간은 변경되지 않음. 해결책: 전체 기간을 시퀀스 합계와 같게 만듭니다. 타이밍 편집 후마다 다시 계산하십시오. 이것은 가장 흔한 렌더링 문제입니다.
  2. staticFile() 참조 누락 - 렌더링 실패 또는 asset이 비어 있음. 원인: 경로로 가져오거나 public/ 외부에 있는 asset. 해결책: public/assets/에 넣고 staticFile("assets/<name>")으로 참조합니다.
  3. 폰트 깜빡임/대체 - 텍스트가 잘못된 글꼴로 렌더링되거나 밀림. 원인: @remotion/google-fonts loadFont()가 누락되었거나 너무 늦게 호출됨. 해결책: 모듈 최상위 레벨에서 loadFont()를 호출하고 반환된 fontFamily를 적용합니다. 그러면 렌더가 폰트를 기다립니다.

결과물

요청된 사전 설정에 따라 out/에 렌더링된 파일, 그리고 반복 세션의 경우 조정 가능한 차원 (속도, 문구, 색상, 타이밍)을 명명하고 피드백 시 재렌더링하는 루프 제안이 포함됩니다. 배치의 경우 변형 JSON 및 변형별 출력물.

다음을 하지 마십시오

  • 값 수준의 변경을 위해 장면 파일을 재작성하지 마십시오. 정밀 수정은 승인된 작업을 보존합니다.
  • 플래그만으로 fps를 변경하지 마십시오. 컴포지션에서 설정하고 프레임 수를 다시 조정하십시오.
  • 시퀀스 기간을 변경한 후 컴포지션의 전체 durationInFrames를 다시 계산하지 마십시오.
  • 매 반복마다 전체 렌더를 하지 마십시오. 스튜디오 핫 리로드가 미리보기 루프입니다. 최종 승인 시 렌더하십시오.
  • 스와핑 또는 스로틀링 중인 머신에서 물리적 코어 수 이상으로 동시성을 밀지 마십시오.
  • 로컬 렌더가 몇 초 안에 끝날 때 Lambda를 사용하지 마십시오. 이는 AWS 설정과 비용만 추가합니다.
  • 여기서 새 장면을 작성하거나 컴포지션을 재구성하지 마십시오. 이는 remotion-compose의 작업입니다.

품질 기준

  • 출력이 요청된 해상도/화면 비율/fps로 재생되며, 불필요한 꼬리나 조기 종료가 없어야 합니다 (컴포지션 전체 기간이 시퀀스 합계와 일치).
  • Asset과 폰트가 첫 프레임부터 올바르게 렌더링되어야 합니다. 대체 폰트 깜빡임이나 빈 asset이 없어야 합니다.
  • 반복은 피드백에 필요한 라인만 변경했으며, 이전에 승인된 모든 것은 그대로 유지됩니다.
  • 배치 출력은 prop 세트에 의해서만 달라집니다.

에스컬레이션

장면 작성, 애니메이션 디자인, 컴포넌트 구조는 remotion-compose로, 프로젝트 스캐폴딩은 remotion-setup으로, 점수 및 오디오 타이밍은 sound-and-music-sync로 보내십시오.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

SkillMedev/skills

Designs REST API surfaces - resource naming, HTTP method and status-code semantics, error shapes, pagination, and filtering - and delivers an endpoint spec a consumer can build against without asking questions. Use when someone asks "how should I name this endpoint", "what status code should this return", "should this be PUT or PATCH", "how do I paginate this list", or is reviewing an API before it ships to external consumers. Do NOT use for planning breaking-change rollouts and deprecation windows - use api-versioning-strategist instead; for GraphQL type and resolver design - use graphql-schema instead; for generating client SDKs from an existing spec - use api-client-generator instead; for designing inbound webhook endpoints - use webhook-receiver-hardener instead.

SkillMedev/skills

Produce an accurate, properly timed caption track (SRT or WebVTT) from a video's audio - transcribing or aligning to the voiceover script, timing cues to speech, and enforcing line-length and reading-speed rules so captions are readable and in sync. Use when someone says "generate captions", "make subtitles from the audio", "transcribe and caption this", "export an SRT or VTT", "the captions are out of sync", or "the subtitles flash by too fast to read". Do NOT use to burn-in, style, reframe, or position an existing caption track for a platform (9:16, brand styling, safe areas) - that is social-video-formatter; do NOT use to animate text word-by-word as a motion graphic - that is kinetic-typography; do NOT use to write the spoken script in the first place - that is narration-script.

SkillMedev/skills

Turns data and charts into a decision-driving narrative structured as headline finding, trend, implication, and recommended action - with finding-led chart titles, context for every number, annotation guidance, and honest flags on any conclusion the data cannot support. Use when someone says "turn these numbers into a story", "what's the takeaway from this data", "help me present these results to leadership", or has charts but no narrative. Do NOT use for compressing a long document into a one-pager - use executive-summary instead - or for running the analysis that produces the findings - use eda-playbook instead.

SkillMedev/skills

Use when a task needs live or historical money data - "convert USD to EUR", "current/past exchange rate", "FX rate on this date / over this range", or "current price of Bitcoin/Ethereum, market cap, 24h change". Frankfurter (ECB reference rates, no key) is the FX default; CoinGecko's free keyless tier covers crypto. Do NOT use for stock quotes or equities - no keyless stock API survives verification, say so instead of guessing; do NOT use for country economic indicators like GDP or inflation series - use government-open-data instead; if the request is a vague "I need live data", route through public-data-api-picker.

SkillMedev/skills

Builds a driver-based FP&A operating model linking business inputs to P&L, balance sheet, and cash flow outputs. Use when building an annual plan, preparing investor materials, running scenario analysis, or stress-testing the business.

SkillMedev/skills

Use when a task needs live geographic lookups - "geocode this address", "what's at these coordinates" (reverse geocoding), "lat/lon for this city", "which country/state is this ZIP or postal code in", or "country facts: capital, currency, population, flag". Nominatim (OpenStreetMap) is the geocoding default; Zippopotam for postal codes; APICountries for country facts. All keyless. Do NOT use for weather at a location - use weather-climate instead; do NOT use for country-level statistics over time (GDP, population trends) - use government-open-data instead; if the request is a vague "I need live data", route through public-data-api-picker.

SkillMedev/skills

Runs the full Getting Things Done loop - capture, clarify, organize, reflect, engage - building a trusted system of context lists, a projects list with defined next actions, and a weekly review habit. Use when someone says "I'm overwhelmed and things are slipping through the cracks", "set up GTD for me", "help me do a brain dump and organize it", or "my to-do list is a mess". Do NOT use for just running the weekly review ritual itself - use weekly-review instead - or for clearing an email backlog - use inbox-zero.

SkillMedev/skills

Processes any email backlog to zero using the 4Ds - Delete, Delegate, Defer, Do - with a mass-archive strategy for the obvious, a touch-each-email-once discipline, and a keep-it-clear system of batched processing windows, ruthless unsubscribing, filters, and a minimal folder setup. Use when someone says "I have 5,000 unread emails", "help me get to inbox zero", "email is eating my whole day", or treats their inbox as a to-do list. Do NOT use for drafting the reply emails themselves or prioritization rules for an ongoing support queue - use email-triage instead - or for protecting focus time around the email windows - use deep-work-planner instead.

SkillMedev/skills

Write landing-page copy section by section - hero, social proof, features-as-benefits, objections, CTA - leading with one promise and proving it down the page. Use when someone asks "write my landing page", "improve my hero headline", "what should the homepage say", "turn these features into benefits", or is shipping a new page for a launch or campaign. Do NOT use for testing and optimizing an existing page's conversion rate - use landing-page-cro instead; for the one-line claim itself use positioning-statement; for the full message ladder use messaging-hierarchy.

SkillMedev/skills

Improves an existing landing page's conversion rate through evidence-first CRO - audit heatmaps and recordings, write structured hypotheses, prioritize with ICE scoring, and run one-variable tests to statistical significance. Use when someone asks "why isn't my landing page converting", "audit this page before we scale spend", "which A/B test should we run first", or after a CVR drop or ahead of a paid-traffic push. Do NOT use for writing a new landing page from scratch - use landing-page-copy instead. Do NOT use for auditing the ad accounts sending the traffic - use paid-acquisition-audit instead. Do NOT use for reading the results of a finished experiment - use ab-test-analyzer instead.

SkillMedev/skills

Runs structured coaching sessions using values clarification and the GROW model, ending every session with one committed action, a deadline, and an if-then plan for the likely obstacle. Use when someone says "I feel stuck in my life", "help me figure out what I want", "hold me accountable to my goals", or "coach me through this decision". Do NOT use for building a stress toolkit - use stress-management instead - or a journaling practice - use journal-framework; for a standing goal-tracking system, use goals-accountability. Coaching, not therapy: signs of clinical distress route to a licensed professional.

SkillMedev/skills

Adapts English content for a target language and region - swapping idioms, setting the right formality register, replacing cultural references, converting dates, units, and currency - and delivers the localized text with a notes column explaining each adaptation and flagging what needs a native reviewer. Use when someone asks "localize this copy for the Japanese market", "adapt our marketing copy for the Mexican market", "make this translation sound native instead of literal", or a literal translation reads foreign, stiff, or risky. Do NOT use for auditing in-product UI text quality - use ux-writing-audit instead.

SkillMedev/skills

Turns a natural-language video brief into a complete, ready-to-preview Remotion composition - extracts duration, scenes, brand colors, aspect ratio, and real copy; plans the frame budget; and writes data-driven React/TypeScript using useCurrentFrame, interpolate, spring, AbsoluteFill, and Sequence, registered in Root.tsx. Use when someone says "build a 20-second product demo video", "animate a feature walkthrough", "write the Remotion code for this marketing clip", or wants a scene-by-scene composition they can scrub in Studio. Do NOT use for rendering, iterating, or batching the finished MP4 - use remotion-render instead - or for installing and scaffolding the project - use remotion-setup instead.

SkillMedev/skills

Scaffolds a new Remotion video project wired for Claude Code Agent Skills - Node check, create-video scaffold, skills install, folder conventions, Google Fonts, and a smoke-test render. Use whenever someone wants to start making videos with Remotion and Claude, even just "make product videos with Claude.

SkillMedev/skills

Classifies incident severity (SEV1-4) using impact, scope, and urgency signals and decides who to page. Use when an alert fires or a report comes in and a severity call must be made quickly.

SkillMedev/skills

Use the Skill Me catalog from inside any conversation - discover, install, and manage Claude skills through the Skill Me MCP, and load installed skills automatically each session.

SkillMedev/skills

Write one platform-native caption from a topic and brand voice, with a front-loaded hook, native length, and a single earned CTA. Use when the user gives a topic (and optionally brand voice or a described image/video) and asks for an Instagram, LinkedIn, X/Twitter, or TikTok caption. Do NOT use when the user wants a dedicated standalone LinkedIn post - use linkedin-post-writer instead; or a multi-post X thread - use tweet-thread-builder instead; or to adapt one existing piece of content into versions for several channels - use cross-platform-reformatter instead.

SkillMedev/skills

Reframe and export a finished video for social platforms - 9:16 ↔ 16:9 cropping, burned-in captions, a platform-native first frame, loop design, and per-platform specs (aspect, length, safe areas) for TikTok, Reels, Shorts, X, and LinkedIn. Use when someone says "make this vertical", "crop to 9:16", "format for TikTok/Reels/Shorts", "add captions/subtitles", "why is my video cut off on mobile", "resize for Instagram", or "export for social". Do NOT use when the question is about the storyboard or shot order before any video exists (use video-storyboard); the animation craft of how elements move (use motion-design-principles); animated word-by-word caption styling (use kinetic-typography); palette, contrast, or lighting (use motion-color-and-light); directing the product-demo content and screen choreography (use product-demo-director); or scoring, beat-syncing, or audio (use sound-and-music-sync) - this is the craft layer that decides WHAT to format for the feed, then hands a concrete spec to remotion-compo...

SkillMedev/skills

Writes and tunes PySpark jobs - join strategy and broadcast size limits, shuffle-partition sizing, skew diagnosis and salting, UDF avoidance, caching, and output file layout - with concrete size and skew thresholds. Use when someone asks "why is my Spark job slow", "should I broadcast this join", "one task takes forever while the rest finish", "my job OOMs during a join", or is writing a new PySpark ETL job. Do NOT use for Kafka topic, consumer-group, or streaming-pipeline design - use kafka-pipelines instead; do NOT use for single-machine dataframe work that fits in memory - use pandas-expert instead.

SkillMedev/skills

Builds clean, performant, accessible SwiftUI views with correct state ownership, scoped invalidation, and smooth list scrolling, and reviews existing SwiftUI code against a concrete frame-time and re-render budget. Use when someone asks "why does my SwiftUI list stutter", "should this be @State or @Observable", "my whole screen re-renders when one row changes", "how do I animate this transition", or wants a SwiftUI view built or refactored. Do NOT use for cross-platform React Native apps - use react-native-pro instead; do NOT use for Flutter widget trees - use flutter-widget-architect instead; do NOT use for Android Compose UIs - use jetpack-compose-builder instead.

관련 스킬