Communitygithub.com

Kinetic Typography (Bewegte Typografie)

Setzen Sie Text gekonnt in Bewegung – Titelkarten, animierte Untertitel, Lower-Thirds, Callouts und wortweise Einblendungen – mit einem Lesezeit-Budget pro Wort, das sicherstellt, dass der Text lange genug lesbar ist, plus Ein-/Ausblend-Timing, Gewichts- und Größenübergänge sowie Typografie-Hierarchie in Bewegung.

Was ist Kinetic Typography (Bewegte Typografie)?

Diese KI-Fertigkeit (Skill) definiert die Regeln für animierte Typografie in Videoproduktionen, die mit `remotion-compose` und Remotion (React/TypeScript) erstellt werden. Ihr Kern liegt in der Lesbarkeit: Der Skill berechnet zunächst ein striktes Lesezeit-Budget pro Wort, bevor Animationen entworfen werden. Dies geschieht mit einem beiliegenden Node.js-Skript (`type_budget.js`), das die Haltezeit eines Textes in Frames umrechnet, basierend auf einer Lesegeschwindigkeit von ~3,5 Wörtern pro Sekunde. Der Skill legt fest, dass Ein- und Ausblendungen kurz sein müssen (8-15 bzw. ≤12 Frames) und nur eine Animationseigenschaft pro Zeile verwendet werden darf (vorzugsweise `opacity` und/oder `translate`). Er verbietet ausdrücklich Animationen von `font-size`, `width` oder `letter-spacing`, da diese zum Refow führen und den Text unlesbar machen. Die Hierarchie in Bewegung wird durch die Reihenfolge der Einblendungen, Größenkontraste (≥1,6×) und Gewichtsübergänge definiert. Das Ergebnis ist eine ausgefüllte Spezifikation (`motion-type-spec`), die an `remotion-compose` übergeben wird. Der Skill verweist auf verwandte Fertigkeiten (wie `motion-design-principles` für Easing-Kurven und `sound-and-music-sync` für Beat-Synchronisation) und arbeitet mit ihnen zusammen, anstatt deren Aufgaben zu übernehmen.

Funktioniert mit~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/SkillMedev/tutorial-video-studio/tree/main/skills/kinetic-typography

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht Kinetic Typography (Bewegte Typografie)?

Text in Bewegung hat eine Aufgabe, bevor er irgendeine andere hat: Er muss lesbar sein. Der häufigste Fehler bei animierter Typografie ist nicht Hässlichkeit, sondern Text, der vorbeirauscht, bevor der Betrachter das erste Wort zu Ende gelesen hat, oder Text, der sich so stark bewegt, dass das Auge der Bewegung hinterherjagt, anstatt die Wörter zu lesen. Dies ist die Handwerksebene. Sie bestimmt, wie lange jede Zeile stehen bleibt, wie sie ein- und ausgeht und was sich bewegen darf – und übergibt ein konkretes Frame-Budget an remotion-compose, das den eigentlichen React/TypeScript-Code schreibt, der ihn rendert.

Die oberste Regel: Animieren, um das Lesen zu unterstützen, niemals, um zu dekorieren. Bewegung verdient sich ihren Platz nur, wenn sie den Blick lenkt, Hierarchie herstellt oder einen Rhythmus markiert. Alles untenstehende setzt dies durch.

Arbeiten Sie mit einem durchgehenden Beispiel: einer 16:9-Produkttitelkarte mit dem Text "Ship video in one prompt" (5 Wörter), bei 30fps, plus einer animierten Lower-Third-Caption-Spur darunter.

Workflow

Führen Sie diese Schritte in der angegebenen Reihenfolge aus. Wählen Sie keine Einblend-Animation aus, bevor Sie das Halte-Budget kennen – das Budget sagt Ihnen, ob Sie überhaupt Platz für eine Animation haben.

Schritt 1 – Das Lesezeit-Budget pro Wort zuerst berechnen

Text muss lange genug auf dem Bildschirm bleiben, um in ruhigem Tempo gelesen zu werden, plus der Zeit, die seine Ein- und Ausblendung beanspruchen. Budgetieren Sie die Haltezeit, bevor Sie eine Animation auch nur berühren.

  • Die durchschnittliche Lesegeschwindigkeit für Video auf dem Bildschirm ist langsamer als für Print: Nehmen Sie ~3,5 Wörter/Sekunde an (≈ 200 Wörter pro Minute). Die Caption-/Subtitle-Konvention ist ähnlich – unterschreiten Sie niemals ~0,3s lesbare Haltezeit pro Wort.
  • Minimale Haltezeit auf dem Bildschirm = Wörter ÷ 3,5 Sekunden, mit einer Untergrenze von 0,8s für jede Zeile (selbst ein einzelnes Wort braucht einen Moment, um registriert zu werden) und einem +0,3s-Aufschlag für ungewohnte Begriffe, Zahlen oder Namen, die das Auge nicht vorhersagen kann.
  • Die Ein- und Ausblendzeit ist zusätzlich – sie zählt nicht als Lesezeit, da der Text mitten im Übergang nicht vollständig lesbar ist. Gesamtslot = Einblendung + Haltezeit + Ausblendung.

Führen Sie type_budget.js (siehe unten) aus, um eine Textzeile in ein Frame-Budget zu verwandeln. Für die Titelkarte ergibt sich eine Haltezeit von ~43 Frames; das ist die Zahl, die Sie remotion-compose als lesbares Fenster der Sequence übergeben, mit Ein- und Ausblendung obendrauf.

Schritt 2 – Ein-/Ausblend-Timing wählen, das zum Schnitt passt, nicht zu einem Standard

Ein- und Ausblendungen sind Satzzeichen, nicht der Satz selbst. Halten Sie sie kurz und lassen Sie die Haltezeit die Arbeit machen.

  • Einblendung: 8-15 Frames (0,25-0,5s) @ 30fps. Schnell genug, um flott zu wirken, langsam genug, um als bewusst gelesen zu werden. Eine Titel kann das obere Ende nehmen; eine schnelle Caption-Spur das untere Ende.
  • Ausblendung: gleich lang oder kürzer als die Einblendung. Ausblendungen sollten nie verweilen – einmal gelesen, sollte der Text verschwinden. 6-12 Frames.
  • Passen Sie die Ausblendung an das Folgende an. Harterschnitt zur nächsten Szene → Text auf dem Schnitt ausblenden (kein Fade, der Schnitt macht das). Cross-Dissolve → Text über den Dissolve ausfaden. Animieren Sie nie eine aufwändige Ausblendung in einen Harterschnitt; es kämpft gegen den Schnitt. Dies ist die Nahtstelle, an der motion-design-principles (Schnitt und Easing) und diese Fertigkeit aufeinandertreffen – nehmen Sie die Easing-Kurve von dort, wenden Sie sie hier auf den Text an.
  • Staffeln Sie Multi-Element-Einblendungen, animieren Sie sie nicht unisono. Ein Titel + Untertitel liest sich am besten, wenn der Untertitel 4-8 Frames nach dem Titel einblendet, sodass das Auge von oben nach unten geführt wird.

Schritt 3 – Wählen Sie EINE Einblend-Technik pro Zeile und animieren Sie eine Eigenschaft

Je mehr Eigenschaften sich gleichzeitig bewegen, desto schwerer ist der Text mitten im Übergang zu lesen. Animieren Sie standardmäßig nur eine Eigenschaft; kombinieren Sie zwei nur mit Absicht (z. B. Opazität + eine kleine Verschiebung).

  • Fade (opacity 0→1) – am sichersten, immer lesbar, der richtige Standard für Caption-Spuren und Fließtextzeilen.
  • Hochschieben / Gleiten (kleine Verschiebung, 20-60px, kombiniert mit Fade) – verleiht Richtung und Leben; die Arbeitstier für Titel. Halten Sie die Distanz klein – große Slides lassen das Auge der Bewegung folgen, anstatt zu lesen.
  • Wortweise Einblendung – jedes Wort blendet nacheinander mit einem kurzen Versatz ein/hoch. Verwenden für Betonungszeilen und lyrische Stücke, nicht für dichte Captions (das Lesen wird ruckelig). Budgetieren Sie die gesamte Zeile so, dass die Einblendung gut innerhalb der Haltezeit endet.
  • Skalieren / Pop (Feder von 0,85→1) – energisch, gut für ein einzelnes Hero-Wort oder eine Zahl-Callout. Skalieren Sie nie einen ganzen Satz; das Refow ist unlesbar.
  • Mask / Wipe-Einblendung – hochwertig, gerichtet, großartig für eine einzelne Überschrift. Aufwändiger zu bauen; reservieren für die eine Titel, die zählt.

Was auch immer Sie wählen, die Eigenschaft animiert; der Text selbst wird während der Animation nie neu umgebrochen. Animieren Sie opacity und transform (translate/scale/clip) – niemals font-size, width oder letter-spacing auf eine Weise, die die Glyphen neu anordnet, denn layoutgetriebene Animation flackert und ist unlesbar.

Schritt 4 – Gewicht und Größe als Übergänge animieren, nicht als Rauschen

Gewicht und Größe sind die Art und Weise, wie Typografie Betonung in Bewegung ausdrückt – aber sie sind Übergänge zwischen gehaltenen Zuständen, kein kontinuierliches Wackeln.

  • Gewichtsübergang: ein Wort kann von einer helleren zu einer schwereren Schriftstärke übergehen, um Betonung zu setzen (z. B. 400→700 über 8 Frames, während es sich setzt). Verwenden Sie eine echte Variable-Font-Gewichtsachse oder zwei Schnitte der Familie; faken Sie niemals Fett durch Skalieren.
  • Größenübergang: eine Zahl oder ein Schlüsselwort kann einmal skaliert werden, um Hierarchie zu beanspruchen, und dann halten. Scale-and-hold, nicht scale-and-pulse. Ein sich wiederholender Puls auf Text liest sich wie ein defekter Render, nicht wie Betonung.
  • Diese sind Akzente. Höchstens ein Gewichts-/Größenakzent pro Zeile, auf dem einen wichtigsten Wort. Wenn alles betont wird, betont nichts.

Schritt 5 – Typografie-Hierarchie in Bewegung setzen (Reihenfolge, Größe, Gewicht, Timing)

Hierarchie in Bewegung besteht aus vier Signalen; setzen Sie sie zusammen ein, damit das Auge weiß, wohin es schauen soll und in welcher Reihenfolge.

  1. Reihenfolge der Einblendung – das zuerst eingeblendete Element wird zuerst gelesen. Beginnen Sie mit der Überschrift, gefolgt vom Untertitel, enden Sie mit dem CTA.
  2. Größenkontrast – halten Sie ein klares Verhältnis (Überschrift ≥ 1,6× Untertitel). Bewegung rettet keine schwache statische Hierarchie.
  3. Gewichtskontrast – schwerer = wichtiger. Maximal zwei Gewichte gleichzeitig auf dem Bildschirm.
  4. Timing – die wichtigste Zeile bekommt die längste Haltezeit und, wenn überhaupt, die Einblendung mit der meisten Präsenz. Die unwichtigste (ein persistentes Lower-Third, ein Wasserzeichen) animiert nach ihrer einmaligen Einblendung nicht weiter.

Füllen Sie die motion-type-spec-Vorlage (unten) mit dem Budget pro Zeile, der Technik und der Hierarchie-Rolle. Diese gefüllte Spezifikation ist die Übergabe an remotion-compose.

Schritt 6 – Entscheiden, wo NICHT zu animieren

Der fortgeschrittene Zug ist Zurückhaltung. Bevor Sie finalisieren, entfernen Sie Animationen von allem in der "Do NOT"-Liste unten. Eine Titel mit einem gut budgetierten Hochschieben liest sich besser als eine, bei der jedes Wort etwas tut.

Qualitätsstandard

Eine fertige Motion-Type-Spezifikation ist nur dann A+, wenn alles hält:

  • Jede Zeile erfüllt das Lesezeit-Budget – Haltezeit ≥ max(0,8s, Wörter ÷ 3,5 + Begriffs-Aufschlag), berechnet von type_budget.js, mit Ein-/Ausblendung oben drauf, niemals davon abgezogen.
  • Jede Zeile animiert eine Eigenschaft (zwei nur mit expliziter Absicht), und keine Zeile ordnet ihre Glyphen während der Animation neu – nur opacity/transform.
  • Einblendungen sind 8-15 Frames, Ausblendungen ≤ Einblendung, und die Ausblendung ist an den folgenden Schnitt angepasst (Cut vs. Dissolve), nicht als Standard belassen.
  • Hierarchie lesbar in der Reihenfolge: Einblend-Reihenfolge, Größenverhältnis (≥1,6×) und Gewicht verweisen alle auf dieselbe wichtigste Zeile.
  • Höchstens ein Gewichts-/Größenakzent pro Zeile, und nichts loopt oder pulsiert.
  • Die Spezifikation nennt die Frame-Nummern (Einblendung beginnt, Haltestart, Halteende, Ausblendung endet), sodass remotion-compose Sequences schreiben kann, ohne zu raten.

Nicht tun

  • Liefern Sie keinen Text aus, der kürzer als das Lese-Budget hält – der häufigste Fehler bei kinetischer Typografie. Wenn nicht genug Platz zum Halten ist, kürzen Sie Wörter, nicht die Haltezeit.
  • **Animieren Sie nicht font-size, width, letter-spacing oder etwas, das Glyphen neu anordnet; das Layout-Thrashing ist unlesbar. Skalieren Sie stattdessen über transform.
  • **Animieren Sie nicht mehr als eine oder zwei Eigenschaften pro Zeile, und animieren Sie niemals eine dichte Caption wortweise – das Lesen wird ruckelig.
  • **Loopen, pulsen, wiederholen Sie nicht mehrmals oder halten Sie Text nicht in kontinuierlicher Bewegung; Bewegung, die nicht aufhört, kann nicht gelesen werden.
  • **Animieren Sie nicht jedes Element. Lower-Thirds, Wasserzeichen, persistente Labels und rechtliche Texte bekommen eine Einblendung und bleiben dann stehen. Animieren Sie Fließtext-/Caption-Text nicht mit aufwändigen Einblendungen – Fade ist korrekt.
  • **Entscheiden Sie hier nicht über die zugrundeliegende Easing-Kurve oder den Szenenschnitt – das ist Aufgabe von motion-design-principles. Schreiben Sie hier nicht die Remotion-Komponente – übergeben Sie die gefüllte Spezifikation an remotion-compose.
  • **Erfinden Sie nicht den Text. Animieren Sie die Wörter, die der Benutzer Ihnen gab; wenn eine Zeile zu lang zum Halten ist, bitten Sie ihn, sie zu kürzen.

Verwandte Fertigkeiten – übergeben, nicht übernehmen

Diese Fertigkeit besitzt Text-Timing und das Lesen. Angrenzende Entscheidungen gehören zu Geschwistern; ziehen Sie sie heran, wiederholen Sie nicht deren Arbeit hier.

  • motion-design-principles – der Schnitt, das Tempo von Nicht-Text-Bewegung und die Easing-Kurve (die Beschleunigungsform). Nehmen Sie die Kurve von dort und wenden Sie sie hier auf den Text an.
  • video-storyboard – welche Szenen und Einstellungen existieren und in welcher Reihenfolge. Holen Sie sich zuerst die Szenenliste; diese Fertigkeit timt nur den Text innerhalb einer Szene.
  • motion-color-and-light – die Farbe, der Kontrast und die Lesbarkeit des Texts vor seinem Hintergrund. Wenn Text aufgrund von Farbe schwer lesbar ist, ist das Aufgabe dieser Fertigkeit, nicht einer Timing-Änderung hier.
  • product-demo-director – die gesamte Erzählung und Schlaglist eines Produktdemos. Es entscheidet, was die Titel sagen und wann sie erscheinen; diese Fertigkeit timt wie jede animiert.
  • sound-and-music-sync – Text-Einblendungen auf einen Beat oder Downbeat legen. Übergeben Sie die holdStart@ / Einblend-Frame-Nummern, sodass eine Einblendung an den Track gesnappt werden kann.
  • social-video-formatter – Größenänderung und Zuschneiden der Caption-Spur für eine Plattform (9:16 TikTok, 1:1 Feed, Sicherheitsbereiche). Autoren Sie das Timing einmal hier; lassen Sie diese Fertigkeit es pro Plattform umfließen.

Rechner

In sich geschlossenes Node-Skript. Speichern als type_budget.js und ausführen mit node type_budget.js. Keine Abhängigkeiten. Bearbeiten Sie das lines-Array mit Ihrem tatsächlichen Text; es gibt das Frame-Budget für jede Zeile bei Ihrer fps zurück.

// Kinetic-type reading budget. Edit lines + fps, then: node type_budget.js
const fps = 30
const WORDS_PER_SEC = 3.5   // comfortable on-screen read (~200 wpm)
const FLOOR_SEC = 0.8       // minimum hold for any line, even one word
const TERM_TAX_SEC = 0.3    // per line containing a number/name/jargon term
const ENTRANCE_FRAMES = 12  // 0.4s entrance
const EXIT_FRAMES = 9       // exit <= entrance

const lines = [
  { text: 'Ship video in one prompt', hasUnfamiliarTerm: false }, // title card
  { text: 'Rendered headless in 4K',  hasUnfamiliarTerm: true  }, // caption: '4K'
  { text: 'Go',                       hasUnfamiliarTerm: false }, // hero word
]

const sec2frames = (s) => Math.ceil(s * fps)

function budget(line) {
  const words = line.text.trim().split(/\s+/).length
  const raw = words / WORDS_PER_SEC + (line.hasUnfamiliarTerm ? TERM_TAX_SEC : 0)
  const holdSec = Math.max(FLOOR_SEC, raw)
  const holdFrames = sec2frames(holdSec)
  const totalFrames = ENTRANCE_FRAMES + holdFrames + EXIT_FRAMES
  return { words, holdSec, holdFrames, totalFrames }
}

let cursor = 0
for (const line of lines) {
  const b = budget(line)
  const enterIn = cursor
  const holdStart = enterIn + ENTRANCE_FRAMES
  const holdEnd = holdStart + b.holdFrames
  const exitOut = holdEnd + EXIT_FRAMES
  console.log(`"${line.text}" (${b.words}w)`)
  console.log(`  hold:        ${b.holdSec.toFixed(2)}s = ${b.holdFrames} frames`)
  console.log(`  total slot:  ${b.totalFrames} frames (enter ${ENTRANCE_FRAMES} + hold ${b.holdFrames} + exit ${EXIT_FRAMES})`)
  console.log(`  Sequence:    enter@${enterIn}  holdStart@${holdStart}  holdEnd@${holdEnd}  exitOut@${exitOut}`)
  cursor = exitOut
}
console.log(`Total track length: ${cursor} frames (${(cursor / fps).toFixed(2)}s)`)

Beispiel-Ausgabe

"Ship video in one prompt" (5w)
  hold:        1.43s = 43 frames
  total slot:  64 frames (enter 12 + hold 43 + exit 9)
  Sequence:    enter@0  holdStart@12  holdEnd@55  exitOut@64
"Rendered headless in 4K" (4w)
  hold:        1.44s = 44 frames
  total slot:  65 frames (enter 12 + hold 44 + exit 9)
  Sequence:    enter@64  holdStart@76  holdEnd@120  exitOut@129
"Go" (1w)
  hold:        0.80s = 24 frames
  total slot:  45 frames (enter 12 + hold 24 + exit 9)
  Sequence:    enter@129  holdStart@141  holdEnd@165  exitOut@174
Total track length: 174 frames (5.80s)

Lesen Sie es: Die 5-Wort-Titel benötigt 43 Frames gehaltener, vollständig lesbarer Zeit – und das zusätzlich zu den 12 Frames Einblendung und 9 Frames Ausblendung, also beträgt ihr realer Slot 64 Frames. Die 4-Wort-Caption sieht kürzer aus, enthält aber eine Zahl (4K), daher drückt der Begriffs-Aufschlag die Haltezeit auf 44 Frames – etwas länger als der Titel trotz weniger Wörter. Das einzelne Wort Go erreicht die 0,8s-Untergrenze: Sogar ein Wort bekommt einen Moment. Diese enter@ / holdStart@ / holdEnd@ / exitOut@ Frame-Nummern fallen direkt in remotion-compose als <Sequence from={…} durationInFrames={…}>-Grenzen – keine Vermutung mehr, wie lange Text stehen bleiben soll.

Vorlage: motion-type-spec

Füllen Sie dies und übergeben Sie es an remotion-compose. Ein Block pro Textzeile.

MOTION TYPE SPEC. [FILL: composition name].  fps: [FILL]  canvas: [FILL: 1920x1080 / 1080x1920]

LINE 1
  Copy (verbatim):     [FILL]
  Hierarchy role:      [FILL: headline / subtitle / caption / lower-third / CTA / hero-word]
  Size:                [FILL]px        Weight: [FILL: 400 / 700 / variable axis]
  Reading budget:      [FILL]w -> hold [FILL]s = [FILL] frames   (from type_budget.js)
  Entrance:            [FILL: fade / rise+fade / word-by-word / pop / wipe]  over [FILL: 8-15] frames
  Exit:                [FILL: fade / cut-on-edit]  over [FILL: <=entrance] frames
  Property animated:   [FILL: opacity / opacity+translateY / scale]   (NO font-size/width)
  Accent (max one):    [FILL: none / weight 400->700 on word "X" / scale-up on "X"]
  Frame numbers:       enter@[FILL]

…

[truncated for translation]

Individual skills in this repo

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

Captions From Transcript

Produce an accurate, properly timed caption track (SRT or WebVTT) from a video

Motion Design Principles

The craft layer for motion: pick the right easing (ease-in / ease-out / ease-in-out / spring), get timing and spacing right, build the anticipation→action→follow-through arc, and apply Disney

Narration Script

Write the spoken voiceover for a tutorial or demo - the actual words, phrased for the ear and synced one-instruction-per-action to what is on screen, with a pacing budget and a confident, jargon-checked tone. Use when someone says

Product Demo Director

Direct the craft of putting a real software UI on screen - cursor choreography, zoom/pan/callout language, screen-recording vs recreated-UI, and making state changes legible with highlights, focus pulls, and slow-downs. Use when filming or recreating an app for a product demo, feature walkthrough, onboarding clip, or release reel and asking

Remotion Compose

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

Remotion Render

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

Remotion Setup

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

Screencast Capture

Capture clean raw screen and camera footage for a tutorial or product demo - choosing the recorder (macOS Screenshot toolbar, QuickTime, OBS, Windows Game Bar), setting resolution / frame-rate / cursor / microphone, prepping a distraction-free stage, and recording in retakeable segments. Use when someone says

SkillMedev/tutorial-video-studio

Plan a product demo, feature announcement, or launch video as a beat sheet and shot list BEFORE animating - hook in the first 3s, problem, reveal, proof, CTA - with target duration and pacing per scene type, output as a JSON scene plan that remotion-compose consumes directly. Use when someone says

Social Video Formatter

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

Sound and Music Sync

Score a video like an editor: beat-match cuts to the music, land SFX on transitions, pace the voiceover so it breathes, source royalty-free tracks safely, and duck the music so the VO sits clearly on top. Use when adding music, sound effects, or voiceover to a video, when asked to

Verwandte Skills