Plugin-Installationen: Bevor Setup- oder Aktualisierungsbefehle ausgeführt werden, befolge die Plugin-Ausführungsregeln, wenn sich dieses Skill innerhalb eines HyperFrames-Plugins befindet. Bei eigenständigen Installationen befolge die nachstehenden Aktualisierungsanweisungen.
Halte dieses Skill zuerst aktuell – bestätige mit dem Benutzer, bevor du Folgendes ausführst:
npx hyperframes skills update faceless-explainer. Ein schneller No-Op, wenn alles aktuell ist; andernfalls wird dieses Skill zusammen mit den Kernbereich-Skills aktualisiert, auf die es angewiesen ist, bevor du dich darauf verlässt.
media-use: Rufe
/media-useauf, um Hintergrundmusik/Soundeffekte/Bilder aus dem HeyGen-Katalog und Markenlogos aus offiziellen Quellen zu beziehen, bevor du Audio-/Bild-/Logoquellen bereitstellst. Führe zuerst--adoptaus, um vorhandene Assets zu registrieren. Siehe/media-useSkill. Wenn die Host-App eigene Musik- oder Soundeffekt-Tools bereitstellt, verwende diese für Musik und Soundeffekte.
Faceless Explainer zu HyperFrames
Verwende dieses Skill, um einen Textkörper in ein Erklärvideo zu verwandeln: Wähle ein Designsystem, plane eine lehrreiche Geschichte und baue sie Frame für Frame in HyperFrames auf. Faceless bedeutet, dass jedes Bild später erfunden wird – es gibt keinen Aufnahmeschritt und kein reales Asset-Inventar.
Der Hauptzugang ist
/hyperframes. Du bist der Orchestrator. Führe jeden Schritt aus, überprüfe sein Gate und fahre nur dann fort. Dieses Skill dient dazu, ein Thema aus Text zu erklären, ohne Produkt oder Website, die aufgenommen werden müsste. Bei jeder anderen Absicht, einem bloßen „Video erstellen“ oder bei Unsicherheit → lies zuerst/hyperframes– die Intent-Ebene trifft alle Routenentscheidungen, und eine neue Erstellung, die hier ohneBRIEF.mdankommt, durchläuft sie trotzdem (Eröffnungsregel von Setup).
Du bist der Orchestrator. Arbeite in videos/<projekt>/. Führe die Schritte in Reihenfolge aus und bestehe jedes Gate, bevor du fortfährst. Benutzergesteuerte Schritte sind Schritt 0, Schritt 3 und Schritt 6. Lies ../hyperframes/references/brief-contract.md vor Schritt 0 – es definiert die Gate-Typen und wie flow/storyboard aus BRIEF.md den Modus ableiten, der die Gates von Schritt 3/4/6 regelt. Führe jeden Schritt selbst aus, außer Schritt 5, wo du einen Unteragenten pro Frame entsendest. Lege keine Design- oder Bewegungsregeln hier ab; diese leben im Frame-Worker-Unteragenten, in den lokalen ../hyperframes-animation/rules/ + ../hyperframes-animation/blueprints/ und in hyperframes-creative.
Arbeitsablauf: Schritt 0 Setup → hyperframes.json; Schritt 1 Brief → capture/extracted/; Schritt 2 Designsystem → frame.md; Schritt 3 Storyboard/Skript → STORYBOARD.md und SCRIPT.md; Schritt 3.1 Audio → audio_meta.json; Schritt 4 Visuelles Design → angereichertes STORYBOARD.md; Schritt 5 Frames → compositions/frames/NN-*.html und index.html; Schritt 6 Finales Rendern → renders/video.mp4.
Schritt 0: Setup
Ziel: Mit einem bestätigten Brief einsteigen, das HyperFrames-Projekt erstellen und den Brief dauerhaft machen.
Der Brief wird von der Intent-Ebene bestätigt, nicht durch hier gestellte Fragen. Eröffnungsregel, in dieser Reihenfolge: (1) BRIEF.md existiert → lies es und frage nichts – der Brief ist abgeschlossen, und sein flow/storyboard leiten den Modus ab (Briefvertrag § 1). (2) Kein BRIEF.md, aber das Projekt existiert (hyperframes.json / STORYBOARD.md auf der Festplatte) → setze vom Frontmatter des Storyboards und den aufgezeichneten Präferenzen fort; befrage nie ein halbfertiges Projekt erneut. (3) Weder noch – eine neue Erstellungsanfrage, die direkt hier ankam → lies /hyperframes und führe seine Intent-Ebene aus (references/intent-interview.md): sie prüft Rezepte und gespeicherte Standardeinstellungen, führt die Fragen dieser Route durch (../hyperframes/references/routes/faceless-explainer.md) und gibt den gesperrten Brief zurück. Bearbeitungsanfragen überspringen all dies – gehe und bearbeite.
Initialisiere nur, wenn hyperframes.json fehlt. Benenne <projekt> nach dem Thema in Kebab-Schreibweise, z. B. compound-interest-explained; verwende niemals den Arbeitsbereichsnamen oder Zeitstempel.
npx hyperframes init "videos/<projekt>" --non-interactive --example=blank --skill=faceless-explainer – init prüft die installierten Skills gegen die neuesten auf GitHub und aktualisiert den globalen Satz, wenn welche veraltet sind.
Nach der Initialisierung sei <PROJEKT_ROOT> = videos/<projekt> und führe jeden nachfolgenden relativen Pfadbefehl mit diesem Verzeichnis als Arbeitsverzeichnis aus. In den folgenden Befehlen bedeutet . immer <PROJEKT_ROOT>; schreibe niemals .media, capture oder Ausgabedateien in das aufrufende Verzeichnis.
Schreibe BRIEF.md sofort nach der Initialisierung (niemals davor – init verweigert ein nicht leeres Verzeichnis): der gesperrte Brief der Intent-Ebene, Form gemäß ../hyperframes/references/brief-format.md. Ermittle <MEDIA_DIR> als das installierte /media-use Skill-Verzeichnis. Zeichne dann jede präferenzgestützte Antwort mit node <MEDIA_DIR>/scripts/prefs.mjs record --hyperframes . auf (brief-format.md nennt die Teilmenge). Wenn die Intent-Ebene ein Rezept übernommen hat, führe node <MEDIA_DIR>/scripts/recipe.mjs use --hyperframes . --name <name> aus; es kopiert seine frame.md in das Projekt (Schritt 2 wird dann übersprungen) und gibt die Skelette zurück, aus denen Schritt 3 Entwürfe erstellt. Ein Rezept füllt Antworten, keine Genehmigungen; die Überprüfungsgates laufen trotzdem.
Zeige den Anmeldestatus an, bevor du über Setup hinausgehst – führe npx hyperframes auth status aus und gib seine Ausgabe wörtlich wieder. Es meldet, ob Sprach-/Hintergrundmusik HeyGen oder lokale Engines verwendet und, wenn abgemeldet, wie man sich anmeldet. Wende einen Zweig an:
- Kollaborativ: warte, bis der Benutzer sich anmeldet oder explizit
offline/gowählt. - Autonom: gib den Status an und fahre mit den verfügbaren lokalen Engines fort.
Verschweige nicht stillschweigend eine erforderliche Fähigkeit, wenn kein Offline-Anbieter vorhanden ist; weise auf das Hindernis hin. Fasse diese Entscheidung nicht in eine andere Frage oder schreibe Schlüssel in ein pro-Repo .env. Authentifizierungsverantwortung und Offline-Fallback: /media-use references/setup-providers.md § Anbieter.
Gate: hyperframes.json und BRIEF.md existieren; die präferenzgestützten Antworten wurden aufgezeichnet (Briefvertrag § 2); der Anmeldestatus wurde angezeigt (angemeldet oder Fortsetzung offline).
Schritt 1: Brief (keine Aufnahme)
Ziel: Den Text des Benutzers als Informationsquelle in das Projekt einbinden. Es gibt keine Website-Aufnahme und keine echten Assets – dies ist ein Faceless-Erklärvideo.
Speichere die vollständige Eingabe des Benutzers wörtlich und erstelle dann das synthetische Aufnahmepaket von Hand:
capture/extracted/visible-text.txt– der vollständige Artikel / Notizen / Thema / Kurzbeschreibung, wörtlich. Dies ist die Quelle der Informationen, keine Geschichtsvorlage (Schritt 3 formt sie um).capture/extracted/tokens.json–{ "title": "", "description": "", "colors": [], "fonts": [] }. Fülletitle/descriptionaus dem Brief. Lassecolors/fontsleer, es sei denn, der Benutzer hat explizit Markenfarben oder Schriftarten angegeben – dann füge sie hinzu (die Designvorgabe liefert ohnehin eine vollständige Palette).
Wenn der Benutzer ein Skript eingefügt hat oder möchte, dass seine Formulierung erhalten bleibt, speichere es wörtlich als user_script.txt; VO_MODE (wörtlich oder umstrukturiert) stammt aus BRIEF.md – die Intent-Ebene fragt es ab, wenn ein Skript eintrifft. Frage hier nur einmal, wenn der Brief es irgendwie vermissen lässt, und speichere die Antwort für Schritt 3.
Führe nicht npx hyperframes capture aus (es gibt keine URL). Erstelle keine asset-descriptions.md oder belege capture/assets/ – Faceless-Bilder werden in den Schritten 4-5 erfunden, nicht aufgenommen. Die einzige Ausnahme: Wenn der Benutzer ein echtes Bild bereitgestellt hat, lege es unter public/<Basisname> ab und notiere es für Schritt 3.
Gate: capture/extracted/visible-text.txt und capture/extracted/tokens.json existieren; du kannst das Thema und die Zielgruppe des Erklärvideos in einem klaren Satz angeben.
Schritt 2: Designsystem
Ziel: Wähle eine ausgelieferte Frame-Vorgabe; ein Skript wandelt sie in das frame.md + Untertitel-Skin dieses Videos um.
Wenn BRIEF.md einen style_preset nennt – der Benutzer hat ihn sich in den Vorschauen der Intent-Ebene angesehen – verwende ihn; die Entscheidung liegt nur bei dir, wenn der Brief schweigt. Dann triffst du die eine Entscheidung – welche Vorgabe: lies ../hyperframes-creative/references/design-spec.md und durchstöbere ../hyperframes-creative/frame-presets/; wähle die Vorgabe, deren Look am besten zum Thema, Ton und Zielgruppe passt. Führe dann aus:
node <SKILL_DIR>/scripts/build-frame.mjs --preset <name> --hyperframes .
Das Skript erledigt den Rest deterministisch: kopiert das FRAME.md der Vorgabe → frame.md und remixt es mit allen Markentoken in capture/extracted/tokens.json (Markenfarben, die nach Rolle auf die Farbschlüssel der Vorgabe abgebildet werden; die Display- + Textschriftarten der Vorgabe werden durch die der Marke ersetzt), kopiert das Untertitel-Skin der Vorgabe nach .hyperframes/caption-skin.html und validiert sich selbst (beendet mit 1 bei einer fehlerhaften Zuordnung). Fahre fort, sobald es mit 0 endet – keine manuelle Bearbeitung der Spezifikation.
Ein Faceless-Erklärvideo hat normalerweise keine Markenfarben/Schriftarten (tokens.json Farben/Schriftarten leer) → das Skript behält die eigene Palette der Vorgabe, ein vollständiges, auslieferbares Design. Nur wenn der Benutzer Markenfarben/Schriftarten genannt hat, füge sie vor der Ausführung zu tokens.json hinzu und passe frame.md danach nur von Hand an, wenn eine Zuordnung es wirklich erfordert.
Gate: build-frame.mjs endete mit 0 – frame.md existiert aus einer benannten Vorgabe, und (wenn die Vorgabe eines ausliefert) .hyperframes/caption-skin.html existiert als Quelle des Untertitel-Skins; die gewählte Vorgabe wurde als Präferenz aufgezeichnet (--key style_preset --workflow <dieser Workflow>, Briefvertrag § 2).
Schritt 3: Storyboard und Skript
Ziel: Verwandle den Text in einen genehmigten, frame-by-frame Lehrplan.
Lies ../hyperframes-creative/references/story-spine.md (Hook-Sprache, Wert-vor-Beweis, Storyboard als Vorschlag, quellnachvollziehbare Bilder), references/story-design.md, ../hyperframes-animation/blueprints-index.md, ../hyperframes/references/storyboard-format.md und ../hyperframes/references/script-format.md. Verwende sie, um STORYBOARD.md und, wenn eine Erzählung benötigt wird, SCRIPT.md zu schreiben. Setze das Frontmatter duration: aus der length des Briefs – eine grobe Erwartung; die Zusammenstellung berichtet, wie der Schnitt im Vergleich dazu liegt.
Verwende story-design.md für die Erklärstruktur (Konzept / Anleitung / Liste / Geschichte), Hook-Strategie, Klarheitstechniken, emotionale Beats, die Typ-Enum-Zuordnung und VO_MODE. Die Sequenz des Videos stammt aus dem narrativen Design, nicht aus der Absatzreihenfolge des Eingabetextes – ordne neu, führe zusammen, lasse weg, komprimiere. Als weicher Leitfaden konsultiere das Rollen→Blueprint-Menü in ../hyperframes-animation/blueprints-index.md: Schreibe für jeden Beat den Voiceover in der Form, die sein Kandidaten-Blueprint impliziert, und tagge diesen Kandidaten mit der blueprint:-ID, wenn einer passt. Die lehrreiche Wahrheit entscheidet immer noch, welche Beats existieren – erzwinge niemals einen Beat, um in einen Blueprint zu passen, und erfinde niemals einen Beat, nur weil eine bewährte Form verfügbar ist. Faceless-Bilder werden später erfunden, daher tragen Frames kein Asset-Inventar: lasse asset_candidates leer, es sei denn, der Benutzer hat ein echtes public/<Basisname>-Bild bereitgestellt. Verwende die genauen erforderlichen Felder aus den Storyboard- und Skript-Referenzen.
Nach dem Entwurf führe den Plan-Durchlauf des Überprüfungszyklus aus – ../hyperframes/references/review-loop.md § 1: präsentiere den Plan als Vorschlag und stelle die beiden Fragen – genehmigen oder ändern, und Skizzen zuerst (empfohlen) oder überspringen. Feedback kommt als Chat-Antwort; schleife, bis genehmigt. Dies ist ein Kontrollpunkt-Gate (Briefvertrag § 1): Im autonomen Modus gibt es nichts zu fragen – poste dieselbe Zusammenfassung als Vorankündigung und fahre fort; Skizzen werden in den Bau integriert, und die endgültige Vorschau mit ihrer einen Frage kommt in Schritt 6.
Gate: STORYBOARD.md existiert, jeder Frame hat die erforderlichen narrativen Felder, SCRIPT.md existiert, wenn eine Erzählung benötigt wird, und der Benutzer hat den Frame-by-Frame-Plan genehmigt (autonom: die Zusammenfassung wurde als Vorankündigung gepostet).
Schritt 3.1: Audio
Ziel: Generiere Erzählung, Wort-Zeitsteuerung, Musik und Audio-Metadaten aus dem genehmigten Skript.
Starte Audio nach der Genehmigung von Schritt 3. Führe es im Hintergrund aus, fahre dann mit Schritt 4 fort. (Der Anmeldestatus wurde bereits in Schritt 0 angezeigt; die Engine fällt automatisch zurück.)
Wähle die Erzählstimme aus der Anfrage des Benutzers, bevor du sie aufrufst. Wenn die Anfrage eine Stimme, ein Geschlecht oder einen Ton genannt hat, wähle eine passende Stimmen-ID und übergebe sie mit --voice <id>. Der Pipeline-Standard ist ansonsten Marcia (weiblich) auf HeyGen / am_michael auf Kokoro – eine Anfrage wie „eine männliche Stimme“ wird also stillschweigend ignoriert, es sei denn, du übergibst das Flag. Stimmen-IDs sind anbieterspezifisch; löse sie gegen den Anbieter auf, den der Anmeldestatus von Schritt 0 ausgewählt hat: HeyGen (angemeldet) über node <MEDIA_DIR>/audio/scripts/heygen-tts.mjs --list (oder GET /v3/voices?engine=starfish); Kokoro (offline) über die Stimmentabelle in <MEDIA_DIR>/audio/references/tts.md (Präfixe am_/bm_ männlich, af_/bf_ weiblich). Wenn der Benutzer keine Präferenz geäußert hat, falle auf die gespeicherte Stimme zurück (Briefvertrag § 2), bevor der Pipeline-Standard verwendet wird, und sage, welche du verwendet hast; lasse --voice nur weg, wenn keiner eine nennt. Wenn der Benutzer in diesem Durchlauf explizit eine Stimme gewählt hat, zeichne sie auf (prefs.mjs record --key voice).
node <SKILL_DIR>/scripts/audio.mjs --script ./SCRIPT.md --storyboard ./STORYBOARD.md --hyperframes . --out ./audio_meta.json --voice <voice-id> &
Das Audio-Skript übernimmt Erzählung, Wort-Zeitsteuerung, Hintergrundmusik-Suche aus der HeyGen-Musikbibliothek und Zeitsteuerungs-Metadaten. Die Hintergrundmusik-Stimmung stammt aus dem music:-Feld des Storyboards. Dies verwendet die HeyGen Audio API für den Abruf, nicht für die Generierung, und dieselbe ~/.heygen-Anmeldeinformation wie TTS. Für Anbieterdetails lies ../media-use/audio/references/tts.md. Wenn die eigenen Tools der Host-App die Musik oder einen Soundeffekt machen, lege die Datei unter assets/ ab und liste sie in der Datei audio_meta.json mit dem Eintrag "source": "host" auf: Musik als bgm { "path": "assets/…", "source": "host" } mit music: none im Storyboard; einen Sound als sfx-Eintrag { "frame": <n>, "file": "assets/…", "offset_s": 0, "duration_s": <seine Länge>, "source": "host" }. Jeder Audio-Durchlauf behält diese, und ein Frame mit einem Host-Sound erhält kein gesuchtes Cue.
Wenn es keine Erzählung und kein SCRIPT.md gibt, überspringe die Sprachgenerierung. Hintergrundmusik kann trotzdem laufen, wenn das Storyboard eine Musikstimmung hat.
Der kanonische vollständig-stille Marker (gemeinsam für die Workflows, die dieses Audio-Modell wiederverwenden): music: none im oberen YAML-Block von STORYBOARD.md, kein SCRIPT.md, und keine sfx:-Cues oder Host-Audio. Diese Kombination markiert das Projekt als still – n
…
[gekürzt für die Übersetzung]