Communitygithub.com

Khmer-Geld-Erklärvideo

Erstelle ein 8-10-minütiges horizontales Erklärvideo auf Khmer über eine reale Geldentscheidung, im sauberen, warmen Strichmännchen-Stil (eigene Charaktere, Geld-Tags, Gläser, Diagramme, ruhiger Erzähler, zitierte Quellen), erstellt mit Remotion und vertont mit KiriTTS. Das Format folgt zwei Personen durch dieselbe Wahl und zeigt, wer am Ende besser dasteht, z. B. Mieten vs. Kaufen, Gehalt und Schulden, Franchise vs. Eigenmarke, Tontine vs. Bank. Verwende es immer, wenn der Nutzer nach einem kambodschanischen Finanz- oder Geschäftserklärvideo fragt, einem „Wer hat am Ende mehr?“- oder „Was ist besser?“-Geldvideo, einem Strichmännchen-Erklärvideo für ein kambodschanisches Publikum, einem weiteren Video „wie das Tontine-Video“ oder Themenideen für einen solchen Kanal wünscht, selbst wenn er diese Fähigkeit nicht nennt.

Was ist Khmer-Geld-Erklärvideo?

Diese Fähigkeit erstellt professionelle, animierte Erklärvideos auf Khmer, die reale finanzielle Entscheidungen für ein kambodschanisches Publikum analysieren. Sie verwendet Remotion zur Videorendering und KiriTTS zur Sprachsynthese, wobei ein einzigartiger, warmer Strichmännchen-Stil mit eigenen Charakteren beibehalten wird. Das Kernformat folgt zwei fiktiven Personen, die vor derselben finanziellen Wahl stehen, rechnet die Zahlen transparent vor und zeigt, wer unter bestimmten Annahmen am Ende finanziell besser dasteht – ohne persönliche Empfehlungen auszusprechen. Die Fähigkeit ist besonders wertvoll für Entwickler, die schnell lokalisierte, vertrauenswürdige Finanzinhalte für ein kambodschanisches Publikum erstellen möchten, mit strengen Regeln zur Sicherstellung von Ehrlichkeit, Quellenangabe und der Vermeidung von Plagiaten. Die Pipeline umfasst Themenauswahl, Recherche mit kambodschanischen Primärquellen, Skripterstellung (ca. 7000-9000 Zeichen), ein modulares Szenensystem mit wiederverwendbaren Komponenten und eine mehrstufige Qualitätssicherung, einschließlich eines Looktests vor dem Verbrauch von Sprachguthaben und detaillierter Audioprüfung.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/SopheaktraKP/khmer-money-explainer-skill/tree/HEAD

In Ihrer bevorzugten KI fragen

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

Dokumentation

Was macht Khmer-Geld-Erklärvideo?

Jedes Video folgt zwei gewöhnlichen Personen durch dieselbe Geldentscheidung, rechnet die Arithmetik laut vor und befähigt den Zuschauer, selbst zu entscheiden. Die Zuschauer bleiben wegen der Zahlen und vertrauen dem Kanal, weil die Zahlen ehrlich sind.

Das funktionierende Beispiel ist das Tontine-vs-Bank-Video in templates/project/ (src/story/).

Regeln, die den Kanal schützen

  • Nur Originalarbeit. Stilrecherche kann andere Kanäle ansehen, aber niemals deren Skripte, Charaktere, Thumbnails, Logos oder Einstellungen kopieren und sie niemals in einem Video oder einer Beschreibung nennen. Unsere Besetzung, Geschichten und visuelle Identität (einschließlich des Krama-tragenden Führers) sind unser Eigentum.
  • Ehrliches Geld. Zeige die Annahmen auf dem Bildschirm. Gib beide Seiten an, einschließlich der Risiken der Option, die am besten aussieht. Gib Fragen zum Stellen, keine persönliche Empfehlung. Jede Beschreibung endet mit einem Hinweis „Keine Finanzberatung“ und besagt, dass die Charaktere fiktiv sind.
  • Echte Menschen bleiben außen vor. Betrugsvorwürfe gegen genannte Personen oder Unternehmen sind nicht die Aufgabe dieses Formats. Beschreibe Muster aus gemeldeten Fällen, die in der Beschreibung verlinkt sind.
  • Ausgaben: Sprachkosten KiriTTS-Guthaben: Der 1.100-Zeichen-Pilot verwendete 433, ein 9-minütiges Video benötigt also etwa 3.000-3.500. Überprüfe get_usage vor dem Vertonen, teile dem Nutzer die Schätzung mit und lasse das Skript zuerst genehmigen.

Pipeline

1. Thema

Wenn der Nutzer kein Thema vorgibt, schlage 3 mit jeweils einer Zeile vor. Ein starkes Thema ist eine Gabelung, die jeder in Kambodscha kennt, hat Zahlen, die belegt werden können, und hat eine Wendung, bei der die offensichtliche Antwort falsch oder unvollständig ist. Suche nach aktuellen Themen, bevor du Vorschläge machst.

Lege gleich zu Beginn fest und frage nur nach dem, was nicht bereits bekannt ist: Thema, Stimme (Standard Maly; das Konto kann Klonstimmen haben, siehe list_voices) und Kanalname (CHANNEL in story.tsx; leer lässt das Abzeichen verschwinden).

2. Recherche und Arithmetik

  • Verwende primäre kambodschanische Quellen, wo sie existieren: Nationalbank von Kambodscha, Nationales Statistikinstitut, Bankzinsblätter, Steuerunterlagen von Anwaltskanzleien, seriöse Presse. Notiere Veröffentlichungsdaten: Zinssätze und Steuerregeln ändern sich.
  • Schreibe scripts/calc.py für das Thema neu. Jede Zahl auf dem Bildschirm und im Erzähltext stammt daraus und wird in src/story/numbers.json geschrieben. Füge Plausibilitäts-Asserts hinzu. Führe mehrere Szenarien durch, einschließlich eines, in dem der „Gewinner“ verliert.
  • Trenne, was belegt ist, von dem, was angenommen wird, und kennzeichne angenommene Werte auf dem Bildschirm mit <Note>. Wenn eine Tatsache nicht belegt werden kann, rahme sie entweder als klare Annahme ein oder lass sie weg und teile dies dem Nutzer mit.

3. Skript

Etwa 7.000-9.000 Khmer-Zeichen für 8-10 Minuten; die Stimme des Pilots lief mit etwa 15 Zeichen pro Sekunde. Ein Beat ist ein oder zwei Sätze von etwa 70 Zeichen, ein 9-minütiges Video hat also etwa 100-120 Beats. Lese references/script-formula.md für die Struktur und die Schreibregeln auf Khmer.

Schreibe es in src/story/script.json (Szenen enthalten Beats; Format siehe unten) und zeige dem Nutzer das vollständige Khmer-Skript mit den Quellen und Annahmen. Warte auf Genehmigung vor dem Vertonen. Der Nutzer ist die Autorität für khmerische Formulierungen und Begriffe.

4. Projekt einrichten

Kopiere templates/project/ in einen neuen Ordner, führe npm install aus und ersetze dann src/story/script.json, src/story/story.tsx und scripts/calc.py. Lasse src/engine/ in Ruhe, es sei denn, du fügst etwas Wiederverwendbares hinzu. Verwende einen kurzen Pfad (siehe Fallstricke).

5. Looktest vor dem Verbrauch von Guthaben

python scripts/calc.py
python scripts/build_timeline.py --placeholder
python scripts/check_numbers.py
npx tsc --noEmit
node scripts/stills.mjs out/look/x_ 100,400,900 0.5

Betrachte die Frames selbst, anhand der Checkliste in references/visual-style.md. Nach dem Vertonen überprüfe jede Zeile zweimal, in der Nähe ihres Anfangs und in der Nähe ihres Endes: Standbilder, die nur am Ende aufgenommen werden, verbergen Karten, die leer bleiben, während die Stimme zu einer Zahl aufbaut. Schreibe Szenen einzeln und überprüfe jede, denn Layoutprobleme sind jetzt weitaus billiger zu beheben.

6. Vertonung

python scripts/tts_todo.py

Dies listet nur Beats auf, die neu oder geändert sind. Rufe für jeden KiriTTS text_to_speech mit dem tts-Feld (oder text) des Beats und einer konsistenten Stimme auf, wobei die Auslieferungseinstellungen nicht gesetzt sind. Lade die URL nach voice/<id>.mp3 herunter (Links laufen in etwa einem Tag ab) und zeichne sie mit python scripts/tts_todo.py --done <id> <speech_id> auf. Ein Clip pro Beat bedeutet, dass ein falsches Wort einen Satz zur Korrektur kostet.

Wortgenaue Hinweise sind optional: Speichere die Ausgabe von get_word_timestamps als voice/<id>.words.json und verwende dann at('b03', 'word'). Brüche wie at('b03', .5) reichen normalerweise aus. Höre Zahlen, Namen und Fremdwörter; wenn KiriTTS eines falsch liest, füge eine tts-Schreibweise für diesen Beat hinzu.

7. Timeline, Ton, Rendern

python scripts/build_timeline.py
python scripts/make_audio.py
npx remotion render src/index.ts Main out/video.mp4 --codec h264 --crf 18 --muted
ffmpeg -y -i out/video.mp4 -i out/mix.wav -map 0:v:0 -map 1:a:0 -c:v copy -c:a aac -b:a 192k -shortest out/final.mp4
python scripts/qa.py out/final.mp4 out/qa
npx remotion still src/index.ts Thumbnail out/thumb.png

Lange Videos brauchen eine Weile, also führe den Render-Vorgang im Hintergrund aus. Rendere einen kurzen Piloten der ersten Szenen zur Überprüfung durch den Nutzer, bevor das vollständige Video erstellt wird, wenn der Look oder die Stimme neu ist.

8. Qualitätssicherung

Lese out/qa/report.md und betrachte jedes Kontaktblatt. Untersuche schwarze oder eingefrorene Frames und Lautstärken weit weg von -15 LUFS. Überprüfe, ob jede eingeblendete Zahl mit numbers.json übereinstimmt und kein Khmer-Text abgeschnitten oder überlappend ist.

9. Lieferung

Sende die mp4 und das Thumbnail mit SendUserFile. Schreibe außerdem out/description.md auf Khmer, das Folgendes enthält: einen Aufhänger, eine ausgearbeitete Zusammenfassung mit den Annahmen, Risiken, Fragen zum Selbststellen, die Hinweise zu fiktiven Charakteren und „Keine Finanzberatung“, eine Aufforderung zum Kommentieren, Kapitel mit echten Zeitstempeln aus timeline.json, Quellenlinks und Hashtags. Lade niemals hoch oder veröffentliche ohne Aufforderung des Nutzers.

script.json-Format

{ "gap": 0.3, "scene_gap": 0.7, "tail": 1.5,
  "scenes": [{ "id": "Hook", "chapter": 0, "music": "light", "beats": [
    { "id": "h1", "text": "Khmer-Satz", "tts": "optionale gesprochene Schreibweise", "sfx": [{"at": 0.75, "type": "coin"}] }
  ]}]}
  • Die id einer Szene muss mit einer Komponente in SCENES in story.tsx übereinstimmen.
  • chapter indiziert CHAPTERS; 0 ist der Aufhänger und blendet die Leiste aus.
  • music: light, tense oder resolve.
  • sfx-Typen: pop whoosh coin cash ding thud tick paper sad tada alarm. at ist ein Bruchteil des Beats. Verwende sie bei Enthüllungen, nicht in jeder Zeile.

Szenen schreiben

Lies src/story/story.tsx: Es ist die Referenz dafür, wie eine Szene geschrieben wird. Kurz gesagt, const {f, at} = useScene() gibt die Frame- und Beat-Zeiten, und jedes Element tritt durch <Show at={...} out={...} x y> ein. Nichts ist in Sekunden getaktet, sodass eine Neuvertonung niemals eine Szene zerstört.

Verfügbare Teile:

  • engine/Figure: Gesichter, Posen, Gehen und Requisiten in der Hand. Definiere jeden Charakter einmal oben in der Geschichte.
  • engine/Props: Title, Label, Chip, Tag, Bubble, ThoughtCloud, Jar, Coin, Bill, MoneyBag, Calendar, Bank, House, Stall, Notebook, Phone, Rock, Umbrella, StormCloud, CheckMark, VsBadge, Arrow, FlyingMoney, Note, Moto, NameChip.
  • engine/Charts: Card, Counter, Bars, LineChart, MonthGrid und money().
  • engine/Stage: mood, tint, zoom, focus.

Wenn ein Thema eine neue Requisite benötigt, zeichne sie im gleichen Tintenstil in der Story-Datei und verschiebe sie nach engine/Props.tsx, wenn sie wiederverwendbar ist.

Fallstricke (jeder ist aufgetreten)

  • Windows-Pfadlimit. Remotion schlägt fehl, wenn der Projektpfad so lang ist, dass Dateien in node_modules 260 Zeichen überschreiten: Failed to launch the browser process / spawn ... chrome-headless-shell bei Standbildern und getExecutableDir-Fehler bei vollständigen Renderings. Das Verweisen auf einen anderen Browser behebt das zweite Problem nicht. Halte das Projekt auf einem kurzen Pfad wie D:/videos/<name> (unter etwa 100 Zeichen) und führe dort npm install aus.
  • Temporärer Speicher. Jedes Bundle wird in den temporären Ordner kopiert und nicht entfernt. Wenn C: knapp ist, setze RENDER_TMP für stills.mjs und TEMP/TMP für die CLI auf ein größeres Laufwerk.
  • <Show> standardmäßig x=0, y=0, was einen zentrierten Titel zur Hälfte außerhalb des Bildschirms platziert. Gib immer x={960} für zentrierte Elemente an.
  • Koulens Ziffern werden schlecht gelesen („12“ sieht aus wie „I2“). Title setzt bereits Ziffern und Symbole in der Körperschrift; umgehe es nicht.
  • Tags über Gesichtern. Der Kopf einer stehenden Figur erreicht etwa y=470 und erhobene Hände gehen höher. Platziere Tags bei y≈300-350 über einer Figur.
  • Remotion schreibt mit --muted keine brauchbaren Audiodaten. Muxe daher immer wie gezeigt mix.wav danach ein.
  • Bash-Heredocs mit viel TSX können in einigen Shells unter Windows nicht geparst werden. Schreibe Quelldateien mit dem Dateiwerkzeug.

Verwandte Skills