Communitygithub.com

heygen-com/hyperframes

Fügen Sie einem vorhandenen Talking-Head-, Interview- oder Podcast-Video zeitlich abgestimmte, gestaltete Grafik-Overlay-Karten hinzu – kinetische Titel, Einblendungen, Datenaufrufe, Zitate, Seitenleisten, Bild-in-Bild – synchronisiert zum Transkript, auf einer 16:9/9:16/4:5 Leinwand Ihrer Wahl; der Clip läuft darunter unberührt.

Was ist hyperframes?

Diese Fähigkeit verpackt ein vorhandenes Talking-Head-Video mit gestalteten Grafik-Overlay-Karten (kinetische Titel, Einblendungen, Datenaufrufe, Zitate, Seitenleisten, Bild-in-Bild) – nicht nur einfache Untertitel. Der ursprüngliche Videoclip läuft unverändert darunter, während die Overlays zeitlich exakt auf das Transkript abgestimmt sind. Der Agent entwirft die Karten (Timing + Inhalt) und schreibt das HTML jeder Karte direkt im Gespräch, dann montiert er eine einzelne Komposition als HTML-Datei und rendert sie via „hyperframes“ zu MP4. Die Transkription erfolgt lokal über Whisper (kein API-Key, keine Drittanbieter), und die Inspizierbarkeit wird durch zwischengespeicherte Dateien wie Metadaten, Transkript, Storyboard und jede Karte als einzelnes HTML-Fragment gewährleistet.

Funktioniert mit~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/heygen-com/hyperframes/tree/main/skills/talking-head-recut

In Ihrer bevorzugten KI fragen

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

Dokumentation

Plugin-Installation: Bevor Setup- oder Aktualisierungsbefehle ausgeführt werden, befolgen Sie die Plugin-Ausführungsregeln, wenn sich diese Fertigkeit innerhalb eines HyperFrames-Plugins befindet. Bei eigenständigen Installationen gelten die unten stehenden Aktualisierungshinweise weiterhin.

Halten Sie diese Fertigkeit zunächst aktuell – bestätigen Sie mit dem Benutzer, bevor Sie Folgendes ausführen: npx hyperframes skills update talking-head-recut. Ein schneller No-op, wenn alles auf dem neuesten Stand ist; andernfalls wird diese Fertigkeit zusammen mit den Kern-Domain-Fertigkeiten, von denen sie abhängt, aktualisiert, bevor Sie darauf vertrauen.

Talking Head Recut

Talking Head Recut nimmt ein lokales Video, das vollständig abgespielt wird, und legt eine Sequenz von zeitgesteuerten, gestalteten Grafikkarten darüber – Titel, Lower Thirds, Datenaufrufe, Zitate, Seitenpanels, Bild-in-Bild – synchron zum Gesagten. Der Agent entwirft die Karten (Timing + Inhalt) und schreibt das HTML jeder Karte direkt im Gespräch, erstellt dann eine einzelne Komposition als HTML und rendert sie mit hyperframes in ein MP4. Es gibt keine feste Archetypen-Liste und keine vorgeschriebene Kartenstruktur – die Überlagerungen ergeben sich aus dem, was das Transkript tatsächlich sagt.

Der Eingang ist /hyperframes. Diese Fertigkeit verpackt einen vorhandenen Talking-Head-Clip mit gestalteten Grafikkarten (Titel, Lower Thirds, Datenaufrufe, Zitate, Seitenpanels, PiP) – nicht mit einfachen Untertiteln (dem gesprochenen Text). Der Clip wird unverändert abgespielt. Jede andere Absicht – einfache Untertitel, eine eigenständige Grafik, ein Video von Grund auf – oder jede Unklarheit → zuerst /hyperframes lesen: die Absichtsebene trifft jede Routenentscheidung.

Grafik-verpackendes Geschwisterkind von embedded-captions. Untertitel fügen die gesprochenen Wörter als lesbare Einblendung hinzu; diese hier fügt gestaltete Grafiken auf dem laufenden Video ein. Einfache Untertitel → embedded-captions. Ein Video von Grund auf erstellen → die Erstellungs-Workflows (product-launch-video / faceless-explainer / …).

Über /hyperframes geroutet, bestätigt die Absichtsebene nur die Eingabe (welcher Clip) und kündigt die Fragen zur Render-Strategie als zurückgestellte Aufgaben an – Seitenverhältnis, Layout, Stilgruppe und Kartenanzahl bleiben bei Schritt 7, wo das untersuchte Filmmaterial und das Transkript die Empfehlungen untermauern; die Run-Shape-Fragen der Schicht finden keine Anwendung. Eine BRIEF.md, falls vorhanden, enthält die bestätigte Eingabe und etwaige Notizen des Benutzers – lesen Sie sie zuerst.

Überprüfbare Zwischendateien im Arbeitsverzeichnis:

  • metadata.json – Dauer / Breite / Höhe / fps
  • audio.mp3 – extrahierte Audio
  • transcript.json – ein flaches Wort-Array [{ text, start, end }, …] (Whisper; keine segments, kein words-Wrapper)
  • storyboard.json – leichter Kartenentwurf (der Plan des Agenten)
  • public/cards/card-XX.html – ein HTML-Fragment pro Karte
  • public/index.html – endgültig zusammengestellte Komposition
  • output.mp4 – gerendertes Video

CLI-Resolution

# hyperframes — Transkription (lokales Whisper) + Rendern des zusammengestellten HTML zu MP4
npx hyperframes --help

Diese Fertigkeit läuft vollständig über die hyperframes-CLI plus systemeigene ffmpeg / ffprobe. Die Transkription erfolgt lokal über Whisper via hyperframes transcribe – kein Drittanbieter-Dienst, kein API-Key, kein ratenbegrenzter Proxy.

Workflow

1. Umgebung prüfen

npx hyperframes doctor          # ffmpeg, Headless-Browser, Render-Abhängigkeiten
# gebündelte Assets bestätigen:
ls "<SKILL_DIR>/assets/fonts" "<SKILL_DIR>/assets/vendor/gsap.min.js"

Erforderlich:

  • ffmpeg / ffprobe (System)
  • <SKILL_DIR>/assets/fonts/*.woff2, <SKILL_DIR>/assets/vendor/gsap.min.js (in dieser Fertigkeit gebündelt, in Schritt 9 in das Arbeitsverzeichnis übertragen)

Für die Transkription ist kein Schlüssel erforderlich – hyperframes transcribe führt Whisper lokal aus (Schritt 4).

Stark empfohlen unter macOS für hyperframes render:

export PRODUCER_BROWSER_GPU_MODE=hardware

2. Arbeitsverzeichnis erstellen

Alle Artefakte befinden sich unter videos/<projektname>/ – die gleiche Konvention wie bei den anderen Video-Workflows (product-launch-video / faceless-explainer / pr-to-video). Das aktuelle Arbeitsverzeichnis bleibt im Workspace-Root; alles unten wird in dieses eine Unterverzeichnis geschrieben.

VIDEO_PATH="/absoluter/pfad/input.mp4"
WORK_DIR="videos/$(basename "$VIDEO_PATH" | sed 's/\.[^.]*$//')"
mkdir -p "$WORK_DIR"

3. Audio und Metadaten extrahieren

# Metadaten — Dauer / Breite / Höhe / fps
ffprobe -v error -select_streams v:0 \
  -show_entries stream=width,height,r_frame_rate \
  -show_entries format=duration -of json "$VIDEO_PATH" > "$WORK_DIR/metadata.json"
# Audio
ffmpeg -y -i "$VIDEO_PATH" -vn -acodec libmp3lame -q:a 2 "$WORK_DIR/audio.mp3"

Ausgaben: metadata.json (width/height/duration lesen; fps = der r_frame_rate-Bruch, ausgewertet, z. B. 30000/1001 → 29.97) + audio.mp3.

4. Transkribieren

npx hyperframes transcribe "$WORK_DIR/audio.mp3" -d "$WORK_DIR" --json --model small.en

Lokales Whisper – kein API-Key, kein Proxy, keine Ratenbegrenzung. Schreibt ein wortbasiertes transcript.json in das Arbeitsverzeichnis (Wort text + start / end-Zeitstempel). Lesen Sie es für die Wort-/Satzzeitabläufe, die in Schritt 6 das Timing der Karten steuern; gruppieren Sie Wörter selbst bei Satzzeichen / Pausen in Sätze, wenn Sie Segment-Chunks benötigen.

Auf Mediendauer begrenzen. Whisper kann das end des letzten Wortes geringfügig über die tatsächliche Clip-Länge hinaus zurückgeben – begrenzen Sie jede endSec der Karte und composition.durationSeconds auf die metadata.json-Dauer, da der Render sonst ein schwarzes Ende nach dem Video anzeigt.

5. Transkript korrigieren

transcript.json ist ein flaches Array von Wortobjekten – [{ "text": "...", "start": s, "end": s }, …] (kein segments-Array, kein words-Wrapper; der pro-Wort-Schlüssel ist text). Lesen Sie es und korrigieren Sie offensichtliche ASR-Fehler:

  • Homophone, Produktnamen, Fachbegriffe, Satzzeichen
  • Bearbeiten Sie den text eines Wortes direkt; behalten Sie seine start/end-Zeitstempel bei
  • Es gibt kein vorab gruppiertes segments-Array – gruppieren Sie Wörter selbst in Sätze (bei terminalen Satzzeichen / Pausen aufteilen), wenn Sie segmentweise Blöcke für das Karten-Timing benötigen

6. Leichtes Storyboard entwerfen (im Chat)

Keine CLI erforderlich. Lesen Sie transcript.json + metadata.json und entwerfen Sie Karten direkt. storyboard.json ist ein agenteninternes Planungsartefakt – kein CLI-Befehl konsumiert es; es existiert, damit Sie über Timing und Inhalt klar nachdenken können, bevor Sie das HTML jeder Karte schreiben. Halten Sie die Struktur konsistent mit dem folgenden Beispiel, damit derselbe Entwurf die Komposition steuern kann, die Sie in Schritt 9 erstellen:

{
  "schemaVersion": 3,
  "composition": {
    "fps": 30,
    "width": 1080,
    "height": 1920,
    "durationSeconds": 121.2,
    "layout": "portrait",
    "themeId": "noir",
    "seed": 42
  },
  "videoTrack": {
    "sourcePath": "input-video.mp4",
    "startSec": 0,
    "endSec": 121.2,
    "bounds": { "x": 0, "y": 0, "width": 1080, "height": 1920 }
  },
  "subtitles": { "enabled": false },
  "cards": [
    {
      "id": "card-01",
      "intent": "Hook mit der ängstlichen Mitternachtsfrage des Sprechers",
      "startSec": 0.5,
      "endSec": 13.0,
      "accentIndex": 0,
      "zone": "fullscreen",
      "contentHints": {
        "kicker": "EINE EHRLICHE FRAGE",
        "title": "Die Gewissensfrage um 23 Uhr",
        "detail": "Sprachnachricht des Kunden von 60 Sekunden: 'Wenn der RMB aufwertet, bedeutet das dann, dass meine USD-Police ein schrecklicher Verlust ist?'"
      }
    }
  ]
}

Erforderliche Kartenfelder:

FeldTypZweck
idstringStabile ID, die im Karten-HTML und in GSAP-Selektoren verwendet wird
intentstringBeschreibung in natürlicher Sprache; wird der Kartensynthese zugeführt
startSec / endSecnumberZeiten in Sekunden (endSec > startSec)
accentIndex0 | 1 | 2 | 3 | 4Welche der 5 Themen-Akzentfarben diese Karte verwendet
zoneenum (siehe unten)Wo auf der Leinwand die Karte platziert wird
contentHintsobjectFreiform-Beutel; der Agent platziert hier kicker/title/detail/data/quote
archetype (optional)stringFreiform-Label, das Sie anhängen können, um sich an ein Kartenmuster zu erinnern; fehlend = Freiform, was der Standard ist
transition (optional)enum: cut | fade | slide | wipeDeklarativer Karten-zu-Karten-Übergang

Fünf zone-Werte:

zoneaufgelöste Grenzenwann verwenden
fullscreenbedeckt die gesamte LeinwandHeldenmomente, große Zahlen, Mantras
whiteboard-areainnenliegender Rand von 40px (oder 45% der Hochkant-Höhe)Dichte Daten / kommentierte Inhalte
lower-thirduntere 30%-BandeAnnotation über sichtbarem Video
side-panelrechte 42% (Querformat) oder untere 40% (Hochkant)Daten auf einer Seite, Video auf der anderen
video-overlayvolle Leinwand, erwartet eine weitgehend transparente KarteAnnotations-Overlays auf randlosem Video

Wenn Sie in Schritt 9 die Komposition zusammenstellen, lösen Sie die zone jeder Karte in Pixel-Grenzen auf dem Karten-Host-Wrapper gemäß obiger Tabelle auf. Die Video-Grenzen werden einmalig auf Kompositionsebene (videoTrack.bounds) festgelegt; um das Video scheinbar "zwischen den Karten zu bewegen", erstellen Sie GSAP-Tweens gegen #video-wrap im <script> der Komposition (siehe Schritt 9).

Keine vorgeschriebenen Kartenrollen, kein vorgeschriebener narrativer Bogen. Karten entstehen aus dem, was das Video tatsächlich sagt – es könnten alles Zitate oder alles Daten sein, es könnte mit einer Zahl oder einer Geschichte beginnen. Lassen Sie das Transkript den Rhythmus bestimmen.

Wie viele Erkenntnisse? – automatisch aus Dauer + Dichte ableiten. Keine feste Obergrenze. Wählen Sie ein Basistempo aus der Videodauer, passen Sie es dann an die Informationsdichte an. Nur die Untergrenze ist festgelegt: mindestens 5 Karten, damit auch kurze Videos Rhythmus haben.

Schritt 1 – Basistempo nach Dauer (die natürliche Sek./Karte für mittlere Dichte):

Video-DauerBasistempo (Sek. pro Karte)Begründung
< 60s (kurzer Clip)6–8sZuschauer erwarten schnelle Schnitte in Kurzform
60s – 3 Min8–12sNormales soziales Tempo
3 – 10 Min12–20sAtempause geben; jede Karte trägt mehr
10 – 30 Min20–35sLangform-Vortrag / Interview-Rhythmus
> 30 Min30–60sEpisodisch, fast kapitelartig

Schritt 2 – Dichtemultiplikator (multipliziert das Basistempo):

Signal im TranskriptMultiplikatorEffekt
Hohe Dichte – viele Zahlen, unterschiedliche Behauptungen, abgehacktes Tempo, aufzählungsartige Aufzählung, jede 1–2 Sätze eine neue Idee× 0.7Schnellere Schnitte, mehr Karten
Mittlere Dichte – gemischter Fluss mit Daten und Erzählung× 1.0Basistempo
Niedrige Dichte – eine ausgedehnte Geschichte, wiederholte Neufassung, langsames reflektierendes Tempo, einzelnes sich entfaltendes Argument× 1.5Langsamere Schnitte, weniger Karten

Schritt 3 – Berechnung:

sekProKarte = BasisTempo × DichteMultiplikator
kartenAnzahl = max(5, round(VideoDauerSek / sekProKarte))

Beispiele (beachten Sie – keine obere Begrenzung; lange Videos erzeugen natürlich mehr Karten):

  • 30s Clip, einzelner Höhepunkt (niedrige Dichte) → 7 × 1.5 = 10.5s/Karte → round(30/10.5)=3 → floor auf 5 Karten
  • 60s reflektierender Monolog (niedrige Dichte) → 10 × 1.5 = 15s/Karte → 4 → floor auf 5 Karten
  • 121s Talking-Head mit reichhaltigen Daten (hohe Dichte) → 10 × 0.7 = 7s/Karte → 17 Karten
  • 5 Min Interview, gemischte Dichte → 16 × 1.0 = 16s/Karte → 19 Karten
  • 10 Min Deep-Dive, hohe Dichte → 16 × 0.7 = 11s/Karte → 55 Karten
  • 30 Min Vorlesung, mittlere Dichte → 28 × 1.0 = 28s/Karte → 64 Karten
  • 1 Std Podcast, niedrige Dichte → 45 × 1.5 = 67.5s/Karte → 53 Karten

Wenn eine Karte länger als etwa 15s hält, planen Sie eine reichhaltigere Karte (Datenblock, mehrstufige Enthüllung, mehrere Unterpunkte, die sich mit gestaffelten Animationen entfalten) – ein statischer Einzeiler wird nach 8s langweilig. Erwägen Sie bei langen Stücken, bei denen viele Karten 30s überschreiten, die Zeitleiste in Unterkompositionen aufzuteilen (eine .html pro Kapitel, bereitgestellt mit data-composition-src), sodass die GSAP-Zeitleiste pro Datei handhabbar bleibt – siehe den HyperFrames-Lint-Hinweis timeline_track_too_dense.

content kann ein einfacher String sein ("Titel: annualisiert 5.69%\nNotizen: ...") oder jede JSON-Form, die die Daten erfasst. Der Agent entscheidet pro Karte über die Form.

Optionaler Abspann. Diese Fertigkeit liefert keinen fest eingebauten Marken-Abspann. Wenn der Benutzer eine Abschlusskarte wünscht, entwerfen Sie selbst eine neutrale (Wortmarke + einzeiliger Slogan, ~1.5-2s, einblenden -> kurzes Halten -> ausblenden), hängen Sie sie an cards[] an und verlängern Sie composition.durationSec entsprechend.

Individual skills in this repo

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

general-video

>

heygen-com/animejs

Anime.js adapter patterns for HyperFrames. Use when writing Anime.js animations or timelines inside HyperFrames compositions, registering animations on window.__hfAnime, making Anime.js seek-driven and deterministic, or translating Anime.js examples into render-safe HyperFrames HTML.

heygen-com/claude-design-hyperframes

Use when running inside Claude Design specifically. Produces a valid, brand-accurate HyperFrames video draft using pre-valid skeletons. For Claude Code / Cursor / Codex, use the `hyperframes` skill instead.

heygen-com/contribute-catalog

Author a new HyperFrames registry block (caption style, VFX block, transition, lower third) or component (text effect, overlay, snippet) and ship it as an upstream PR to the hyperframes repo. Use ONLY when the user wants to CONTRIBUTE to the public catalog — for in-project caption/transition authoring use the `hyperframes` skill, for installing existing registry items use the `hyperframes-registry` skill.

heygen-com/css-animations

CSS animation adapter patterns for HyperFrames. Use when authoring CSS keyframes, animation-delay based timing, animation-fill-mode, animation-play-state, or CSS-only motion that HyperFrames must seek deterministically during preview and rendering.

heygen-com/gsap

GSAP animation reference for HyperFrames. Covers gsap.to(), from(), fromTo(), easing, stagger, defaults, timelines (gsap.timeline(), position parameter, labels, nesting, playback), and performance (transforms, will-change, quickTo). Use when writing GSAP animations in HyperFrames compositions.

heygen-com/hyperframes

Leaves sweep through the frame and part to reveal the headline. HyperFrames block, 1920×1080, 12s, 11 variables.

heygen-com/hyperframes

Render-correctness doctrine for scene-to-scene seams in HyperFrames launch videos — the prerequisites that make transitions composite correctly on the master timeline. Load when assembling the master timeline / index.html, when a white flash appears at a cut or crossfade seam (especially on dark films), when reasoning about why a transition opacity dip shows through, or when verifying the render-side mechanics of how overlapping scene wrappers blend. Covers the opaque stage-ground (#root background) white-flash guard and how the injector overlaps wrappers, holds final frames, ping-pongs tracks, and stamps lint-clean template code onto the master timeline. Does NOT contain the per-transition catalog — see the transition registry for individual transition entries.

heygen-com/hyperframes

The technique catalog: five velocity-matched SEAMS (zoom-through, INVERSE zoom-through, cut-the-curve, waterfall cut, rack-focus blur-cut) plus the two in-scene techniques — waterfall ENTRY (staggered arrival cascades for title cards / segment openers) and the nudge curve (slow-fast-slow three-phase group slides). Covers partial-travel (~12% of frame) velocity matching via mirrored power4 eases, the Z scale-sign rule, size-scaled blur (10px text / 18-20px full-frame), word-by-word staggered cuts, cascade pacing by element weight, and the 10/65/25 slide ratio. Read before authoring any transition, text-beat handoff, kinetic text entry, or group reposition. [depth, zoom, inverse-zoom, scale-sign, mirrored-zoom, rack-focus, pacing, velocity, cut-the-curve, waterfall, stagger, cascade, kinetic-text, title-card, segment-opener, nudge, slide, easing, group-motion, z-depth, motion-graphics, cinematic, transition, blur, directional-continuity]

heygen-com/hyperframes

Glass shards fly in through fog and tile themselves into the headline. HyperFrames block, 1920×1080, 12.16s, 19 variables.

heygen-com/hyperframes

A single feature card orbits a dot sphere on approved Blender camera motion. HyperFrames block, 1920×1080, 10s, 4 variables.

heygen-com/hyperframes

A wireframe portal bursts open, the title comes through, then its letters swap into a second phrase. HyperFrames block, 1920×1080, 8s, 9 variables.

heygen-com/hyperframes

An orbiting camera follows an ice logo as it breaks apart, reforms into two text moments, and fades. HyperFrames block, 1920×1080, 22.5s, 216 variables.

heygen-com/hyperframes

House-style oversized macOS cursor technique for HyperFrames launch videos. Load whenever a scene involves cursors or a pointer-led action, when kicking off a UI scene, when igniting a morph/transition/typing run with a click, or when a scene reads as static, dead, or stale and needs a cheap high-yield source of motion to carry the viewer's eye and segment them out of the stale state. Covers cursor size/look (incl. brand-motif cursors), the off-screen entry law, tip-targeting and the click tap, click-ignites-the-next-beat, and exit / cross-scene handoff.

heygen-com/hyperframes

name: embedded-captions

heygen-com/hyperframes

A chain of bevelled cuboids rides a travelling wave as a content carousel. HyperFrames block, 1920×1080, 6.666666666666667s, 40 variables.

heygen-com/hyperframes

A tiled headline surface flips cell by cell under a sweeping depth field to reveal the rear headline. HyperFrames block, 1920×1080, 8s, 18 variables.

heygen-com/hyperframes

Turn arbitrary text — an article, notes, a topic, a brief — into a faceless explainer video: there is no site or footage to capture, so the visuals are invented per scene (typography, abstract graphics, diagrams, data-viz). Use for topic explainers, concept breakdowns, how-tos, listicles. Not a video built from a website (/product-launch-video — promo or tour). Unclear → /hyperframes.

heygen-com/hyperframes

Import Figma content into a HyperFrames composition — rendered assets, brand tokens, components, storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI), connector-assisted motion when available, and shaders from a connector or native export. Use when the user pastes a figma.com link or asks to bring a Figma design, frame, logo, brand, or animation into a video/composition.

heygen-com/hyperframes

GATEWAY — load FIRST before composing any HyperFrames animation or video. The high-level motion law that makes a multi-scene video feel like ONE continuous camera move instead of a stack of independently-animated slides. Covers the vector law (how you exit determines how you enter, incl. the Z scale-sign rule), the film's current, carrier elements, causal motion, the Seam Gate (build-gate enforcement), the ban on idle wobble (motion must PERFORM, not breathe), stillness-before-climax, and the sustained-motion routes. Routes to the low-level technique skills (cut-the-curve — the full catalog incl. waterfall entry + nudge curve, oversized-cursor, seam-craft). These rules SUPERSEDE generic / upstream motion guidance. [continuity, direction, vector, momentum, seam, transition, ease, performance, idle-motion, narrative-motion, film-grammar]

Verwandte Skills