CommunityCodierung & Entwicklunggithub.com

/bb:edit – Videobearbeitung für Kurzformate auf dem Mac

Schneidet aus Rohmaterial 15-60-sekündige Werbespots und organische Reels als fertige 9:16- und 4:5-Meister mit Ton auf diesem Mac mit ffmpeg. Fragt zuerst nach dem Verwendungszweck, hört sich jedes Clip an, plant jeden Beat, zeigt Optionen vor dem Rohschnitt und führt eine separate Kritik am Grobschnitt durch.

Was ist bb:edit – Videobearbeitung für Kurzformate auf dem Mac?

Der Skill /bb:edit verwandelt Rohmaterial in hochwertige kurze Videos (15–60 Sekunden) für soziale Medien, optimiert als 9:16- und 4:5-Formate mit Ton bei etwa -14 LUFS. Er basiert auf einer strukturierten, buchgestützten Schnittphilosophie (Murch, Pearlman, Block) und arbeitet auf dem Mac mit ffmpeg, Whisper, CoreText und eigenen Python-Skripten. Der Prozess beginnt mit einer systemischen Prüfung der Werkzeuge und einer gezielten Abfrage des Videotyps (z. B. bezahlte Anzeige, organisches Reel, UGC, Gründerstatement), der Zielgruppe, des gewünschten Gefühls und des Stils. Nach der Transkription und Analyse des Materials folgt eine detaillierte Planung mit Beat-Struktur, Rhythmus, Augenführung und Sound. Vor dem Rohschnitt werden drei Optionen pro Abschnitt präsentiert – der Nutzer wählt aus oder der Skill entscheidet begründet. Nach dem Rohschnitt durchläuft der Schnitt eine unabhängige Kritik durch einen zweiten Agenten, der die Ergebnisse gegen die Aufgabenstellung und ein Bewertungsschema prüft. Der Skill unterstützt Cursor und Claude Code und eignet sich für Kunden wie für das eigene Label Butcherbird.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/tianbester-ZA/butcherbird-skills/tree/main/plugins/bb/skills/edit

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

/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:

  1. 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:

  1. Für wen ist es, und was sollen sie fühlen oder tun, nachdem sie es gesehen haben?
  2. Welcher Stil? Welche Referenz ist am nächsten? Du zeigst dann Optionen auf dem echten Material zur Auswahl.
  3. 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.

  • PY bedeutet "${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.py bedeutet python3 "${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.

  1. Lesen und zuhören. Führe PY scripts/listen.py clips <material> --out job/sound aus, 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 auch PY 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, siehe examples/README.md), das Drehbuch oder Briefing. Führe scripts/probe.sh <material> > job/footage-log.md aus, sieh dir dann die Clips an und füge die besten Momente mit Zeitcode hinzu. Konvertiere HDR mit scripts/proxies.sh vor 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.
  2. Planen. Lade references/plan.md, rhythm.md, eye.md, sound.md. Miss die Musik mit PY scripts/beats.py <track>: Tempo, erster Beat und die Lautstärkekarte, die zeigt, wo der Track sich bereits für music.start bewegt. Pro Beat (Haken, Wendepunkt, Auszahlung, Schluss): was zu fühlen, der Rhythmus, wohin das Auge fällt, der Ton. Eine Suche pro Spalte. Schreibe job/plan.md, jede Zeile mit einer Passagen-ID.
  3. 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.md und behalte die anderen sichtbar; eine Tabelle der Optionen reicht.
  4. Rohschnitt. Lade references/formats.md. Schreibe job/edl.json, dann mix.py (der Ton) und cut.py --draft auf Proxies. scripts/sheet.sh auf das Ergebnis, listen.py cut auf 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.
  5. 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.md und den vollständigen search.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.
  6. 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, dann reframe.py für das 4:5, dann check_cut.py und listen.py cut auf 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 in formats.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.py stummelt 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 (look in 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 drawtext und kein libass, daher wird Text als PNGs von scripts/text_png.swift (CoreText, einmal von cut.py kompiliert) gezeichnet und mit overlay gelegt. Schriftarten sind in assets/fonts/ (Geist Black, Geist Bold, Playfair Display Italic); eine kundeneigene Schriftart kommt in den styles-Block der EDL per Pfad.
  • Whisper ist auf Englisch und hört Off-Kamera-Stimmen falsch. listen.py verwendet 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ügt setup.py --download-large ein größeres Modell hinzu (1,6 GB), das listen.py clips --large verwendet.
  • 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 --draft für den Rohschnitt. Führe lange Renderings als Hintergrundaufgaben aus.
  • Beat-synchrone Schnitte: beats.py misst bpm und offset aus 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 einen bpm und offset (Sekunden in die Datei des ersten Downbeats) oder eine Liste von beats. Markiere die Einstellungen, deren Ende auf einen Beat fallen soll, mit "snap": true; der Standard schnappt nur diese. cut.py --beats druckt das Raster gegen die aktuellen Schnitte. Schnappe den Wendepunkt und die Auszahlung, nicht jeden Schnitt: check_cut.py warnt, 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 loudnorm auf -14 LUFS im linearen Modus, dann ein Limiter mit 4x der Sample-Rate; cut.py misst 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; setze music.gain_db, um es zu ändern.
  • 4:5: reframe.py rahmt 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.py warnt, wenn ein out einer Einstellung über das letzte Bild des Bildes hinausgeht und hält dieses Bild, sodass der Meister nie kürzer als sein Audio ist. Ziehe out zurück, wenn ein Standbild sichtbar wäre.
  • Handheld und Punch-ins: x ist 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 in auf 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).

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Verwandte Skills