agentsclimarketplace

Remotion render

Skill SkillMedev/skills/skills/remotion-render

The open Skill Me catalog — every hosted skill as a portable, MIT-licensed SKILL.md

Install
npx -y skills add SkillMedev/skills --skill remotion-render

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Renders a Remotion composition to MP4 and runs the edit-and-re-render loop - CLI render commands, 1080p/4K/9:16 presets, concurrency tuning, codec selection, batch variants from a JSON data file, and Lambda for cloud rendering. Use when someone says "render this Remotion video", "export the composition to MP4", "the animation is too fast, fix and re-render", "batch render one video per customer", or "move rendering to Lambda". Do NOT use for authoring or restructuring scenes, animations, or components - use remotion-compose instead; do NOT use for project scaffolding and initial setup - use remotion-setup instead. This skill owns everything from a finished composition to a delivered file.

SKILL.md

7.7 KB, ~1.7k tokens by cl100k_base, as published. Nobody here has run it

Remotion Render

Drive the render-and-iterate loop: turn a composition into an MP4, take natural-language feedback, make the smallest edit that satisfies it, and re-render. The costly failure mode is the opposite loop - rewriting whole scene files for a copy tweak, or re-rendering at full quality for every check - which destroys the approved work and the iteration speed that makes Remotion worth using.

Operating procedure

Step 1: Gather inputs

  • Composition ID (the id on the <Composition> in src/Root.tsx, not a filename) and the entry point (the file calling registerRoot, typically src/index.ts).
  • Target: platform/aspect (landscape 16:9, vertical 9:16, square), resolution (1080p default; 4K only on request), and whether transparency is needed.
  • Machine cores (for concurrency) and whether this is one render, an iteration session, or a batch.

Step 2: The base render

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

Default output is H.264 MP4 at the composition's own width/height/fps; Remotion creates out/ if needed.

Step 3: Resolution, fps, and codec presets

Resolution and fps live on the <Composition> (width/height/fps) - change them at the source. Use flags only for scaling and container:

# 1080p landscape - Composition authored 1920x1080@30
npx remotion render src/index.ts ProductDemo out/1080p.mp4

# 4K - upscale the 1080p canvas without touching layout
npx remotion render src/index.ts ProductDemo out/4k.mp4 --scale=2

# 9:16 vertical - render a Composition authored at 1080x1920
npx remotion render src/index.ts ProductDemoVertical out/vertical.mp4

Codec rules:

  • Social/web delivery stays H.264 MP4 (the default) - maximum compatibility.
  • Transparency: --codec=vp8 or vp9 (WebM), or --codec=prores with alpha for editing pipelines. H.264 cannot carry alpha.
  • True 60fps means fps={60} on the Composition with frame counts scaled to match - a flag-only fps change desyncs every animation timed in frames.

Step 4: Tune concurrency

Rendering is CPU-bound (each frame is a headless-Chromium screenshot). Default is roughly half the cores; explicit tuning is the easiest local speedup:

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

Start at the number of physical cores (--concurrency=50% accepts a percentage); back off if the machine swaps or thermal-throttles - past the sweet spot, more Chromium tabs make it slower, not faster.

Step 5: Run the iterative refinement loop

Keep Studio open (npx remotion studio, http://localhost:3000) so the user previews instantly; reserve full renders for sign-off.

  1. User previews in Studio and gives feedback in plain language.
  2. Translate it to a surgical edit - change only the relevant value:
    • "Too fast" → widen the interpolate input range or raise spring damping.
    • "Logo should pop more" → lower spring damping / add overshoot.
    • "Change the CTA copy" → edit the prop / defaultProps, touch nothing else.
    • "Different accent color" → change one hex in the colors object.
    • "Hold the last feature longer" → bump that <Sequence>'s durationInFrames AND re-derive the Composition's total durationInFrames.
  3. Re-render, or let Studio hot-reload for the visual check.

Surgical edit vs rewrite: edit in place when the change is a value, prop, color, or one scene's timing; rewrite only when scene structure changes (adding/removing/reordering scenes - and route structural authoring to remotion-compose). Default to surgical: it preserves everything already approved.

Step 6: Batch variants

The composition is data-driven, so N variants = N prop sets in a JSON file:

[
  { "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 takes inline JSON or a file path; for more than a couple of variants, write a small Node script that reads the JSON and shells out per entry, or use @remotion/renderer's renderMedia() for a typed loop. Localize or A/B copy and colors entirely by editing the JSON.

Step 7: Lambda when local is the bottleneck

Reach for Lambda when a single render takes minutes locally or the batch is large - it fans frames out across serverless workers. Otherwise local is simpler and free.

npx remotion lambda functions deploy            # one-time per AWS account/region
npx remotion lambda sites create src/index.ts --site-name=product-demo
npx remotion lambda render product-demo ProductDemo --props='{"logoText":"Acme"}'

Requires AWS credentials and IAM permissions per Remotion's Lambda setup.

Step 8: Troubleshoot the three common failures

  1. Frame-count mismatch - animation cuts off early or the clip has a dead tail. Cause: a <Sequence> duration changed but the Composition total did not. Fix: make the total equal the sum of its sequences; recompute after every timing edit. This is the #1 render surprise.
  2. Missing staticFile() reference - render fails or an asset is blank. Cause: an asset imported by path or outside public/. Fix: put it in public/assets/ and reference staticFile("assets/<name>").
  3. Font flash/fallback - text renders in the wrong font or shifts. Cause: @remotion/google-fonts loadFont() missing or called too late. Fix: call loadFont() at module top level and apply the returned fontFamily; the render then waits for the font.

Deliverable

A rendered file in out/ at the requested preset, plus - for iteration sessions - the loop offer: name the tweakable dimensions (pacing, copy, color, timing) and re-render on feedback. For batches, the variants JSON and the per-variant outputs.

Do NOT

  • Do NOT rewrite a scene file for a value-level change - surgical edits preserve approved work.
  • Do NOT change fps via flags alone - set it on the Composition and rescale frame counts.
  • Do NOT change a Sequence duration without re-deriving the Composition's total durationInFrames.
  • Do NOT full-render every iteration - Studio hot-reload is the preview loop; render at sign-off.
  • Do NOT push concurrency past physical cores on a machine that is swapping or throttling.
  • Do NOT reach for Lambda when local renders finish in seconds - it adds AWS setup and cost for nothing.
  • Do NOT author new scenes or restructure the composition here - that is remotion-compose.

Quality bar

  • The output plays at the requested resolution/aspect/fps with no dead tail and no early cutoff (Composition total matches sequence sum).
  • Assets and fonts render correctly on the first frame - no fallback-font flash, no blank assets.
  • An iteration changed only the lines the feedback required; everything previously approved is untouched.
  • Batch outputs differ only by their prop sets.

Escalation

Scene authoring, animation design, and component structure go to remotion-compose; project scaffolding to remotion-setup; scoring and audio timing to sound-and-music-sync.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.