Communitygithub.com

KaranO-Dev/one-take

Erstelle ein fertiges Promo-, Launch-, Recap- oder Behind-the-Scenes-Video in einem Durchgang: Stelle einmal alle Fragen upfront (Szenen, Referenzen, Formate und Seitenverhältnisse, Länge und Plattformbeschränkungen, Quell-Repos und -Seiten, Sprachen, Musik, Stimme und Untertitel, Branding), dann storyboarde, baue, vertone, rendere jedes Format und führe QA für jede Datei ohne weitere Fragen. Nutze eine originäre synthetisierte Filmmusik mit Stems und Soundeffekten, die auf die Animation abgestimmt sind, Fakten aus Git, eine Quelle neu pro Layout pro Seitenverhältnis und einen QA-Durchlauf für Lautstärke, schwarze/eingefrorene/stille Frames, Endkarten-Haltezeit, Textgröße auf dem Handy und plattformspezifische Safe Zones. Verwende dies, wenn jemand ein komplettes Multi-Format-Video End-to-End geliefert haben möchte, anstatt einer Co-Creation-Session. Basierend auf HyperFrames.

Was ist one-take?

Das Skill **one-take** ermöglicht es, ein vollständiges, mehrformatiges Promo-, Recap- oder Launch-Video in einem einzigen Durchlauf zu erstellen, ohne dass nach der ersten Eingabe weitere Rückfragen nötig sind. Es ist dafür konzipiert, einen effizienten, vollautomatischen Workflow von der Idee bis zur fertigen, qualitätsgeprüften MP4-Datei zu liefern. Der Ablauf ist klar strukturiert: In einer ersten Phase werden alle relevanten Informationen (Szenen, Referenzen, Musikstil, Sprachausgabe, Plattformbeschränkungen etc.) vom Nutzer abgefragt. Danach werden automatisch Fakten aus Git-Repositories extrahiert, ein Storyboard erstellt, die Animation mit HyperFrames aufgebaut und eine original synthetisierte Filmmusik komponiert. Die Ausgabe erfolgt in allen gewünschten Formaten und Seitenverhältnissen, wobei jedes Format ein eigenes Layout erhält. Ein integrierter QA-Durchlauf prüft die finale Lautstärke, vermeidet schwarze oder eingefrorene Frames und stellt sicher, dass alle Texte lesbar bleiben und die plattformspezifischen Safe Zones eingehalten werden. Das Skill ist für Claude Code, Cursor, Codex und andere KI-gestützte Entwicklungsumgebungen geeignet und setzt auf die Rendering-Engine HyperFrames. Es orchestriert den gesamten Workflow und bietet dadurch eine enorme Zeitersparnis, da der Nutzer nur einmalig Input liefern muss. Es eignet sich besonders für die Erstellung von Marketing-Videos, Release-Rückblicken oder Behind-the-Scenes-Clips, die direkt für verschiedene Plattformen wie YouTube Shorts, Instagram Reels oder TikTok optimiert werden.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add KaranO-Dev/one-take-skill

In Ihrer bevorzugten KI fragen

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

Dokumentation

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

  1. 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.
  2. 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.
  3. Fakten werden berechnet, niemals getippt. Jede Zahl auf dem Bildschirm stammt aus facts.json oder einer vom Benutzer angegebenen Quelle. Erfinde niemals Statistiken, Zitate, Logos oder Testimonials.
  4. 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.
  5. Fertig bedeutet QA-bestanden. Eine Datei wird ausgeliefert, wenn qa.mjs sie 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.json bereits 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:

  1. 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.

  2. 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 und output.name müssen [a-z0-9][a-z0-9._-]{0,63} entsprechen (Groß-/Kleinschreibung beliebig, kein ..), sonst stoppt der Lauf. Lasse hyperframes weg, es sei denn, der Benutzer fragt danach: Die Standardversion ist in scripts/lib/platforms.mjs festgelegt (HF_VERSION, 0.8.223).
  • Schreibe eine HyperFrames BRIEF.md mit workflow: 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.json aus. 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/cap aus. Stoppe bei ok:false oder BLOCKED.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 /figma aus.
  • Branding. Kopiere das Logo-SVG und die Schriftdateien in src/assets/brand und src/assets/fonts, deklariere sie in take.json unter fonts und hebe die Farb-Token in das :root der 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).
  • 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.html nach <project>/src/index.html und schreibe seine Szenen aus dem Storyboard neu.
  • Lese references/kit.md (die T.*-API) und die nicht verhandelbaren Regeln von hyperframes-core. Für Bewegungen lese die Regeln und Baupläne von hyperframes-animation. Bevor du einen benannten Effekt von Hand baust, durchsuche hyperframes-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.leave nahe s.end). Text unter einer Aufdeckung fällt beim Layout-Check durch.
  • Jede Szene bewegt sich: T.drift die 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.md listet die Kategorien auf). Die meisten Kit-Helfer cunnen standardmäßig; übergib cue: false, um einen Moment still zu halten.
  • Zahlen stammen von T.facts oder dem Text. T.count benö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.modeWas 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.
trackDie 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 Zahlen
  • scripts/build.mjs: Eine Quelle → out/<format>-<lang>/ HyperFrames-Projekte. Füllt Größen, Safe-Bänder und Szenen-Timing, fügt TAKE ein (Text, Fakten, Szenen), liefert das Kit und GSAP 3.14.2 (sha256-geprüft), entfernt Szenen für Kürzungen
  • scripts/probe.mjs: Headless-Chrome-Durchlauf, der Cues, Textgrößen und -positionen im Zeitverlauf sowie Markierungen liest
  • scripts/score.mjs: Synthese-Partitur, Stems, Mix, Master, marks.json; --analyze für das Tempo eines Tracks
  • scripts/encode.mjs, qa.mjs, report.mjs, run.mjs: Lieferung, Prüfungen, Bericht und der gesamte Lauf
  • scripts/selftest.mjs: Überprüft die Toolchain und beweist dann, dass QA eine Datei ablehnt, die zum Scheitern gebaut wurde
  • scripts/lib/: Geteilte Helfer (Git, Plattformen mit HF_VERSION und der Namensprüfung, WAV, DSP)
  • kit/take.js: Das Bewegungs-Kit (references/kit.md)
  • templates/index.html: Die Startbühne
  • references/: intake.md, take-json.md, direction.md, sound.md, formats.md, qa.md, kit.md

Verwandte Skills