/bb:edit
Ziel
Rohmaterial in ein kurzes Video verwandeln, das ein Fremder anhält, darin etwas fühlt und handelt: ein 1080×1920-Meister und ein korrektes 1080×1350-Feed-Meister, beide bei etwa -14 LUFS, mit einem Schnittplan dahinter, der erklärt, warum jeder Schnitt genau dort sitzt.
Vor allem anderen: Diesen Mac prüfen
python3 "${CLAUDE_SKILL_DIR}/scripts/setup.py" --data "${CLAUDE_PLUGIN_DATA}"
Es gibt eine Statuszeile pro Werkzeug aus, jede mit der exakten Korrektur, dann READY oder NOT READY. Es kann bedenkenlos erneut ausgeführt werden und dauert Sekunden, sobald alles installiert ist. Der erste Lauf baut die Python-Werkzeuge, was einige Minuten dauert.
Bei NOT READY gib der Person die Korrekturzeilen und brich ab. Fehlen nur die Modelle, informiere sie, dass es etwa 490 MB sind, und füge auf ihr Ja hin --download-models zum selben Befehl hinzu. OPTIONALE Zeilen blockieren nichts.
Dann: Fragen, was wir erreichen wollen
Die Person, die dies ausführt, hat den Kontext, und was sie hier sagt, macht die Arbeit gut. Eine unserer Anzeigen ist fehlgeschlagen, weil nichts gefragt wurde; ein Reel hat funktioniert, weil jemand echten Kontext geliefert hat.
Sieh dir zuerst an, was vorhanden ist (Material, Drehbuch, Briefing, Notizen) und fasse es zusammen, damit die Person bestätigt, statt neu zu tippen. Frage in einer kurzen Runde (AskUserQuestion, wenn du sie hast, sonst in der Nachricht).
Frage immer zuerst – es sei denn, die Person hat es bereits mitgeteilt:
- Was versuchen wir zu erreichen, und um welche Art von Video handelt es sich? Ein Awareness-Video, ein Showcase-Reel, eine bezahlte Anzeige, die etwas verkauft, UGC oder ein Gründerstatement, Behind the Scenes, etwas anderes?
Dann nur, was fehlt:
- Für wen ist es, und was sollen sie fühlen oder tun, nachdem sie es gesehen haben?
- Welcher Stil? Welche Referenz ist am nächsten? Du zeigst dann Optionen auf dem echten Material zur Auswahl.
- Material, Ton oder Musik, Länge und wo es läuft.
Wenn es eine Anzeige ist, werden der Käufer und die Phase des Drehbuchs übernommen, oder /bb:script läuft zuerst. Ein Schnitt ändert niemals die Idee oder eine Behauptung; das geht zurück zum Drehbuch.
Schreibe die Antworten in job/brief.md und arbeite dann bis zum Ende. Der einzige weitere Stopp sind die Optionen in Schritt 2. Wenn alles gegeben ist oder die Person sagt „Mach einfach“, frage nicht. Wenn niemand antworten kann (ein kopfloser Durchlauf), sage, was du gefragt hättest, und triff die sinnvollste Entscheidung.
Geschmack gehört zum Auftrag
Frage 1 legt den Auftrag fest: Schreibe ihn in die erste Zeile von job/brief.md. Was jemandem in einem Video gefallen hat, überträgt sich nicht auf ein anderes. Ein organisches Reel und eine Anzeige sind unterschiedliche Aufträge: Die Anzeige soll verkaufen. Daher wird eine Anzeige danach beurteilt, für wen sie ist, die Verkaufsargumente des Produkts, Beweise und ein Kaufgrund, nicht nach den Witzen oder dem Gefühl eines organischen Stücks. Lehren aus einem organischen Schnitt binden keine Anzeige und umgekehrt.
Warum
Generische KI-Schnitte schneiden auf jeden Musikbeat, geben jeder Einstellung die gleiche Länge, zoomen in alles hinein und stoppen, sobald das letzte Wort endet. Jedes davon wurde hier abgelehnt (siehe lessons.md). Die Schnittbücher beantworten dieselben Fragen besser, also fragen wir sie pro Entscheidung: Murch, wo ein Gedanke endet; Pearlman für Rhythmus und die offene Frage; Block, wo das Auge hingeht. Die Bücher sind Fragen und Passagen, niemals Stimmen.
Wie gut aussieht
- Bild 0 funktioniert bereits als Standbild ohne Ton: das Produkt, ein Ergebnis oder eine Überraschung, kein Logo oder Gruß.
- Eine Frage wird im Haken geöffnet und bleibt bis zur Auflösung offen.
- Schnitte fallen dort, wo ein Gedanke oder eine Bewegung endet, nicht auf einem Raster. Mindestens eine Einstellung wird neben schnelleren gehalten, sodass sie als bewusste Pause gelesen wird.
- Das hellste oder sich bewegende Ding in jeder Einstellung ist das, worauf man schauen soll. Text sitzt unter dem Kinn oder im klaren Himmel, niemals über einem Mund, und niemals gestapelt mit einer anderen Zeile, die dasselbe sagt.
- Der Schluss ist ruhiger als die Einstellung davor, und die Aufforderung ist klar. Das Ende sitzt: Die Musik endet auf ihrem eigenen Ende oder einer echten Phrase, niemals ein Ausblenden über einem noch laufenden Song und niemals über ihren eigenen letzten Schlägen.
- Der echte Ton ist dabei. Menschen im Material sind über der Musik zu hören, und der größte Moment des Songs trifft auf den größten Moment des Bildes.
- Das Material sieht aus wie gefilmt: die eigene Farbe des iPhones, ruhiger Bildausschnitt, ein sanftes Hereinzoomen nur auf das Produkt, keine bewegten Zooms, kein Spiegel-Füllen, keine schwarzen Balken.
- Das 4:5 wird aus derselben EDL neu angelegt, sodass Untertitel und Gesichter im Bild bleiben.
Befehle
Referenzdateien schreiben diese kurz. Der Shell-Zustand wird nicht zwischen Befehlen übertragen, also verwende immer die vollständige Form, und gib auch einem Kritik-Agenten die vollständige Form.
PYbedeutet"${CLAUDE_PLUGIN_DATA}/venv/bin/python", das Python, das setup gebaut hat. Führe jedes Python-Skript hier damit aus.scripts/…bedeutet${CLAUDE_SKILL_DIR}/scripts/….references/…bedeutet${CLAUDE_SKILL_DIR}/references/….search.pybedeutetpython3 "${CLAUDE_PLUGIN_ROOT}/skills/books/scripts/search.py".
Arbeitsablauf
Auftragsordner: <client>-<job>/ im Ordner, in dem die Person sich befindet, oder in dem, den das Briefing nennt (job/). Das Material bleibt, wo es ist; nur Renderings werden geschrieben.
- Lesen und zuhören. Führe
PY scripts/listen.py clips <material> --out job/soundaus, bevor du planst: Es transkribiert jeden Clip und findet Sprache, Lachen, Rufe und Pegelspitzen. Lies alles. Off-Kamera-Zeilen sind oft die Idee und verraten, was eine Einstellung wirklich ist (in einer Anzeige war eine „Anwendungs“-Einstellung ein Regisseur, der sagte: „Du musst nichts auftragen“). Führe auchPY scripts/listen.py song <track>aus und lies die Worte: Sie können mit dem Bild kämpfen oder ihm helfen. Dann alle Kundennotizen,lessons.md, den eigenen Ordner des Kunden mit früheren Schnitten (nur dieser Kunde, sieheexamples/README.md), das Drehbuch oder Briefing. Führescripts/probe.sh <material> > job/footage-log.mdaus, sieh dir dann die Clips an und füge die besten Momente mit Zeitcode hinzu. Konvertiere HDR mitscripts/proxies.shvor allem anderen. Ein Materialprotokoll, das jemand anderes geschrieben hat, ist ein Hinweis, keine Tatsache: Sieh dir einen Frame jeder Auswahl an, bevor sie in die EDL kommt (scripts/sheet.sh <clip> <start> <len> job/sheets, damit nichts neben dem Material geschrieben wird). Liste jede Behauptung aus dem Drehbuch oder Briefing gegen den Clip-Moment, der sie zeigt; eine Behauptung, die kein Clip zeigt, wird jetzt geändert oder gestrichen, nicht von der Kritik. Schreibe die Stimmung in einer Zeile, in den Worten der Person. - Planen. Lade
references/plan.md,rhythm.md,eye.md,sound.md. Miss die Musik mitPY scripts/beats.py <track>: Tempo, erster Beat und die Lautstärkekarte, die zeigt, wo der Track sich bereits fürmusic.startbewegt. Pro Beat (Haken, Wendepunkt, Auszahlung, Schluss): was zu fühlen, der Rhythmus, wohin das Auge fällt, der Ton. Eine Suche pro Spalte. Schreibejob/plan.md, jede Zeile mit einer Passagen-ID. - Optionen. Etwa drei Behandlungen pro Abschnitt (lässig, mittel, extrem) als Kacheln: je ein Frame und eine Zeile. Die Person wählt. Wenn sie nicht da ist oder „Mach einfach“ gesagt hat, wähle aus, protokolliere den Grund in
options.mdund behalte die anderen sichtbar; eine Tabelle der Optionen reicht. - Rohschnitt. Lade
references/formats.md. Schreibejob/edl.json, dannmix.py(der Ton) undcut.py --draftauf Proxies.scripts/sheet.shauf das Ergebnis,listen.py cutauf das Ergebnis, lies den Bericht und sein Wellenformbild. Sieh dir das Blatt, den Hakenstreifen und Frame 0 selbst an und sieh es einmal ohne Ton an. - Kritiker. Ein neuer Agent erhält
job/brief.md(damit er gegen den Auftrag bewertet), Frame 0 in voller Größe, die Frames, den Streifen, den Zuhörbericht, das Mixprotokoll, die Behauptungsliste,references/critic.mdund den vollständigensearch.py-Befehl. Frame 0 zuerst, weil ein Thumbnail falsch lesen kann. Nicht deine Notizen oder diesen Chat. Es gibt Notizen pro Beat zurück, höchstens drei Korrekturen mit Passagen-IDs und ein Urteil. - Finale. Korrigiere, was der Kritiker gefunden hat (oder schreibe auf, warum das Briefing gewinnt). Richte die EDL auf Full-Quality-SDR-Dateien aus, rendere ohne
--draft, dannreframe.pyfür das 4:5, danncheck_cut.pyundlisten.py cutauf das Ergebnis. Behebe jedes FAIL; lies jedes WARN. Sage deutlich, dass niemand es gehört hat: Der Bericht misst, er hört nicht zu, also gehen die Sprachzeilen und der Mix in die Ohren der Person. Blätter beider Meister. README.txt und Lieferung wie informats.md.
Antworte mit den beiden Dateien, Frame 0, einer Zeile pro Beat darüber, was sich nach dem Kritiker geändert hat, und einem Satz, der die Bücher einmal nennt. Zitate bleiben in plan.md, niemals auf dem Video.
Harte Grenzen
- Eine geänderte Behauptung oder Idee geht zurück an
/bb:script. Wenn das Material oder der Ton die Idee zunichtemacht, stoppe und mache die Diagnose und das Drehbuch neu, mit dem Kritiker; tausche niemals während des Schnitts eine neue Zeile ein. Eine unserer Anzeigen hat ihre Zeile im Schnitt ausgetauscht und wurde ohne Publikum und ohne Daseinsberechtigung ausgeliefert. - Optionen vor einem Rohschnitt, jedes Mal. Wenn niemand da ist, wähle aus und protokolliere; überspringe niemals.
- Verlangsame oder beschleunige niemals eine Stimme.
cut.pystummelt das eigene Audio einer Einstellung, wenn ihre Geschwindigkeit nicht 1 ist. - Kein Rauschunterdrückung, keine Unschärfe, keine bewegten Zooms, kein Spiegel-Füllen, keine schwarzen Balken. HDR wird zuerst mit avconvert nach SDR konvertiert. Keine Farbkorrektur bei Talking Heads und UGC. Ein leichter Look nur, wenn das Briefing einen verlangt (
lookin der EDL), laut in der Antwort ausgesprochen. - Niemals mit ausgeschaltetem Clip-Ton ausliefern und keinen Grund im Plan notiert haben.
- Eine Einstellung beweist niemals mehr, als passiert ist: Wenn der Ton sagt, es war nachgemacht, ist es kein Beweis.
- Untertitel in der gesprochenen Sprache, jedes wichtige Wort, niemals über dem Mund, niemals gestapelt mit einer Callout.
- Behauptungen, Preise und Angebote auf dem Bildschirm stammen aus dem Briefing oder der Live-Seite des Kunden, niemals erfunden.
- Nichts geht an einen Kunden, wird veröffentlicht oder gibt Geld aus, ohne das Ja der Person. Die Lieferung in die Drive eines Kunden und jede Nachricht wird für sie entworfen; sie senden.
Know-how
- Text: Homebrews ffmpeg hat kein
drawtextund kein libass, daher wird Text als PNGs vonscripts/text_png.swift(CoreText, einmal voncut.pykompiliert) gezeichnet und mitoverlaygelegt. Schriftarten sind inassets/fonts/(Geist Black, Geist Bold, Playfair Display Italic); eine kundeneigene Schriftart kommt in denstyles-Block der EDL per Pfad. - Whisper ist auf Englisch und hört Off-Kamera-Stimmen falsch.
listen.pyverwendet das kleine englische Modell. Überprüfe jede Zeile, die du untertitelst, indem du die Frames liest; für eine klarere Lesart einer zweifelhaften Zeile fügtsetup.py --download-largeein größeres Modell hinzu (1,6 GB), daslisten.py clips --largeverwendet. - Geschwindigkeit: Finale Renderings laufen mit etwa 3 bis 5 Bildern pro Sekunde für ein 1080×1920 aus 1080p-Quellen, während andere Encodings laufen; ein 30-Sekunden-Spot benötigt 3 bis 5 Minuten. Verwende
--draftfür den Rohschnitt. Führe lange Renderings als Hintergrundaufgaben aus. - Beat-synchrone Schnitte:
beats.pymisstbpmundoffsetaus der Datei. Messe den gesamten Track: Es prüft, ob seine beiden Hälften übereinstimmen, und ein kurzes Fenster über ein Intro kann sich auf den falschen Puls einrasten. Gib der Musik einenbpmundoffset(Sekunden in die Datei des ersten Downbeats) oder eine Liste vonbeats. Markiere die Einstellungen, deren Ende auf einen Beat fallen soll, mit"snap": true; der Standard schnappt nur diese.cut.py --beatsdruckt das Raster gegen die aktuellen Schnitte. Schnappe den Wendepunkt und die Auszahlung, nicht jeden Schnitt:check_cut.pywarnt, wenn mehr als 80% der Schnitte auf einem Beat sitzen. - Text-Timing: Binde Text an eine Einstellung (
"shot": 2, "at": 0.3, "dur": 1.2) anstatt an absolute Sekunden, damit er der Einstellung folgt, wenn ein Beat-Snap einen Schnitt verschiebt. - Lautstärke: Zwei-Durchgang
loudnormauf -14 LUFS im linearen Modus, dann ein Limiter mit 4x der Sample-Rate;cut.pymisst die Datei und kodiert mit einer niedrigeren Decke neu, wenn AAC sie über -1 dBTP gedrückt hat. Musik sitzt standardmäßig 14 dB unter dem Clip-Audio, wenn eine Einstellung ihren eigenen Ton behält; setzemusic.gain_db, um es zu ändern. - 4:5:
reframe.pyrahmt jede Einstellung exakt wie das 9:16 und nimmt ein 1350-Zeilen-Fenster pro Einstellung (y45, Standard 285). Text behält seinen Platz auf dem Bild und wird 40 px nach innen gezogen. Halte 9:16-Text zwischen den Zeilen 330 und 1590 und das 4:5 benötigt keine zusätzliche Arbeit. - Sicherheitszonen (9:16): Nichts über Zeile 270 oder unter 1590 außer Vollbildkarten; die unteren 12% sind Metas Button.
- Blätter:
sheet.sh <video> [start] [len]schreibt ein 40-Frame-Blatt (Zeiten in der .txt daneben), einen 10-fps-Streifen des Hakens (oder eines beliebigen Fensters) und Frame 0. Flash-Frames erscheinen im Streifen, nicht im Blatt. - Clip-Enden:
cut.pywarnt, wenn einouteiner Einstellung über das letzte Bild des Bildes hinausgeht und hält dieses Bild, sodass der Meister nie kürzer als sein Audio ist. Zieheoutzurück, wenn ein Standbild sichtbar wäre. - Handheld und Punch-ins:
xist eine Zahl pro Einstellung, daher wandert ein driftendes Handheld-Subjekt aus dem Fenster, und ein Punch-in multipliziert die Drift. Sieh dir das Fenster dieser Einstellung in Bewegung an (sheet.sh <render> <shot start> <len>ergibt einen 10-fps-Streifen), bevor du der Bildausschnitt vertraust. - Wortzeiten driften: Whisper-Zeiten pro Wort können bis zu 2 s abweichen. Bevor eine Zeile hineinkommt, transkribiere die Scheibe allein; ein Wort, das an einem Ende fehlt, bedeutet, dass der Schnitt falsch ist.
- Lippensynchronität: Telefonkopien können Audio etwa 0,1 s früher tragen. Überprüfe einen Clip vor dem Schneiden; wenn die Stimme voraus ist, schiebe
inauf dem Bild, niemals die Worte. - Die Buchsuche:
search.py "<wörtliche Wörter>" --job feel|rhythm|eye --book murch|pearlman|block --k 6, dann--show <id>, um eine Notiz zu lesen. Wörtliche Wörter funktionieren; Fragen nicht.
Referenzen (nach Entscheidung laden)
references/plan.md: der Vier-Beat-Plan, eine Zeile pro Beat pro Spalte und die Abfragen pro Spalte.references/rhythm.md: wo ein Schnitt fällt, hält, sich Muster ändern, die offene Frage.references/eye.md: wohin das Auge geht, Textplatzierung, Sicherheitszonen, das 4:5-Band.references/sound.md: der Hörschritt, Stimme, Musik, Effekte, Lautstärke, das Ende.references/critic.md: die Bewertungsmatrix, nur vom Kritiker-Agenten geladen.references/formats.md: EDL-Form, die Skripte in Reihenfolge, Ausgaben, wohin die Finalen gehen.references/drawings.md: handgezeichnete Animation über einem Schnitt, wenn das Briefing es verlangt.
Lektionen
lessons.md enthält datierte Zeilen aus echten Reaktionen und Ergebnissen. Lese es in Schritt 0; der Kritiker prüft den Schnitt gegen die letzten fünf. Dieser Ordner wird bei jedem Update ersetzt, daher gehen die eigenen Lektionen eines Kunden in den Ordner dieses Kunden, und eine Lektion für alle geht über das Repository (CONTRIBUTING.md).