Evidence-Explainer (Sprachnotiz → 1-minütiges vertikales Video mit Belegen)
Basierend auf „How Malawians get Visa cards with no forex“ (11. Nov. 2026): eine 4:15 lange Android-Sprachnotiz → ein 60,4 s TikTok mit 10 Webseiten als Belege, Bridges eigenes Architekturdiagramm, 9 Logos, 4 „Chings“. Ausgearbeitetes Beispiel in assets/examples/visa-cards/ (Skript + Laiencheck, Schnittliste, Aufnahme-Jobs, volles video.json, Post-Copy, Kontaktbogen).
Sprachnotiz ─► transkribieren + Inseln ─► SKRIPT + LAIENCHECK (Kontrollpunkt) ─► Stimme schneiden (verifizierte Kanten) ─► Tempo + Wörter
│
└► Belege: Screenshots mit Zielrechtecken · Logos · Diagramme aus Dokumenten
│
video.json Timeline (Szenen, Zooms, Stempel, Glossare, Chings, Diagrammschritte)
│
Sound + leise Musik + Mischen ─► Standbilder mit Safe-Zonen ─► Rendern ─► Prüfen
Einrichtung
SK=~/.claude/skills/evidence-explainer
zsh $SK/scripts/new_explainer.sh "<Audiodatei>" .context/<slug> # ~1-3 Min; zeigt freien Speicher
cd .context/<slug> # alle Skripte laufen von hier (W)
Benötigt: ffmpeg, Python 3 + numpy + Pillow, Node 20+, Chrome (Playwright steuert das installierte Chrome), whisper.cpp + ggml-medium.en.bin in ~/.cache/whisper.cpp (scripts/setup_whisper.sh baut es; überschreibbar mit WHISPER_DIR). Das Scaffold führt npm i in remotion/ aus oder klont ein vorhandenes node_modules, wenn EXPLAINER_NODE_MODULES darauf verweist (APFS Copy-on-write, ~0 Bytes). Look = „dev mode“ (src/brand.ts: Punktraster, Space Mono, cyan/gelb/amber); Handle/Site stammen aus video.json.
Die Phasen (beim Erreichen der jeweiligen Phase die Referenz lesen)
| # | Phase | Lesen | Werkzeuge |
|---|---|---|---|
| 1 | Skript aus sent.txt schreiben, dann Laiencheck durchführen | references/01-script-and-lay-check.md | — |
| 2 | Stimme auf ≤ 60 s an verifizierten Kanten schneiden, Tempo, Untertitel | references/02-voice-cut.md | islands_labels.txt, dips.py, tx.sh, cut.py, voice.sh, words.py |
| 3 | Belege: Screenshots + Zielrechtecke, Logos, Diagramme aus Dokumenten | references/03-evidence.md | shoot.mjs, logo_tools.py, logo.mjs, register_image.py |
| 4 | Timeline in remotion/src/video.json | references/04-video-json.md | Engine src/Explainer.tsx |
| 5 | Sound: Klicks, Chings, leise Musik, Mischen | references/05-sound.md | sfx_mix.py, score.py |
| 6 | Vorschau mit TikTok-Safe-Zonen, Rendern, Prüfen | references/06-render-verify.md | remotion/stills.mjs, sheet.py, verify.sh |
Schnellpfad, sobald das Skript abgestimmt ist:
python3 $SK/scripts/cut.py cut.json && zsh $SK/scripts/voice.sh 1.18 "Namen, Marken, Fachjargon"
python3 $SK/scripts/words.py word_fixes.json
node $SK/scripts/shoot.mjs shoot_jobs.json shots && cp shots/*.png remotion/public/shots/ && cp shots/shots.json remotion/src/shots.json
python3 $SK/scripts/logo_tools.py sync # nach dem Holen der Logos
# remotion/src/video.json schreiben, dann:
python3 $SK/scripts/sfx_mix.py path/to/music.mp3 # oder `none`
(cd remotion && npx tsc -p . && node stills.mjs 45,300,...) && python3 $SK/scripts/sheet.py stills --zones
(cd remotion && npx remotion render src/index.ts Explainer ../out/<slug>.mp4 --codec=h264 --crf=18 --audio-codec=aac --audio-bitrate=192k)
zsh $SK/scripts/verify.sh out/<slug>.mp4
Ein vollständiger Render von 60 s dauert ~40 s; Standbilder ~1 s pro Stück nach dem Bundle.
Hausstil (aus dem Review des Creators des ersten Videos – beibehalten, sofern nicht anders gewünscht)
- Vollbild-B-Roll. Screenshots füllen den 1080×1920 Rahmen (keine Browserkarte); die Kamera startet weit und zoomt dann auf die Zeile, die den Beweis liefert, während ein Marker sie überstreicht. Ein schmales
https://domain-Pill + gelber// evidence: …-Tag sitzt oben links. - Logos erscheinen mit einem Kameraklick (weiße Karte, leichte Neigung, Scale-Down-Pop, weißer Blitz). Zeige mehr davon: jedes genannte Unternehmen bekommt sein Logo einmal.
- „Ka-Ching“ bei jeder erfolgreichen Transaktion (Konto erstellt, Geld erhalten, Wallet aufgeladen, Zahlung genehmigt) mit grünem ✓-Chip und Ring.
- Architektur für Laien. Ein Diagramm (Du → App → Infrastruktur → Karte), mit Logos in den Knoten, schrittweise aufgebaut („SCHRITT 1 · ANMELDUNG“…), mit beschrifteten Paketen zwischen den Knoten. Das Entwicklerdiagramm eines Anbieters wird nur auf die klar verständlichen Boxen gezoomt gezeigt, niemals komplett.
- Frage dich nach dem Schreiben des Skripts: Wird dies einen Laien, der das Produkt nutzt, klären oder verwirren? Behebe jedes „verwirrt“ vor dem Bau (Glossarkarten, einfachere Bezeichnungen, keine Code-Formatierung). Setze den Check in die Skriptdatei und in die Zusammenfassung.
- Untertitel am unteren Rand verankert: Der untere Rand der Box liegt fest 400 px über dem Frame-Unterrand (knapp über TikToks Benutzername/Bildunterschrift-Block), 2-zeilige Seiten wachsen nach oben, mit Abstand zur rechten Aktionsleiste.
- Hook zuerst (großes Punktmatrix-Wort + die Frage des Betrachters über dem ersten Beleg, unscharf), Follow-CTA am Ende (Logo-Kette Wiederholung, FOLLOW, Handle, Button, Seite).
- Musik ist ein leises Bett (score.py BASE −26 LUFS): eine laute dramatische Musik wurde als „viel zu hoch und nervig“ getestet.
Kontrollpunkte (anhalten und fragen, mit Empfehlung)
- Skript + Laiencheck bevor irgendetwas geschnitten wird: die Beat-Tabelle (was er sagt → was auf dem Bildschirm zu sehen ist) und die Tabelle „Verwirrt/Klärt“.
- Behauptungen, die du nicht verifizieren kannst (z. B. „App X verwendet Anbieter Y“): behalte sie in seinen Worten, formuliere die Bildschirmbeschriftungen als „z. B.“ / „ein Beispiel“ und markiere sie.
- Vor dem Rendern: Standbilder von jedem neuen Element mit
--zones. - Vor der Veröffentlichung: Logolizenzen (CC BY/BY-SA benötigen einen Credit-Vermerk), abgesicherte Behauptungen („höchstwahrscheinlich“ bleibt sichtbar), von Whisper falsch verstandene Namen (Untertitel verwenden die korrekte Schreibweise, auch wenn er sie seltsam ausgesprochen hat). Nur hochladen, wenn danach gefragt wird.
Arbeitsprinzipien
- Belege vor Behauptungen: jeder faktische Beat bekommt eine Seite, die es belegt, live erfasst, auf die Zeile gezoomt. Bevorzuge Primärquellen (Unternehmens-Newsroom, offizielle Dokumente, die Regulierungsbehörde/Zentralbank, die App-Store-Seite) gegenüber Blogs. Notiere, was eine Seite NICHT sagt (Bridges Länder-Tabelle = wer onboardet werden kann, nicht Kartenverfügbarkeit) und beschrifte entsprechend.
- Nur an verifizierten Kanten schneiden: Energieinseln + halbierte Dips (
tx.sh), niemals Whisper-Wortzeiten (sie driften bei Telefon-Audio um Sekunden). Transkribiere den endgültigen Schnitt und den Render neu. - Glossare sind kurz und konkret: „Stablecoin = ein digitaler Dollar, 1 USDC ≈ 1 $“, „KYC = der ID- + Selfie-Check, den du bei der Anmeldung gemacht hast“, „API = ein Stecker, der Apps die Nutzung von X ermöglicht“.
- Zoom-Grenzen: ein 1200 px mobiler Screenshot füllt den Rahmen bei Zoom 1.0 (er ist bereits ~36 px pro Seite beschnitten); Absätze vertragen ≤ 1.3, kurze Ziele (eine Codezeile, eine Tabellenzeile) 1.8–2.0. Überprüfe, dass die hervorgehobenen Wörter und alle wichtigen Spalten (z. B. Währung) im Rahmen bleiben.
- Prüfen, dann berichten: Dauern (Video vs. Audio), −14 LUFS / Peak ≤ −1, vollständiges Transkript des Renders, Chings ≥ +5 dB über der Stimme, ein Kontaktbogen, den du angesehen hast. Gib an, was du nach Tag ausgewählt hast, ohne zuzuhören (Musik).
Endgültiges Zusammenfassungsformat
Ausgabepfad + Länge; ein Kontaktbogen-Bild; was auf dem Bildschirm zu sehen ist, Beat für Beat (kurz); das Ergebnis des Laienchecks; „Vor dem Posten prüfen“ (ungeprüfte Behauptungen, Lizenzen, Absicherungen, falsch verstandene Namen); Haushaltsdaten (Arbeitsverzeichnis, Speicher, Kosten für erneuten Render, welche Datei bearbeitet werden muss).