YUV.AIMOTION IN CODE
קטלוג האלמנטים English
YUV.AI · MOTION IN CODE

וידאו
שהוא קוד.

איך Claude מייצר סרטוני השקה ברמת סטודיו, בלי After Effects

seek(t) → Playwright → ffmpeg · 60 fps · on the beat

▶צפו בשלושת הסרטיםקטלוג: מה אפשר לבקש
מחקר עומק · 15.10.2026 · השיטה של @twoclipping

הסרטון למטה הוא לא קובץ וידאו. הוא תוכנה קטנה שמציירת אותו בזמן אמת, פריים אחרי פריים, מתוך מספר אחד בלבד: הזמן. בדיוק כמו הסרטונים של @twoclipping, רק קטן יותר. לחצו Play, תגררו את הסרגל לכל נקודה — ואז נפרק אותו ביחד, מהיסוד, פירור אחרי פירור.

t = 0.000s · frame 0 · beat 0

סרגל הביטים מתחת לתמונה: כל קו הוא ביט (חצי שנייה, כי השיר ב-120 פעימות לדקה), הקו הכתום הוא ה"דרופ" — הרגע שבו המוזיקה מתפוצצת. המוזיקה והאפקטים כאן מסונתזים בדפדפן לצורך ההדגמה בלבד; השיטה המקורית דורשת סאונד אמיתי (ונראה למה).

היוצר: zero · @twoclipping המאמר: 28.9.2026 פוסט ה-UI morph: ~0.93–0.98M צפיות Opus 5.5 יצא: 22.9.2026
▶

הסרט: 27 שניות, ‏60fps, עשוי כולו בשיטה הזו

קובץ HTML אחד ופונקציה אחת של זמן. כל פריים צולם ב-Playwright, הסרט הורכב ב-ffmpeg, והמוזיקה והאפקטים אמיתיים, כל אחד ממוקם לפי השיא הנמדד שלו.

‏9:16 · רילס / טיקטוק
‏16:9 · יוטיוב / לינקדאין
1602 פריימים לכל פורמט 0 קפיצות פריים בודדות אפקטים נוחתים +7 עד +17ms אחרי הביט עוצמה ‎−13.6 LUFS

שיעור שלא מופיע במאמר: אותה תנועה, שני כיווני אמנות

הגרסה הראשונה (מימין) עבדה טכנית: אותו תזמון, אותם קפיצים, אותו סאונד. ובכל זאת היא נראתה "אנמית". הגרסה השנייה (משמאל) לא הזיזה אף שנייה בתזמון. היא שינתה רק את השפה הוויזואלית:

השוואה: גרסה 1 בנייר חיוור מימין, גרסה 2 בסגנון מגזין משמאל, באותם שלושה רגעים בסרט

שלב הבא: YUV.AI MOTION, אותה שיטה בקנה מידה מלא

סרט השקה של 33 שניות למוצר דמיוני שהופך כל נושא לסרטון השקה. הוא בנוי עם הקיט שיצא מהעבודה הזו, ושום פריים בו לא מגיע מתוכנת עריכה:

גם הים, העננים והשמש הם קוד: three.js ושיידר, עם אותו שעון seek(t). הקוד פתוח בתיקייה /kit.

‏9:16 · YUV.AI MOTION
‏16:9 · YUV.AI MOTION
1960 פריימים לכל פורמט 0 קפיצות פריים 66 אפקטים על הביט עוצמה ‎−13.7 LUFS

ועכשיו סיפור: "קצב", סרט מוצר לאפליקציית כושר

סרט השקה הוא לא רשימת פיצ'רים. "קצב" (אפליקציה דמיונית) בנוי כמו פרסומת אמיתית: בעיה שמרגישים, רגע מפנה, המוצר מבפנים, אנשים שמשתמשים בו, הוכחה, ולמה עכשיו. 40 שניות, 84 ביטים, וגם כאן כל פריים הוא קוד:

‏9:16 · קצב
‏16:9 · קצב
המסקנההשיטה נותנת תנועה ותזמון ברמת סטודיו, אבל לא טעם. את הטעם צריך לכתוב כבריף ויזואלי מפורש: פלטה, קנה מידה של טיפוגרפיה, מה קורה לרקע על כל ביט. אם לא כותבים אותו, המודל בוחר ברירת מחדל "בטוחה", כלומר חיוורת.
01

בשורה התחתונה — בלי מילה אחת של ז'רגון

חמישה משפטים. כל השאר בעמוד הוא ההוכחה והפירוק שלהם.

  1. קלוד לא מצייר וידאו. הוא כותב תוכנה שמציירת כל תמונה בסרטון. שאלה ויזואלית ("תעשה משהו יפה") הופכת לשאלה של קוד ("מה המיקום של הכפתור בשנייה 4.2?") — ובשאלות של קוד קלוד מצוין, מדויק ועקבי.
  2. הטעם לא נשאר לניחוש. הפרומפטים שלו לא אומרים "תעשה יפה"; הם מכתיבים צבעים מדויקים, פונט, ורשימת "אסור" ארוכה של כל הטריקים הזולים שמודל נוטה אליהם כברירת מחדל.
  3. אין חיתוכים — יש שינויי צורה. כפתור לא נעלם ומוחלף בעמוד; הכפתור עצמו גדל והופך לעמוד. העין עוקבת אחרי אותו אובייקט, והמוח קורא את זה כסיפור אחד רציף ויקר.
  4. המוזיקה היא השעון. קודם מודדים את השיר — כמה פעימות בדקה ומתי הפיצוץ — ורק אז מתכננים מה קורה בכל פעימה. התנועה "נוחתת" על הקצב כי היא תוכננה עליו.
  5. קלוד בודק את עצמו לפני שאתם רואים. הוא מצלם תמונות סטילס, מסתכל עליהן (הוא יודע לקרוא תמונות), מודד קפיצות ותקלות במספרים — ורק אז מרנדר. אתם נותנים הערות כמו במאי, לא כמו מתכנת.
02

מי זה @twoclipping, ומה בדיוק הוא פרסם

עובדות עם מקורות. מה שלא הצלחתי לאמת — כתוב במפורש.

zero (@twoclipping ב-X) הוא יוצר שהתפוצץ בשבוע ההשקה של Claude Opus 5.5 (שיצא ב-22 בספטמבר 2026). הפוסט הראשון שלו — "צורה אחת שמשתנה דרך תריסר מצבי ממשק על הביט" — עלה ב-24.9 ונמדד בכ-978 אלף צפיות ו-11.9 אלף לייקים (מדידה אחרת, מאוחרת: 933 אלף). הוא פרסם יחד עם הסרטונים את הפרומפטים המלאים והזמין במפורש להעתיק אותם ("steal it").

ב-28.9.2026 פרסם מאמר ארוך ב-X: "How I Make $10K Launch Videos for $0 with Opus 5.5 (Full Course)" — זה המאמר שעליו מבוסס העמוד. הוא מכיל 6 שלבים, 3 פרומפטים מלאים, ו-7 "חוקי יוקרה". לפי סיכום עצמאי של המאמר, הוא נחתם בהמלצה על רשת יוצרים/אפיליאייט להפצה — חלק שלא הופיע בגרסת הטקסט שעליה עבדנו.

הפרומפטפורמטמה מיוחד בו
UI Morph (הוויראלי)1440×1440 · 0:14 · 120BPMצורה אחת שעוברת 14 מצבי ממשק, לופ מושלם
הזמנת אוכל1920×1080 · 0:15 · 130BPMסיפור משתמש: בקשה → תוצאה → פעולה
"Develop" — הדפסת תמונות1440×1440 · 0:27 · 120BPM"זכוכית נוזלית", צמצם מצלמה, פוטג' אמיתי; ~106K צפיות
Beat-synced footage1920×1080 · 10 תיבותקליפים אמיתיים מסונכרנים לביט, קרוסלה תלת-ממדית
Landing-page fly-over (בונוס)1440×1152 · 14.5sWebGL תלת-ממדי, עומק שדה, מצלמה ממהירות
מה לא אימתתיX חוסם גישה אוטומטית, לכן לא קראתי את המאמר ישירות משם — הסתמכתי על הטקסט המלא של המאמר ועל 4 מקורות משניים שמצטטים אותו. את פרומפט ה-fly-over לא מצאתי באף רשימה ציבורית, כך שאת המקור המדויק שלו (איזה פוסט, איזה תאריך) לא אימתתי.
03

המאמר — בתרגום מלא לעברית

נאמן למקור. השמטתי רק שתי שורות של "שמרו בסימניות / תנו לייק". הפרומפטים נשארים באנגלית (כדי להדביק) ומתחתם תרגום. מונחים טכניים מוסברים בסוגריים במקום הראשון שבו הם מופיעים.

איך אני מפיק סרטוני השקה של 10 אלף דולר ב-0 דולר עם Opus 5.5 (הקורס המלא)

אני פותח בקוד פתוח את כל תהליך העבודה שלי ליצירת עיצובי תנועה (motion design — אנימציה גרפית: טקסט, צורות וממשקים שזזים, בניגוד לצילום) שסטודיואים גובים עליהם 5,000 עד 15,000 דולר.

זה משתמש ב-0 MCP (Model Context Protocol — דרך לחבר לקלוד כלים חיצוניים כמו שירותים ואפליקציות), ב-0 כלים חיצוניים, ואני לא מוכר לכם שום מנוי. לא צריך After Effects (תוכנת האנימציה המקצועית של Adobe) או שום תוכנת עריכה — קלוד בונה את כל הדבר בקוד.

למטה כל שלב: איך אני מוצא את הרעיון, איך אני מנסח את הפרומפט, ואיך זה הופך למוצר מוגמר — באפס מאמץ, כשקלוד מטפל בכל התהליך. כל פריים בודד כאן הוא קוד ש-Opus 5.5 כתב, ואני לא מכיר אפילו את שלב 1 של מושן דיזיין.

שלב 1: לגנוב את הרעיון

לא צריך להיות יצירתיים בחלק הזה. כל סרטון שעשיתי התחיל ממשהו שכבר קיים: אנימציות ממשק מ-Dribbble (אתר שבו מעצבים מציגים עבודות), קינוט של אפל, אפילו פרומו של אפליקציה של מישהו אחר. אז מצאו סרטון השקה שאתם אוהבים, שמרו אותו ותנו אותו ל-Claude Code (קלוד שרץ בטרמינל/אפליקציה ויכול להריץ פקודות, לכתוב קבצים ולראות תמונות) עם זה:

Extract 2 frames per second from reference.mp4 with ffmpeg and put them on contact sheets. Go through them and break the video into beats: what happens on each beat, how each scene turns into the next, the camera moves, the colors and the fonts. Then write the same structure for my product: [your product + link].
חלץ 2 פריימים לשנייה מ-reference.mp4 עם ffmpeg (תוכנת קוד פתוח מהטרמינל שחותכת, ממירה ומרכיבה וידאו ואודיו) ושים אותם על גיליונות מגע (contact sheets — תמונה אחת שמכילה רשת של הרבה פריימים קטנים). עבור עליהם ופרק את הסרטון לביטים (beats — הפעימות של המוזיקה): מה קורה בכל ביט, איך כל סצנה הופכת לבאה, תנועות המצלמה, הצבעים והפונטים. ואז כתוב את אותו מבנה למוצר שלי: [המוצר שלכם + קישור].

אין רפרנס? בקשו ממנו 3 רעיונות למוצר ובחרו אחד. טיפ אחד: קלוד נוטה כברירת מחדל לסרטונים כהים שנראים תלת-ממדיים, והם עדיין לא נראים יוקרתיים — אז אני דוחף את שלי למראה דו-ממדי, לבן ומינימליסטי. זה מה שבאמת מרגיש פרימיום. אם אתם כותבים פרומפט משלכם, הוסיפו את זה כדי שלא יברח לתלת-ממד כהה:

Style: 2D only. Warm white background, black UI, one accent color, one clean font (Geist or Inter). No 3D, no dark mode, no glows, no particles. Think Apple keynote, not a video game trailer.
סגנון: דו-ממד בלבד. רקע לבן-חם, ממשק שחור, צבע אקסנט אחד, פונט נקי אחד (Geist או Inter). בלי תלת-ממד, בלי מצב כהה, בלי זוהר, בלי חלקיקים. תחשוב קינוט של אפל, לא טריילר של משחק וידאו.

שלב 2: להפוך את Claude Code לסטודיו

פתחו את Claude Code והדביקו:

Set up a motion design studio in this folder. Install ffmpeg and Playwright with Chromium. Then render a 2 second test where a black circle grows into a pill on a spring, 60fps, and show me the first and last frame.
הקם סטודיו למושן דיזיין בתיקייה הזו. התקן ffmpeg ו-Playwright (ספרייה ששולטת בדפדפן בלי מסך — פותחת דף, מריצה בו קוד ומצלמת אותו) עם Chromium (הגרסה הפתוחה של כרום). ואז רנדר (render — לייצר את התמונות הסופיות) מבחן של 2 שניות שבו עיגול שחור גדל לגלולה על קפיץ, ב-60fps (60 תמונות לשנייה), והראה לי את הפריים הראשון והאחרון.

זה כל הסטודיו שלכם. Opus כותב קובץ HTML אחד עם פונקציה בשם seek(t) שמציירת כל פריים שתבקשו, Playwright מצלם כל פריים, ו-ffmpeg הופך אותם ל-MP4. כיוון שהכל קוד — אם משהו נראה לא טוב, פשוט אומרים לקלוד והוא מתקן רק את החלק הזה.

שלב 3: להשיג את הנכסים — הכל בחינם

גם את זה לא מורידים בעצמכם — הדביקו ל-Claude Code:

Download a royalty-free track around 120 BPM with a clear drop from mixkit.co/free-stock-music. Analyze it with numpy and give me the beat grid and the exact time of the drop. Then download one sound effect per event from mixkit.co/free-sound-effects and measure where each one peaks.
הורד טראק ללא תמלוגים בסביבות 120 BPM (פעימות לדקה) עם דרופ ברור (הרגע שבו השיר "מתפוצץ" אחרי בנייה) מ-mixkit. נתח אותו עם numpy (ספריית חישוב מספרי בפייתון) ותן לי את רשת הביטים ואת הזמן המדויק של הדרופ. ואז הורד אפקט סאונד אחד לכל אירוע ומדוד איפה כל אחד מגיע לשיא שלו.

תמיד השתמשו באפקטי סאונד אמיתיים — בהתחלה נתתי לו לייצר את שלו, והם נשמעו זול מאוד.

שלב 4: הפרומפטים

אלה הפרומפטים המדויקים שהשתמשתי בהם. הדביקו אחד ל-Claude Code עם Opus 5.5 — הוא ישאל אתכם קודם מה הוא צריך. כולם בנויים באותה צורה: מה לבקש מכם, איך זה צריך להיראות, מה קורה מתי, והטעויות שצריך להימנע מהן. הערה: אלה לא השקות אמיתיות — אלה דמואים שעשיתי כדי להראות מה Opus מסוגל. תעשו להם רמיקס עם המוצר והנכסים שלכם, ולא תוכלו להבדיל ביניהם לבין סרטון השקה של 15 אלף דולר.

שלושת הפרומפטים מופיעים כאן במלואם. מונחים כמו "קפיץ בנוסחה סגורה", "מרחב לוגריתמי" ו"תת-פריימים" מוסברים בהמשך העמוד לעומק, עם מעבדה אינטראקטיבית לכל אחד — אבל כבר בתרגום כל מונח מקבל הסבר קצר במקום.

פרומפט 1 — סרט השקה: הזמנת אוכל (15 שניות, 16:9)
original · paste into Claude Code
פרומפט 2 — קינוט בסגנון אפל: אפליקציית הדפסת תמונות (27 שניות, ריבוע)
original · paste into Claude Code
פרומפט 3 — UI Morph: צורה אחת, 14 מצבים (14 שניות, לופ)
original · paste into Claude Code

שלב 5: מה גורם לזה להיראות יקר

אם לא תגידו לו את הדברים האלה — זה ייראה כמו מצגת פאוורפוינט:

  1. שום דבר לא נכנס בפייד (התעמעמות) — דברים משנים צורה. כפתור גדל והופך לעמוד הבא.
  2. אין חיתוכים — כל סצנה יוצאת מתוך הקודמת.
  3. משהו קורה על כל ביט של השיר.
  4. דברים קופצים קצת כשהם נוחתים, כמו חפצים אמיתיים.
  5. המצלמה עושה תנועה אחת בכל פעם.
  6. לכל קליק ו-whoosh יש סאונד אמיתי.
  7. הוא בודק את העבודה של עצמו לפני שאתם צופים.

שלב 6: לסגור את זה

כשאתם אוהבים את התוכנית, תגידו לו:

Render the final video in 60fps with motion blur. Put every sound effect exactly on the moment it belongs to, balance the audio, and check every frame for glitches before you show me.
רנדר את הסרטון הסופי ב-60fps עם מושן בלר (מריחת תנועה — הטשטוש הטבעי שמצלמה אמיתית יוצרת על דברים שזזים מהר). מקם כל אפקט סאונד בדיוק ברגע שהוא שייך אליו, אזן את האודיו, ובדוק כל פריים לתקלות לפני שאתה מראה לי.

ואז צפו ותנו לו הערות כמו במאי, לא כמו מתכנת: "החלק הזה איטי מדי", "הפייד הזה נראה זול — תגרום לו לשנות צורה", "תגרום לזום להכות על הדרופ". בדרך כלל זה לוקח 2–3 סבבים וסיימתם.

מה אפשר להבין מזה — במשפט אחדהמאמר מוכר "אפס מאמץ", אבל מה שהוא באמת מראה הוא שכל הידע המקצועי של מעצב תנועה עבר מהידיים — אל הפרומפט. השורות כמו "קפיצים בנוסחה סגורה", "זום במרחב לוגריתמי" ו"8 תת-פריימים" הן לא קישוט; הן בדיוק הידע שסטודיו גובה עליו כסף. מכאן ואילך העמוד מפרק כל אחת מהן עד הסוף — ואחר כך אומר ביושר מה בכותרת שלו מוגזם.
04

יסוד: מה זה בכלל "וידאו"?

לפני כל טריק — מה הדבר עצמו, פיזית.

וידאו הוא רצף של תמונות סטילס שמוצגות מהר מאוד אחת אחרי השנייה. כל תמונה כזו נקראת פריים (frame). העין והמוח לא מספיקים לראות "קפיצות" בין התמונות, ולכן הם מחברים אותן לתנועה רציפה — כמו ספר דפדוף.

FPS (Frames Per Second) = כמה תמונות מוצגות בשנייה. ב-60fps כל תמונה מוצגת ‎1/60 שנייה ≈ 16.7 מילישניות. למה 60 ולא 30? כי רוב המסכים מתרעננים 60 פעם בשנייה, ובתנועה מהירה (כפתור שגדל, מצלמה שנדחפת) ב-30fps כל צעד גדול פי 2 והעין מתחילה להבחין ב"מדרגות". המחיר: פי 2 תמונות לייצר.

החשבון של הסרטון שלמעלה9 שניות × 60 פריימים = 540 תמונות. סרטון האוכל של zero: ‏14.8 שניות × 60 = 888 תמונות. כל אחת מהן היא תמונה שמישהו — או משהו — צריך לצייר.
ספר הדפדוף: קפצו לכל פריים

שימו לב למה שקרה עכשיו: גררתם לפריים 240 — והתמונה הופיעה מיד, בלי "לנגן" את 239 הפריימים שלפניו. זה לא מובן מאליו בכלל, וזה הלב של כל השיטה. בשביל להבין למה, צריך קודם להבין מה מודל שפה עושה טוב.

05

הטריק המרכזי: להפוך בעיה של פיקסלים לבעיה של קוד

למה זה עובד דווקא עם מודל שפה — ודווקא עכשיו.

יש שתי דרכים שונות לגמרי שבהן AI יכול "לעשות וידאו":

דרך א׳: מודל וידאו (Veo, Sora, Flux Video)

המודל מייצר פיקסלים ישירות — הוא "מנחש" איך התמונה הבאה צריכה להיראות לפי סטטיסטיקה של מיליוני סרטונים. מצוין לצילום מציאותי. גרוע בדברים שדורשים דיוק: טקסט נכון, צבע מותג מדויק, כפתור שנשאר אותו כפתור, תזמון למילישנייה. ואי אפשר "לתקן רק את השנייה הרביעית" — מייצרים מחדש והכל משתנה.

דרך ב׳: מודל שפה שכותב קוד (השיטה הזו)

Claude לא מייצר פיקסל אחד. הוא כותב תוכנה — דף אינטרנט — שמציירת כל פריים. הטקסט מדויק כי הוא טקסט אמיתי. הצבע מדויק כי הוא #FF8F3A. ואם השנייה הרביעית לא טובה, משנים שלוש שורות קוד — וכל שאר הסרטון נשאר זהה בבית.

למה זה מתאים דווקא ל-LLM? מודל שפה הוא, בבסיסו, מכונה שכותבת טקסט — וקוד הוא טקסט עם חוקים חדים. כשהופכים "תעשה אנימציה יפה" ל"תכתוב פונקציה שמחזירה את רוחב הכפתור בזמן t", לוקחים את המשימה מהתחום שבו המודל חלש (ניחוש ויזואלי) לתחום שבו הוא הכי חזק (קוד מדויק, ארוך ועקבי). למה זה פרץ דווקא עם Opus 5.5? אין מדידה ישירה של "יכולת מושן", אבל מה שהקהילה מצביעה עליו הוא חוש תזמון וקצב טוב באופן חריג, ויחד איתו שני דברים שהשיטה דורשת: לכתוב ולתחזק קובץ קוד ארוך בלי לשבור אותו, ולראות תמונות.

החלק שכולם מפספסים: לקלוד יש עינייםClaude Code יכול לפתוח קובץ PNG ו"לראות" אותו. לכן הלולאה היא: לכתוב קוד → לצלם כמה פריימים → להסתכל עליהם → לתקן. זה ההבדל בין "פרומפט אחד ותקווה" לבין תהליך שמשתפר את עצמו. וזו גם הסיבה ל"גיליונות המגע" בשלב 1: מודל לא יכול לצפות בוידאו, אבל הוא יכול לקרוא תמונה אחת שיש בה 30 פריימים קטנים. ולמה דווקא 2 פריימים לשנייה? כי ב-120 BPM יש בדיוק ביט כל חצי שנייה — כלומר תמונה אחת לכל ביט.
מודל וידאוקוד שמרונדר (zero)
טקסט ולוגו מדויקיםלא אמיןמדויק לפיקסל
תיקון נקודתי ("רק שנייה 4")מייצרים מחדש הכלמשנים שורה
סנכרון למוזיקהמקורבלמילישנייה
אותה תוצאה בכל הרצהלאכן (דטרמיניסטי)
צילום מציאותי, אנשים, טבעמצויןרק עם פוטג' אמיתי שמביאים

וכאן נכנסת המילה seek(t) — הדרך שבה "תוכנה שמציירת פריים" נבנית כך שזה בכלל יעבוד.

06

seek(t): כל פריים הוא פונקציה טהורה של הזמן

הכלל הטכני הכי חשוב בכל הפרומפטים: "no CSS transitions, no timers, no state between frames".

פונקציה היא מכונה: נכנס ערך, יוצא ערך. פונקציה טהורה היא כזו שאותו קלט תמיד נותן אותו פלט, ושלא תלויה בשום דבר אחר — לא בשעון של המחשב, לא במה שקרה קודם. seek(t) מקבלת זמן t בשניות (למשל 4.2) ומציירת את המסך בדיוק כפי שהוא צריך להיראות ברגע הזה. מכלום. בלי לזכור שום דבר.

film.html — the minimal shape of every film
<div id="dot"></div>
<script>
const spring = (t, w = 12, z = 0.8) => { if (t <= 0) return 0;
  const wd = w * Math.sqrt(1 - z*z);
  return 1 - Math.exp(-z*w*t) * (Math.cos(wd*t) + (z*w/wd) * Math.sin(wd*t)); };

window.seek = (t) => {                 // t in seconds. Nothing else.
  const grow = spring(t - 0.5);         // starts growing at 0.5s
  const w = 44 + (380 - 44) * grow;     // circle (44px) -> pill (380px)
  dot.style.width = w + 'px';
  dot.style.borderRadius = '999px';
};
seek(0);
</script>

למה לא פשוט להפעיל אנימציה רגילה ולהקליט? כי אנימציה רגילה (CSS transition, setTimeout, requestAnimationFrame) קוראת את השעון האמיתי: "עברו 300 מילישניות מאז שהתחלתי, אז אני ב-30%". אבל כשמרנדרים, צילום מסך אחד של Playwright לוקח זמן משתנה — לפעמים 40 מילישניות, לפעמים 200. השעון ממשיך לרוץ בזמן הצילום, וכל פריים "נתפס" ברגע אקראי. כשמנגנים את התמונות ב-60fps קבוע, התנועה מקרטעת, מאיצה ומאטה. עם seek(t) אומרים לדף "תהיה ב-t=4.2", מחכים כמה שצריך, מצלמים — ו-t הבא הוא בדיוק 4.2 + 1/60. הזמן של הסרטון מנותק לגמרי מהזמן של המחשב.

סימולציה: אנימציה עם שעון אמיתי מול seek(t)
שעון אמיתי (טיימר)
seek(t)

מה שראיתם בגרף: הקו של seek(t) ישר לחלוטין (כל פריים מתקדם בדיוק ‎1/60 שנייה), והקו של הטיימר משונן ומזנק — כי כל פריים "נתפס" אחרי זמן צילום שונה. ועוד שלוש מתנות ש-seek(t) נותנת:

הגדרה: async seek(t)בפרומפט של הדפסת התמונות כתוב async seek(t). async = פונקציה שמותר לה "לחכות" לפני שהיא מסיימת — למשל עד שתמונה או פריים של וידאו נטענו. Playwright מחכה שהיא תסיים ורק אז מצלם. בלי זה הייתם מצלמים פריים שבו התמונה עוד לא הופיעה.
07

Easing: למה תנועה "ליניארית" נראית רובוטית

השכבה הראשונה של "טעם" — ואיך היא נראית כמספרים.

נניח שכפתור צריך לזוז מנקודה A לנקודה B בשנייה אחת. הדרך הפשוטה: בכל רגע הוא עבר את אותו אחוז מהדרך שעבר מהזמן (‏50% מהזמן = 50% מהדרך). זה נקרא ליניארי, וזה נראה מכני — כי שום דבר בעולם לא זז ככה. מכונית מאיצה, נוסעת, ומאטה. יד מרימה כוס, מאיצה, ומאטה לפני השולחן.

Easing היא פונקציה שממירה "כמה מהזמן עבר" (u, בין 0 ל-1) ל"כמה מהדרך עברנו" (גם בין 0 ל-1). בהתחלה בלי נוסחאות — תסתכלו על הכדורים:

ארבע עקומות easing זו לצד זו

עכשיו הנוסחה, אחרי שיש תמונה בראש. easeInOutCubic: עבור u קטן מחצי, 4u³ (מתחיל לאט — u³ קטן מאוד כש-u קטן); עבור החצי השני, 1 − (−2u+2)³/2 (סימטרי: מאט בסוף). easeOutCubic = 1 − (1−u)³: מזנק ומאט — מצוין לדברים ש"נוחתים". easeOutExpo מאט בצורה קיצונית — נראה "מהיר ויקר" אבל בשימוש יתר מרגיש תבניתי.

המגבלה של easingעקומה כזו תמיד מסתיימת בדיוק ב-1 ונעצרת. חפץ אמיתי שנוחת לא נעצר ככה — הוא "קופץ" טיפה מעבר ומתייצב. וגרוע מזה: easing יודע ללכת רק מ-A ל-B. מה קורה אם באמצע הדרך היעד משתנה? הוא "קופץ". בשביל שני הדברים האלה צריך קפיץ — הסעיף הבא.
08

קפיצים "בנוסחה סגורה" — הסוד של התחושה הפיזיקלית

"Springs are closed-form step responses" — מה כל מילה אומרת, ולמה בדיוק ככה.

אינטואיציה קודם: דמיינו משקולת שתלויה על קפיץ, ואתם מזיזים בבת אחת את נקודת התלייה 10 ס״מ למטה. המשקולת לא קופצת מיד למקום החדש: היא מאיצה לכיוונו, עוברת אותו קצת, חוזרת, ומתייצבת. שני דברים קובעים איך זה ייראה:

"Step response" = איך הקפיץ מגיב כשהיעד קופץ בבת אחת ("מדרגה") מ-0 ל-1. "Closed-form" = יש נוסחה שנותנת את המיקום בכל זמן t ישירות, בלי לסמלץ צעד-אחרי-צעד. וזה כל העניין: סימולציה צעד-אחרי-צעד צריכה לזכור את המיקום והמהירות מהפריים הקודם — כלומר "מצב" — וזה שובר את seek(t) (אי אפשר לקפוץ לפריים 240 בלי לחשב 239 לפניו). הנוסחה הסגורה נותנת קפיץ שהוא פונקציה טהורה של הזמן.

הנוסחה (לריסון קטן מ-1), סמל אחרי סמל x(t) = 1 − e−ζωt · ( cos(ωdt) + (ζω/ωd)·sin(ωdt) ), כאשר ωd = ω·√(1−ζ²).
• e−ζωt — "המעטפת": דועכת עם הזמן, כמה מהר תלוי בריסון כפול קשיחות. זה מה שגורם לתנודה למות.
• cos ו-sin — התנודה עצמה (הלוך-חזור סביב היעד), בתדירות ωd — התדירות הטבעית "מואטת" קצת בגלל הריסון.
• הצירוף (ζω/ωd)·sin נבחר כך שבזמן 0 המהירות היא בדיוק 0 — הקפיץ מתחיל ממנוחה, בלי "בעיטה".
• החריגה המקסימלית (overshoot) יוצאת בנוסחה: e−πζ/√(1−ζ²). ζ=0.8 → ‏1.5%. ζ=0.6 → ‏9.5%. וזה מה שהפרומפט מתכוון אליו ב-"a tiny overshoot at most": ריסון של בערך 0.75–0.9.
מעבדת קפיצים: עיגול → גלולה (הדוגמה מהמאמר)

"סכום של קפיץ אחד לכל שינוי" — איך היעד משתנה באמצע

בפרומפט: "A value with many targets is the sum of one spring per change, so it stays a pure function of time." סמנו בתיבה "שלושה יעדים" במעבדה. הרוחב מתחיל ב-44, ב-0.0 שנייה מקבל יעד 380, ב-0.35 משנה דעתו ל-200, וב-0.7 ל-300. במקום לזכור "איפה הייתי", מחשבים: ערך = 44 + (380−44)·spring(t) + (200−380)·spring(t−0.35) + (300−200)·spring(t−0.7). כל שינוי מוסיף קפיץ משלו שמתחיל ברגע השינוי. כיוון שכל קפיץ מתחיל במהירות 0 ובמיקום 0, החיבור רציף — אין קפיצה — והתוצאה עדיין פונקציה טהורה של t.

הטריק של "האינדיקטור הנוזלי": שני קצוות, שני קפיצים

בפרומפט ה-UI morph: "The tab indicator's two edges ride different springs, so the leading edge stretches ahead of the trailing one." הפס שמסמן את הטאב הנבחר הוא לא אובייקט אחד שזז — הוא שני מספרים: הקצה הימני והקצה השמאלי. אם הקצה שבכיוון התנועה מקבל קפיץ קשיח יותר מהקצה האחורי, הפס נמתח בדרך ומתכווץ כשהוא מגיע — בדיוק כמו טיפת מים. לחצו על טאבים:

טאבים נוזליים
09

לשנות צורה במקום להעלים: Morph מול Fade

חוק מס׳ 1 ו-2 ב"מה גורם לזה להיראות יקר". למה זה עובד על המוח.

Fade (קרוספייד) = התמונה הישנה נעשית שקופה בזמן שהחדשה מופיעה. באמצע, שתיהן חצי-שקופות אחת על השנייה. Morph = אותו אובייקט עצמו משנה רוחב, גובה, פינות וצבע — עד שהוא הופך לדבר הבא.

אותו מעבר — פעמיים
Fade
Morph (shared element)

למה המוח מעדיף Morph: מערכת הראייה שלנו בנויה לעקוב אחרי אובייקטים לאורך זמן (קביעות אובייקט). כשהכפתור עצמו גדל לעמוד, העין לא מאבדת אותו לרגע — ולכן המוח קורא סיבה-ותוצאה: "לחצתי, והדבר הזה נפתח". בפייד, יש רגע שבו העין רואה שני דברים חצי-שקופים ולא יודעת במה להתמקד; הקשר הסיבתי נשבר והתוצאה מרגישה כמו "שקופית הבאה" במצגת. מכאן "it looks like a powerpoint".

הגדרה: Shared element (אלמנט משותף)בפרומפט: "Every handoff between layers is a shared element: the lime flood carries a copy of the bubble's words, the button carries its own label into the page." כשאובייקט עובר משכבה אחת לאחרת (למשל מהטלפון אל מסך מלא), הוא לוקח איתו את התוכן שלו. בסרטון למעלה: הגלולה עם seek(t) גדלה לכרטיס, והכפתור הכתום שבכרטיס הוא זה שמציף את המסך בדרופ — לא צבע שמופיע משום מקום.
"הצפה" (flood) — שני המספרים מהפרומפטים"A flood must clear the farthest corner and take about 0.35s, or it reads as a flash." עיגול שמתרחב צריך להגיע לרדיוס = המרחק מהמרכז שלו לפינה הרחוקה ביותר של המסך — אחרת נשאר משולש לא צבוע בפינה. ו-0.35 שנייה: מהר יותר, ב-60fps חצי מסך משתנה בפריים אחד או שניים — העין רואה "הבזק" ולא תנועה; לאט יותר, זה כבר לא מרגיש כמו פיצוץ על הדרופ.
10

המצלמה: טרנספורמציה אחת, וזום "במרחב לוגריתמי"

"The camera is one transform on a container... zoom interpolated in log space."

אין באמת מצלמה בדף אינטרנט. "מצלמה" = קופסה אחת שעוטפת את כל העולם, ועליה מפעילים הזזה והגדלה (transform). להגדיל את הקופסה פי 2 סביב נקודה = "זום פי 2 על הנקודה". כל התנועה של המצלמה היא רשימה קצרה של מפתחות [זמן, זום, x, y] וביניהם easing.

למה "לוגריתמי"? זום הוא כפלי: מ-1 ל-2 זה "פי 2", ומ-2 ל-4 זה גם "פי 2" — והעין חווה את שניהם כאותו מרחק. אם מחשבים זום ליניארית מ-1 ל-16, באמצע הזמן הזום הוא 8.5 — כלומר כבר עברנו פי 8.5 מתוך פי 16. העין מרגישה זינוק מטורף בהתחלה וזחילה בסוף. במרחב לוגריתמי (z = a·(b/a)u) באמצע הזמן הזום הוא 4 = ‏√16: מחצית הדרך התפיסתית. המהירות שהעין חווה היא קצב השינוי של ln(z) — וזה בדיוק מה שהגרף מתחת מודד.

זום ×16: ליניארי מול לוגריתמי
ליניארי
לוגריתמי
11

המוזיקה היא השעון: BPM, ביטים, דרופ וסאונד לפי שיא

"Something happens on every beat" — ואיך מחשב "שומע" את הביט.

BPM (Beats Per Minute) = כמה פעימות בדקה. 120 BPM = ‏2 פעימות בשנייה = ביט כל 0.5 שנייה. תיבה (bar) = 4 ביטים. דאונביט = הביט הראשון בתיבה, החזק. דרופ = הרגע שבו אחרי בנייה כל הכלים נכנסים בבת אחת — שיא האנרגיה.

ברגע שיודעים את ה-BPM, כל תכנון הסרטון הופך לטבלה: ביט 0 — זה קורה, ביט 1 — זה. בגלל זה הפרומפטים מדברים בביטים ולא בשניות. בדקתי את המספרים שלו — הם מדויקים:

מחשבון ביטים

איך numpy "שומע" את הקצב — שלב אחרי שלב

הפרומפט אומר "Analyze it with numpy and give me the beat grid". מה קורה מתחת לפני השטח (אני מריץ כאן בדפדפן בדיוק את האלגוריתם הזה, על שיר שמסונתז עכשיו):

  1. מה זה קובץ שמע: רשימה ארוכה של מספרים בין ‎−1 ל-1 — מיקום הממברנה של הרמקול. 22,050 מספרים לכל שנייה.
  2. מעטפת אנרגיה: חותכים לחלונות של 256 דגימות (~12 מילישניות) ומחשבים בכל חלון RMS (שורש ממוצע הריבועים) = "כמה חזק" בחלון.
  3. Onset ("התחלת צליל"): לכל חלון — בכמה הוא חזק יותר מהקודם (רק עליות). תוף שמכה = קפיצה חדה. זה הופך את השיר לרשימת "דפיקות".
  4. אוטוקורלציה: מזיזים את רשימת הדפיקות על עצמה בהיסטים שונים ובודקים מתי היא הכי "מתלכדת" עם עצמה. אם יש דפיקה כל 0.5 שנייה, ההיסט של 0.5 שנייה נותן את ההתאמה הכי גבוהה → 120 BPM. (מעדיפים קצב קרוב ל-120 כי אחרת האלגוריתם עלול לבחור חצי או כפול.)
  5. פאזה: יודעים כל כמה, צריך לדעת מתי — מחפשים את ההיסט ההתחלתי שבו הרשת נוחתת על הכי הרבה דפיקות.
  6. הדרופ: מחשבים אנרגיה ממוצעת לכל ביט ומחפשים את הביט עם הקפיצה הגדולה ביותר ביחס לשני הביטים שלפניו.
זיהוי ביטים ודרופ — אמיתי, על שיר מסונתז
מגבלה אמיתיתעל שיר אמיתי זיהוי אוטומטי טועה לפעמים (חצי-קצב, דרופ מזויף). לכן בפרומפט ה-footage שלו כתוב "Calibrate the grid to the real kick hits" — לכייל את הרשת למכות התוף האמיתיות, ובסקיל הפתוח של Howseen כתוב במפורש "never trust an auto beat grid". הלקח: הרשת היא היפותזה שבודקים, לא אמת.

אפקט סאונד "לפי השיא הנמדד" — הפרט הקטן שעושה את ההבדל

בפרומפט: "Place each so its measured peak, not its file start, lands on the event." לקובץ של "ווש" יש התחלה שקטה שעולה עד שיא — הרגע שהאוזן שומעת כ"הנה!". בקובץ שלנו השיא נמצא 0.42 שנייה מתחילת הקובץ. אם מנגנים את הקובץ ברגע הדרופ, השיא מגיע 0.42 שנייה אחרי הדרופ — כמעט ביט שלם באיחור, והאוזן מרגישה שמשהו "לא נוחת". הפתרון: למדוד איפה השיא, ולהתחיל את הקובץ ב-זמן האירוע − זמן השיא.

ווש על ביט: לפי תחילת קובץ מול לפי שיא
הגדרה: loudnorm ל-‎-14 LUFSLUFS היא יחידה למדידת עוצמה כפי שאוזן אנושית שומעת אותה (לא סתם שיא הגל). loudnorm הוא פילטר של ffmpeg שמביא את כל הסרטון לעוצמה נמדדת קבועה. ‎−14 LUFS הוא יעד נפוץ לפלטפורמות סטרימינג — כך הסרטון לא יישמע חלש מכל השאר בפיד, וגם לא "יוחלש" אוטומטית.
12

מושן בלר מתת-פריימים: למה 4 משאיר "רוחות רפאים" ו-8 לא

"8 subframes per frame blended with ffmpeg tmix" — כל מילה, כל מספר.

הבעיה: מצלמה אמיתית פותחת את התריס לפרק זמן (למשל חצי מזמן הפריים — "תריס 180°"). מה שזז בזמן הזה נמרח בתמונה. זה ה"מושן בלר", והמוח רגיל אליו כל כך שבלעדיו תנועה מהירה נראית "מגמגמת" ומלאכותית. אבל צילום מסך של דפדפן הוא רגע אחד אינסופית קצר — אפס מריחה.

הפתרון: לכל פריים סופי, מצלמים N "תת-פריימים" בזמנים צפופים בתוך חלון התריס, ומחשבים ממוצע פיקסל-פיקסל. ממוצע של 8 מיקומים קרובים של עיגול = עיגול מרוח. ffmpeg tmix הוא בדיוק פילטר שממצע N פריימים רצופים.

למה 4 לא מספיק בתנועה מהירה: המרחק בין שני תת-פריימים הוא מהירות × זמן תריס ÷ N. אם המרחק הזה גדול מהאובייקט עצמו — העותקים לא נוגעים זה בזה, ורואים 4 עותקים שקופים נפרדים: "ghost copies". הפרומפט אומר "use 8 and slow the move down" — שתי הדרכים להקטין את אותו מספר.

מעבדת מושן בלר — ממוצע אמיתי של תת-פריימים

ופקודת ה-ffmpeg — בדקתי אותה בפועל לפני שכתבתי אותה כאן: יצרתי 24 תת-פריימים מלאכותיים ווידאתי שכל פריים יוצא הוא הממוצע של 8 התת-פריימים שלו ולא מערבב שכנים:

verified: each output frame = mean of its own 8 subframes
# 60 fps × 8 subframes = 480 images per second of film
ffmpeg -framerate 480 -i sub_%06d.png \
  -vf "tmix=frames=8,select='eq(mod(n\,8)\,7)',setpts=N/(60*TB)" \
  -r 60 -c:v libx264 -pix_fmt yuv420p -crf 16 video.mp4

tmix=frames=8 ממצע כל פריים עם 7 שלפניו. select='eq(mod(n,8),7)' שומר רק כל פריים שמיני — את זה שהממוצע שלו מכסה בדיוק קבוצה שלמה. setpts מסדר מחדש את חותמות הזמן ל-60fps. גוטצ'ה מהסקיל של Howseen: לעולם לא ממצעים על פני חיתוך קשה — אחרת שתי סצנות נמרחות זו לתוך זו.

13

"It checks its own work": בקרת איכות שקלוד עושה לבד

החוק השביעי — והסיבה שהתוצאה לא נראית כמו "פרומפט אחד ותקווה".

כל פרומפט שלו נגמר ב-<start> שמחייב: לפני כתיבת הסרט המלא — מפת ביטים ו-4 סטילס לאישור. ואחרי הרינדור — שתי בדיקות: פריים אחד לכל ביט, וסריקת "pops".

בדיקה 1: גיליון מגע — פריים אחד לכל ביט

זה בדיוק מה שקלוד "מסתכל" עליו. הנה הגיליון של הסרטון מלמעלה, מחושב עכשיו מאותה seek(t) — פריים בכל חצי שנייה:

Contact sheet: 18 ביטים בתמונה אחת

בדיקה 2: סריקת "pops" — תקלה של פריים אחד

Pop = פריים בודד שבו משהו קופץ למקום לא נכון ומיד חוזר (שכבה שהופיעה מוקדם, משתנה שלא הוגדר). ב-60fps העין קולטת את זה כ"הבהוב" מעצבן, אבל קשה מאוד למצוא אותו בצפייה. האלגוריתם: לכל זוג פריימים רצופים מחשבים הפרש ממוצע בין הפיקסלים. בתנועה חלקה ההפרש משתנה לאט. Pop יוצר זינוק — פי 3 ויותר מהשכנים — בדיוק כמו שכתוב בפרומפט: "frame-difference spikes 3x their neighbours".

סורק pops — מזריקים תקלה ומחפשים אותה
למה זה קריטי דווקא ל-AIמודל שכותב קוד ארוך עושה טעויות קטנות (z-index שנשכח, משתנה שלא אותחל לפני ה-seek הראשון — שתיהן מופיעות ב-gotchas שלו). בדיקות מספריות הופכות "אני חושב שזה טוב" ל"מדדתי, אין זינוקים". זה בדיוק ההבדל בין דמו ויראלי לבין משהו שאפשר למסור ללקוח.
14

הצנרת המלאה: מקובץ HTML ל-MP4

עכשיו, כשכל חלק מוגדר, אפשר לראות את כל השרשרת.

REFERENCEסרטון השראה → 2fps → גיליונות מגע → מבנה ביטים
→
ASSETSשיר (BPM + דרופ), SFX עם שיאים מדודים, תמונות, לוגו
→
BEAT MAPטבלה: ביט → מה קורה, מאיזה אובייקט, איזה סאונד
→
4 STILLSאישור אנושי לפני כתיבת הסרט
→
seek(t)HTML אחד, הכל פונקציה של t
→
RENDERPlaywright × N תת-פריימים → PNG
→
FFMPEGtmix → 60fps · SFX לפי שיא · loudnorm
→
QAפריים לביט · סריקת pops · הערות במאי
render.mjs — the whole renderer (Node + Playwright)
import { chromium } from 'playwright';
const FPS = 60, SUB = 8, SHUTTER = 0.5, DUR = 9;      // seconds
const browser = await chromium.launch({ args: ['--use-angle=d3d11', '--enable-gpu', '--ignore-gpu-blocklist'] });
const page = await browser.newPage({ viewport: { width: 1920, height: 1080 } });
await page.goto('http://localhost:8000/film.html');
await page.evaluate(() => document.fonts.ready);       // never shoot before fonts load
let i = 0;
for (let f = 0; f < DUR * FPS; f++) {
  for (let k = 0; k < SUB; k++) {                       // subframes spread across the shutter
    const t = f / FPS + (SHUTTER / FPS) * ((k + 0.5) / SUB - 0.5);
    await page.evaluate(t => window.seek(t), t);         // may be async (images, video)
    await page.screenshot({ path: `out/sub_${String(i++).padStart(6, '0')}.png` });
  }
}
await browser.close();
מחשבון עלות רינדור

המספרים בכפתורים לקוחים מהרינדורים האמיתיים שלנו בפרויקט: בסביבת הענן (CPU בלבד) הגענו לכ-7 פריימים בשנייה; על RTX 4090 ביתי, 7 workers במקביל, כ-6 לשנייה כל אחד. תת-פריימים מכפילים את העבודה — לכן בטיוטות מרנדרים בלי מושן בלר וברזולוציה נמוכה, ומושן בלר רק במאסטר.

15

אנטומיה של הפרומפט: 6 בלוקים, ולמה כל אחד עובד על LLM

כל הפרומפטים שלו בנויים בדיוק באותו שלד. לחצו על בלוק.

העיקרון שמחבר את כל ששת הבלוקיםמודל שפה, כשלא אומרים לו מה בדיוק, נותן את הממוצע של מה שראה באימון — ובמושן דיזיין הממוצע הוא בדיוק "התבנית": רקע כהה, זוהר, חלקיקים, פייד. הפרומפט של zero לא מוסיף "יצירתיות"; הוא מוחק את האפשרויות הממוצעות (רשימת האסור), קובע את המספרים (צבעים, BPM, שניות, גדלים), מעביר ידע הנדסי (build), חוסך את הבאגים שהוא כבר פגש (gotchas), ומכניס אדם ללולאה בזול (start). זה פרומפט שנכתב כמו מפרט טכני של במאי — לא כמו בקשה.
16

בונוס: פרומפט ה-Fly-over התלת-ממדי

אותו שלד בדיוק — אבל כאן הוא שובר את חוק ה"2D only" שלו, ובכוונה.

הפרומפט המלא + תרגום
original · paste into Claude Code

מה חדש כאן לעומת שלושת הקודמים:

1. מצלמה שמונעת ממהירות — לא ממיקומים

"Drive the camera from one speed curve, never from a position key every half second... Integrate it into the page position." במקום לומר למצלמה "ב-0.5 שנייה תהיי ב-y=300, ב-1.0 ב-y=700", מגדירים כמה מהר היא נוסעת בכל רגע, ומסכמים (אינטגרציה) את המהירות לאורך הזמן כדי לקבל מיקום. למה? כי כשמחברים מיקומים בעקומה חלקה, המהירות בין המפתחות "גלית" — מאיצה ומאטה סביב כל מפתח. העין מרגישה את זה כגלישה שנתקעת וקופצת ("stops or surges in the glide" — ברשימת האסור). כשמתחילים מהמהירות, היא שטוחה בדיוק כמו שהגדרתם.

עקומת מהירות ← מיקום, מול מפתחות כל חצי שנייה

2. עומק שדה (Depth of Field) אסימטרי

"blur radius = 75 × (focus − depth) / depth in front of the focus and 6 × (depth − focus) / depth behind it, capped at 120px". עומק שדה = כמה מהתמונה חד. בעדשה אמיתית, מה שקרוב מאוד לעדשה מיטשטש הרבה יותר מהר ממה שרחוק — וזה מה שנותן תחושת "מקרו", מיניאטורה יקרה. המקדם 75 מלפנים מול 6 מאחור (פי 12.5) יוצר בדיוק את זה: הדף שליד העדשה "נמס", מה שמאחורי הפוקוס כמעט חד.

כמה טשטוש בכל עומק

3. שלושה פרטים הנדסיים שמסבירים "למה זה נראה זול אצלי"

שני דברים שהפרומפט הזה מבקש ושצריך לדעת מראש(1) הוא דורש GPU אמיתי (--use-angle=d3d11) ו-16 תת-פריימים לפריים — כלומר רינדור על מחשב מקומי, לא בענן. 14.5 × 60 × 16 = ‏13,920 צילומים. (2) הוא מתחיל ב"open my link" — הוא מצלם את דף הנחיתה האמיתי שלכם, ולכן כל שינוי בגובה של סקשן בדף מזיז את כל התזמון ("lock the page before timing anything").
17

מה אפשר להבין מזה — כולל מה מוגזם

השיטה מצוינת. הכותרת שלה — פחות.

הטענהמה נכוןמה מוגזם / חסר
"$0"אין צורך ב-After Effects או בסטוק בתשלום.Claude עצמו עולה (מנוי או טוקנים). מקור אחד מדווח ~90K טוקני קלט + 15K פלט לסרט ≈ ‏0.66$ במחיר מחירון — לסרט אחד, לפני סבבי תיקון, רינדור וזמן שלכם.
"0 effort" / "לא יודע שלב 1 במושן"לא צריך ידיים של אנימטור.הפרומפטים מלאים בידע מקצועי עמוק (תריס 180°, זום לוגריתמי, קפיצים אנליטיים, LUFS). הידע לא נעלם — הוא עבר לפרומפט. מי שמשנה את הפרומפטים בלי להבין אותם — שובר אותם.
"פרומפט אחד"פרומפט אחד מניע את התהליך.בפועל: רפרנס → נכסים → מפת ביטים → סטילס → רינדור → 2–3 סבבי הערות. גם יוצר אחר (@rexan_wong) שבדק סרטונים כאלה הגיע למסקנה ש"פרומפט אחד" הוא בעצם תהליך עבודה.
"לא תוכלו להבדיל מ-$15K"הדמואים באמת ברמה גבוהה.אלה דמואים בסגנון אחד שהוא אהב (2D, לבן, אפל). סטודיו מוכר גם אסטרטגיה, קופי ותהליך מול לקוח. הטענה היא שלו, לא נמדדה.
"הכל חינם ב-Mixkit/Pexels"יש שם ספריות חינמיות גדולות.ל-Mixkit יש רישיון נפרד לכל סוג פריט (מוזיקה, SFX, וידאו "חופשי" מול "מוגבל"). ל-Pexels יש מגבלות על אנשים מזוהים ומותגים. חובה לבדוק כל קובץ לפני פרסום מסחרי.
התמונה הגדולההמהפכה כאן היא לא "AI עושה וידאו". היא שעיצוב תנועה הפך להנדסת תוכנה שמונחית על ידי במאי: מפרט, בדיקות, תיקונים נקודתיים, גרסאות. מי שמנצח הוא מי שיודע לכתוב את המפרט (טעם + מספרים + רשימת אסור) ולתת הערות מדויקות. זה בדיוק ההבדל בין הסרטונים של zero לבין "my one prompt video looked mid".
הערה על רמת המאמץ של Opus 5.5בתיעוד הקהילתי של פרומפטי וידאו ממליצים להריץ ב-effort גבוה (high/xhigh) ולא בברירת המחדל. במדד טכני אחר (Terminal-Bench-Science) נמדד שיפור עד xhigh וירידה קלה ב-max. זה לא נמדד על וידאו ספציפית — אבל זו נקודת התחלה סבירה: xhigh לתכנון ולכתיבת הסרט.
18

איך אנחנו מאמצים את זה מעכשיו — YUV.AI Motion Method

מה כבר יש לנו מ-EP01–EP06, מה משתנה, והפרומפט שלנו.

רכיבמה עשינו עד היוםמעכשיו
מנועGSAP timeline מושהה / render(t) (EP01, EP04)אותו רעיון, אבל קפיצים אנליטיים וכלל "אפס מצב" קשיח. GSAP מושהה בסדר — כל עוד אין טיימרים
שעוןמילים של הקריינות (Scribe/Whisper)שני שעונים: קריינות לכתוביות, ביטים למעברים. האירוע המרכזי על הדרופ
מעבריםwhip/slice/flash cuts (EP03)Morph + shared element בסצנות. כתוביות קצרות עם חיתוך קשה נשארות — זו שכבה נפרדת
מצלמהpunch-zoom בכל קאט (EP03 אנכי)תנועה אחת לסצנה, זום לוגריתמי, איפוס מתחת להצפה
סאונדSFX ממוקמים בתחילת אירוע; לפעמים מסונתזים (EP02)SFX אמיתיים, לפי שיא נמדד; ducking מתחת לקריינות; ‎−14 LUFS (כבר יש)
מושן בלראין6–8 תת-פריימים + tmix, רק במאסטר
QAcontact sheets, audit.py לקריאות+ פריים לכל ביט, סריקת pops, בדיקת RTL
תהליך"תעבוד עד הסוף בלי לשאול"שער אחד זול: מפת ביטים + 4 סטילס לפני הסרט המלא (אפשר לאשר אוטומטית אם לא זמין)

הפרומפט שלנו — בשלד של zero, מותאם לעברית, RTL והמותג

YUV.AI motion prompt · paste into Claude Code (Opus 5.5, effort xhigh)
הצעד הבא שהייתי עושהלהפוך את זה לסקיל קבוע (yuv-motion) כך שלא צריך להדביק כלום — ולפני שבונים מאפס, לבחון את howseen-ai/claude-motion-design: סקיל קוד-פתוח (MIT) שבנוי על אותם עקרונות, כולל render.py, סריקת pops וזיהוי דרופ, שנבנה בהשראה ישירה מהפרומפטים של zero. אפשר לקחת ממנו את המנוע ולשים מעליו את השכבה שלנו (עברית, RTL, מותג, מצלמה על ה-4090).
רוצים לראות מה עוד אפשר לבקש?בנינו קטלוג חי של 18 אלמנטים: גרפים של Recharts, ממשק shadcn/ui, אייקונים ולוגואים רשמיים, טיפוגרפיה קינטית, תלת-ממד ב-three.js ואפקטים. כל אחד עם הדגמה שאפשר לגרור בה את הזמן, הסבר מאפס ופרומפט מלא להעתקה, ובסוף בונה פרומפטים שמרכיב סרט שלם.
19

מקורות

כל הקישורים נבדקו כחיים ב-15.10.2026.