Worum es geht
In den Lektionen A1 bis A6 hast du jeden Baustein einzeln gebaut: Gesicht, LoRA, Szene, Stimme, Sprech-Clip. Für den Alltag ist das zu umständlich. Wer einen neuen Clip will, hat einen Satz und eine Idee für den Ort – mehr nicht.
skripte/clip.py macht daraus einen Befehl. Es ruft die Lektionsskripte der Reihe nach auf und kümmert sich um das, was dazwischen leicht vergessen wird: Grafikspeicher freigeben, Stille an den Rändern, Dateien an den richtigen Ort legen. Die Kette:
- Startbild –
skripte/szene.py --format clip(Lektion A4): Brustbild im Hochformat, Blick in die Kamera. - Speicher –
comfy.py frei: ComfyUI gibt die Bildmodelle frei, damit das Sprachmodell Platz hat. - Stimme –
skripte/sprechen.py --stille 1.0(Lektion A5): dein Text in deiner Stimme, vorn und hinten eine Sekunde Stille. - Video –
skripte/sprechclip.py(Lektion A6): Startbild und Stimme werden ein Clip.
Eine Sache macht der Befehl bewusst nicht von allein: das Startbild aussuchen. Dazu gleich mehr.
Was vorher passiert ist
Alles, was der Befehl braucht, liegt schon im Kursordner: ComfyUI mit Z-Image Turbo (A1), dein LoRA
figur/lora/figur.safetensors (A3), das Format für Szenenbilder (A4), deine Stimme figur/stimme/referenz.wav (A5)
und InfiniteTalk für die Bewegung (A6). clip.py erfindet nichts Neues – es verbindet.
Der Ablauf
1. Startbilder zur Wahl
Das Startbild prägt den ganzen Clip: Ort, Licht, Haltung, Hände. Ein Bild kostet Sekunden, das Video danach rund zwölf
Minuten. Deshalb erzeugt --kandidaten 4 zuerst vier Startbilder mit verschiedenen Seeds und einen Kontaktbogen –
und hört dann auf.
Beim Clip der Startseite saß er in allen vier ersten Kandidaten an einem Schülertisch, die Tafel weit hinten. Der Prompt sagte nur „am Lehrerpult im Klassenzimmer“ und ließ offen, wo das Pult steht.

Erste Runde: Gesicht und Kleidung stimmen, aber er sitzt an Schülertischen mitten im Raum. Bei zwei Kandidaten ragt ein Laptop ins Bild.
KI-generiert.2. Szene präzisieren, neu wählen
Mit „sitzt hinter dem Lehrerpult vorne im Klassenzimmer, die Tafel direkt hinter ihm“ stimmt der Ort. Aus der zweiten Runde wurde Seed 64: Holzpult, saubere Tafel, ruhige Hände.

Zweite Runde mit präzisierter Szene. Seed 77 fällt aus: Auf der Tafel steht Pseudo-Schrift – genau dort schreibt Z-Image gern sein Stichwort hin (Lektion A4).
KI-generiert.3. Der ganze Clip
Mit dem gewählten Seed läuft die Kette durch. Das Startbild aus der Kandidatenrunde wird dabei wiederverwendet, nicht
neu erzeugt. Der Text steht in text.txt so, wie er auf der Seite erscheint. Weicht die Aussprache ab, bekommt die
Stimme mit --gesprochen eine eigene Fassung: Für den Startseiten-Clip wurde aus „KI-Agenten“ vorsorglich
„Ka-I-Agenten“; Whisper erkennt im Ergebnis wieder „KI-Agenten“.
4. Ansehen, prüfen
clips/<name>/ enthält danach startbild.png, text.txt, stimme.wav, clip.mp4 und protokoll_clip.sh mit der ganzen
Kette. pruefen.py A7 hakt ab, ob alles da ist. Ob der Clip gut ist, entscheidest du.
Von Hand: der ganze Weg
Ein Befehl für die Kandidaten, einer für den Clip – dazwischen deine Wahl. Mit -v zeigt clip.py jeden Befehl, auch
die der Teilschritte; mit --zeigen nur die Befehle, ohne etwas auszuführen. Nach dem Lauf liegt die ganze Kette als
clips/<name>/protokoll_clip.sh im Ergebnisordner, Stimme und Video zusätzlich als protokoll_sprechen.sh und
protokoll_sprechclip.sh.
Im Terminal, im Kursordner
# 1. Vier Startbilder und ein Kontaktbogen (wenige Sekunden je Bild)
python3 skripte/clip.py --name lerntipp --szene "sitting behind the teacher's desk at the front of a bright modern classroom, a large green chalkboard on the wall directly behind him, hands resting on the desk, wearing a navy V-neck sweater over a light blue collared shirt" --text "Deine Figur. Deine Stimme. Dein Text. In sieben Schritten zum ersten Clip, auf deinem Rechner. Mit einem KI-Agenten oder von Hand: Du triffst die Entscheidungen." --kandidaten 4
# 2. Kontaktbogen ansehen, Seed wählen (hier 64) und die Wahl festhalten
xdg-open szenen/lerntipp_kandidaten.jpg
echo "| A7 | $(date +%F) | Startbild Seed 64 | Ort stimmt, Hände ruhig, nichts am Bildrand |" >> entscheidungen.md
# 3. Der ganze Clip mit dem gewählten Startbild (rund 12 Minuten für 12 Sekunden)
python3 skripte/clip.py --name lerntipp --szene "sitting behind the teacher's desk at the front of a bright modern classroom, a large green chalkboard on the wall directly behind him, hands resting on the desk, wearing a navy V-neck sweater over a light blue collared shirt" --text "Deine Figur. Deine Stimme. Dein Text. In sieben Schritten zum ersten Clip, auf deinem Rechner. Mit einem KI-Agenten oder von Hand: Du triffst die Entscheidungen." --seed 64 -v
# 4. Ansehen und prüfen
mpv clips/lerntipp/clip.mp4
python3 skripte/pruefen.py A7So sieht die Ausgabe von --zeigen für den Clip aus (gekürzt). Eingerückt stehen die Befehle der Teilschritte:
# ComfyUI muss laufen (Lektion A1)
▸ python3 skripte/werkzeuge/comfy.py laeuft
# 1. Startbild, Seed 64
▸ python3 skripte/szene.py --szene '…' --name lerntipp_seed_64 --seed 64 --format clip
▸ python3 skripte/werkzeuge/comfy.py ausfuehren szenen/auftrag_lerntipp_seed_64.json --ziel szenen/lerntipp_seed_64.png
# 2. Der Text, wie er auf der Seite steht
▸ cat > clips/lerntipp/text.txt <<'EOF'
…
EOF
# 3. ComfyUI gibt den Grafikspeicher frei, damit das Sprachmodell Platz hat
▸ python3 skripte/werkzeuge/comfy.py frei
# Stimme, mit 1 s Stille vorn und hinten
▸ python3 skripte/sprechen.py clips/lerntipp/text.txt --aus clips/lerntipp/ton.wav --stille 1.0
▸ …
# 4. Video: Startbild und Stimme werden ein Clip (legt startbild.png, stimme.wav, clip.mp4 ab)
▸ python3 skripte/sprechclip.py szenen/lerntipp_seed_64.png clips/lerntipp/ton.wav --name lerntipp
▸ …
# Prüfpunkt A7
▸ python3 skripte/pruefen.py A7In der Cloud gibt es kein xdg-open und kein mpv: Kontaktbogen und Clip öffnest du im Dateibrowser von JupyterLab
oder holst sie mit scp auf deinen Rechner.
Entscheidungen
Ein großes Skript oder eine Kette?
Eine Kette aus den Lektionsskripten
clip.py legt nur Reihenfolge und Übergänge fest. Jeder Teilschritt bleibt einzeln nutzbar und einzeln prüfbar – wer nur eine neue Stimme braucht, ruft sprechen.py direkt auf.
Startbild blind übernehmen oder wählen?
Erst Kandidaten, dann der gewählte Seed
Ein Startbild kostet Sekunden, ein Video zwölf Minuten. Und das Startbild entscheidet über Ort, Licht und Haltung im ganzen Clip. Der Kontaktbogen ist die billigste Stelle für eine Korrektur.
Wie genau die Szene beschreiben?
Den Ort im Raum ausdrücklich nennen
„Am Lehrerpult im Klassenzimmer“ ließ offen, wo das Pult steht – das Modell setzte ihn an einen Schülertisch. „Hinter dem Lehrerpult vorne, die Tafel direkt hinter ihm“ war eindeutig.
Ein Text für Seite und Stimme?
Getrennte Fassungen, wenn die Aussprache abweicht
Auf der Seite soll „KI“ stehen, die Stimme soll „Ka-I“ sagen. text.txt bleibt so, wie man es liest; –gesprochen bekommt die Lautschrift.
Stille an den Rändern?
Eine Sekunde vorn und hinten
Ohne Stille wirken Anfang und Ende leicht abgehackt oder ruckelig. Mit ihr sitzt die Figur eine Sekunde ruhig da, bevor sie spricht und nachdem sie fertig ist. Das kostet rund drei Minuten mehr Rechenzeit.
Fallstricke
Die Figur sitzt am falschen Ort
Das Modell füllt Lücken im Prompt mit dem, was es am häufigsten gesehen hat. „Im Klassenzimmer am Tisch“ heißt für Z-Image offenbar: Schülertisch, Tafel hinten.
LösungDen Ort im Raum ausdrücklich beschreiben und neue Kandidaten erzeugen.
Schrift auf der Tafel, Gegenstände am Bildrand
Pseudo-Schrift kann das Stichwort enthalten (Lektion A4). Ein angeschnittener Laptop zieht im Video den Blick auf sich und kann sich zwischen den Abschnitten verändern.
LösungEinen Kandidaten mit sauberer Tafel und freiem Rand wählen.
Kein Platz für das Sprachmodell
ComfyUI hält die geladenen Bildmodelle im Grafikspeicher, bei uns über 20 GB. Ohne Freigabe passt Qwen3-TTS nicht mehr daneben.
Lösungclip.py ruft vor der Stimme comfy.py frei auf – nicht entfernen.
Ein anderer Job rechnet gerade
Beim Clip der Startseite lief noch ein Blender-Render im Hintergrund. Zwei große Jobs teilen sich weder den Speicher gut, noch verträgt jeder Rechner die doppelte Hitze.
LösungVor dem Start mit nvidia-smi prüfen, ob die Grafikkarte frei ist, und nicht parallel starten.
Mit KI vereinfacht
Diese Lektion ist der Moment, in dem sich die Arbeit mit einem Agenten am meisten lohnt: Du sagst, was die Figur sagen soll und wo sie sitzt. Der Rest ist Routine – bis auf die Wahl des Startbilds.
Der Agent
- prüft, ob ComfyUI läuft und die Grafikkarte frei ist
- erzeugt vier Startbilder und zeigt den Kontaktbogen
- schlägt eine Lautschrift vor, wo die Stimme sich verlesen könnte
- startet nach deiner Wahl die ganze Kette
- prüft mit pruefen.py A7 und nennt den Pfad zum Clip
Du
- wählst das Startbild
- nimmst den Clip ab
Mit dem Skill avatar-clip reicht ein Satz an den Agenten:
Mach einen Clip: Er sitzt vorne am Lehrerpult, die Tafel hinter ihm, und sagt
„Deine Figur. Deine Stimme. Dein Text.“ Zeig mir vorher vier Startbilder.Der Skill ist in Vorbereitung und erscheint mit dem Video zu dieser Lektion.
Mit lokalem Qwen: In dieser Lektion wechselt die Grafikkarte dreimal den Besitzer – Bildmodell, Sprachmodell,
Videomodell. Das lokale Qwen muss zwischen den Antworten entladen sein (OLLAMA_KEEP_ALIVE=0 aus der Einrichtung);
sonst belegt es rund 18 GB, die InfiniteTalk braucht.
