Scrapbook-Editor: Eine rohe Aufnahme wird zu einem Scrapbook-Kurzfilm
Der Nutzer übergibt eine vertikale Aufnahme von sich selbst beim Sprechen. Dieser Skill schneidet jede Pause heraus und verwandelt das Bild in ein Scrapbook, durch das der Sprecher spricht – geschnitten, wie ein Motion Designer es in After Effects machen würde: der Titel der Referenz in zwei Schriftarten (weiße Wörter, das wichtige Wort in einer schönen Serifenschrift in Farbe, eine Linie auf Papier) und Aufkleber auf dem Hook, die Reaktions-Memes des Internets als Polaroids auf dem Gesicht, Papierschnipsel nur für Titel und die sehr wichtigen Wörter, die rote Marker-Zeichnung während des Sprechens, Aufkleber für aufgezählte Dinge, echte Screenshots der genannten Seiten, Untertitel unten im Bild Wort für Wort, eine Musikuntermalung und ein Sound für jedes Element, das erscheint.
Der Stil ist VALIDIERT (der Nutzer, 05.10.2026): exakt reproduzieren. § Die Scrapbook-Sprache (unterhalb der Pipeline) ist das Aussehen des validierten Schnitts (workspace/videos/scrapbook-dev-sales.mp4, sein Plan: example/plan.mjs): dieselben Figuren, an denselben Größen und Stellen, mit denselben Schriftarten, Papier, Bewegungen, Sounds und Lautstärken, bei jeder Aufnahme. Es begann als VERMESSUNG eines echten Schnitts (ein 72,7 s langes Listenvideo, „7 Claude Skills“, vom Nutzer für einen Kunden bearbeitet: example/README.md ist seine vollständige Anatomie) und durchlief sechs Überprüfungen, um sich zu setzen (§ Die Entscheidungen des Nutzers). init.sh erstellt das Grundgerüst; erfinde niemals ein anderes Aussehen, variiere niemals etwas, das der Nutzer nicht zu variieren gebeten hat.
Dieser Skill läuft auf der Engine des Short-Editor-Skills. Seine Transkription, sein Rendering, Mix, Vorschauen, Build und Verifikation sind dieselben Dateien: lies ../short-editor/SKILL.md § Voraussetzungen, § Wo die Dinge leben und § 4 bis § 6 einmal; sie gelten hier wie geschrieben, und diese Datei sagt nur, was anders ist. Lies vor dem ersten Schnitt, bei jedem Durchlauf:
scripts/example/README.md: der Referenzschnitt, Takt für Takt, und der Entwicklungsschnitt../../references/pitfalls.md§ Transkription und Untertitel, § Arbeitsweise: die Fallstricke, mit denen ein Schnitt geschrieben ist (die anderen Abschnitte, wenn ihr Schritt kommt: § Audio vor einem manuell gemessenen Sound, § ffmpeg und § Die Shell vor einem eigenen Befehl; die Werkzeuge der Engine folgen dem Rest)
Lies, wenn der Schritt es erfordert: ../../references/audio-spec.md bei den Lautstärken (der Lautstärkestandard, wie eine Lautstärke gehört gemessen wird). Die Werte der Engine: node plugins/video/skills/short-editor/scripts/api.mjs <Modul> [Wert], niemals ihre Quellen.
Ich kann das Video nicht sehen oder anhören. Wo eine Pause ist, wo das Gesicht ist, wie laut ein Sound auftrifft: jeder ist eine Messung (
tighten.py,face.mjs,measure.mjs), dann ein Blick auf zusammengesetzte Frames (preview.mjs) und auf einen Moment in Bewegung Frame für Frame (build.sh --slice).verify.mjssteht zwischen „es ist fertig“ und einer defekten Datei. Überspringe es niemals.
Alle Pfade unten sind relativ zum Stammverzeichnis des GTM by Pipecorn-Ordners. $K bedeutet plugins/video/skills/scrapbook-editor/scripts (dieser Skill), $E bedeutet plugins/video/skills/short-editor/scripts (die Engine). Führe beide mit ihrem absoluten Pfad aus.
Voraussetzungen (Preflight: vor jeder Arbeit prüfen)
Die der Engine: ffmpeg + ffprobe auf dem PATH (brew install ffmpeg) und python3 (Xcode Command Line Tools) sind erforderlich und von hier aus nicht installierbar; stoppe und nenne den Befehl, wenn einer fehlt. Alles andere versorgt sich selbst: $K/py.sh führt das bootstrap.mjs der Engine aus (Node-Pakete, das Speech-to-Text-Venv mit numpy); init.sh lädt die drei Schriftarten (Archivo, Fraunces und die Marker-Hand des Papiers, standardmäßig Gochi Hand: Google Fonts, OFL) in das assets/fonts/ des Projekts (oder findet sie in ~/Library/Fonts), und sounds.mjs die Papiersounds (acht Mixkit-Aufnahmen, einmal pro Maschine, in plugins/video/assets/sfx/paper/, niemals eingecheckt: die Mixkit-Lizenz erlaubt sie in Videos, nicht ihre Weiterverteilung), vorbereitet und vermessen in das assets/sfx-paper/ des Projekts, und kopiert das Motionix-Paket aus dem Regal (plugins/video/assets/sfx/motionix/, vorbereitet durch den Explain-Stil; Lizenz nicht im Paket angegeben: lies vor der Veröffentlichung die README) in assets/sfx-motionix/. Nichts wird systemweit installiert.
Optional und genannt, wenn es fehlt (niemals ein Blockierer):
swiftc(Xcode Command Line Tools):face.mjsfindet das Gesicht mit Apple Vision, sodass ein Polaroid DARAUF landet und die Aufkleber UM den Kopf herum stehen. Ohne es: lies das Gesicht auf einem Vorschau-Frame ab und setze project.jsonface({x, y, w, h}, Bruchteile des Frames).GIPHY_API_KEYin.env.local: die echten Reaktions-GIFs des validierten Stils (gif.mjs). Kostenlos: developers.giphy.com → Create an App → API (nicht das SDK, das GIPHY empfiehlt: das SDK ist für Apps, die GIPHYs eigene Auswahl anzeigen;gif.mjsruft die API auf), 100 Aufrufe pro Stunde, reichlich für einen Schnitt. Ohne sie: ein GIF, das der Nutzer bereitstellt (media.mjs), oder ein generiertes Reaktionsbild; sage das.GEMINI_API_KEYin.env.local: die generierten Illustrationen und Reaktionsbilder (picture.mjs, Nano Banana 2, etwa $0,07 pro Stück bei 1K).- Google Chrome (oder Chromium, Brave, Edge) in /Applications: ein Screenshot einer ÖFFENTLICHEN Seite, die der Sprecher nennt (
capture.mjs), wenn der Nutzer keinen eigenen Screenshot hat.
Wo die Dinge leben
Wie die Engine sagt, und nur auf diese Weise: ein Arbeitsverzeichnis pro Schnitt, workspace/projects/<slug>/, ein Slug, den kein anderes Projekt hat; die fertige Datei workspace/videos/<slug>.mp4; niemals Dateien eines anderen Projekts, selbst von derselben Aufnahme; temporäre Dateien im tmp/ des Projekts, niemals in /tmp. Das scripts/ des Skills bleibt schreibgeschützt. Die Bilder eines Schnitts leben in seinem assets/media/.
Die Pipeline
0. Arbeitsverzeichnis einrichten
$K/init.sh workspace/projects/<slug> <source.mp4> workspace/videos/<slug>.mp4
Das Gerüst der Engine (project.json aus der Datei gelesen, subs.config.json, cut.mjs), dann plan.mjs und edl.mjs dieses Skills (jede Figur der Sprache, kommentiert, bereit zum Ausfüllen), die Schlüssel der Sprache in project.json (style: "scrapbook", accent, captionKeep), das Gesicht und die Sounds, kalibriert auf die Stimme dieser Quelle (voiceM, der momentane Median der Stimme, und sfxMasterDb 0: jede Rolle wird dann in LU unter der Stimme eingestellt, wie gehört). Führe jeden späteren Befehl von innerhalb dieses Verzeichnisses aus.
0.2. Zuerst fragen, in EINER Frage
Diese gehören dem Nutzer und können nicht erraten werden; bündle sie in einer AskUserQuestion:
- Die Musik. Standardmäßig eine Untermalung (die dritte Überprüfung: „ça mériterait de mettre une musique de fond“): biete zuerst Hip Hop 02 an (Mixkit, Lily J: die des validierten Schnitts, der Standard des Stils; die Mixkit-Lizenz erlaubt sie in einem veröffentlichten Video), dann Convergence (der Haus-Track der anderen Stile), den Rest des Regals (
plugins/video/assets/music/, seine README), dann „Keine Musik“. Zur Auswahl nach Gehör, ein Board (dieselben 12 s mit jedem Track, alle auf derselben Lautstärke):node $K/music-board.mjs --to 12 mixkit-hip-hop-02-738.mp3@0 [email protected] …nach einem Build (es setzt die eigene Untermalung des Projekts am Ende zurück). Es geht 15 LU unter die Stimme ($K/music.mjs, § Das Aussehen). Sage einmal, dass die Tracks, die nicht von Mixkit sind (Convergence, ridgeclub), die Monetarisierung des Videos blockieren können. - Die Farbe der Marke (project.json
accent;wordColorfür das wichtige Wort, wenn es abweichen soll; der Akzent Ihrer Marke, wenn sie gesetzt ist,workspace/brand/, sieheplugins/video/references/brand-kit.md§ Ihre Marke, einmal gesetzt): DAS wichtige Wort in Fraunces und das gerade gesprochene Wort in den Untertiteln. Standardmäßig Gelb #FFD43B (Pipecorns). Prüfe es auf der Aufnahme: es sitzt über Haaren, Haut und Wänden (auf der Entwicklungsaufnahme verschwanden Koralle und Orange in den Haaren und im Gesicht des Sprechers, Gelb las sich überall). Und die Namen, die die Untertitel so schreiben müssen, wie sie sind (captionKeep: die Marke, das Produkt, Personen, „Station F“). - Das echte Material: Screenshots oder Screen Recordings von dem, was sie nennen (ihr Produkt, ein Repo, eine Seite), ihre Logos. Ohne diese werden öffentliche Seiten erfasst (
capture.mjs); ein privater Bildschirm wird niemals erfunden. - Der Pipecorn-Generic: ein BONUS jedes Stils, JEDES MAL gefragt, standardmäßig AUS (
plugins/video/references/pipecorn-generic.md): etwa 6 s ganz am Ende, Pipecorn, dann ersetzen sich seine Werte gegenseitig in einem Slot, dann wieder Pipecorn, keine Musik. Nein · Ja, mit welchen Werten (1 bis 4;node $E/generic.mjs --list; standardmäßig Telefonabdeckung, Connect-Rate, Pipeline). - Deine Stimme verbessert: ein BONUS, JEDES MAL gefragt, standardmäßig AUS (
plugins/video/references/voice-clean.md): ElevenLabs' Sprachisolator entfernt den Raumhall und das Rauschen aus der Aufnahme. Nein · Ja, mach meine Stimme besser. Dafür wird der ElevenLabs-Connector benötigt: ohne Schlüssel sage in einer Zeile, dass es ihn gibt (Einstellungen › Connectors › Schlüssel hinzufügen) und fahre fort. Bei einem Ja, vor Schritt 1:node plugins/video/motion/voice.mjs clean <quelle>, dann project.json ›sourceist<…>-voice.<ext>(gleiche Länge, Bild unberührt).
Ausführen von der GTM by Pipecorn-Seite, die Zusammenfassung der ersten Nachricht beantwortet es; nicht erneut fragen.
1. Transkribieren, wortwörtlich
$E/transcribe.sh --lang en # die tatsächlich GESPROCHENE Sprache; niemals übersetzt
words.json, auf der Uhr der ROHEN Aufnahme. Wenn die Aufnahme ein Rush ist (derselbe Satz mehrmals versucht), montiere sie zuerst mit dem rough-cut.mjs der Engine (short-editor/SKILL.md § 0.7), dann transkribiere die Montage. Dann node $E/words.mjs (das der Engine): words-fixed.json, jeder Wortbeginn aus einer Stille heraus auf die Stimme und sein tatsächliches Ende vor einer Pause verschoben, die zweifelhaften aufgelistet; words.mjs env|end|say um eines zu lesen (short-editor/SKILL.md § 1). Niemals ein eigenes Skript dafür.
2. Jede Pause schneiden: die Jump Cuts
$K/py.sh tighten.py --dry-run # was es schneiden würde
$K/py.sh tighten.py # source/tight.mov; project.json, words.json, shots.json umgelenkt
$K/py.sh tighten.py --keep 0.10 --min-pause 0.16 # die Standardeinstellungen, gemessen an der Referenz
Jede Stille von 0,16 s oder mehr wird entfernt, bis auf 0,10 s an der Verbindungsstelle (0,06 s nach dem letzten Ton, 0,04 s vor dem nächsten); die führende Stille und das Ende ebenfalls. In der Referenz ist keine verbleibende Pause länger als 0,32 s, und eine Verbindung kommt ungefähr alle 2 bis 3 s: Der Sprecher atmet nie im Bild. Jede Verbindung ist ein Jump Cut: kein Blitz, kein Whoosh verbirgt ihn; die Kamera markiert ihn durch den Wechsel des Bildausschnitts Weit / Nah BEIM Schnitt (§ Das Aussehen).
Wo die Sprache aufhört, wird GEMESSEN (eine 10-ms-Hüllkurve, Hysterese bei Raum + 12 / Raum + 5 dB), niemals von Whisper abgelesen. Whisper-Einsätze werden dagegen geprüft: ein Einsatz innerhalb einer gemessenen Stille mit einem leisen Ton darunter (Raum + 9 dB) stoppt den Schnitt 50 ms davor; ein Einsatz im Raumklang ist Flüstern, das zu früh kommt (es war dreimal auf der Entwicklungsaufnahme um 0,35 s zu früh) und verschiebt sich dorthin, wo die Sprache beginnt. Beides wird gemeldet.
Die erhaltenen Abschnitte werden einmal in source/tight.mov geschrieben, in ganzen Frames (jeder Abschnitts Bild und Ton dauern genau so lange: ungesnappt, 13 Verbindungen brachten die Lippen einmal zwei Frames hinter die Stimme), in der Bittiefe der Quelle mit ihren Farb-Tags (niemals ein Regrade). Dann, wie es das rough-cut.mjs --adopt der Engine tut, zeigt project.json darauf (source; die Aufnahme bleibt in rawSource), words.json wird auf seine Uhr gesetzt (das Transkript der Aufnahme bleibt in words.raw.json), und shots.json listet die Aufnahmen zwischen den Verbindungen. Nicht die On-the-Fly-cuts der Engine: Ein Projekt mit Schnitten kann nicht in Slice gerendert werden, und Slices sind, wie ein Moment in Bewegung betrachtet wird. tighten.py beginnt immer wieder von der Aufnahme, also ist es sicher, es zweimal auszuführen; ein Schnitt, den der Sprecher wünscht (ein Neuanfang, ein Stolperer), kommt in project.json manualCuts (Sekunden der Aufnahme), dann tighten.py erneut.
Ein SZENENWECHSEL innerhalb der Aufnahme (eine Teaser-Aufnahme am Ende, ein anderer Raum) ist nicht in shots.json: finde ihn dort, wo das Licht des Frames springt (ffmpeg … signalstats YAVG Frame für Frame) und gib ihn dem Plan (SCENE): die Kamera wird dort weit und das Papier schwenkt ihn herein.
3. Wo das Gesicht ist
node $K/face.mjs # assets/faces.json, 5 pro Sekunde, auf der AUSGABE-Zeitachse
Apple Vision, durch die Schnitte. Der Plan liest es durch die Kamera (faces(P, camera(STEPS))): F.slot() ist, wo JEDES Polaroid des Videos landet (die Mittellinie des Frames, 0,08 unter dem Medianzentrum des Gesichts, 0,44-0,50: die Mitte des Bildschirms), F.faceLine() die eigene Linie des Gesichts (sein Medianzentrum, 0,36-0,50) für die Schlüsselideen und Punch-Phrasen, die über das Gesicht geschrieben werden, F.top(t) die Höhe über dem Kopf für die Schlüsselwörter, F.around(t0, t1, n) Punkte um den Kopf, F.over(t0, t1) die Box des Gesichts. Führe es nach jedem tighten.py erneut aus.
4. Das Transkript lesen und die Bilder entscheiden: der Beurteilungsschritt
Lies die gesamte Aufnahme und gib ihr die Dichte der Referenz: alle 1-3 s ein neues Ding auf dem Bildschirm (die Referenz: 50 Figuren in 72,7 s; der Entwicklungsschnitt: 49 in 47,1 s). Wähle pro Satz die Figur, die ihn sagt, aus § Das Aussehen:
- der Hook (der erste Satz): der Titel in den drei Zeilen der Referenz (eine weiße Linie; DAS Wort des Versprechens in Farbe mit weißen Wörtern daneben; eine Linie auf Papier) und Aufkleber um den Kopf, wenn der Satz Rollen, Werkzeuge, ein Team auflistet oder impliziert;
- ein Gefühl, ein Kostenpunkt, ein Fehler, eine Übertreibung, ein Vergleich: ein echtes Reaktions-GIF als Polaroid (der validierte Schnitt: Pepe Silvia für „search through thousands of platforms", Key & Peele schwitzen für „full disclosure, I'm not the best", Buddy the Elf am Telefon für „what to say on a call", „Let's get ready to rumble" für „versus"), seine Beschriftung am Kinn, vier oder fünf in einem Kurzfilm;
- eine beiläufig erwähnte Liste („the good, the bad, the fails…") und die Nebenbemerkungen (ein Ort, „a series", „stay tuned"): Aufkleber, einer pro Wort (das Papier ist NICHT auf jedem Schlüsselwort: die Untertitel sagen die Wörter bereits, „l'effet papier…"); …
[Nach der Überschrift wurde der restliche Inhalt abgeschnitten. Der Skill fährt fort mit der detaillierten Beschreibung des Erscheinungsbilds, der Audiobearbeitung, der Bauphase und der Verifikation.]
Hinweis: Die Übersetzung des vollständigen SKILL.md-Inhalts wurde aufgrund der Zeichenbeschränkung abgeschnitten. Der ursprüngliche Text enthält detaillierte Anweisungen zu Schnitt, Effekten, Audio und Build-Schritten, die alle im Scrapbook-Stil präzise umgesetzt werden müssen.