Communitygithub.com

KI-Kurzfilm

Verwandle eine Geschichte, ein Drehbuch oder ein Roman-Kapitel in eine fertige Kurzfilm-Episode – mit konsistenten Charakteren, gesprochenen Dialogen oder Off-Erzähler, Untertiteln und einem MP4 am Ende.

Was ist KI-Kurzfilm?

Der KI-Kurzfilm-Skill verwandelt eine schriftliche Geschichte in ein fertiges vertikales Kurzfilm-Video (MP4+SRT) mit wiederkehrenden Charakteren. Er verwendet die apimodels.app API (Seedance 2.0 für Video, Nano Banana für Bilder, MiniMax für Sprachausgabe) und erfordert nur einen API-Schlüssel. Der Skill automatisiert den gesamten Workflow: Projekt-JSON schreiben, schätzen, besetzen, Sprachausgabe generieren (nur im Erzählermodus), Shots rendern (mit Referenzbildern für konsistente Charaktere) und den finalen Film mit ffmpeg zusammensetzen. Er unterstützt sowohl Dialog- als auch Erzählermodus, bietet Preisschätzung vor kostenpflichtigen Schritten, fehlertolerante Wiederaufnahme und visuelle Konsistenz durch Charakter-Referenzblätter. Er ist ideal für Kurzfilme, Mini-Serien-Episoden, AI-Comic-Dramen (漫剧/短剧) oder jede vertikale Story-Video-Produktion mit denselben Charakteren in jeder Einstellung.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/stimQQ/ai-short-drama/tree/HEAD

In Ihrer bevorzugten KI fragen

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

Dokumentation

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

  1. Führe immer scripts/drama.mjs aus. 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.
  2. Lies references/project-schema.md und references/shot-writing.md, bevor du project.json schreibst. Die Shot-Writing-Anleitung entscheidet, ob die Episode wie ein Film oder wie zwölf zusammenhanglose Clips aussieht.
  3. Führe zuerst estimate aus und zeige dem Benutzer das Ergebnis: Shot-Liste, Gesamtlänge, Modelle und die Preistabelle. Warte auf ein Ja, bevor du cast / shots ausführst. Das Skript verweigert jeden Schritt über 1 $ ohne --yes. Übergib --yes erst, nachdem der Benutzer dem Betrag zugestimmt hat.
  4. 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 look und führe cast --redo <id> jetzt aus. Jeder Shot übernimmt es.
  5. 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.
  6. 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.
  7. 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.
  8. Erwähne keine Upstream-Anbieter oder Routing. Sprich über die Modellnamen in dieser Datei und nichts dahinter.
  9. 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 shots grob, 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-failed wiederholt.
  • Das Bearbeiten eines Shots nach dem Rendern führt nicht zu einem erneuten Rendern. status markiert ihn als „Eingaben geändert“. Rendere ihn gezielt mit shots --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: status druckt 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 sprichtCharaktere 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ürSzenen mit Gesprächen; Minidramen im Live-Action-Stil.漫剧 / AI-Comic-Dramen, Romanadaptionen, Zusammenfassungen und Storytelling-Videos.
StimmkonsistenzDie Stimme eines Charakters kann von Shot zu Shot leicht variieren.Eine identische Stimme für die gesamte Episode.
Shot-LängeDu legst duration fest (4–15 s). Halte jede Zeile kurz genug.Wird automatisch an jede Erzählzeile angepasst, bis zu 15 s.
GrenzenEtwa 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öchtevideo_modelAuflösungenPro Sekunde Video
Stilisierte Episode (Anime, Comic, 国漫); Entwürfedreamina-seedance-2-0-mini480p / 720p0,0225 $ / 0,048 $
Stilisiert, eine Stufe über minidreamina-seedance-2-0-fast480p / 720p0,0644 $ / 0,1372 $
Stilisiert, Endqualität bis 1080pdreamina-seedance-2-0480p / 720p / 1080p0,10 $ / 0,22 $ / 0,55 $
Fotorealistische Personenseedance-2.0-mini480p / 720p0,044 $ / 0,095 $
Fotorealistisch, eine Stufe über miniseedance-2.0-fast480p / 720p0,071 $ / 0,153 $
Fotorealistisch, Endqualität bis 1080pseedance-2.0480p / 720p / 1080p0,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-mini 480p
  • 2,99 $ bei dreamina-seedance-2-0-mini 720p
  • 2,75 $ bei seedance-2.0-mini 480p
  • 29,63 $ bei seedance-2.0 1080p

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 siehstBedeutungTun
401Schlechter oder fehlender SchlüsselFühre erneut login aus
402Nicht genug GuthabenLade unter https://apimodels.app/console/credits auf. Fertige Shots bleiben erhalten.
„sieht aus wie eine echte Person“dreamina-* hat ein Referenzbild abgelehntWechsle video_model auf seedance-2.0-mini, dann shots --retry-failed
InhaltsprüfungsablehnungDer Prompt oder eine Zeile wurde abgelehntFormuliere diesen Shot um. Das erneute Versuchen desselben Textes hilft nicht.
Beschäftigt / TimeoutAuslastung des AnbietersFühre shots --retry-failed etwas später aus
„läuft noch“Über 25 MinutenFühre shots später erneut aus; es setzt die Aufgabe unbezahlt fort
Exit-Code 3Schritt 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.

Verwandte Skills