סקיל Remotion
Remotion הוא Framework מהפכני שמאפשר ליצור סרטוני MP4 פרוגרמטיים באמצעות React. בעולם של Claude Code, סקיל ה-remotion-best-practices הוא אחד הסקילים הפופולריים ביותר עם 237K התקנות. במדריך זה אסקור מה הסקיל עושה, מתי להשתמש בו, ואיך השתמשתי בו בפרויקטים שלי.
פקודת התקנה
claude install-skill remotion-best-practices
מה הסקיל כולל?
הסקיל מלמד את קלוד קוד איך לבנות פרויקטי Remotion בצורה נכונה: מבנה פרויקט, הגדרת compositions, אנימציות עם interpolate ו-spring, כללי ביצועים, רנדרינג מקומי ועם Lambda, וטיפול בנתונים דינמיים.
קוד הסקיל המלא
---
name: remotion-best-practices
description: Best practices for building videos with Remotion - React-based programmatic video framework. Use when creating MP4 videos with React components, generating dynamic video content, or building video generation pipelines with TypeScript + React.
---
# Remotion Best Practices
Comprehensive guide for building production videos with Remotion. Follow these conventions when creating MP4 videos with React components.
## Project setup
Install Remotion in a fresh project:
```bash
npx create-video@latest
# or
npm i remotion @remotion/cli @remotion/bundler
```
Project structure:
```
src/
Composition.tsx # main video component
Root.tsx # register compositions
index.ts # entry point
compositions/
WelcomeVideo.tsx
ProductShowcase.tsx
public/ # static assets (images, fonts)
```
## Composition setup
Register every video variant with `<Composition />`:
```tsx
import { Composition } from 'remotion';
import { WelcomeVideo } from './compositions/WelcomeVideo';
export const RemotionRoot: React.FC = () => {
return (
<>
<Composition
id="welcome"
component={WelcomeVideo}
durationInFrames={180}
fps={30}
width={1920}
height={1080}
defaultProps={{ name: 'Dvir' }}
/>
</>
);
};
```
### Standard sizes
- 1920x1080 - Full HD (landscape, YouTube)
- 1080x1920 - Vertical (Reels, TikTok, Stories)
- 1080x1080 - Square (Instagram feed)
- 1280x720 - HD (lightweight)
### Standard fps
- 30 - default for most content (balance)
- 60 - gaming, sports, smooth motion
- 24 - cinematic look
## Animation
Use `useCurrentFrame()` + `interpolate()` for smooth animations:
```tsx
import { useCurrentFrame, interpolate } from 'remotion';
export const FadeIn: React.FC = () => {
const frame = useCurrentFrame();
const opacity = interpolate(frame, [0, 30], [0, 1], {
extrapolateRight: 'clamp',
});
return <div style={{ opacity }}>Hello</div>;
};
```
Use `spring()` for natural motion:
```tsx
import { spring, useCurrentFrame, useVideoConfig } from 'remotion';
const { fps } = useVideoConfig();
const frame = useCurrentFrame();
const scale = spring({
frame,
fps,
config: { damping: 200, stiffness: 100, mass: 1 },
});
```
Stagger animations with delay:
```tsx
const frame = useCurrentFrame();
const items = [0, 1, 2, 3].map(i => {
const opacity = interpolate(frame - i * 10, [0, 20], [0, 1], {
extrapolateLeft: 'clamp',
extrapolateRight: 'clamp',
});
return { opacity };
});
```
## Performance rules
1. Keep components pure - no side effects, no useState for video state (use props)
2. Use `<Sequence />` to mount components only when visible:
```tsx
<Sequence from={60} durationInFrames={90}>
<SecondScene />
</Sequence>
```
3. Use Remotion's `<Img />` instead of `<img>` for proper asset loading:
```tsx
import { Img, staticFile } from 'remotion';
<Img src={staticFile('logo.png')} />
```
4. Pre-load assets that depend on network:
```tsx
import { useEffect, useState } from 'react';
import { continueRender, delayRender } from 'remotion';
const [handle] = useState(() => delayRender());
useEffect(() => {
fetch('/api/data').then(() => continueRender(handle));
}, []);
```
## Rendering
Local render:
```bash
npx remotion render welcome out/video.mp4
--codec=h264
--concurrency=4
```
Options:
- `--codec` - h264 (default), h265, vp8, vp9, prores
- `--quality` - 1-100 for h264 (default 80)
- `--pixel-format` - yuv420p (compatible), yuv444p (higher quality)
- `--frame-range` - render subset: `0-59`
Server-side render with Lambda for scale:
```bash
npx remotion lambda render
https://my-bucket.s3.amazonaws.com/bundle
welcome
--composition=welcome
```
## Dynamic data via props
Pass data when rendering:
```bash
npx remotion render welcome out/video.mp4
--props='{"name":"John","items":[1,2,3]}'
```
Access in component:
```tsx
export const WelcomeVideo: React.FC<{name: string}> = ({name}) => {
return <div>Hello {name}</div>;
};
```
## Studio development
Live preview with hot reload:
```bash
npx remotion studio
```
Opens at http://localhost:3000 with:
- Timeline scrubbing
- Props editor
- Composition switcher
- Render button
## TypeScript
Always use TypeScript for video components. Props typed with Zod for runtime validation:
```tsx
import { z } from 'zod';
const schema = z.object({
name: z.string(),
count: z.number(),
});
export type Props = z.infer<typeof schema>;
<Composition
id="welcome"
component={WelcomeVideo}
schema={schema}
defaultProps={{ name: 'Dvir', count: 5 }}
...
/>
```
## Common patterns
### Progress bar
```tsx
const frame = useCurrentFrame();
const { durationInFrames } = useVideoConfig();
const progress = frame / durationInFrames;
```
### Audio sync
```tsx
import { Audio, staticFile } from 'remotion';
<Audio src={staticFile('music.mp3')} />
```
### Video concatenation
```tsx
<Sequence from={0} durationInFrames={60}>
<FirstScene />
</Sequence>
<Sequence from={60} durationInFrames={60}>
<SecondScene />
</Sequence>
```
### Variable-rate animation
```tsx
const speed = interpolate(frame, [0, 30, 60], [1, 3, 1]);
const position = frame * speed;
```
## Deployment
For production video generation:
1. Bundle once: `npx remotion bundle`
2. Deploy to S3/Lambda: `npx remotion lambda sites create bundle/ --site-name=my-site`
3. Render via API: `npx remotion lambda render ... --composition=welcome`
For serverless with props:
```typescript
import { renderMediaOnLambda } from '@remotion/lambda/client';
const { bucketName, renderId } = await renderMediaOnLambda({
region: 'us-east-1',
functionName: 'remotion-render',
composition: 'welcome',
serveUrl: 'https://xxx.amazonaws.com/sites/my-site/index.html',
inputProps: { name: 'John' },
codec: 'h264',
});
```
## Testing checklist before production
- Render a single frame: `--frame=30`
- Test lowest quality first: `--quality=50`
- Verify fonts load (use `<Font />` or @font-face)
- Test with actual production data, not test values
- Measure render time per video to estimate costs
- Monitor Lambda timeout (default 120s, max 900s)
## Common pitfalls
- Using `setState` inside components - state is tied to frame, not time
- Using `Math.random()` - produces different output each render (use seeded random)
- Date/time functions returning current time (bake in via props)
- External fetches without `delayRender` (missing content on render)
- Using animations based on timeouts (use frame-based animation only)
מה זה Remotion ולמה זה חשוב?
Remotion הוא Framework פתוח לפיתוח סרטוני וידאו אמיתיים (MP4) באמצעות React. במקום לפתוח תוכנת עריכת וידאו ולגרור פריימים ביד, אתה כותב קומפוננטים של React שמתארים את הוידאו, ו-Remotion מרנדר אותם ל-MP4 איכותי.
הקסם: אתה יכול ליצור וידאו שמכיל נתונים דינמיים. למשל – וידאו סיכום שנתי לכל לקוח בנפרד עם המספרים האישיים שלו, כל זה אוטומטית. או לוגו אנימטד שמשתנה לפי המוצר. או סרטוני סטוריז ל-Instagram מבוססי דאטה ממאגר נתונים.
בעולם של היום שבו כל עסק צריך וידאו לרשתות חברתיות, Remotion הוא פתרון חוסך זמן עצום. במקום לבזבז ימים בעריכה ידנית, אתה כותב את התבנית פעם אחת ומפיק עשרות סרטונים בלחיצת כפתור.
מה Remotion נותן לקלוד קוד?
הסקיל הוא אוסף של best practices ודוגמאות שמגיעים לקלוד קוד יחד עם הקונטקסט. כשאתה מבקש מקלוד קוד ליצור וידאו ב-Remotion, הוא יודע אוטומטית את הסטנדרטים הנכונים. עם 237K התקנות, קלוד קוד מקבל מיד את הכלים והכללים הנכונים.
מבנה פרויקט נכון
יודע אוטומטית איך לבנות Composition, לרשום וידאו, ולהגדיר fps ורזולוציה מתאימים לכל פלטפורמה.
אנימציות מקצועיות
משתמש ב-interpolate ו-spring במקום CSS animations. מייצר תנועה טבעית עם stagger ו-easing מותאם.
ביצועים ושגיאות נפוצות
מונע טעויות קריטיות: שימוש ב-Img במקום img, טעינת נכסים עם delayRender, הימנעות מ-setState.
רנדרינג ודיפלוי
יודע לרנדר מקומית ועם Lambda בסקייל. מגדיר codecs, איכות, ו-props דינמיים לייצור המוני.
בלי הסקיל, קלוד קוד יכתוב קוד Remotion שעובד אבל לא בהכרח באיכות הכי גבוהה. עם הסקיל – קוד מקצועי מהשורה הראשונה.
למי הסקיל הזה מתאים?
מפתחים שעובדים על אפליקציות עם וידאו דינמי: סטארטאפים שיוצרים וידאו פרסונליזציה ללקוחות, אפליקציות שמייצרות סטוריז אוטומטיים, מערכות שמייצאות סיכומים לוויזואליים.
סוכנויות שיווק שצריכות להפיק וידאו בקנה מידה: במקום לערוך 100 סרטונים ידנית לכל מוצר בקטלוג, אתה בונה תבנית Remotion אחת ומייצר את כולם בלילה אחד.
יוצרי תוכן שרוצים לבצע אוטומציה של עריכה: במקום לערוך 5 שעות ביום, אתה בונה את התבנית פעם אחת ואחר כך הסקריפטים ממלאים אותה.
מי שלא מתאים: יוצרי וידאו אומנותי שצריכים שליטה מילימטרית על כל פריים – Premiere/DaVinci הם בכל זאת עדיפים. גם פרויקטים חד פעמיים שלא מצדיקים את ה-overhead של פיתוח.
איך Remotion עזר לי בפרויקטים אמיתיים
סיכום שנתי מותאם אישית ל-800 לקוחות
יצרתי תבנית סיכום שנתי ל-CRM פנימי. כל לקוח קיבל וידאו של 60 שניות עם המספרים האישיים שלו. השתמשתי ב-Remotion עם Lambda כדי לרנדר 800 סרטונים בפחות מ-3 שעות.
סטוריז אוטומטיים מקטלוג Shopify
כל בוקר סקריפט קורא את המוצרים החדשים מ-Shopify, יוצר סטורי 1080×1920 עם המוצר, המחיר וה-CTA, ומעלה ישירות לאינסטגרם. חיסכון של 4 שעות עבודה ביום.
סרטוני הסבר דינמיים לפלטפורמת SaaS
כל חודש המערכת מייצרת סרטוני הסבר אוטומטיים עם גרפים ומספרים מהדאטבייס – כמה משתמשים חדשים, מה שיעור ההמרה, ומה הפיצ׳ר החדש. מופץ ללקוחות במייל וברשתות.
לוגו אנימטיבי ואינטרו לפודקאסט
יצרתי תבנית לוגו אנימטיבי וסרטון פתיחה לפודקאסט – 5 שניות שונות עם אותו העיצוב בדיוק. כל פרק מקבל אינטרו אישי עם שם האורח ונושא הפרק – הכל אוטומטי.
הסקיל הזה בקלוד קוד קיצר משמעותית את זמן הפיתוח. בפעם הראשונה לקח לי שבוע לבנות תבנית מקצועית. עם הסקיל – יום עד יומיים. אם אתם מחפשים אוטומציות ויצירת תוכן בקנה מידה, Remotion הוא כלי מצוין.
סיכום
Remotion הוא Framework מעולה לכל מי שרוצה לייצר וידאו פרוגרמטי. הסקיל remotion-best-practices בקלוד קוד הוא חובה למפתחים שעובדים עם הכלי – הוא חוסך טעויות נפוצות ומקצר את הזמן עד לתוצאה איכותית.
אם אתם מתחילים, מומלץ להתחיל עם הדגמה באתר הרשמי, להתקין את הסקיל בקלוד קוד, ולנסות פרויקט קטן (לוגו אנימטד, סרטון פתיחה לפודקאסט). מכאן תוכלו לבנות פרויקטים מורכבים יותר.
במאמרים הבאים אסקור גם סקילים נוספים שמשנים את העבודה עם Claude Code. אם יש לכם בעיה ספציפית שאתם רוצים לפתור עם וידאו פרוגרמטי, צרו קשר ונדבר על הפתרון.
שיתוף הסקיל
שאלות ותשובות
האם Remotion מתאים גם למי שלא מפתח?
לא ממש – Remotion מצריך ידע ב-React ו-TypeScript. אם אתה לא מפתח אבל רוצה וידאו דינמי, עדיף לפנות למפתח (אני מציע את השירות) או להשתמש בכלים אחרים כמו Synthesia או HeyGen.
כמה זמן לוקח ללמוד Remotion?
אם אתה כבר מכיר React: 1-2 ימים לעבודה בסיסית, שבוע-שבועיים לרמה מתקדמת. אם אתה לא מכיר React: 4-6 שבועות, כי תצטרך ללמוד גם React.
האם זה יקר לרנדר עם Remotion?
מקומי – חינם (רק זמן CPU). עם Remotion Lambda – תלוי בכמות וגודל. סרטון 60 שניות ב-1080p עולה כמה סנטים. 1000 סרטונים = כמה דולרים. זול מאוד יחסית לפתרונות אחרים.
האם הסקיל מעדכן את עצמו?
הסקילים ב-skills.sh מעודכנים ע"י הקהילה. כדי לקבל גרסה עדכנית, פשוט תריץ <code>find-skills</code> מחדש או תיגש ישירות לרפו של הסקיל ב-GitHub.
האם Remotion עובד עם נכסים בעברית?
בהחלט – Remotion הוא React, ולכן יש תמיכה מלאה ב-RTL וטקסט בעברית. צריך לוודא שאתה משתמש בפונט שתומך בעברית (Heebo, Assistant, וכו).
האם אפשר לשלב Remotion עם React Native?
לא ישירות. Remotion מיועד לייצור קבצי וידאו סטטיים (MP4) ולא לאנימציות בתוך אפליקציה. אם אתם צריכים אנימציות בתוך React Native, השתמשו ב-React Native Reanimated או Lottie. Remotion מתאים רק כשהמטרה היא קובץ וידאו שאפשר להוריד או לשתף.
איך עובדת הטמעת פונטים בסרטונים של Remotion?
יש שתי דרכים עיקריות: (1) שימוש ב-@remotion/google-fonts שמטען אוטומטית פונטים מ-Google Fonts, או (2) הוספת @font-face בסטיילים עם קובצי .woff2 מקומיים ב-public/. בשניהם חשוב להמתין עם delayRender() עד שהפונט נטען, אחרת הרינדור יתחיל עם פונט ברירת מחדל.
איך מתמחרים פרויקט וידאו שמבוסס על Remotion ללקוח?
אני מתמחר ב-3 שלבים: פיתוח התבנית הראשונית (שעות עבודה × מורכבות, בדרך כלל 4,000-15,000 שקל), רינדור חד-פעמי או חודשי לפי נפח (Lambda עולה ~0.05$ לדקת וידאו), ותחזוקה של 15-20% ממחיר הפיתוח בחודש לעדכונים. ללקוחות שמייצרים 100+ סרטונים בחודש, זו השקעה שחוזרת תוך 2-3 חודשים.