KI-Dokumentarfilmproduktion
Erstmalige Nutzung: Umgebung einrichten
- Bilder: Standardmäßig generiert der Benutzer Bilder mit GPT, die KI ruft keine Bild-API auf;
image_mode=agenterfordert ausdrückliche Zustimmung. - Umgebung: Python 3.10+,
ffmpeg,ffprobe;contact_sheet.pybenötigt zusätzlich Pillow; keine PyYAML-Abhängigkeit. - H3: Falls MiniMax H3 noch nicht konfiguriert ist, zuerst
references/00_setup.mdlesen:- Registrierung/Verifizierung/Aufladung auf der offenen Plattform;
- API-Key erstellen;
- Umgebungsvariable
MINIMAX_API_KEYoder Schlüsseldatei; base_url/ Modellname / Auflösung abstimmen;- Zuerst einen 4-Sekunden-Test laufen lassen, dann erst Batch.
- Schlüssel nie in Code, nie in Logs, nie in Git.
- Falls H3 nicht verfügbar, Anbieter wechseln oder zuerst ein Animatic erstellen – nicht so tun, als könne man generieren.
- 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
- Endgültige Länge, Seitenverhältnis, Bildrate, Sprache, Plattform;
- Wer ist die Person, welcher Zeitabschnitt wird behandelt, welche Fakten dürfen nicht falsch sein;
- Budgetobergrenze, ob Wiederholungen erlaubt sind;
- Wer erstellt die Bilder (
image_mode=human/agent), welches Modell für Videos, welche Software für den Schnitt; - Ist das Voice-Over von einem echten Sprecher oder TTS; wird die Musik als separate Spur verwendet;
- Gibt es Lizenzen für historische Fotos/Musik; ist eine KI-Erklärung erforderlich;
- Lieferformat und Abgabetermin;
- Profil:
short(ca. 15–60s) /standard(ca. 2–5min) /custom(nach Bedarf); model_routing:hybrid/gpt_only/codex_deepseek;- Ist H3 konfiguriert (Key/base_url/model/Kontingent); falls nicht, zuerst Konfiguration lehren;
- 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.
| Profil | Beispiellänge | Anzahl Aufnahmen (Beispiel) | Anzahl Segmente (Beispiel) | Musik (Beispiel) |
|---|---|---|---|---|
| short | 15–60s | 8–18 | 1–2 | 1 Segment |
| standard | 2–5min | 24–60 | 3–5 | 3–5 Segmente |
| custom | Benutzerdefiniert | Benutzerdefiniert | Benutzerdefiniert | Benutzerdefiniert |
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:
image_batch_request.mdsenden: Aufnahmenummer, Dateiname, Prompt-Position, Anzahl, Priorität; falls Eröffnungskarte aktiviert,0-1_card.pngin die erste Charge;- Deutlich sagen: „Sie können jetzt mit der Bildgenerierung beginnen“;
- 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;
- Keine Bildprüfung, keine Videogenerierung, keine endgültige Synthese;
- Nach Rückgabe der Bilder durch den Benutzer zuerst die Bilder prüfen, nicht bereits festgelegtes Voice-Over/Aufnahmen erneut diskutieren;
- 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:
| Phase | Modell | Aufgabe |
|---|---|---|
| G0–G3 | Codex + DeepSeek | Briefing, Recherche, Voice-Over, Storyboard, Prompts |
| G4 | GPT | Bildgenerierung/-prüfung; image_mode bestimmt, wer generiert |
| G5–G8 | Codex + DeepSeek | Aufgaben, 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.mdschreiben, die Projektdatei dient als Übergabebeleg; - Siehe
references/10_model_routing.md.
9 Phasen und G0–G8 Gate-Regel
| Phase | Ergebnis | Gate |
|---|---|---|
| G0 Briefing | project_brief.md | Länge, Budget, Rechte, Plattform festgelegt |
| Recherche/Faktencheck | fact_check.csv, research.md | G1 Fakten festgelegt |
| Skript/Voice-Over | script.md, vo.csv, vo_text_review.md, voice_audition.md, vo_lock.md, vo_review.md | G2 Voice-Over festgelegt (Text + Stimme + Version) |
| Storyboard/Zeitachse | beats.csv, shots.csv, segments.csv, timeline.csv, animatic.mp4, v0_review.md | G3 Beats zugewiesen + Aufnahmetabelle + v0 bestätigt |
| Erstes Bild (nach image_mode) | 首帧/, image_review.md, image_handoff.md, image_batch_request.md | G4 Erstes Bild festgelegt |
| Videogenerierung | h3_package/, clips/, tasks.json, cost.csv | G5 Video festgelegt |
| Grobschnitt/Untertitel | cut/, subtitles.srt | G6 Bild festgelegt |
| Musik/Soundeffekte | music/, cue_sheet.csv | G7 Ton festgelegt |
| Endkontrolle/Auslieferung | final.mp4, final_qc.md, credits.md | G8 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.mdZeichen für Zeichen bestätigen; - G3: Als
0-1statische Aufnahme inshots.csveintragen (static=yes, kein Voice-Over), insegments.csveine Zeile mitCARD(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überspringtstatic=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
- Text-Review: Dem Benutzer den gesamten Text von
vo.csv, Zeitcodes und Faktennotizen zeigen; Benutzer bestätigt, dann wird das Audio erstellt; - Stimmprobe: Für denselben Satz 2–3 Kandidaten generieren, Benutzer wählt A/B/C oder nimmt selbst auf;
- Komplette Scratch-Spur: Vollständiges Voice-Over mit der ausgewählten Stimme generieren;
- v0 Animatic: Erst dann mit Standbildern + Voice-Over;
- Wenn ein Schritt nicht bestätigt ist, wird nicht zum nächsten übergegangen.
Voice-Over zuerst
Dies ist die Kernreihenfolge dieses Skills:
- Zuerst das Voice-Over festlegen, dann Aufnahmen, erstes Bild, Video;
- Ein Voice-Over-Satz mit 2–3 Bildern ist der Normalfall;
- Eine Aufnahme mit einem Satz ist ein Sonderfall (kurze Reaktion, Slogan, Single-Shot-Montage), nicht der Standard;
- Voice-Over wird als eigenständige
vo.csvgeführt, nicht nach Aufnahmen zerstückelt; - TTS nicht pro Aufnahme generieren; pro Satz/Absatz generieren und als ganze Spur einfügen;
- Jeder Satz enthält eine Information; alle 1–2 Sätze mindestens eine harte Information (Jahr/Name/Zahl/Aktion/Ursache-Wirkung);
- 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;
- Nach dem Schreiben zuerst
narration_lint.pyausführen, dann noch einmal lesen und finalisieren; - Beim Schnitt J-Cuts/L-Cuts verwenden: Bild wechselt, Voice-Over läuft weiter;
- 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;
- Atempausen nur zwischen Voice-Over-Sätzen platzieren; Schnittpunkte müssen in der Atempause liegen, nicht innerhalb eines Satzes mit Voice-Over;
- Nach Festlegung des Voice-Over nicht direkt die alte Version ändern; zuerst
vo_diff.pyausführen, nur die betroffenen Dateien ändern; - Ein Voice-Over-Abschnitt kann über mehrere Aufnahmen gehen; normale Aufnahmen haben maximal einen Voice-Over-Abschnitt;
long_take=yesAufnahmen können mehrere Voice-Over-Abschnitte enthalten, aber jeder muss vollständig innerhalb der Aufnahme sein; - 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;
- Nach dem Erstellen von
shots.csv/timeline.csvzuerst 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; - 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_segmentist die Erzählabschnittsnummer, nicht die H3-Generierungsabschnittsnummer; Generierungsabschnitte sind insegments.csvuntergeneration_id;scene_idist die Szenennummer, muss mitsegments.csvübereinstimmen;durationin Sekunden, Dezimalstellen erlaubt;statusnurtodo/image_ready/video_running/video_ok/conditional/retake/final;vo_idskann leer sein; normale Aufnahmen haben maximal einevo_id;long_take=yesAufnahmen könnenV01|V02haben;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; mussfirst_framehaben,segments.csvverwendetstatic=yesAbschnitte;- Dies ist die Quelle der Bilddaten; Voice-Over ist in
vo.csv, beide sind übervo_idsverknü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/endsind 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_idkann nur zu einem Cue gehören; ein Cue kann mehrere Shots abdecken; - Untertitel werden aus
vo.csvgeneriert, 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_idbeansprucht; - Jede nicht-
staticAufnahme hat mindestens einen Beat;static=yesErö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_idwiederholt; - Die Beat-Reihenfolge muss mit der Aufnahmen-Reihenfolge übereinstimmen; fehlende, doppelte oder falsche Reihenfolge wird von
validate.pyabgefangen.
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_idmuss gleich derscene_idinshots.csvfü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/durationmuss gleich der kumulierten Zeit inshots.csvsein; der gesamte Film muss lückenlos und ohne Überlappungen sein; validate.pyfä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.pygruppiert nachsegments.csv, setzt die Prompts jedes Schnitts zu einem mehrbildigen Ausrichtungsprompt zusammen;- Gibt
h3_package/<generation_id>/prompt.md+manifest.jsonaus; - 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.pyausfü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_identspricht dem Generierungssegment insegments.csv;durationmuss eine ganze Zahl zwischen 4 und 15 sein;prompt/first_framessind Pfade zum Produktionspaket;- Fehlgeschlagene Aufgaben werden nicht berechnet; Wiederholungen werden separat aufgeführt;
- Alte aufnahmebasierte Aufgaben können
idverwenden, aberh3_tasks.jsonverwendet durchgängiggeneration_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
- Bilder standardmäßig vom Benutzer mit GPT generieren, KI ruft keine Bild-API auf; nur wenn
image_mode=agentund der Benutzer ausdrücklich zustimmt, sind Bildtools erlaubt; - Video standardmäßig in einer Version; nur bei Fehlschlag eine zweite Version erstellen;
- Generierte Videos dürfen nur Umgebungs-/Sprachgeräusche enthalten, keine Musik/BGM;
- 768P-Quellmaterial kann 1344×768 (7:4) sein, Endabgabe ist 1920×1080;
- Erstes Bild muss 16:9 sein, sonst driftet das Seitenverhältnis bei Bild-zu-Video;
- Historische Fotos mit Quelle kennzeichnen, KI-Bilder mit „Szenische Wiederherstellung“;
- Untertitel 16–20 Zeichen/Zeile, max. 2 Zeilen, links/rechts ≥100px;
- Jeder Musikabschnitt 1,5–2 Sekunden Handle lassen, Täler sind keine Stille;
- Kosten basieren auf Aufgabenlog, nicht auf Gedächtnis;
- Vor Auslieferung mit ffprobe Auflösung/Bildrate/Audio prüfen;
- Zuerst Voice-Over festlegen, dann Aufnahmen; Standard: ein Voice-Over-Satz über 2–3 Aufnahmen, eine Aufnahme mit einem Satz ist ein Sonderfall;
- 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;
- 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;
- Nach Festlegung des Voice-Over nicht das gesamte Projekt wegen eines Satzes umschreiben; zuerst
vo_diff.py, dann nur die betroffenen Dateien ändern; - Nach Abschluss der G4-Prompts zuerst den Benutzer auffordern, Bilder zu generieren; erst wenn er beginnt, bild-/videounabhängige Parallelarbeit durchführen;
- Ein Voice-Over-Abschnitt kann über mehrere Aufnahmen gehen; normale Aufnahmen haben maximal einen Abschnitt;
long_take=yesAufnahmen können mehrere Abschnitte enthalten, aber alle müssen innerhalb der Aufnahme sein; - Das Atempausenfenster muss einen Aufnahmenschnittpunkt enthalten; Satzanfang und -ende müssen nicht am Schnittpunkt liegen; bei einem Intervall die größere Atempause nehmen;
- Nach Erstellung des v0 Animatic den Benutzer zuerst auf die Atempausen hinweisen; vor Bestätigung kein erstes Bild, keine Videogenerierung;
- Die Stimme muss nach Anhören von 2–3 Kandidaten vom Benutzer ausgewählt werden; kein Standard-TTS;
- 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;
- Jeder Beat in
beats.csvmuss genau von einer Aufnahme beansprucht werden; jede Aufnahme, jeder Voice-Over-Abschnitt muss von Beats abgedeckt sein; fehlende/doppelte/falsche Reihenfolge wird vonvalidate.pyabgefangen; - 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 inshots.csvsein; H3-Mehrbildausrichtung mitexport_h3.pyfür Produktionspaket; - 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 Checklistereferences/: Phasendetails (einschließlich00_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 Toolstemplates/: Projektkarte, Aufnahmetabelle, Prompts, Review-Tabelle, Cue-Sheet, Credits, Endkontrolle