Plugin-Installationen: Führe vor dem Einrichten oder den Aktualisierungsbefehlen die Plugin-Installationsregeln aus, wenn sich dieser Skill innerhalb eines HyperFrames-Plugins befindet. Standalone-Installationen behalten die folgenden Update-Anweisungen bei.
Zuerst: Halte diesen Skill auf dem neuesten Stand – Bestätige dies mit dem Benutzer, bevor du ausführst:
npx hyperframes skills update faceless-explainer. Ein schneller No-op, wenn alles aktuell ist; andernfalls wird dieser Skill zusammen mit den Kernbereich-Skills aktualisiert, auf die er sich stützt, bevor du dich auf sie verlässt.
media-use: Bevor du Audio/Bilder/Logos beschaffst, rufe
/media-useauf, um BGM/SFX/Bilder aus dem HeyGen-Katalog und Markenlogos aus offiziellen Quellen zu beziehen. Führe zuerst--adoptaus, um vorhandene Assets zu registrieren. Siehe Skill/media-use. Wenn die Host-App eigene Musik- oder Soundeffekt-Tools bereitstellt, verwende diese für Musik und Soundeffekte.
Gesichtsloses Erklärvideo zu HyperFrames
Verwende diesen Skill, um einen Textkörper in ein Erklärvideo zu verwandeln: Wähle ein Designsystem, plane eine Lehrgeschichte und baue sie Szene für Szene in HyperFrames auf. Gesichtslos bedeutet, dass jedes visuelle Element nachgelagert erfunden wird – es gibt keinen Erfassungsschritt und kein reales Asset-Inventar.
Der Zugang ist
/hyperframes. Du bist der Orchestrator. Führe jeden Schritt aus, überprüfe seine Pforte und fahre erst dann fort. Dieser Skill dient dazu, ein Thema aus einem Text zu erklären, ohne ein Produkt und ohne eine zu erfassende Website. Jede andere Absicht, ein bloßes „Video erstellen" oder Unsicherheit → lies zuerst/hyperframes– die Absichtsebene besitzt alle Routenentscheidungen, und eine frische Kreation, die ohneBRIEF.mdhier ankommt, durchläuft sie trotzdem (Einrichtungsregelöffnung).
Du bist der Orchestrator. Arbeite in videos/<projekt>/. Führe die Schritte der Reihe nach aus und bestehe jede Pforte, 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 Pfortentypen und wie BRIEF.md's flow/storyboard den Modus ableiten, der die Tore der Schritte 3/4/6 regelt. Erledige jeden Schritt selbst, außer Schritt 5, wo du einen Unter-Agenten pro Frame entsendest. Platziere keine Design- oder Bewegungsregeln hier; diese leben im Frame-Worker-Unter-Agenten, diesem Skill-lokalen ../hyperframes-animation/rules/ + ../hyperframes-animation/blueprints/ und hyperframes-creative.
Workflow: Schritt 0 Einrichtung → hyperframes.json; Schritt 1 Brief → capture/extracted/; Schritt 2 Designsystem → frame.md; Schritt 3 Storyboard/Drehbuch → 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 Finaler Render → renders/video.mp4.
Schritt 0: Einrichtung
Ziel: Mit einem bestätigten Brief beginnen, das HyperFrames-Projekt erstellen und den Brief dauerhaft machen.
Der Brief wird von der Absichtsebene bestätigt, nicht durch hier gestellte Fragen. Öffnungsregel, in der Reihenfolge: (1) BRIEF.md existiert → lese es und frage nichts – der Brief ist festgelegt, 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 von den Frontmatter des Storyboards und den aufgezeichneten Präferenzen fort; befrage niemals ein halbfertiges Projekt erneut. (3) Weder noch – eine frische Erstellungsanfrage, die direkt hier ankam → lies /hyperframes und führe seine Absichtsebene aus (references/intent-interview.md): es überprü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 – führe die Bearbeitung durch.
Initialisiere nur, wenn hyperframes.json fehlt. Benenne <projekt> nach dem Thema im Kebab-Case, z.B. compound-interest-explained; verwende niemals den Arbeitsbereichsnamen oder einen Zeitstempel.
npx hyperframes init "videos/<projekt>" --non-interactive --example=blank --skill=faceless-explainer – init überprüft die installierten Skills mit den neuesten auf GitHub und aktualisiert die globale Menge, wenn welche veraltet sind.
Nach der Initialisierung, sei <PROJECT_ROOT> als videos/<projekt> und führe jeden nachfolgenden relativen Pfadbefehl mit diesem Verzeichnis als Arbeitsverzeichnis aus. In den folgenden Befehlen bedeutet . <PROJECT_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): den gesperrten Brief der Absichtsebene, Form gemäß ../hyperframes/references/brief-format.md. Löse <MEDIA_DIR> als das installierte /media-use-Skill-Verzeichnis auf. Zeichne dann jede präferenzgestützte Antwort auf mit node <MEDIA_DIR>/scripts/prefs.mjs record --hyperframes . (brief-format.md nennt die Teilmenge). Wenn die Absichtsebene ein Rezept übernommen hat, führe aus node <MEDIA_DIR>/scripts/recipe.mjs use --hyperframes . --name <name>; es kopiert sein frame.md in das Projekt (Schritt 2 wird dann übersprungen) und gibt die Skelett-Entwürfe für Schritt 3 zurück. Ein Rezept füllt Antworten, nicht Genehmigungen; die Überprüfungs-Pforten laufen trotzdem.
Zeige den Anmeldestatus an, bevor du über die Einrichtung hinausgehst – führe npx hyperframes auth status aus und gib die Ausgabe wörtlich weiter. Es meldet, ob Sprache/BGM HeyGen oder lokale Engines verwenden 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.
Übergehe nicht stillschweigend eine erforderliche Fähigkeit, wenn kein Offline-Anbieter existiert; zeige die Blockade an. Falte diese Entscheidung nicht in eine andere Frage oder schreibe Schlüssel in ein repo-spezifisches .env. Authentifizierungs-Ownership und Offline-Fallbacks: /media-use references/setup-providers.md § Anbieter.
Pforte: hyperframes.json und BRIEF.md existieren; die präferenzgestützten Antworten wurden aufgezeichnet (Briefvertrag § 2); der Anmeldestatus wurde gezeigt (angemeldet oder Offline-Fortsetzung).
Schritt 1: Brief (keine Erfassung)
Ziel: Den Text des Benutzers als Informationsquelle in das Projekt einfügen. Es gibt keine Website-Erfassung und keine realen Assets – dies ist ein gesichtsloses Erklärvideo.
Speichere die vollständige Eingabe des Benutzers wörtlich, erstelle dann das synthetische Erfassungspaket von Hand:
capture/extracted/visible-text.txt– der vollständige Artikel / Notizen / Thema / Kurzbeschreibung, wörtlich. Dies ist die Quelle der Information, keine Vorlage für eine Geschichte (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 Designvoreinstellung liefert ohnehin eine vollständige Palette).
Wenn der Benutzer ein Skript eingefügt hat oder möchte, dass sein Wortlaut beibehalten wird, speichere es wörtlich als user_script.txt; VO_MODE (wörtlich oder umstrukturiert) kommt von BRIEF.md – die Absichtsebene fragt danach, wenn ein Skript ankommt. Frage hier einmal nur, 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 und befülle nicht capture/assets/ – gesichtslose visuelle Elemente werden in den Schritten 4-5 erfunden, nicht erfasst. Die einzige Ausnahme: Wenn der Benutzer ein echtes Bild bereitgestellt hat, lege es unter public/<basename> ab und notiere es für Schritt 3.
Pforte: 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-Voreinstellung; ein Skript verwandelt sie in das frame.md + Untertitel-Skin dieses Videos.
Wenn BRIEF.md einen style_preset nennt – der Benutzer hat ihn nach Augenschein aus den Showcases in der Absichtsebene ausgewählt – verwende ihn; das Urteil liegt nur bei dir, wenn der Brief schweigt. Dann triffst du die eine Entscheidung – welche Voreinstellung: lies ../hyperframes-creative/references/design-spec.md und durchstöbere ../hyperframes-creative/frame-presets/; wähle die Voreinstellung, deren Aussehen am besten zum Thema, Ton und Publikum 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 Voreinstellung → frame.md und remixt es auf alle Marken-Tokens in capture/extracted/tokens.json (Markenfarben werden auf die Farbtasten der Voreinstellung nach Rolle abgebildet; die Anzeige- und Korpus-Schriftarten der Voreinstellung werden durch die der Marke ersetzt), kopiert das Untertitel-Skin der Voreinstellung nach .hyperframes/caption-skin.html und validiert sich selbst (exit 1 bei einer fehlerhaften Abbildung). Fahre fort, sobald es mit exit 0 beendet – keine manuelle Bearbeitung der Spezifikation.
Ein gesichtsloses Erklärvideo hat normalerweise keine Markenfarben/Schriftarten (tokens.json-Farben/Schriftarten leer) → das Skript behält die eigene Palette der Voreinstellung, 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 nur dann von Hand an, wenn eine Abbildung es wirklich erfordert.
Pforte: build-frame.mjs mit exit 0 beendet – frame.md existiert aus einer benannten Voreinstellung, und (wenn die Voreinstellung eines ausliefert) existiert .hyperframes/caption-skin.html als Quelle des Untertitel-Skins; die gewählte Voreinstellung wurde als Präferenz aufgezeichnet (--key style_preset --workflow <dieser Workflow>, Briefvertrag § 2).
Schritt 3: Storyboard und Drehbuch
Ziel: Verwandle den Text in einen genehmigten lehrreichen Frame-für-Frame-Plan.
Lies ../hyperframes-creative/references/story-spine.md (Hakensprache, Wert-vor-Beweis, Storyboard als Vorschlag, quellennachvollziehbare visuelle Elemente), 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 dem length des Briefs – eine grobe Erwartung; die Assemblierung meldet, wo der Schnitt dagegen liegt.
Verwende story-design.md für die Struktur des Erklärvideos (Konzept / Anleitung / Liste / Geschichte), die Hakenstrategie, Klarheitstechniken, emotionale Schwerpunkte, die Typ-Enum-Abbildung und VO_MODE. Die Abfolge des Videos ergibt sich aus dem narrativen Design, nicht aus der Absatzreihenfolge des Eingabetexts – ordne neu, fasse zusammen, lasse weg, komprimiere. Als weiche Richtlinie konsultiere das Rollen→Blueprint-Menü in ../hyperframes-animation/blueprints-index.md: Schreibe für jeden Beat die Voiceover in der Form, die sein Kandidaten-Blueprint impliziert, und tagge diesen Kandidaten mit blueprint: id, wenn einer passt. Die Lehrwahrheit entscheidet dennoch, welche Beats existieren – erzwinge niemals einen Beat, um zu einem Blueprint zu passen, und erfinde niemals einen Beat, nur weil eine bewährte Form verfügbar ist. Gesichtslose visuelle Elemente werden nachgelagert erfunden, daher haben Frames kein Asset-Inventar: Lasse asset_candidates leer, es sei denn, der Benutzer hat ein echtes public/<basename>-Bild bereitgestellt. Verwende die genauen erforderlichen Felder aus den Storyboard- und Drehbuchreferenzen.
Nach dem Entwurf führe den Plan-Durchlauf der Überprüfungsschleife aus – ../hyperframes/references/review-loop.md § 1: Präsentiere den Plan als Vorschlag und stelle die zwei Fragen – genehmigen oder ändern, und Skizzen zuerst (empfohlen) oder überspringen. Feedback kommt als Chat-Antwort; schleife, bis genehmigt. Dies ist eine Kontrollpunkt-Pforte (Briefvertrag § 1): Im autonomen Modus gibt es nichts zu fragen – veröffentliche dieselbe Zusammenfassung als Vorankündigung und fahre fort; Skizzen fallen in den Build, und die endgültige Vorschau mit ihrer einen Frage kommt bei Schritt 6.
Pforte: 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-für-Frame-Plan genehmigt (autonom: die Zusammenfassung wurde als Vorankündigung veröffentlicht).
Schritt 3.1: Audio
Ziel: Erzeuge Erzählung, Wort-Zeitsteuerung, Musik und Audio-Metadaten aus dem genehmigten Drehbuch.
Beginne 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 gezeigt; 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 übergib sie mit --voice <id>. Der Pipeline-Standard ist ansonsten Marcia (weiblich) auf HeyGen / am_michael auf Kokoro – daher wird eine Anfrage wie „eine männliche Stimme“ 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 du den Pipeline-Standard verwendest, und sage, welche du verwendet hast; lasse --voice nur weg, wenn keiner eine nennt. Wenn der Benutzer in diesem Durchlauf explizit eine Stimme ausgewä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 <stimme-id> &
Das Audio-Skript kümmert sich um Erzählung, Wort-Zeitsteuerung, BGM-Suche aus HeyGens Musikbibliothek und Zeitsteuerungsmetadaten. Die BGM-Stimmung kommt aus dem music:-Feld des Storyboards. Dies verwendet die HeyGen Audio API zum Abrufen, nicht zur 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 erzeugen, lege die Datei unter assets/ ab und liste sie in der Datei audio_meta.json mit dem Vermerk "source": "host" auf: Musik als bgm { "path": "assets/…", "source": "host" } mit music: none im Storyboard; ein Sound als sfx-Eintrag { "frame": <n>, "file": "assets/…", "offset_s": 0, "duration_s": <seine Länge>, "source": "host" }. Jeder Audio-Durchlauf behält diese bei, und ein Frame mit einem Host-Sound erhält keinen abgerufenen Cue.
Wenn es keine Erzählung und kein SCRIPT.md gibt, überspringe die Spracherzeugung. BGM kann trotzdem laufen, wenn das Storyboard eine Musikstimmung hat.
Der kanonische völlig stille Marker (gemeinsam mit den Workflows, die dieses Audiomodell 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
… [für die Übersetzung gekürzt]