Was macht one-take?
Frag alles einmal. Erstelle dann den gesamten Film, jedes Format, geprüft, ohne weitere Fragen.
Dieses Skill orchestriert; HyperFrames übernimmt das Rendering. Es benötigt die HyperFrames-Skills (hyperframes, hyperframes-core, hyperframes-animation) und funktioniert besser mit hyperframes-registry, hyperframes-keyframes, media-use, figma und humanizer. Wenn hyperframes-core fehlt, stoppe und gib die Installationszeile aus: npx skills add heygen-com/hyperframes.
SKILL_DIR unten bezieht sich auf den Ordner dieses Skills. Skripte sind reines Node (≥ 22) plus ffmpeg, ohne Installationen.
Der Vertrag
- Eine Aufnahmerunde. Erkenne zuerst, frage dann einmal (Phase 1). Stelle nach den Antworten keine weiteren Fragen. Die einzige Ausnahme ist ein hartes Hindernis, das du nicht standardmäßig umgehen kannst, z. B. eine Datei, die nicht existiert, oder eine Site, die das Laden verweigert. Frage dann diese eine genaue Frage und fahre fort.
- Die Aufnahmeantwort autorisiert die Renderings. Sie autorisiert nicht die Veröffentlichung, das Hochladen, das Posten, das Pushen oder das Herunterladen von irgendetwas, das der Benutzer nicht genannt hat. Frage danach separat, nach dem Bericht.
- Fakten werden berechnet, niemals getippt. Jede Zahl auf dem Bildschirm stammt aus
facts.jsonoder einer vom Benutzer angegebenen Quelle. Erfinde niemals Statistiken, Zitate, Logos oder Testimonials. - Das Bild schreibt den Ton. Jede Bewegung, die gehört werden soll, ruft
T.cue()in dem Moment auf, in dem sie stattfindet. Die Partitur wird aus diesen Cues aufgebaut, sodass Ton und Bild nicht auseinanderdriften können. - Fertig bedeutet QA-bestanden. Eine Datei wird ausgeliefert, wenn
qa.mjssie besteht, oder wenn ein Fehler im Bericht mit dem Grund, warum er nicht in zwei Durchgängen behoben werden konnte, festgehalten wird.
Phase 0: erkennen (leise, vor dem Fragen)
node SKILL_DIR/scripts/detect.mjs <subject paths…> --out /tmp/one-take-detect.json
- Führe es im aktuellen Repository und in jedem Pfad oder jeder Site aus, die der Benutzer erwähnt hat.
- Es gibt pro Quelle zurück: README-Titel und -Untertitel, Git-Spanne und Commit-Anzahl, Logos, Schriftdateien und -familien, Farb-Token. Es gibt auch die Toolchain zurück: node, ffmpeg, gecachte
hyperframes-Version, Chrome, heygen CLI und ob Musik-API-Schlüssel gesetzt sind. - Wenn
take.jsonbereits im Zielprojekt existiert, handelt es sich um eine Wiederaufnahme. Lese es, überspringe die Aufnahme und fahre mit der ersten Phase fort, deren Ausgabe fehlt.
Phase 1: die Aufnahme (eine Nachricht, eine Runde)
Lies references/intake.md. In einer Nachricht:
-
Zeige das Aufnahmeblatt: jedes Feld, entweder aus der Erkennung vorausgefüllt oder mit einer empfohlenen Voreinstellung, jeweils in einer Zeile. Der Benutzer ändert nur, was falsch ist.
-
Rufe AskUserQuestion einmal auf mit den vier Entscheidungen, die die Arbeit am meisten verändern: Formate (Mehrfachauswahl), Länge, Ton und Stimme/Untertitel. Der Fragetext sagt ihnen, sie sollen alle Blattänderungen als Notiz zu einer beliebigen Antwort hinzufügen.
Wenn AskUserQuestion nicht verfügbar ist, setze dieselben vier als nummerierte Auswahlmöglichkeiten an das Ende des Blattes und bitte um eine Antwort.
Dann, ohne erneut zu fragen:
- Schreibe
take.json(Schema:references/take-json.md). Sprachcodes, Format-IDs, der Slug undoutput.namemüssen[a-z0-9][a-z0-9._-]{0,63}entsprechen (Groß-/Kleinschreibung beliebig, kein..), sonst stoppt der Lauf. Lassehyperframesweg, es sei denn, der Benutzer fragt danach: Die Standardversion ist inscripts/lib/platforms.mjsfestgelegt (HF_VERSION, 0.8.223). - Schreibe eine HyperFrames
BRIEF.mdmitworkflow: general-video,flow: automation,storyboard: no. Dies bedeutet, dass ein späterer/hyperframes-Aufruf dieses Projekt fortsetzt, anstatt erneut zu befragen. - Halte die Antworten im BRIEF.md-Text fest: Formate, Ton, Untertitel, Plattformbeschränkungen.
Phase 2: Quellen
- Git-Fakten. Führe
node SKILL_DIR/scripts/facts.mjs --repo <path> [--repo …] [--since …] --out <project>/facts.jsonaus. Es sammelt Commits, Spanne, aktive Tage, längste Serie, geschäftigsten Tag, Zeilen nach Sprache, hinzugefügte und entfernte Zeilen sowie die häufigsten Commit-Wörter, plus den Betreff des ersten und letzten Commits. Autorennamen und E-Mails werden nie aufgezeichnet. Verwende nur die Fakten, die der Benutzer erlaubt hat. - Websites. Für eine anzuzeigende URL führe
npx hyperframes capture <url> -o <project>/src/assets/capaus. Stoppe beiok:falseoderBLOCKED.md: das ist ein Hindernis. - Referenzen. Schreibe für jede Referenz eine Zeile in STORYBOARD.md darüber, was du daraus übernimmst: Tempo, Typ, Farbe, ein Übergang. Für einen Figma-Link führe zuerst
/figmaaus. - Branding. Kopiere das Logo-SVG und die Schriftdateien in
src/assets/brandundsrc/assets/fonts, deklariere sie intake.jsonunterfontsund hebe die Farb-Token in das:rootder Vorlage.
Phase 3: Regie und Storyboard
Lies references/direction.md, bevor du etwas Visuelles schreibst. Schreibe STORYBOARD.md:
- Regie, ein Absatz: die eine Idee, die charakteristische Bewegung, die Typenkombination, die Palette, die Referenz, von der jede Wahl stammt.
- Tempo zuerst. Wähle bpm so, dass die Ziellänge eine ganze Anzahl von Takten (4/4) ergibt. Gib dann jeder Szene eine Länge in Takten, eine
energy(0–1, die das Arrangement der Partitur antreibt) und wie sie eintritt (in). - Szenentabelle: id, Takte, Energie, was auf dem Bildschirm zu sehen ist, Bewegung, Cues, Text.
- Die letzte Szene ist die Endkarte,
end: true, mit genügend Takten, um sie vollständig für 3 s oder mehr zu halten. - Markiere Szenen, die in eine gekürzte Version können, als
optional(1–9, höhere zuerst).
- Die letzte Szene ist die Endkarte,
- Text kommt in
copy/<lang>.json, ein Schlüssel pro Textzeile. Führe es durch/humanizer, falls verfügbar. Halte Überschriften kurz genug, um sie in der Zeit, in der sie auf dem Bildschirm sind, zweimal lesen zu können.
Phase 4: Bauen
- Kopiere
SKILL_DIR/templates/index.htmlnach<project>/src/index.htmlund schreibe seine Szenen aus dem Storyboard neu. - Lese
references/kit.md(dieT.*-API) und die nicht verhandelbaren Regeln vonhyperframes-core. Für Bewegungen lese die Regeln und Baupläne vonhyperframes-animation. Bevor du einen benannten Effekt von Hand baust, durchsuchehyperframes-registry.
Regeln, die jedes Format und die QA ehrlich halten:
- Szenen sind
<section class="clip scene" data-scene="id">der obersten Ebene, niemals verschachtelt, niemals mit Inline-style. - Größe in Design-Px über
--u(1 % der kurzen Seite). Lesbarer Text ist nie unter--t-min(3.4u ≈ 37 px bei 1080). - Halte lesbaren Text innerhalb von
.safe, den Plattform-UI-Bändern für dieses Format. - Ordne pro Format mit
.f-tall,.f-wide,.f-square,.f-portrait-Regeln neu an, nicht durch Skalieren eines Layouts. - Räume die Wörter einer Szene, bevor der Übergang der nächsten Szene sie abdeckt (
T.sink/T.leavenahes.end). Text unter einer Aufdeckung fällt beim Layout-Check durch. - Jede Szene bewegt sich:
T.driftdie Kamera darüber. Nichts steht still vor der Endkarte. T.endCard(t)in dem Moment, in dem die Endkarte vollständig ist. Der letzte Frame muss sie noch zeigen: kein Ausblenden auf Schwarz über die Haltezeit.- Cue alles, was gehört werden soll (
references/sound.mdlistet die Kategorien auf). Die meisten Kit-Helfer cunnen standardmäßig; übergibcue: false, um einen Moment still zu halten. - Zahlen stammen von
T.factsoder dem Text.T.countbenötigt eine endliche Zahl und wirft ohne eine, sodass eine fehlende Tatsache die Sonde stoppt, anstatt eine erfundene Zahl auf den Bildschirm zu setzen. - Beende das Skript mit
window.__timelines["main"] = T.done();.T.done()registriert die Timeline einmal, nachdem jeder Tween hinzugefügt wurde, und die Vorlage wiederholt sie in dieser Zeile. Baue zuerst alle Tweens, nicht innerhalb eines font-ready- oder anderen asynchronen Callbacks: HyperFrames lint lehnt eine frühe Registrierung ab.
Phase 5: Entwurfsdurchlauf
node SKILL_DIR/scripts/run.mjs <project> --draft
Dies läuft pro Format × Sprache: Bauen → Sondieren (Cues, Textgrößen, Endkarten-Markierung aus Headless Chrome) → Vertonung → hyperframes check → Entwurfs-Rendering → Enkodierung → QA → REPORT.md.
HyperFrames läuft mit der Version, die als HF_VERSION in scripts/lib/platforms.mjs festgelegt ist (0.8.223), oder mit hyperframes aus take.json. Der erste Lauf holt es mit npx, und der Bau holt GSAP 3.14.2 einmal von jsDelivr in ~/.cache/one-take/. Die GSAP-Datei wird nach dem Herunterladen und jedes Mal, wenn sie aus dem Cache gelesen wird, gegen einen festgelegten sha256 überprüft. Eine Datei, die nicht übereinstimmt, wird nie verwendet: Ein fehlerhafter Download wird nicht zwischengespeichert, und eine fehlerhafte Cache-Datei wird gelöscht und der Bau stoppt. Führe es erneut aus, um eine frische Kopie zu holen.
Dann:
- Öffne jedes
*.sheet.jpg-Kontaktblatt und sieh es dir an. - Lese
REPORT.md. - Behebe Fehler und alles, was falsch aussieht: Überlappungen, Beschnitte, tote Frames, zu kleiner Text, ein Schnitt, der nicht landet.
Es gibt maximal zwei Korrekturdurchläufe. Jeder führt run.mjs --draft erneut aus; verwende --only <format>-<lang>, um nur das Geänderte erneut auszuführen.
Phase 6: Finale
node SKILL_DIR/scripts/run.mjs <project>
Dies ist das Render in voller Qualität für jede Ausgabe. Die Liefergegenstände landen in renders/ (oder output.dir). Jede Ausgabe erhält:
<name>.mp4: x264 CRF 12, AAC 320k, faststart.cover.jpg: die Endkarte.sheet.jpg.qa.json
Partitur-Stems und marks.json werden in out/<format>-<lang>/score/ aufbewahrt.
Phase 7: Bericht
Antworte mit:
- der Ausgabetabelle aus
REPORT.md(Datei, Größe, Länge, Urteil) - dem Kontaktblatt des Hauptformats
- einer Zeile zum Ton
- offenen Punkten, falls vorhanden
Biete die nächsten Schritte an, ohne sie auszuführen: Text veröffentlichen, weitere Sprachen, eine gekürzte Version, Veröffentlichung. Nichts wird gepostet oder gepusht, es sei denn, der Benutzer bittet darum.
Ton-Modi
sound.mode | Was passiert |
|---|---|
score (Standard) | score.mjs synthetisiert Bett, Band und Drums aus den Szenen-Energien auf dem Taktgitter: Akkordplan aus mood und key, sidechained an die Kick, Steigerungen in jeden Aufschwung, ein Impact bei jeder Ankunft. Der FX-Stem wird aus den Cues aufgebaut, auf den Akkord unter jedem abgestimmt und von der Stelle auf dem Bildschirm panoramiert. Gemixt, limitiert, dann Two-Pass-Loudnorm auf lufs (Standard −14) mit True Peak −1.5. Original, also nichts zu lizenzieren. |
track | Die Datei des Benutzers. Ermittle bpm und ersten Beat mit score.mjs --analyze <file> (oder npx hyperframes beats), setze bpm darauf und lege die Szenen auf seine Takte. Der FX-Stem wird darüber abgespielt. |
library | /media-use resolve --type bgm (benötigt die heygen CLI) oder seine Generatoren. Das Ergebnis wird als track verwendet, und seine Lizenz wird in sound.licence aufgezeichnet. |
none | Überhaupt kein Audio-Element. |
Für einen Voiceover platziere ihn in src/assets/audio/vo.wav, von Kokoro über npx hyperframes tts oder die Aufnahme des Benutzers. Die Partitur senkt die Musik darunter (duckDb, Standard −9). Für Untertitel zeitliche sie von npx hyperframes transcribe vo.wav --model <model>. Eingebrannte Untertitel sind Szenentext, der innerhalb von .safe bei --t-cap oder größer platziert wird. Für Sidecar-Untertitel schreibe <name>.srt aus demselben Transkript neben jede Ausgabe.
Dateien
scripts/detect.mjs,facts.mjs: Was vorhanden ist, und die Zahlenscripts/build.mjs: Eine Quelle →out/<format>-<lang>/HyperFrames-Projekte. Füllt Größen, Safe-Bänder und Szenen-Timing, fügtTAKEein (Text, Fakten, Szenen), liefert das Kit und GSAP 3.14.2 (sha256-geprüft), entfernt Szenen für Kürzungenscripts/probe.mjs: Headless-Chrome-Durchlauf, der Cues, Textgrößen und -positionen im Zeitverlauf sowie Markierungen liestscripts/score.mjs: Synthese-Partitur, Stems, Mix, Master,marks.json;--analyzefür das Tempo eines Tracksscripts/encode.mjs,qa.mjs,report.mjs,run.mjs: Lieferung, Prüfungen, Bericht und der gesamte Laufscripts/selftest.mjs: Überprüft die Toolchain und beweist dann, dass QA eine Datei ablehnt, die zum Scheitern gebaut wurdescripts/lib/: Geteilte Helfer (Git, Plattformen mitHF_VERSIONund der Namensprüfung, WAV, DSP)kit/take.js: Das Bewegungs-Kit (references/kit.md)templates/index.html: Die Startbühnereferences/:intake.md,take-json.md,direction.md,sound.md,formats.md,qa.md,kit.md