Communitygithub.com

yinguozhang/ai-dokumentarfilm-produktion

Erstelle chinesische Porträt- oder Themen-Kurzfilme mit einer durch das Briefing bestimmten Länge. Deckt alle Phasen ab: Briefing, Faktencheck, Voice-Over, Beats, Segmente/Schnitte/Keyframes, erstes Bild, H3-Produktionspaket, Review, Schnitt, Musik, Endkontrolle und Auslieferung. 30 Sekunden und 3 Minuten sind nur Beispiele, keine festen Grenzen.

Was ist ai-dokumentarfilm-produktion?

Dieses Skill für KI-Agenten (wie Claude Code, Cursor, Codex) automatisiert die Produktion von chinesischen Dokumentar- oder Porträt-Kurzfilmen. Der gesamte Workflow ist in neun klar definierte Phasen (G0 bis G8) unterteilt, von der Briefing-Erstellung über Faktencheck, Skript, Storyboard, Bildgenerierung, Videoproduktion (MiniMax H3), Schnitt, Musik bis zur Endkontrolle und Auslieferung. Besonderes Augenmerk liegt auf einem Voice-Over-zentrierten Ansatz: Bevor Bilder oder Videos erstellt werden, wird das Voice-Over finalisiert (inklusive Text-Review, Stimmprobe und Animatic). Die Projektdauer wird durch das Briefing bestimmt und nicht durch feste Profile – 30 Sekunden und 3 Minuten sind lediglich häufige Beispiele. Das Skill unterstützt Hybrid-Modellrouting (Codex+DeepSeek für Text/Logik, GPT für Bildausgabe) und bietet eine Reihe von Validierungsskripten, um die Einhaltung von Regeln zu gewährleisten (z. B. `validate.py`, `timeline.py`, `narration_lint.py`). Es ist für Produktionsteams konzipiert, die konsistente, qualitätsgesicherte Ergebnisse mit kontrollierten Kosten und klaren Quellenangaben benötigen.

Funktioniert mit✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/yinguozhang/ai-documentary-production/tree/HEAD

In Ihrer bevorzugten KI fragen

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

Dokumentation

KI-Dokumentarfilmproduktion

Erstmalige Nutzung: Umgebung einrichten

  1. Bilder: Standardmäßig generiert der Benutzer Bilder mit GPT, die KI ruft keine Bild-API auf; image_mode=agent erfordert ausdrückliche Zustimmung.
  2. Umgebung: Python 3.10+, ffmpeg, ffprobe; contact_sheet.py benötigt zusätzlich Pillow; keine PyYAML-Abhängigkeit.
  3. H3: Falls MiniMax H3 noch nicht konfiguriert ist, zuerst references/00_setup.md lesen:
    • Registrierung/Verifizierung/Aufladung auf der offenen Plattform;
    • API-Key erstellen;
    • Umgebungsvariable MINIMAX_API_KEY oder Schlüsseldatei;
    • base_url / Modellname / Auflösung abstimmen;
    • Zuerst einen 4-Sekunden-Test laufen lassen, dann erst Batch.
  4. Schlüssel nie in Code, nie in Logs, nie in Git.
  5. Falls H3 nicht verfügbar, Anbieter wechseln oder zuerst ein Animatic erstellen – nicht so tun, als könne man generieren.
  6. Ohne H3-Konfiguration nicht zu G5 übergehen.

Verwendung

  • Der Benutzer möchte einen Personen-/Themen-Kurzfilm erstellen, dessen Länge durch das Briefing bestimmt wird;
  • 30 Sekunden, 1 Minute, 3 Minuten sind nur Beispiele, keine festen Grenzen;
  • Echte Personen, historisches Material, KI-gestützte Szenenwiederherstellung sind involviert;
  • Es muss von Null bis zum lieferbaren Endprodukt durchgeführt werden;
  • Kostenkontrolle, Quellenangabe und Credits-Erstellung sind erforderlich.

Nicht geeignet für

  • Mehrpersonen-Porträts, Interview-basierte Langfilme;
  • Werbespots, reine Produktfilme;
  • Reine Animation, reine virtuelle Produktion;
  • Dokumentationen, die echte Aufnahmen erfordern.

Die Länge hat keine harte Grenze; bei sehr langen Projekten ist zusätzliches Materialmanagement erforderlich, der Ablauf bleibt jedoch gleich.

Vor Beginn unbedingt fragen

  1. Endgültige Länge, Seitenverhältnis, Bildrate, Sprache, Plattform;
  2. Wer ist die Person, welcher Zeitabschnitt wird behandelt, welche Fakten dürfen nicht falsch sein;
  3. Budgetobergrenze, ob Wiederholungen erlaubt sind;
  4. Wer erstellt die Bilder (image_mode=human/agent), welches Modell für Videos, welche Software für den Schnitt;
  5. Ist das Voice-Over von einem echten Sprecher oder TTS; wird die Musik als separate Spur verwendet;
  6. Gibt es Lizenzen für historische Fotos/Musik; ist eine KI-Erklärung erforderlich;
  7. Lieferformat und Abgabetermin;
  8. Profil: short (ca. 15–60s) / standard (ca. 2–5min) / custom (nach Bedarf);
  9. model_routing: hybrid / gpt_only / codex_deepseek;
  10. Ist H3 konfiguriert (Key/base_url/model/Kontingent); falls nicht, zuerst Konfiguration lehren;
  11. Eröffnungskarte: none / static; wie viele Sekunden; zählt sie zur Ziellänge; Titeltext wird erst in G2.5 festgelegt.

Ohne Briefing wird nicht in die Recherche eingestiegen.

Länge und Profil

Die Länge wird durch duration_target_sec in der project.yaml bestimmt, nicht hart codiert.

ProfilBeispiellängeAnzahl Aufnahmen (Beispiel)Anzahl Segmente (Beispiel)Musik (Beispiel)
short15–60s8–181–21 Segment
standard2–5min24–603–53–5 Segmente
customBenutzerdefiniertBenutzerdefiniertBenutzerdefiniertBenutzerdefiniert

Dies sind Schätzungen, keine festen Grenzen; 30 Sekunden und 3 Minuten sind nur zwei häufige Beispiele.

G4 Bildübergabe

Nach Abschluss der Prompts zuerst den Benutzer auffordern, Bilder zu generieren, dann parallele Arbeiten durchführen:

  1. image_batch_request.md senden: Aufnahmenummer, Dateiname, Prompt-Position, Anzahl, Priorität; falls Eröffnungskarte aktiviert, 0-1_card.png in die erste Charge;
  2. Deutlich sagen: „Sie können jetzt mit der Bildgenerierung beginnen“;
  3. Sobald der Benutzer beginnt, führt der Agent bild-/videounabhängige Arbeiten durch: Untertitel, Cue-Sheet, Kostentabelle, Quellen/Credits, Schnittgerüst, QA für nächste Prompt-Charge;
  4. Keine Bildprüfung, keine Videogenerierung, keine endgültige Synthese;
  5. Nach Rückgabe der Bilder durch den Benutzer zuerst die Bilder prüfen, nicht bereits festgelegtes Voice-Over/Aufnahmen erneut diskutieren;
  6. Eröffnungskarte ist statisch, kein H3; Text Zeichen für Zeichen abnehmen; bei instabilem Chinesisch später durch Overlay-Schrift im Schnitt ergänzen.

Nicht stillschweigend andere Arbeiten erledigen und den Benutzer warten lassen; die Bildgenerierungsaufgabe muss zuerst übergeben werden. Siehe references/13_parallel_work.md.

Modell-Routing

Standardmäßig hybrid:

PhaseModellAufgabe
G0–G3Codex + DeepSeekBriefing, Recherche, Voice-Over, Storyboard, Prompts
G4GPTBildgenerierung/-prüfung; image_mode bestimmt, wer generiert
G5–G8Codex + DeepSeekAufgaben, Kosten, Schnittdateien, QC; bei Bildprüfung temporär zu GPT wechseln
  • Text und Dateien mit DeepSeek, Pixel und Visuelles mit GPT;
  • image_mode=human: Benutzer generiert Bilder mit GPT; image_mode=agent: Codex + Bildtool generiert Bilder (erfordert ausdrückliche Zustimmung);
  • Vor dem Wechsel image_handoff.md schreiben, die Projektdatei dient als Übergabebeleg;
  • Siehe references/10_model_routing.md.

9 Phasen und G0–G8 Gate-Regel

PhaseErgebnisGate
G0 Briefingproject_brief.mdLänge, Budget, Rechte, Plattform festgelegt
Recherche/Faktencheckfact_check.csv, research.mdG1 Fakten festgelegt
Skript/Voice-Overscript.md, vo.csv, vo_text_review.md, voice_audition.md, vo_lock.md, vo_review.mdG2 Voice-Over festgelegt (Text + Stimme + Version)
Storyboard/Zeitachsebeats.csv, shots.csv, segments.csv, timeline.csv, animatic.mp4, v0_review.mdG3 Beats zugewiesen + Aufnahmetabelle + v0 bestätigt
Erstes Bild (nach image_mode)首帧/, image_review.md, image_handoff.md, image_batch_request.mdG4 Erstes Bild festgelegt
Videogenerierungh3_package/, clips/, tasks.json, cost.csvG5 Video festgelegt
Grobschnitt/Untertitelcut/, subtitles.srtG6 Bild festgelegt
Musik/Soundeffektemusic/, cue_sheet.csvG7 Ton festgelegt
Endkontrolle/Auslieferungfinal.mp4, final_qc.md, credits.mdG8 Auslieferung

Regel: Wenn das vorherige Gate nicht bestanden ist, wird nicht zum nächsten Gate übergegangen und es wird kein Geld ausgegeben.

Eröffnungskarte

Nur in G0 fragen: „Möchten Sie eine, wie viele Sekunden, zählt sie zur Ziellänge?“. Titeltext wird erst in G2.5 festgelegt.

  • G0: opening_card: none|static; opening_seconds; opening_in_target;
  • G2.5: Haupttitel/Untertitel/Schriftstil; opening_card.md Zeichen für Zeichen bestätigen;
  • G3: Als 0-1 statische Aufnahme in shots.csv eintragen (static=yes, kein Voice-Over), in segments.csv eine Zeile mit CARD (static=yes);
  • G4: In die erste Bild-Charge aufnehmen, Dateiname 首帧/0-1_card.png; Text samt Bild Zeichen für Zeichen abnehmen;
  • G5: Kein H3; export_h3.py überspringt static=yes, H3-Aufgabenliste enthält es nicht;
  • G6: Im Schnitt statisch halten; leichter 1–2% Zoom-in möglich;
  • Dauer der Eröffnungskarte wird von der Ziellänge abgezogen oder explizit zur Gesamtlänge hinzugefügt; wird in G0 festgelegt.

Die Eröffnungskarte ist eine „Längenentscheidung bei der Projektdefinition“, keine „Dekorationsoption bei der Bildgenerierung“.

Voice-Over-Review-Reihenfolge

  1. Text-Review: Dem Benutzer den gesamten Text von vo.csv, Zeitcodes und Faktennotizen zeigen; Benutzer bestätigt, dann wird das Audio erstellt;
  2. Stimmprobe: Für denselben Satz 2–3 Kandidaten generieren, Benutzer wählt A/B/C oder nimmt selbst auf;
  3. Komplette Scratch-Spur: Vollständiges Voice-Over mit der ausgewählten Stimme generieren;
  4. v0 Animatic: Erst dann mit Standbildern + Voice-Over;
  5. Wenn ein Schritt nicht bestätigt ist, wird nicht zum nächsten übergegangen.

Voice-Over zuerst

Dies ist die Kernreihenfolge dieses Skills:

  1. Zuerst das Voice-Over festlegen, dann Aufnahmen, erstes Bild, Video;
  2. Ein Voice-Over-Satz mit 2–3 Bildern ist der Normalfall;
  3. Eine Aufnahme mit einem Satz ist ein Sonderfall (kurze Reaktion, Slogan, Single-Shot-Montage), nicht der Standard;
  4. Voice-Over wird als eigenständige vo.csv geführt, nicht nach Aufnahmen zerstückelt;
  5. TTS nicht pro Aufnahme generieren; pro Satz/Absatz generieren und als ganze Spur einfügen;
  6. Jeder Satz enthält eine Information; alle 1–2 Sätze mindestens eine harte Information (Jahr/Name/Zahl/Aktion/Ursache-Wirkung);
  7. Poetische Bilder müssen einen konkreten Anker, eine Kette und eine Bodenhaftung haben; „Tor/Samen“ können ein Motiv sein, kein automatischer Fehler; nur Slogans ohne Anker sind Leerphrasen; zuerst Ursache-Wirkung klarstellen, dann Poesie;
  8. Nach dem Schreiben zuerst narration_lint.py ausführen, dann noch einmal lesen und finalisieren;
  9. Beim Schnitt J-Cuts/L-Cuts verwenden: Bild wechselt, Voice-Over läuft weiter;
  10. Zwischen den Sätzen 0,3–1,0 Sekunde Atempause lassen; 5 Sekunden Voice-Over nicht starr auf 5 Sekunden Bild legen; Atempause am besten durch eine kurze Aufnahme ohne Voice-Over tragen, nicht innerhalb einer Aufnahme mit Voice-Over;
  11. Atempausen nur zwischen Voice-Over-Sätzen platzieren; Schnittpunkte müssen in der Atempause liegen, nicht innerhalb eines Satzes mit Voice-Over;
  12. Nach Festlegung des Voice-Over nicht direkt die alte Version ändern; zuerst vo_diff.py ausführen, nur die betroffenen Dateien ändern;
  13. Ein Voice-Over-Abschnitt kann über mehrere Aufnahmen gehen; normale Aufnahmen haben maximal einen Voice-Over-Abschnitt; long_take=yes Aufnahmen können mehrere Voice-Over-Abschnitte enthalten, aber jeder muss vollständig innerhalb der Aufnahme sein;
  14. Das Atempausenfenster benachbarter Voice-Over muss mindestens einen Aufnahmenschnittpunkt enthalten; Satzanfang und -ende können innerhalb der Aufnahme liegen, müssen nicht mit dem Schnittpunkt bündig sein; bei einem Intervall die größere Atempause nehmen;
  15. Nach dem Erstellen von shots.csv / timeline.csv zuerst ein v0 Animatic (Standbilder/schwarze Bilder + Voice-Over) ausgeben, den Benutzer ausdrücklich auf die Atempausen hinweisen; erst nach Bestätigung das erste Bild/Video generieren;
  16. Zuerst den Text zeigen, dann die Stimme festlegen, dann v0 machen: Ohne Bestätigung von Text und Stimme durch den Benutzer kein TTS/Animatic generieren.

Erst das Voice-Over, dann die Bilder; nicht zuerst 40 Aufnahmen und dann in jede einen Satz stopfen.

Datei-Kontrakt

shots.csv

id,story_segment,scene_id,duration,shot_size,camera,scene,action,expression,vo_ids,anchor,first_frame,video,status,cost,notes,long_take,static
  • story_segment ist die Erzählabschnittsnummer, nicht die H3-Generierungsabschnittsnummer; Generierungsabschnitte sind in segments.csv unter generation_id;
  • scene_id ist die Szenennummer, muss mit segments.csv übereinstimmen;
  • duration in Sekunden, Dezimalstellen erlaubt;
  • status nur todo/image_ready/video_running/video_ok/conditional/retake/final;
  • vo_ids kann leer sein; normale Aufnahmen haben maximal eine vo_id; long_take=yes Aufnahmen können V01|V02 haben;
  • long_take=yes: eine kontinuierliche lange Aufnahme, erlaubt mehr als einen Voice-Over-Abschnitt, aber jeder muss vollständig innerhalb der Aufnahme sein;
  • static=yes: statische Eröffnungs-/Einfügekarte, kein H3; muss first_frame haben, segments.csv verwendet static=yes Abschnitte;
  • Dies ist die Quelle der Bilddaten; Voice-Over ist in vo.csv, beide sind über vo_ids verknüpft.

vo.csv

vo_id,start,end,text,shot_ids,notes
V01,0.0,4.2,"Ein vollständiger Voice-Over-Satz","1-1|1-2","4.2s; 0.8s Atempause nach dem Satz"
V02,5.0,6.2,"Nächster Satz","1-3","1.2s; 0.8s am Ende"
  • start/end sind absolute Sekunden;
  • Ein Voice-Over-Satz kann über 2–3 Aufnahmen gehen;
  • Eine Aufnahme mit einem Satz wird nur in Sonderfällen verwendet;
  • Zwischen den Sätzen 0,3–1,0 Sekunde Atempause lassen;
  • Eine shot_id kann nur zu einem Cue gehören; ein Cue kann mehrere Shots abdecken;
  • Untertitel werden aus vo.csv generiert, nicht an Aufnahmen gebunden.

beats.csv

beat_id,story_segment,kind,shot_id,vo_id,text,notes
B01,1,action,1-1,V01,Hinter dem Tresen rechnen,
B02,1,action,2-1,V02,Die Arbeit in einen Umschlag stecken,
  • Beats sind die kleinste Einheit der Geschichte, nicht Musikbeats;
  • Jeder Beat wird genau von einer shot_id beansprucht;
  • Jede nicht-static Aufnahme hat mindestens einen Beat; static=yes Eröffnungskarten können ohne Beat sein; Jeder Voice-Over-Abschnitt hat mindestens einen Beat;
  • Ein Voice-Over kann über mehrere Beats gehen, in jeder Zeile wird dieselbe vo_id wiederholt;
  • Die Beat-Reihenfolge muss mit der Aufnahmen-Reihenfolge übereinstimmen; fehlende, doppelte oder falsche Reihenfolge wird von validate.py abgefangen.

segments.csv

generation_id,scene_id,cut_order,shot_id,start,end,duration,keyframe,static,notes
S01,1,1,1-1,0,5,5,首帧/1-1_first.png,no,Einfachschnitt-Segment
S02,1,1,1-2,5,9,4,首帧/1-2_first.png,no,1. Schnitt im Segment
S02,1,2,1-3,9,15,6,首帧/1-3_first.png,no,2. Schnitt im Segment
  • generation_id = eine H3-Generierung; ein Segment ≤15 Sekunden, wechselt nicht die Szene;
  • scene_id muss gleich der scene_id in shots.csv für dieselbe Aufnahme sein; Szenenwechsel erfordert Segmentwechsel;
  • cut_order = wievielter Schnitt im Segment, beginnt bei 1;
  • keyframe = das kompositorische Ankerbild dieses Schnitts; der 1. Schnitt setzt den Anker bei 0,00 Sekunden, folgende am Schnittpunkt;
  • static=yes = statische Karte, nicht in H3; muss ein Einzelschnitt sein; export_h3.py überspringt es;
  • Jeder Shot kann nur in einer Generation vorkommen;
  • Jeder Schnitt start/end/duration muss gleich der kumulierten Zeit in shots.csv sein; der gesamte Film muss lückenlos und ohne Überlappungen sein;
  • validate.py fängt Grenzüberschreitungen, Verschiebungen, Lücken und Doppelungen ab.

h3_prompts.csv

shot_id,prompt,soundscape,notes
1-1,"Erstes Bild beibehalten; Schreibspitze bewegt sich langsam, die Lampenflamme flackert leicht.","Papier- und Stiftgeräusche, Wind in der Ferne.",
  • export_h3.py gruppiert nach segments.csv, setzt die Prompts jedes Schnitts zu einem mehrbildigen Ausrichtungsprompt zusammen;
  • Gibt h3_package/<generation_id>/prompt.md + manifest.json aus;
  • Ruft keine API auf; die Generierung wird weiterhin von der H3-Aufgabenliste ausgeführt.

Voice-Over-Versionen

vo_versions/vo_v1.csv
vo_v1_scratch.wav
vo_lock.md
  • Vor der Festlegung zuerst vorlesen/TTS, tatsächliche Dauer messen;
  • Nach der Festlegung nur neue Versionen hinzufügen, nicht direkt die alte Version ändern;
  • Bei Änderungen des Voice-Over zuerst vo_diff.py ausführen, dann nur die betroffenen Dateien ändern;
  • Siehe references/12_change_control.md.

project.json

Maschinenkonfiguration, generiert von init_project.py: profile/model_routing/image_mode/duration_target_sec/shot_target/fps/resolution/providers. project.yaml ist die menschenlesbare Version; Skripte lesen project.json.

tasks.json

[{"generation_id":"S01","provider":"minimax_h3","model":"MiniMax-H3","resolution":"768P","duration":9,"status":"todo","prompt":"h3_package/S01/prompt.md","first_frames":["首帧_h3/1-1_first.png"],"cost_cny":0.0}]
  • generation_id entspricht dem Generierungssegment in segments.csv;
  • duration muss eine ganze Zahl zwischen 4 und 15 sein;
  • prompt / first_frames sind Pfade zum Produktionspaket;
  • Fehlgeschlagene Aufgaben werden nicht berechnet; Wiederholungen werden separat aufgeführt;
  • Alte aufnahmebasierte Aufgaben können id verwenden, aber h3_tasks.json verwendet durchgängig generation_id.

Lieferpaket

final.mp4
subtitles.srt
vo.wav
vo.csv
music/A-E.wav + cue_sheet.csv
credits.md
source_list.csv
fact_check.csv
final_qc.md

Harte Regeln

  1. Bilder standardmäßig vom Benutzer mit GPT generieren, KI ruft keine Bild-API auf; nur wenn image_mode=agent und der Benutzer ausdrücklich zustimmt, sind Bildtools erlaubt;
  2. Video standardmäßig in einer Version; nur bei Fehlschlag eine zweite Version erstellen;
  3. Generierte Videos dürfen nur Umgebungs-/Sprachgeräusche enthalten, keine Musik/BGM;
  4. 768P-Quellmaterial kann 1344×768 (7:4) sein, Endabgabe ist 1920×1080;
  5. Erstes Bild muss 16:9 sein, sonst driftet das Seitenverhältnis bei Bild-zu-Video;
  6. Historische Fotos mit Quelle kennzeichnen, KI-Bilder mit „Szenische Wiederherstellung“;
  7. Untertitel 16–20 Zeichen/Zeile, max. 2 Zeilen, links/rechts ≥100px;
  8. Jeder Musikabschnitt 1,5–2 Sekunden Handle lassen, Täler sind keine Stille;
  9. Kosten basieren auf Aufgabenlog, nicht auf Gedächtnis;
  10. Vor Auslieferung mit ffprobe Auflösung/Bildrate/Audio prüfen;
  11. Zuerst Voice-Over festlegen, dann Aufnahmen; Standard: ein Voice-Over-Satz über 2–3 Aufnahmen, eine Aufnahme mit einem Satz ist ein Sonderfall;
  12. Voice-Over nicht das gesamte Bild füllen; 5 Sekunden Voice-Over mit 5 Sekunden Bild wirkt gehetzt, 0,3–1,0 Sekunden Atempause zwischen Sätzen;
  13. Voice-Over kann poetisch sein, aber Poesie benötigt einen materiellen/aktionären Anker; nur erklärende Abschnitte erfordern eine harte Information pro Satz; die beiden Standards nicht vermischen;
  14. Nach Festlegung des Voice-Over nicht das gesamte Projekt wegen eines Satzes umschreiben; zuerst vo_diff.py, dann nur die betroffenen Dateien ändern;
  15. Nach Abschluss der G4-Prompts zuerst den Benutzer auffordern, Bilder zu generieren; erst wenn er beginnt, bild-/videounabhängige Parallelarbeit durchführen;
  16. Ein Voice-Over-Abschnitt kann über mehrere Aufnahmen gehen; normale Aufnahmen haben maximal einen Abschnitt; long_take=yes Aufnahmen können mehrere Abschnitte enthalten, aber alle müssen innerhalb der Aufnahme sein;
  17. Das Atempausenfenster muss einen Aufnahmenschnittpunkt enthalten; Satzanfang und -ende müssen nicht am Schnittpunkt liegen; bei einem Intervall die größere Atempause nehmen;
  18. Nach Erstellung des v0 Animatic den Benutzer zuerst auf die Atempausen hinweisen; vor Bestätigung kein erstes Bild, keine Videogenerierung;
  19. Die Stimme muss nach Anhören von 2–3 Kandidaten vom Benutzer ausgewählt werden; kein Standard-TTS;
  20. Voice-Over standardmäßig „klar, aber nicht direkt“: zuerst Person/Ereignis/Ursache-Wirkung klarstellen, dann konkrete Bilder und kurze Sätze mit Raum für Interpretation; 1–2 Sätze hinzufügen erlaubt, aber jeder Satz muss neue Informationen oder ein neues Bild enthalten, keine Adjektive zum Füllen der Zeit;
  21. Jeder Beat in beats.csv muss genau von einer Aufnahme beansprucht werden; jede Aufnahme, jeder Voice-Over-Abschnitt muss von Beats abgedeckt sein; fehlende/doppelte/falsche Reihenfolge wird von validate.py abgefangen;
  22. Ein Segment in segments.csv ≤15 Sekunden; Schnittreihenfolge im Segment kontinuierlich, jeder Schnitt ein Keyframe, jeder Shot erscheint nur einmal; jeder Schnittanfang/ende muss gleich der kumulierten Zeit in shots.csv sein; H3-Mehrbildausrichtung mit export_h3.py für Produktionspaket;
  23. Eröffnungskarte: G0 legt Länge fest, G2.5 den Text, G3 schreibt 0-1 static=yes, G4 generiert Bild, G5 kein H3.

Anbieter

config/providers.yaml ist die Dokumentation; Maschinenkonfiguration ist providers.json (generiert von init_project.py, geprüft von timeline.py).

Standard: Bilder = user_gpt, Video = minimax_h3, Voice-Over = capcut_tts, Musik = local_midi_fluidsynth, Schnitt = capcut, Qualitätskontrolle = ffmpeg.

Der Bild-Anbieter ist immer human; diese Regel ändert sich nicht mit der Konfiguration.

Befehle

python scripts/init_project.py --root my-film --profile short --duration 30 --shots 10 --segments 2
python scripts/timeline.py --shots shots.csv --vo vo.csv --vo-out vo_report.csv --project project.json --min-gap 0.4
python scripts/timeline.py --shots shots.csv --vo vo.csv --max-density 0.85 --allow-single
python scripts/narration_lint.py --text vo.csv --style lyrical --max-chars 28
python scripts/validate.py --shots shots.csv --vo vo.csv --beats beats.csv --segments segments.csv --project project.json
python scripts/validate.py --shots shots.csv --vo vo.csv --beats beats.csv --segments segments.csv --project project.json --strict-files
python scripts/validate_tasks.py --tasks h3_tasks.json --segments segments.csv
python scripts/selftest.py
python scripts/export_h3.py --shots shots.csv --segments segments.csv --prompts h3_prompts.csv --out h3_package
python scripts/timeline.py --shots shots.csv --vo vo.csv --animatic animatic.mp4
python scripts/vo_gap_report.py --vo vo.csv --audio vo_scratch.wav --out vo_gap.md
python scripts/vo_diff.py --old vo_versions/vo_v1.csv --new vo.csv --out vo_diff.md
python scripts/vo2srt.py --vo vo.csv --out subtitles.srt --max-chars 18
python scripts/contact_sheet.py --clips clips --out review --frames 6
python scripts/cost_report.py --tasks tasks.json --out cost.csv --default-model MiniMax-H3

Skripte: init_project.py, validate.py, selftest.py, export_h3.py, timeline.py, narration_lint.py, vo2srt.py, vo_gap_report.py, vo_diff.py, contact_sheet.py, cost_report.py. --animatic verwendet bei fehlendem erstem Bild standardmäßig schwarze Bilder als Platzhalter, --animatic-missing error kann in einen Fehler umgewandelt werden.

validate.py überwacht den Struktur-Kontrakt (Schema / Beats / Segmentschnitte / Abdeckung); G3 prüft standardmäßig nicht auf Keyframe-Dateien, G5 mit --strict-files. timeline.py --vo überwacht die Zeit (Atempausen / Dichte / lange Aufnahmen). Beide ausführen, sie ersetzen sich nicht gegenseitig.

Fehlerbehandlung

  • Video fehlgeschlagen: Aufgabenstatus prüfen; Fehlschlag wird nicht berechnet; zu H3-Max wechseln oder erstes Bild ändern, nicht blind wiederholen;
  • Gesichtswechsel/mehrere Hände: Neu generieren oder auf Profil/Rückenansicht ändern;
  • Aktion nicht passiert: Neu generieren, nicht durch Schnitt notdürftig reparieren;
  • Untertitelüberlauf: Stil ändern/Zeilenumbruch, nicht bis zur Unleserlichkeit verkleinern;
  • Musik wirkt abrupt: Pickup, Expression-Ramp, Handle hinzufügen, nicht hart schneiden;
  • Export-Seitenverhältnis falsch: Im Projekt auf 1920×1080 ändern, nicht verzerren.

Referenzen

  • SOP.md: Für Menschen lesbarer Ablauf und Checkliste
  • references/: Phasendetails (einschließlich 00_setup.md, 09_vo_spans.md, 10_model_routing.md, 11_narration.md, 12_change_control.md, 13_parallel_work.md, 14_v0_animatic.md, 15_beats_segments.md)
  • providers/: Austauschbare Tools
  • templates/: Projektkarte, Aufnahmetabelle, Prompts, Review-Tabelle, Cue-Sheet, Credits, Endkontrolle

Verwandte Skills