Was macht Editorial-Kurzvideo (Fringe Lines)?
Der Look ist an die Kurzvideos von Greg Isenberg angelehnt. Halte jedes Kurzvideo daran:
- Setze dich nie länger als ca. 6 s auf einen Sprecherkopf.
- Eine Grafik- oder Layoutänderung erfolgt alle 3–5 s.
- Untertitel erscheinen wortweise, mit ein paar wenigen orange-farbenen, kursiven Schlüsselwörtern.
- Grafiken folgen dem Gesagten, d.h. eine Grafik erscheint genau zu dem Wort, das sie veranschaulicht.
0. Voraussetzungen (pro Maschine)
pipeline/setup.shinstalliert die Venv~/.shorts-skillund die Remotion node_modules in~/.cache/fringe-lines-video.- Die Episodentranskripte müssen vorhanden sein:
work/<ep>/words-quinn.jsonundwords-doom.json(auspipeline/transcribe_verbatim.py). - Remotion-Quellcode:
pipeline/remotion/src/ShortV2.tsx(Layout) undGraphics.tsx(Grafiktypen).
1. Moment auswählen (30–50 s)
- Durchsuche die Wortdateien nach einem in sich geschlossenen Take, der Folgendes hat:
- eine starke Eröffnungszeile (Behauptung, Zahl oder Geständnis);
- eine Idee;
- einen Pointe oder Punchline gegen Ende.
- Gute Signale:
- konkrete Zahlen (Prozentsätze, Geldbeträge, Personenzahlen);
- genannte Unternehmen oder Produkte;
- eine konträre Meinung;
- ein persönliches Experiment ("Ich ließ Codex…").
- Vermeide Clips, die auf früheren Kontext angewiesen sind ("wie ich schon sagte", "das Ding").
- Mehrere
--ranges können aneinandergereiht werden. Schneide an Satzenden und prüfe, dass die Naht keine Wörter wiederholt.
2. Schneiden
Füge eine Zeile zu work/<ep>/shorts.sh hinzu und führe sie aus:
b --name short-NN --range START:END [--range ...] --replace "27=>27%" --replace "claude=>Claude"
build_short.pymacht Folgendes:- entfernt Füllwörter, Stottern und lange Pausen;
- wählt die aktive Kamera aus;
- schreibt
work/<ep>/short-NN/clip.mp4undprops.json; - rendert die einfache v1-Kurzvideo-Version.
--replacekorrigiert den Untertiteltext. Eine leere rechte Seite blendet dieses Wort aus.- Korrigiere immer: Zahlen ("27"→"27%"), Produktnamen (Claude, Codex, Descript, GTM, SQL) und Whisper-Fehlerhörungen.
- Um die genauen Ausgabe-Timings für das Schreiben des Spezifikation zu erhalten, drucke sie aus:
python3 -c "import json;p=json.load(open('work/<ep>/short-NN/props.json'));print(' '.join(f\"{w['text']}@{w['startMs']/1000:.1f}\" for w in p['words']))"
3. Schreibe das Style-Spezifikation: work/<ep>/short-NN/style.json
{
"hook": {"text": "Microsoft will *27%* seiner Mitarbeiter kündigen lassen", "end": 2.8},
"outro": {"text": "Wachsen *ohne* die *Kopfzahl* zu erhöhen", "hold": 2.0},
"emphasis": ["microsoft", "27%", "verlassen"],
"scenes": [
{"at": 0.0, "mode": "full"},
{"at": 3.0, "mode": "graphic", "graphic": {"type": "stat", "kicker": "Microsoft-Abfindungsangebot", "value": 27, "suffix": "%", "label": "der Mitarbeiter wurde eine Auszahlung angeboten, um zu *gehen*"}},
{"at": 6.2, "mode": "card"}
]
}
Die Zeiten sind Sekunden im geschnittenen Clip, entnommen aus den Wort-Timings in Schritt 2.
Regeln, die Konsistenz wahren:
- Struktur:
- Szene 0 ist immer
full, mit einemhookvon 4–8 Wörtern, der bei ~2,5–3 s endet. - Sage die Behauptung; fasse den Clip nicht zusammen.
- Szene 0 ist immer
- Rhythmus:
- Wechsle zwischen den Modi
full→graphic→card→graphic→card… mit 3–6 Grafiken in einem 40 s Kurzvideo. - Verwende
fullfür eine prägnante Reaktion oder ein Lachen in der zweiten Hälfte erneut.
- Wechsle zwischen den Modi
- Timing:
- Beginne jede Grafik 0,1–0,3 s vor dem Wort, das sie veranschaulicht, und halte sie 2,5–5 s.
- Zwei Grafiken können direkt aufeinander folgen, z.B. eine 20 $-Karte, dann eine 100 $-Karte.
- Hervorhebung: wähle 10–18 Schlüsselwörter: Zahlen, Namen und die Punchline-Wörter. Die Übereinstimmung erfolgt kleingeschrieben, ohne Satzzeichen.
- Akzente: In jedem Textfeld rendert
*wort*kursiv orange. Verwende ein oder zwei pro Zeichenkette. - Outro: eine 2 s Endkarte mit einer kurzen Zeile, die die Kernaussage wiederholt oder eine Frage an den Betrachter stellt.
- Ehrlichkeit:
- Zahlen auf dem Bildschirm müssen dem entsprechen, was in der Show gesagt wurde.
- Diagramme sind schematisch: verwende
linesmit Formen, niemals erfundene Achsen oder Werte. - Verwende "ungefähr" oder "~" wenn der Sprecher dies tut.
Grafiktypen (Graphics.tsx):
| Typ | Felder | Verwendung für |
|---|---|---|
stat | kicker, prefix, value (Zahl, zählt hoch), decimals, suffix, label | eine Kopfzahl |
people | kicker, value (Zeichenkette), label, filled (0–1) | Anzahl von Personen / Anteil von Menschen |
lines | kicker, series: [{label, shape: up|flat|down}], caption | Trend vs. Trend |
quote | text, by? | die Pointe, auf dem Bildschirm gesagt |
headline | source, title, highlight | Nachrichten, Ankündigungen, ein "Urteil" |
list | title, items[] | Schritte, Produkte, was schiefgelaufen ist |
Wenn ein neuer Grafiktyp benötigt wird, füge ihn zu Graphics.tsx und seinem Union-Typ hinzu. Behalte den Kartenstil bei: weiße oder tintenfarbene Karte, 36px Radius, ein Federeingang und eine Animation, die ihren lokalen Frame f durchläuft.
4. Rendern
~/.shorts-skill/bin/python pipeline/style_short.py --ep <ep> --name short-NN --spec work/<ep>/short-NN/style.json
- Die Gesichtsspur (
pipeline/face_track.py, YuNet) wird einmal berechnet und inshort-NN/faces.jsonzwischengespeichert. Sie hält das runde PiP und die Karte zentriert auf dem Gesicht; lösche die Datei, wenn der Clip neu geschnitten wird. - Soundeffekte werden synthetisiert: ein Wusch bei jedem Szenenwechsel und ein Plopp, wenn eine Grafik landet. Sie werden mit
--sfx-db -20gemischt. - Lautstärke: −14 LUFS.
- Ausgabe:
out/shorts/<ep>-short-NN-v2.mp4.
5. Qualitätssicherung (immer vor dem Melden)
Ziehe Frames und betrachte sie:
for t in 1.5 5 10 15 20 25 30 35 40; do ffmpeg -v error -y -ss $t -i out/shorts/<ep>-short-NN-v2.mp4 -frames:v 1 -vf scale=270:-1 /tmp/q_$t.png; done
Überprüfe jedes dieser Elemente:
- Hook: lesbar und bedeckt nicht das Gesicht.
- Grafiken: Sie überlappen nicht den Untertitelblock, der bei y≈1340–1600 sitzt. Kein Text läuft über eine Karte hinaus. Lange Statistikwerte wie "+$500K" verkleinern sich automatisch.
- PiP: Das Gesicht ist in der Mitte des Kreises.
- Untertitel: Keine versehentlichen
*in der Ausgabe; Schlüsselwörter werden in Orange gerendert. - Lautstärke:
ffmpeg -i out.mp4 -af ebur128 -f null - 2>&1 | grep " I:"zeigt etwa −14.
Melde dem Benutzer:
- Worum es in dem Kurzvideo geht und seine Länge.
- Etwaige zu überprüfende Zahlen.
- Ob noch anstößige Sprache enthalten ist.