explainer-editor: Ein Vortrag, erklärt auf einer Bühne über dem Sprecher
Der Nutzer übergibt eine vertikale Aufnahme von sich selbst, wie er in die Kamera spricht. Dieser Skill setzt sie in einen Rahmen am unteren Rand einer dunklen Bühne, die wie ein Set beleuchtet ist, ihr Kopf ragt daraus hervor, und zeichnet was sie erklären, über ihnen, während sie es sagen, mit der Bewegung und dem Licht eines After Effects-Schnitts: Szenen, zwischen denen eine Kamera reist, Figuren, die fliegen, aufsteigen und mit Bewegungsunschärfe erscheinen, jede mit ihrem Schatten und ihrem Glühen, etwa jede Sekunde ein neues Ding auf der Bühne, ein Geräusch bei jeder Bewegung. Ihre Worte laufen zwischen der Bühne und ihnen, eines nach dem anderen. Ein paar Mal pro Minute schneidet ein Kamerablitz auf Vollbild zu ihnen.
Wie ein Kurzvideo aussieht, ist festgelegt: § Die Explainer-Sprache (unten im Pipeline-Eintrag). Sie wurde
Bild für Bild an einem Kurzvideo gemessen, das der Nutzer für einen Kunden bearbeitet hat (108 s, ein Leitfaden zu Text-Hooks), dann
beim ersten Schnitt überprüft (2026-10-05: „überhaupt nicht After Effects, nicht Motion Design, zu wenige Dinge
auf dem Bildschirm, es ist langweilig, die Whooshes fehlen“), dann beim zweiten („viel besser; nicht genug
kleine Schatten und Glühen hinter den Elementen, der komplett schwarze Boden lässt sie nicht zur Geltung kommen; hier ist ein
Paket für viele weitere sehr leichte Geräusche“): Jede Zeile beider Urteile ist jetzt eine Regel. Starte jeden neuen
Take davon (init.sh erstellt das Grundgerüst); öffne es nicht neu.
Dieser Skill läuft auf der Engine des short-editor-Skills. Sein Rendern, Mischen, Personen-Matte,
Vorschauen, Bauen und Verifizieren sind die Dateien der Engine, wie geschrieben in
../short-editor/SKILL.md § Voraussetzungen, § Wo die Dinge leben und
§ 4 bis § 6; diese Datei sagt, was anders ist. Die eigenen Dateien dieses Skills: das Layout (layout.mjs:
der Rahmen des Sprechers und die Vollbild-Atempausen, ausgeführt von build.sh und preview.mjs der Engine
anstelle ihres Zooms), die Bühne (stage.mjs: die Kamera, die Szenen, die Bewegungsunschärfe, die
Figuren, die Untertitel, die Geräusche der Bewegung), das Bett (bed.mjs), die Standbilder
(stills.mjs) und die Messungen (measure.mjs). Vor dem ersten Schnitt lesen, bei jedem Durchlauf:
../../references/pitfalls.md§ Transkription und Untertitel, § Arbeitsmethode: die Fallstricke, mit denen ein Schnitt geschrieben ist (seine anderen Abschnitte, wenn ihr Schritt kommt: § Audio vor einem von Hand gemessenen Geräusch, § ffmpeg und § Die Shell vor einem eigenen Befehl; die Werkzeuge der Engine folgen dem Rest)../../references/brand-kit.md, wenn der Schnitt sie zeigt: die echten Logos, Screens und Zahlen des Nutzers, nie erfundene, und ihr Brand-Set einmal inworkspace/brand/(§ Ihr Brand, einmal gesetzt)$X/example/: das Referenzprojekt, jede Datei eines ausgelieferten Schnitts (stage.theme: "light"für die helle Version);$X/example-2/: der Skill von Grund auf auf einem anderen Take ausgeführt (zwei Einstellungen, eine ruhige Aufnahme, keine Atempause), und was dieser Durchlauf geändert hat
Lesen, wenn der Schritt es braucht: ../../references/audio-spec.md bei den Pegeln (der Lautstärke-Standard, wie ein Pegel gemessen wird, wie gehört). Die Figuren der Engine: node plugins/video/skills/short-editor/scripts/api.mjs <Modul> [Figur], niemals ihre Quellen.
Ich kann das Video nicht ansehen oder anhören. Wo der Kopf ist, wo ein Wort beginnt, wie laut ein Whoosh gehört wird: Jedes ist eine Messung.
verify.mjssteht zwischen „es ist fertig“ und einer defekten Datei;measure.mjssagt, ob das Sound-Design gehört wird. Überspringe sie nie.
Alle Pfade unten sind relativ zum Stammverzeichnis des GTM by Pipecorn-Ordners. $X bedeutet
plugins/video/skills/explainer-editor/scripts (dieser Skill), $E bedeutet
plugins/video/skills/short-editor/scripts (die Engine). Führe beide über ihren absoluten Pfad aus.
Voraussetzungen (Preflight: vor jeder Arbeit prüfen)
Die der Engine: ffmpeg + ffprobe im PATH (brew install ffmpeg) und python3 (Xcode Command
Line Tools) sind erforderlich und von hier aus nicht installierbar; stoppe und sage den Befehl, wenn eines fehlt.
Alles andere richtet sich selbst ein: das bootstrap.mjs der Engine (Node-Pakete, die Speech-to-Text-
venv, das Musik-Regal) läuft in init.sh, transcribe.sh und build.sh, und init.sh holt
die Schriftarten: Inter (ExtraBold, Bold, SemiBold, Medium; SIL Open Font License, aus dem npm-Paket
inter-ui über jsDelivr) und Instrument Serif Italic (Google Fonts, OFL) in das Projekt-
assets/fonts/. Nichts wird systemweit installiert. swiftc baut die Personen-Matte: ohne sie
ragt der Kopf nicht aus dem Rahmen heraus (der Rahmen schneidet den Sprecher einfach ab) und die Bühne wird
auf die Overlay-Ebene gezeichnet; sage dies.
Wo die Dinge leben
Wie die Engine sagt, und nur so: ein Arbeitsverzeichnis pro Schnitt,
workspace/projects/<slug>/, ein Slug, den kein anderes Projekt hat; die fertige Datei
workspace/videos/<slug>.mp4; niemals die Dateien eines anderen Projekts, selbst vom gleichen Take; temporäre
Dateien im tmp/ des Projekts, niemals in /tmp. Das scripts/ des Skills bleibt schreibgeschützt. Die Bilder
des Nutzers (Screenshots, Logos, Frames seiner Videos) gehen in das assets/ des Projekts.
Die Pipeline
0. Arbeitsverzeichnis einrichten
$X/init.sh workspace/projects/<slug> <source.mp4> workspace/videos/<slug>.mp4 [--theme light]
Das Grundgerüst der Engine (project.json aus der Datei gelesen, das SFX-Paket in assets/sfx-top5/), dann
die plan.mjs und edl.mjs dieses Skills, die Schlüssel der Explainer-Sprache in project.json (style: "explainer", layout: der Pfad von $X/layout.mjs, blurBand 0), sfxMasterDb gesetzt auf die Stimme
des Takes (ihre Lautstärke + 15,3 dB, + 0,13 dB pro dB unter −20,5 LUFS: die Hausgeräusche, die gehört werden
wie in den Basis-Skills, unabhängig vom Pegel des Takes), die Schriftarten, ein 1080x1920-Master für ein
kleineres Porträt-Take (bei einem zweiten Durchlauf behalten), und das Thema (stage.theme: dark,
die Referenz, oder light; --theme light setzt es; ein bereits gesetztes Projekt behält sein eigenes).
Führe jeden späteren Befehl von diesem Verzeichnis aus.
0.2. Zuerst fragen, in EINER Frage
Das Thema (dunkel, die Referenz, oder hell: dieselbe Bühne, weißes Glas, dunkle Worte, weichere
Schatten), die Musik (das Regal, plugins/video/assets/music/; Convergence standardmäßig; sage
die Tracks, die nicht von Mixkit sind, können die Monetarisierung des Videos blockieren), das Tempo (×1 standardmäßig; eine langsame
Aussprache liest sich besser bei ×1,1), und die Bilder, die der Nutzer geben kann: Screenshots
ihres Produkts, Frames der Videos, über die sie sprechen, ihr Logo, die echten Zahlen. Was der Nutzer nicht
liefert, wird mit ihren Worten und den Piktogrammen des Hauses gezeichnet, niemals mit erfundenen Screens oder Zahlen. Ausgeführt
von der GTM by Pipecorn-Seite aus, die Kurzbeschreibung der ersten Nachricht antwortet darauf (das Thema aus ihren Notizen:
„light“ bedeutet dort das helle Thema): entscheide nach den Regeln unten und frage nicht noch einmal.
Der Pipecorn-Generic: ein BONUS jedes Stils, JEDES MAL gefragt, nie standardmäßig aktiviert
(plugins/video/references/pipecorn-generic.md): etwa 6 s ganz am Ende, Pipecorn, dann
seine Werte, die sich in einem Slot gegenseitig ersetzen, dann Pipecorn noch einmal, keine Musik. Nein · Ja, mit
welchen Werten (1 bis 4; node $E/generic.mjs --list; standardmäßig Telefonabdeckung, Verbindungsrate,
Pipeline).
Deine Stimme verbessert: ein BONUS, JEDES MAL gefragt, nie standardmäßig aktiviert
(plugins/video/references/voice-clean.md): ElevenLabs' Sprachisolator entfernt den Halleffekt des Raums und die
Geräusche aus dem Take. Nein · Ja, mach meine Stimme besser. Es braucht den ElevenLabs-Connector: ohne einen Schlüssel, sage
in einer Zeile, dass es existiert (Einstellungen › Connectors › Schlüssel hinzufügen) und fahre fort. Bei einem Ja, vor Schritt 1:
node plugins/video/motion/voice.mjs clean <source>, dann project.json › source ist <…>-voice.<ext>
(die gleiche Länge, das Bild unberührt).
1. Transkribieren, wortwörtlich
$E/transcribe.sh --lang en # die tatsächlich GESPROCHENE Sprache; dann project.json "lang"
words.json, auf der Uhr des Roh-Takes. Nie übersetzt. Ein Take voller Neustarts wird zuerst
mit dem rough-cut.mjs der Engine zusammengesetzt (short-editor/SKILL.md § 0.7), dann erneut transkribiert. Dann node $E/words.mjs (das der Engine): words-fixed.json, der Anfang jedes Wortes
aus einer Stille heraus auf die Stimme verschoben und sein tatsächliches Ende vor einer Pause, die zweifelhaften aufgelistet;
words.mjs env|end|say um eines zu lesen (short-editor/SKILL.md § 1). Niemals ein eigenes Skript dafür.
2. Die Matte und der Rahmen
node $E/matte.mjs # die Personen-Matte (braucht swiftc), ~1 Min pro Minute
node $X/layout.mjs --measure --write # wo der Kopf ist → project.json stage
node $X/layout.mjs --print # der Rahmen, der Untertitel, die Atempausen
--measure findet die Einstellungen des Takes (seine Quellschnitte, wie verify.mjs sie findet) und
liest den Kopf auf der Matte in jeder (32 Frames pro Einstellung): die Breite des Rahmens setzt den Kopf der längsten Einstellung auf
die Größe der Referenz (226 px breit; ein Nah-Take bekommt einen schmaleren Rahmen, zentriert, damit seine Schultern und
Brust hereinkommen: 598 px beim bearbeiteten Beispiel, dessen Kopf 38 % der Take-Breite beträgt, 782 beim
zweiten Take; --keep-frame behält die 942 der Referenz und warnt, dass der Rahmen meist das Gesicht zeigen wird);
in jeder Einstellung passiert die Oberkante des Rahmens 88 px unter der üblichen Oberkante des Kopfes (die Referenz), so
ragt der Kopf daraus hervor; der Untertitel geht um so viel höher, wie der Kopf üblicherweise aufragt (maximal 90
px) und bleibt 20 px darüber; das Vollbild macht den Kopf zu 45 % der Breite. Ein Take mit mehreren
Einstellungen bekommt stage.shots (jeweils Beschnitt, Untertitel und Vollbild-Framing der Einstellung; die Kamera wechselt
beim Schnitt, der Rahmen bleibt). Überprüfe es in einer Vorschau (§ 5). In diesem Stil passiert ein Quellschnitt im
Rahmen des Sprechers, einem kleinen Teil des Bildes: verify.mjs kann es als „unter einer Vollbild-Platte" melden
(der zweite Take); überprüfe, dass es auf seinem Rahmen durch die eigenen Unterschiede des Rahmens landet, nicht mit dem Auge.
3. Transkript lesen, Storyboard schreiben
Dies ist der entscheidende Schritt, und er ist die gesamte Aufgabe. Lies das Transkript vollständig und schreibe das Storyboard als Liste, bevor irgendein Code geschrieben wird: die Szenen, und in jeder, was auf welchem Wort erscheint.
-
Szenen, verbunden durch Kamerafahrten. Eine Szene ist eine Idee (das Versprechen, das Produkt, ein Prozess, die Schritte, die Liste, ein Vergleich): 4 bis 8 Sekunden, dann bewegt sich die Kamera zur nächsten. Der Standard-Move ist der Whip (ein Schwenk nach rechts: die alte Szene verlässt links in Unschärfe, ein Lichtstreifen kreuzt, die neue kommt an); ein Rise, wenn die nächste Idee tiefer geht (die alte Szene verlässt nach oben); ein Push durch die alte Szene, wenn die neue darauf antwortet (ein „Warum", eine Enthüllung); ein Cut nur hinter einer Atempause. Nie zwei gleiche hintereinander, wenn es sich vermeiden lässt.
-
Eine Szene kommt zusammengestellt an. Was zur eigenen Zeit der Szene platziert wird, reist MIT der Kamera (es ist bereits da, wenn der Move endet: die Referenz zeigt nie eine leere Bühne nach einem Move); was später kommt, erscheint auf seinem Wort. Wenn die Dinge der Szene nacheinander genannt werden, platziere sie alle zur Zeit der Szene, im Dunkeln oder unscharf (
dim: 0.6,blur: 10), und beleuchte jedes auf seinem Wort (.blurTo(on(i), 0).lit(on(i))und sein Geräusch): die Bühne ist vom ersten Frame an voll und bewegt sich dennoch bei jedem Wort (die Personas und Kanäle des zweiten Takes, 2026-10-05). -
Etwa jede Sekunde etwas Neues. Jede Phrase, die ein Ding, eine Zahl, einen Schritt, eine Behauptung nennt, bekommt eine Figur oder einen Move auf ihrem Wort: eine eintretende Figur, ein enthülltes Label, eine Markierung, die um etwas gezogen wird, ein beleuchtetes Ding, eine sich bewegende Szene. Mehr als 2 Sekunden mit nichts Neuem auf der Bühne wirken langweilig: es war das Urteil beim ersten Schnitt (2026-10-05).
-
Der Titel benennt den Abschnitt in zwei kurzen Zeilen, sein Schlüsselwort in der Serife (
*Killer* Text Hooks), eine rote Box auf der Zeile mit einer Anzahl oder einer Behauptung (3 Winning Types Of). Er ändert sich mit dem Abschnitt, der alte steigt heraus, bevor die neuen Worte hereinkommen. -
Welche Figur für was:
was gesagt wird die Figur eine Liste von N Dingen, Schritten, Regeln S.list: Balken, die von links hereinfliegen, Labels unscharf, bis jedes genannt wird (reveal), das erklärte beleuchtet (focus), sein Urteil erscheint an seinem Ende (glyph: "check","cross"…);headerverwandelt einen Balken in den Header des Abschnittsein Name, ein Begriff, eine Definition S.pill(ein Piktogramm darin:glyph),S.arrowvon dem, was es benennt,S.ping(ring: true) um das Ding,S.mark(ein Kreis, ein Rahmen, eine Unterstreichung) gezeichnet auf das Wort, das es betontein Ding aus Teilen, eine Ursache und ihre Wirkungen, eine Kette S.tree(Kinder fallen ein, jedes mit einem Funken verbunden),S.wireszwischen beliebigen zweieine Kombination, ein Vergleich S.equation(+,=), einVS-Zeichen mitS.shakeund dem Glitchein Produkt, ein Werkzeug, eine Plattform das Logo des Nutzers ( S.icon, sein Glühen,ringum ein Telefon klingeln zu lassen), ihr Screenshot inS.cardoderS.phone,S.promptgetippt, wenn es verwendet wirdBeispiele, Videos, eine Serie S.cardsihrer Bilder, oder Frames des Takes selbst (stills.mjs) mitplayer-Karteneine Suche, viele Quellen, eine Menge ein Raster von S.cardsmitglyphs, nacheinander beleuchtet (ein Scan)eine Zahl S.countauf sie zusteigend, oder farbige Worte ({g:22 Days}grün,{r:A Few Weeks}rot)gut / schlecht, ja / nein S.glyph(checkauf einer grünen Kachel,crossauf einer roten), das Urteil eines Balkensein Aufruf zur Handlung ein Titel ( Comment "X",To Get The *Skill*),S.filefür das, was sie senden -
Die Atempausen (
FULL): ein harter Cut zum Sprecher im Vollbild (der Kamerablitz auf dem Weg hinein, ein Whoosh auf dem Weg hinaus), nichts gezeichnet außer den Untertiteln. Bei einem Geständnis, einer Pointe, einer starken Meinung; 2 bis 6 s; nie in den ersten 15 s. Eine Einstellung, die nicht der sprechende Kopf ist (B-Roll, eine Totale) geht ganz im Vollbild:[from, to, { zoom: 1 }]. Die Szene nach einer Atempause öffnet sich dahinter (S.scene(<Atempausen-Ende> - 0.45, "push")), also ist sie da, wenn die Atempause endet. -
Nur echte Namen und echte Zahlen (brand-kit.md): eine Figur, die einen Bildschirm oder eine Zahl bräuchte, die der Nutzer nicht gegeben hat, wird mit ihren Worten und den Piktogrammen des Hauses gezeichnet oder gestrichen.
-
Untertitel sind wortwörtlich: `fi
…
[gekürzt zur Übersetzung]