Social Ad Builder
scripts/build_ad.py wandelt eine Shotlist in zwei fertige Dateien um. Es benötigt nur ffmpeg und ffprobe (kostenlos). Jeder Standardwert wurde in einem bewerteten Iterationszyklus und blinden A/B-Reviews ermittelt:
- Harte Schnitte. Überblendungen blitzen bei jedem Schnitt schwarz auf.
- Gerichtslabel auf einer soliden Pillenform in der Markenfarbe. Dünner Text über unruhigem Essen ist unleserlich.
- Die Markenzeile auf Frame 0. Die meisten Menschen schauen ohne Ton.
- Ein 4%iger Zoom-Punch, sobald jeder Food-Clip startet.
- Leichte Schärfung plus eine warme Gradation, sodass KI-Clips und Handyaufnahmen wie von einer Kamera aussehen.
- Kein Audio aus den Clips, da KI-Videomodelle eigene Musik hinzufügen. Sound ist echte Raumambienz, falls vorhanden, plus ein sanftes Brutzeln unter Food.
- Lautstärke bei -14 LUFS mit einem Limiter, sodass die Spitzenpegel unter 0 dB bleiben und nichts auf Handylautsprechern verzerrt.
- Text innerhalb des 4:5-Safe-Bereichs (y ca. 390 bei 1920), sodass ein Master sauber auf den Feed zugeschnitten werden kann.
Shotlist
{
"out": "out/my-ad",
"brand_color": "#A3192B",
"brand_line": "Ihr Restaurant · Ihre Stadt",
"ambience": "raum-aufnahme.mov",
"shots": [
{"file": "clips/nudel-heben.mp4", "start": 3.0, "dur": 2.0, "label": "Dan Dan Nudeln"},
{"file": "clips/mapo.mp4", "start": 0.8, "dur": 1.5, "label": "Mapo Tofu"},
{"file": "clips/mapo-scoop.mp4", "start": 3.3, "dur": 1.5},
{"file": "clips/speisesaal.mp4", "start": 0, "dur": 1.0, "label": "Ihr Restaurant", "subline": "Ihre Stadt", "food": false}
],
"endcard": {"bg": "#F3ECE0", "logo": "logo.png", "dur": 2.0,
"lines": [{"text": "Ihre Stadt", "size": 58, "color": "#8B1E1E"},
{"text": "Bestellen Sie zum Mitnehmen oder reservieren Sie einen Tisch", "size": 56},
{"text": "ihreseite.de", "size": 84, "color": "#8B1E1E", "bold": true}]}
}
Führen Sie python3 scripts/build_ad.py shotlist.json aus. Es schreibt out/my-ad-9x16.mp4 und out/my-ad-4x5.mp4.
Shot-Felder:
startunddursind in Sekunden innerhalb des Clips."food": falseschaltet den Zoom-Punch und das Brutzeln aus (für Raumaufnahmen)."keep_label": trueüberträgt ein Label über zwei Shots, ohne es erneut zu animieren."subline"fügt eine kleinere Zeile unter dem Label hinzu."label_size"legt die Labelgröße fest (Standard 78 px). Verwenden Sie\nin einem Label für zwei Zeilen. Labels und Endcard-Zeilen schrumpfen automatisch, um in die Framebreite zu passen.- Text kann Anführungszeichen, Doppelpunkte, Kommas und
%enthalten. Emojis werden in den Schriftarten der Labels nicht dargestellt, lassen Sie sie daher weg. - Wenn ein Clip kürzer ist als die angeforderte
dur, verwendet der Builder, was vorhanden ist, und gibt einen Hinweis aus. Überprüfen Sie diese Hinweise: Ein Hook, der früh endet, friert auf seinem letzten Frame ein.
Taktungsregeln aus erfolgreichen Ads (siehe die Ad-Teardown-Benchmarks)
- Länge: Eine wortlose Food-Montage gewinnt bei 12-20 s. Sprach- oder Story-Ads laufen länger.
- Schnittlänge: Ein Schnitt etwa alle 1,8 s, mit dem ersten Schnitt nach ca. 2 s. Schnittlängen auf einem 0,5-s-Raster lassen jeden 120-BPM-Musiktrack auf die Schnitte treffen.
- Reihenfolge: Beginnen Sie mit Bewegung und einer Hand im Bild. Lassen Sie das Food ununterbrochen laufen. Halten Sie Aufnahmen von leeren Räumen auf etwa 1 s, gegen Ende.
- Ende: Der beste Food-Shot oder eine einfache Karte mit klaren Handlungswörtern.
- Musik: Fügen Sie sie in der eigenen lizenzierten Bibliothek der Plattform beim Hochladen hinzu. Backen Sie keinen Song ein, für den Sie keine Rechte haben.
Erstellen von A/B-Varianten
Ändern Sie eine Sache pro Variante (den Hook-Shot, die Hook-Line, die Länge oder das Gerichtsset), damit der Gewinner sich selbst erklärt. Kopieren Sie die Shotlist, bearbeiten Sie ein Feld, bauen Sie erneut.