Toonfacts: Animierte Cartoon-Fakten-Shorts, eine Fertigkeit
Sagen Sie einfach, was Sie möchten, in normalen Worten. Diese eine Fertigkeit erledigt die gesamte Arbeit: Idee, Fakten, Skript, Einstellungsplan, Untertitel, ElevenLabs-Voiceover, Bauen, Selbstprüfung, Rendern und spätere Aktualisierungen. Fragen Sie den Benutzer nie, den Stil zu erklären: Er ist in dieser Fertigkeit definiert.
Modi (aus den Worten des Benutzers auswählen)
| Benutzer sagt | Modus | Lesen |
|---|
| „neues video“, „neues video über X“, „überrasch mich“, „mach den nächsten kurzfilm“ | Neu | docs/new-video.md |
| „video aktualisieren“, „video reparieren“, „ändere X in “, „wende die neuesten regeln an“ | Aktualisieren | docs/update-video.md |
| „video fortsetzen“ (nach einem manuellen Schritt wie dem Speichern des Audios) | Fortsetzen | docs/new-video.md, fortsetzen ab der ersten fehlenden Phase |
| „video prüfen“, „ prüfen“, „prüf diese mp4“ | Prüfen | Nur docs/review.md |
| „video-ideen“, „gib mir ideen“ | Ideen | Nur docs/new-video.md Phase 1: Reales Geschichten und interessante Fakten recherchieren, nach Story-Stärke und Hook-Stärke bewerten, in videos/_ideas.md protokollieren, die Top 5 mit einer einzeiligen Geschichte, ihrer Form und einem Entwurf des Hooks anzeigen, nichts bauen |
| „fertigkeit aktualisieren“ | Upgrade | Nur Preflight-Schritt 2, dann die Versionsänderung melden |
Wenn die Anfrage unklar ist, wählen Sie Neu, wenn kein Video benannt wird, und Aktualisieren, wenn eines benannt wird. Wie das Video gebaut wird und wie es aussehen muss, steht in docs/engine.md; sowohl Neu als auch Aktualisieren verwenden es. | | |
Betriebsregeln (alle Modi)
- Eine Einstellung muss bedeuten, was die Stimme sagt, und wird mechanisch geprüft. Jede Einstellung deklariert, was sie behauptet (was gelesen wird, wer was ansieht, worauf was zielt, was gehalten wird) und ruft
assertScene auf; jeder auf ein Requisit gemalte Text wird mit fitText angepasst. tools/check_scene.py blockiert das Rendern, bis diese Aufrufe vorhanden sind. Rendern Sie niemals an einem fehlschlagenden Tor vorbei, und reparieren Sie niemals ein abgeschnittenes Schild, indem Sie seinen Text verkleinern oder eine Toleranz erweitern: Reparieren Sie die Geometrie.
- Der Hook ist ein Tor, keine Verzierung. Es wird kein Skript geschrieben, bis eine erste Zeile das Hook-Tor in
docs/new-video.md Phase 2 passiert, und kein Video wird ausgeliefert, bis der Hook-Block oben in templates/review_checklist.md besteht. Eine schwache erste Zeile ist ein Grund für einen Neuentwurf, niemals etwas, das später umgangen wird.
- Stellen Sie keine Fragen. Treffen Sie vernünftige Entscheidungen, schreiben Sie sie in das
NOTES.md des Videos, machen Sie weiter. Stoppen Sie nur, wenn das Voiceover nicht erstellt werden kann (siehe docs/new-video.md Phase 3), ein benötigtes Werkzeug fehlt oder eine Entscheidung nicht rückgängig gemacht werden kann.
- Ein Ordner pro Video, alles darin:
videos/<slug>/ (slug = Titel als kleingeschriebene Wörter, getrennt durch Bindestriche). Finales MP4 und publish.txt ganz oben, Arbeitsdateien in source/, alte Renderings in versions/. Temporäre Dateien (Standbilder, Kontaktbögen, Test-Renderings) nur in work/<slug>/. Lassen Sie niemals Arbeit nur im Gespräch.
- Geben Sie ElevenLabs-Credits einmal pro Voiceover aus (eine Aufnahme). Nur neu generieren, wenn sich die gesprochenen Wörter ändern, das Audio unbrauchbar ist oder die Aufnahme die Leistungsprüfung in
docs/new-video.md Phase 3 Schritt 4 nicht besteht (Lachen oder Übertreibung) – dann einmal mehr, mit reduzierten Tags.
- Natürlich ist ausdrucksstärker als übertrieben. Der Erzähler lacht nie: kein
[lacht] oder [kichert] irgendwo, höchstens 3 Tags im gesamten Skript und keine Ausrufezeichen im Voiceover-Text. Die Bilder tragen die Komödie; ein Erzähler, der über seinen eigenen Witz lacht, ist das klarste Zeichen einer KI-Aufnahme.
- API-Schlüssel niemals ausdrucken oder speichern. Das ElevenLabs MCP wird vom Benutzer in Claude Code hinzugefügt; verwenden Sie es als verbunden.
- Niemals ein Video veröffentlichen oder hochladen. Die Auslieferung ist das finale MP4, sein Vorschaubild und eine recherchierte
publish.txt (Titel, Beschreibung, Hashtags, Tags).
- Finale Antwort: Ein paar Zeilen (was erstellt oder geändert wurde, wo es ist, die wichtigen Entscheidungen, ein nächster Schritt). Keine Schritt-für-Schritt-Zusammenfassung.
Preflight (still, jeder Lauf, jeder Modus)
- Projekt und Ordner. Finden Sie das Remotion-Projekt (den Ordner mit
package.json und src/). Erstellen Sie videos/, videos/_ideas.md und work/, falls nicht vorhanden.
- Halten Sie diese Fertigkeit aktuell. Wenn dieser Fertigkeitsordner ein Git-Klon ist, führen Sie ein stilles
git pull --ff-only aus und lesen Sie CHANGELOG.md, um zu erfahren, was sich geändert hat; erwähnen Sie die neue Version nur in der finalen Antwort, wenn sie sich geändert hat. Wenn es kein Git-Klon ist, überspringen.
- Werkzeuge. Überprüfen Sie
ffmpeg, Python 3 und @remotion/three (installieren Sie @remotion/three und three im Projekt, falls nicht vorhanden). Finden Sie die ElevenLabs MCP-Werkzeuge (Namen wie text_to_speech, generate_speech, creative_generate_speech, list_voices, speech_to_text, transcribe); laden Sie sie mit ToolSearch, falls verzögert. Wenn keine vorhanden sind, fahren Sie bis zum Voiceover fort, schreiben Sie NEEDS_AUDIO.md mit der Erklärung, dass das ElevenLabs MCP verbunden werden muss (oder das Audio bereitgestellt werden muss), und stoppen Sie dort.
- Alte separate Fertigkeiten. Wenn
.claude/skills/cartoon-3d-short/ oder .claude/skills/new-video/ ebenfalls existieren, verwenden Sie sie nicht. Teilen Sie dem Benutzer einmal in der finalen Antwort mit, dass er diese beiden Ordner entfernen kann, da diese Fertigkeit beide ersetzt.
- Legacy-Hilfsdateien. Löschen Sie
video-ideas/SKILL-UPDATE.md (erste Zeile beginnt mit „# Instructions for Claude Code“) und video-ideas/README.md (erste Zeile „# video-ideas“), falls vorhanden. Löschen Sie niemals etwas anderes.
- Alte publish-Dateien umbenennen (einmalig). Die publish-Datei ist jetzt reiner Text, nicht Markdown, da der Benutzer daraus kopiert und sie nicht gerendert lesen möchte. Kopieren Sie für jedes
videos/<slug>/publish.md den Inhalt nach videos/<slug>/publish.txt, entfernen Sie dabei das Markdown (löschen Sie #, **, Backticks, Tabellen-Pipes; machen Sie aus Überschriften Großbuchstaben und behalten Sie den Inhalt identisch), und teilen Sie dem Benutzer in der finalen Antwort mit, welche publish.md-Dateien er nun löschen kann. Löschen Sie sie niemals selbst.
- Migration des alten Layouts (einmalig, durch Verschieben, niemals Löschen). Wenn
video-ideas/ oder out/ aus einer älteren Version existiert:
video-ideas/_ideas.md wird zu videos/_ideas.md.
- Für jedes
video-ideas/<slug>/: publish.md (oder publish.txt) geht nach videos/<slug>/publish.txt; jede andere Datei (script.md, voiceover*.mp3, words.json, NOTES.md, REVIEW.md, CHANGES.md, NEEDS_AUDIO.md, Prüfbögen) geht nach videos/<slug>/source/.
- Ordnen Sie jedes finale Rendering in
out/ seinem Slug zu (anhand des Dateinamens oder Titels – out/<slug>.mp4 oder ein Name wie The_Man_Who_...): das neueste wird zu videos/<slug>/<slug>.mp4, ältere werden zu videos/<slug>/versions/<slug>_v1.mp4, _v2.mp4 nach Datum sortiert.
- Alles andere in
out/ (Standbilder, Kontaktbögen, QA, Test-Renderings, pro-Video-Temporärordner) wird nach work/legacy-out/ verschoben und die beiden Hilfsdateien oben nach work/legacy/. Alles, was Sie nicht zuordnen können, bleibt ebenfalls dort.
- Wenn abgeschlossen, listen Sie in der finalen Antwort auf, was wohin verschoben wurde (eine kurze Liste), und teilen Sie dem Benutzer mit, dass die leeren Ordner
video-ideas/ und out/ gelöscht werden können. Berühren Sie nicht src/, public/, scripts/, audio/ oder backup/, und lassen Sie alle bereits in work/ befindlichen Dateien an ihrem Platz.
Ordnerstruktur
videos/ # alles Fertige oder in Bearbeitung, ein Ordner pro Video
_ideas.md # jedes verwendete oder abgelehnte Thema (zuerst lesen, zuletzt anhängen)
<slug>/
<slug>.mp4 # ENDGÜLTIGES Video: die hochzuladende Datei
thumbnail.jpg # erstelltes Cover, 2160x3840 (kein roher Frame)
publish.txt # Titel, Beschreibung, Hashtags, Tags, Kategorie, angehefteter Kommentar + Recherchequellen
source/ # script.md voiceover.mp3 words.json NOTES.md REVIEW.md CHANGES.md
versions/ # frühere Renderings: <slug>_v1.mp4 ... (vom Aktualisieren-Modus aufbewahrt)
work/ # Temporäre Dateien, sicher zu löschen: Standbilder, Kontaktbögen, QA, Test-Renderings, REMOTION_TMP, wenn kein anderes Laufwerk
<slug>/
Was in dieser Fertigkeit enthalten ist
| Pfad | Was es ist |
|---|
docs/new-video.md | Neu und Fortsetzen: Idee, Recherche, Skript, Voiceover, Bauen, Prüfung, Auslieferung |
docs/update-video.md | Aktualisieren: Änderung klassifizieren, alte Versionen schützen, anwenden, neu rendern, Regressionstest |
docs/review.md | Der Prüfzyklus (Kontaktbögen, Prüfungen, Bewertungen, Korrekturen) |
docs/engine.md | Wie das Video gebaut wird und aussehen muss: Pipeline, Regeln für jedes Video, Bildausschnitt, Beleuchtung, Kameraführung, Untertitel, Reaktionen, Qualitätsschranke |
references/story_format.md | Das sechsteilige Story-Format, Comedy-Werkzeugkasten, Tempovorgaben |
references/ (andere) | Stilbibel, Messberichte, Referenzbilder und -bögen |
templates/ | Renderer-Quellcode (bridge/), Audiosynthese, Skripte, Einstellungsplan, Skript- und Prüfvorlagen |
docs/history/ | Archiv der README, CHANGELOG und ursprünglichen Formulierungen der beiden früheren Repos. Keine Anweisungen |
tools/review_video.sh | Längen-, Hartschnitt- und Lautstärkeprüfungen plus Kontaktbögen |
tools/make_thumbnail.py | Erstellt ein 2160x3840 Shorts-Vorschaubild: schneidet die Figur aus, setzt sie auf einen gemachten Hintergrund, stapelt den Text |
tools/check_scene.py | Blockiert ein Rendering, dessen Einstellungen niemals ihre physische Wahrheit deklariert oder deren Requisitentext nicht angepasst wurde |
tools/check_voice.py | Überprüft eine Voiceover-Aufnahme: Geschwindigkeit, Pausen, Lautstärke und die Sekunden, in denen die Auslieferung zu schnell ist (Lachen, Hetzen) |