Was macht KI-Kurzfilm?
Geschichte rein, Episode raus. Du schreibst die Geschichte in eine project.json (Charaktere,
Orte, Einstellungen). scripts/drama.mjs kümmert sich um alles, was Geld kostet
oder leicht falsch gemacht werden kann:
project.json ─ schätzen ─ besetzen ─ (Sprache) ─ Shots ─ zusammenbauen ─▶ episode.mp4 + .srt
kostenlos Referenz Erzähl- Seedance ffmpeg:
validiert bild pro modus rendert normalisieren,
+ Preise Charakter nur jeden Shot Sprachmix,
und Ort zusammenfügen,
Untertitel
Wie die Charaktere gleich bleiben: Jeder Charakter erhält ein Referenzblatt (Porträt + Vorder-/Seiten-/Rückansicht). Jeder Shot übergibt die Blätter der enthaltenen Charaktere an Seedance 2.0 als Referenzbilder, und der Prompt sagt, welches Bild wer ist.
Regeln
- Führe immer
scripts/drama.mjsaus. Rufe die API nicht mit curl oder fetch auf. Das Skript speichert jede Aufgaben-ID, sobald sie existiert, sodass ein Crash oder Timeout dieselbe Aufgabe fortsetzt, anstatt erneut zu bezahlen. Handgebaute Aufrufe verlieren das. - Lies
references/project-schema.mdundreferences/shot-writing.md, bevor duproject.jsonschreibst. Die Shot-Writing-Anleitung entscheidet, ob die Episode wie ein Film oder wie zwölf zusammenhanglose Clips aussieht. - Führe zuerst
estimateaus und zeige dem Benutzer das Ergebnis: Shot-Liste, Gesamtlänge, Modelle und die Preistabelle. Warte auf ein Ja, bevor ducast/shotsausführst. Das Skript verweigert jeden Schritt über 1 $ ohne--yes. Übergib--yeserst, nachdem der Benutzer dem Betrag zugestimmt hat. - Zeige dem Benutzer die Charakterblätter vor dem Rendern der Shots. Blätter
kosten etwa 0,02 $ pro Stück; Shots kosten 10–100× mehr. Wenn ein Gesicht, ein
Outfit oder der Stil falsch ist, korrigiere das
lookund führecast --redo <id>jetzt aus. Jeder Shot übernimmt es. - Rendere für ein neues Projekt zuerst einen Shot (
shots --only s1). Betrachte ihn mit dem Benutzer, dann rendere den Rest. Überspringe dies nur bei sehr kurzen Projekten (drei Shots oder weniger) oder wenn der Benutzer es sagt. - Erfinde niemals einen Modellnamen. Verwende nur die Modelle in der Tabelle unten. Wenn der Benutzer ein anderes verlangt, sage, dass dieser Skill es nicht unterstützt.
- Fehlgeschlagene Aufgaben werden nie berechnet. Sage das deutlich, wenn eine fehlschlägt, erkläre warum (das Skript druckt den Grund und den nächsten Schritt) und biete den erneuten Versuch an.
- Erwähne keine Upstream-Anbieter oder Routing. Sprich über die Modellnamen in dieser Datei und nichts dahinter.
- Keine echten, identifizierbaren Personen ohne deren Einwilligung, und nichts Sexuelles, Hassvolles oder Verleumderisches über eine reale Person. Lehne solche Anfragen ab.
Workflow
S=/absoluter/pfad/zu/diesem/skill/scripts/drama.mjs # du kennst dein Basisverzeichnis; verwende es
node $S check # Schlüssel, Guthaben, ffmpeg
mkdir -p dramas/meine-episode # ein Ordner pro Episode, im Benutzerarbeitsbereich
# schreibe dramas/meine-episode/project.json (siehe references/project-schema.md)
node $S estimate dramas/meine-episode/project.json --prompts
node $S cast dramas/meine-episode/project.json # dann ZEIGE die Bilder in cast/
node $S voice dramas/meine-episode/project.json # nur Erzählermodus
node $S shots dramas/meine-episode/project.json --only s1 # einen prüfen, dann:
node $S shots dramas/meine-episode/project.json
node $S assemble dramas/meine-episode/project.json --burn-subs
node $S status dramas/meine-episode/project.json # jederzeit: Fortschritt, Ausgaben, was noch fehlt
- Rendern ist langsam. Ein Shot dauert normalerweise 2–8 Minuten, und Shots
laufen 3 gleichzeitig. Sage dem Benutzer vor
shotsgrob, wie lange es dauern wird. Lass ihn nicht vor einem stillen Terminal sitzen. - Jeder Befehl kann sicher wiederholt werden. Erledigte Arbeit wird übersprungen.
Laufende Aufgaben werden dort fortgesetzt, wo sie aufgehört haben. Fehlgeschlagene
Shots werden nur mit
--retry-failedwiederholt. - Das Bearbeiten eines Shots nach dem Rendern führt nicht zu einem erneuten Rendern.
statusmarkiert ihn als „Eingaben geändert“. Rendere ihn gezielt mitshots --redo <id>, das wird erneut berechnet. - Zeige das Ergebnis: den endgültigen MP4-Pfad, seine Länge und die
.srt. Sage dann, was ausgegeben wurde:statusdruckt den genauen abgerechneten Betrag, aus der API gelesen. - Alles wird in den Projektordner heruntergeladen. Die Ergebnis-URLs der API verfallen nach 30 Tagen, also ist der Ordner die dauerhafte Kopie.
Dialog oder Erzählung
Wähle vor dem Schreiben der Shots:
„mode“: „dialogue“ | „mode“: „narration“ | |
|---|---|---|
| Wer spricht | Charaktere auf dem Bildschirm, lippensynchron. Seedance generiert die Stimmen mit dem Video. | Ein Erzähler (Text-to-Speech), über den Umgebungsgeräusche jedes Shots gemischt. |
| Gut für | Szenen mit Gesprächen; Minidramen im Live-Action-Stil. | 漫剧 / AI-Comic-Dramen, Romanadaptionen, Zusammenfassungen und Storytelling-Videos. |
| Stimmkonsistenz | Die Stimme eines Charakters kann von Shot zu Shot leicht variieren. | Eine identische Stimme für die gesamte Episode. |
| Shot-Länge | Du legst duration fest (4–15 s). Halte jede Zeile kurz genug. | Wird automatisch an jede Erzählzeile angepasst, bis zu 15 s. |
| Grenzen | Etwa 1–2 kurze Zeilen pro 5-s-Shot. Keine genaue Kontrolle, wer wann spricht. | Charaktere sprechen nicht auf dem Bildschirm. |
Wenn der Benutzer nichts sagt, verwende Erzählung für alles, was als 漫剧, Comic, Roman oder Story-Zusammenfassung beschrieben wird. Verwende Dialog für Szenen, die auf Gesprächen aufbauen.
Modelle und Kosten
Das Skript wählt ein Standard-video_model basierend auf dem Stil. Stilisierte Looks
(Anime, Comic, 国漫, Cartoon, Aquarell) erhalten dreamina-seedance-2-0-mini.
Alles andere erhält seedance-2.0-mini. Überschreibe es in project.json, wenn
der Benutzer etwas anderes möchte.
| Der Benutzer möchte | video_model | Auflösungen | Pro Sekunde Video |
|---|---|---|---|
| Stilisierte Episode (Anime, Comic, 国漫); Entwürfe | dreamina-seedance-2-0-mini | 480p / 720p | 0,0225 $ / 0,048 $ |
| Stilisiert, eine Stufe über mini | dreamina-seedance-2-0-fast | 480p / 720p | 0,0644 $ / 0,1372 $ |
| Stilisiert, Endqualität bis 1080p | dreamina-seedance-2-0 | 480p / 720p / 1080p | 0,10 $ / 0,22 $ / 0,55 $ |
| Fotorealistische Personen | seedance-2.0-mini | 480p / 720p | 0,044 $ / 0,095 $ |
| Fotorealistisch, eine Stufe über mini | seedance-2.0-fast | 480p / 720p | 0,071 $ / 0,153 $ |
| Fotorealistisch, Endqualität bis 1080p | seedance-2.0 | 480p / 720p / 1080p | 0,092 $ / 0,197 $ / 0,492 $ |
Weitere Kosten:
- Charakter- und Ortsblätter:
nano-banana-2-1, 0,022 $ pro Stück bei 1K. - Erzählung:
minimax-speech-2.8-turbo, 0,04 $ pro 1.000 Zeichen. Ein kurzer Clip wird mit mindestens 0,004 $ berechnet.
Eine einminütige Episode (12 Shots × 5 s, 5 Blätter) kostet etwa:
- 1,46 $ bei
dreamina-seedance-2-0-mini480p - 2,99 $ bei
dreamina-seedance-2-0-mini720p - 2,75 $ bei
seedance-2.0-mini480p - 29,63 $ bei
seedance-2.01080p
Schlage 480p für den ersten Durchgang vor. Ein zweiter Durchgang bei 720p rendert
nur die Shots erneut („resolution“: „720p“, dann shots --redo <ids>). Die
Blätter bleiben.
Warum die fotorealistischen Zeilen existieren: Die dreamina-*-Modelle lehnen
Referenzbilder ab, die wie eine echte Person aussehen, und ein fotorealistisches
Charakterblatt kann das auslösen. Das Skript erkennt diese Ablehnung und sagt dir,
auf seedance-2.0-mini zu wechseln. Die abgelehnte Aufgabe wird nicht berechnet.
Preise sind Listenpreise, Stand 2026-09-30. status zeigt, was tatsächlich
abgerechnet wurde.
Der API-Schlüssel
Führe zuerst node $S check aus. Der Schlüssel stammt aus APIMODELS_API_KEY,
oder aus ~/.apimodels/credentials, oder aus ~/.apimodels/credentials.json.
Die letzte wird von npx apimodels-mcp login geschrieben, sodass ein Benutzer,
der sich bei einem apimodels-Tool angemeldet hat, bereits eingerichtet ist.
Wenn kein Schlüssel vorhanden ist, führe node $S login selbst aus und gib dem
Benutzer den Link, den es ausgibt. Sie melden sich bei apimodels.app an und
klicken auf Autorisieren. Ein neuer Schlüssel wird in ~/.apimodels/credentials
geschrieben und erscheint nie in dieser Unterhaltung. Führe dann erneut check aus
und fahre fort.
Wenn login nicht funktioniert (kein Browser auf dem Rechner), frage nicht nach
dem Schlüssel im Chat. Gib dem Benutzer einen Befehl, den er in ein neues
Terminalfenster einfügen kann, mit dem absoluten Skriptpfad:
read -s KEY && printf %s "$KEY" | node /ABSOLUTER/PFAD/scripts/drama.mjs save-key && unset KEY
Schlüssel werden unter https://apimodels.app/console/api-keys erstellt.
Umgang mit dem Schlüssel:
- Gib ihn niemals zurück.
- Übergib ihn niemals als Befehlsargument.
- Schreibe ihn niemals in den Projektordner.
- Wenn ein Schlüssel jemals in der Unterhaltung erscheint, sage dem Benutzer, er soll ihn rotieren.
Fehler
Das Skript druckt den Grund und den nächsten Schritt. In einfachen Worten:
| Du siehst | Bedeutung | Tun |
|---|---|---|
401 | Schlechter oder fehlender Schlüssel | Führe erneut login aus |
402 | Nicht genug Guthaben | Lade unter https://apimodels.app/console/credits auf. Fertige Shots bleiben erhalten. |
| „sieht aus wie eine echte Person“ | dreamina-* hat ein Referenzbild abgelehnt | Wechsle video_model auf seedance-2.0-mini, dann shots --retry-failed |
| Inhaltsprüfungsablehnung | Der Prompt oder eine Zeile wurde abgelehnt | Formuliere diesen Shot um. Das erneute Versuchen desselben Textes hilft nicht. |
| Beschäftigt / Timeout | Auslastung des Anbieters | Führe shots --retry-failed etwas später aus |
| „läuft noch“ | Über 25 Minuten | Führe shots später erneut aus; es setzt die Aufgabe unbezahlt fort |
| Exit-Code 3 | Schritt kostet über 1 $ | Bestätige den Betrag mit dem Benutzer, füge dann --yes hinzu |
Erfolg ist nicht 100%: Ein gelegentlicher Shot schlägt fehl, und ein erneuter Versuch funktioniert normalerweise.
Was dieser Skill nicht tut
Sage es direkt, anstatt zu improvisieren:
- Er garantiert keine perfekte Konsistenz. Gesichter können in weiten Einstellungen abweichen, und bei drei oder mehr Charakteren in einem Bild. Halte 1–2 Charaktere pro Shot (siehe shot-writing).
- Kein Shot ist länger als 15 s. Längere Momente werden in mehrere Shots aufgeteilt.
- Er lippensynchronisiert nicht zu einer vom Benutzer aufgenommenen Sprachspur.
- Er steuert nicht den genauen ersten Frame eines Shots. Shots werden durch Referenzbilder und den Prompt gesteuert.
- Untertitel-Zeitangaben sind ungefähr. Sie werden gleichmäßig innerhalb jedes
Shots verteilt. Bearbeite die
.srt, wenn genaue Zeitangaben wichtig sind. - Er veröffentlicht nirgendwo. Die Ausgabe ist ein lokales MP4 plus eine SRT.