Communitygithub.com

Utopai-Research/pai-pro

Lokales KI-Filmmaking-Studio – Fähigkeiten, Leinwand, Zeitachse – gesteuert von Ihrem Coding-Agenten.

Was ist pai-pro?

PAI-Pro ist ein lokales KI-Filmmaking-Studio, das nahtlos in Coding-Agenten wie Claude Code, Cursor oder Codex integriert ist. Es verwandelt Ihre Entwicklungsumgebung in eine vollwertige Filmproduktionsplattform, auf der Sie Skripte zusammenstellen, Charaktere entwerfen und Storyboards erstellen können – alles über CLI-Befehle. Das Tool unterstützt sowohl Standard- als auch Pro-Tarife, wobei der Pro-Tarif hochauflösende Storyboard-Mosaike und gebrauchsfertige Charakterreferenzblätter für die Videoproduktion bietet. Mit vordefinierten Mustern für Charakterporträts, Einstellungsaufnahmen, Szenenkompositionen und Bearbeitungen stellt PAI-Pro sicher, dass KI-generierte Bilder konsistent mit Ihrer Projektidentität bleiben und reduziert visuelle Abweichungen. Es priorisiert lokale Ausführung über die `node`-CLI, hostet Repository-Pfade über die Umgebungsvariable `PAI_REPO_ROOT` und folgt strengen Vorlagen für Eingabeaufforderungen, um die Kontrolle über Stil, Komposition und Metadaten zu behalten. Besonders hervorzuheben ist die Vorabprüfung bei Charakteren: Für video-gebundene Arbeiten wird automatisch auf Muster 7 (Charakterreferenzblatt) umgeschwenkt, anstatt nur ein einzelnes Frontporträt zu generieren – der häufigste Fehler, der zu Identitätsdrift von Einstellung zu Einstellung führt.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add Utopai-Research/pai-pro

In Ihrer bevorzugten KI fragen

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

Dokumentation

CLI-Form

Standard-Tarif:

node "$PAI_REPO_ROOT/server/cli/generate_image.js" --prompt "..." [--aspect-ratio 16:9] [--image-size 2K] [--label "..."] [--subtype <character|location|edit|reference|split|storyboard>] [--name "..."] [--role "..."] [--description "..."] [--source-node-id <id>] [--ref-source-id <id> ...]

Pro-Tarif für Storyboard-Mosaike und video-gebundene Charakterblätter:

node "$PAI_REPO_ROOT/server/cli/generate_image_pro.js" --prompt "..." --size 2560x1440 [--label "..."] [--subtype <character|location|edit|reference|split|storyboard>] [--name "..."] [--role "..."] [--description "..."] [--source-node-id <id>] [--ref-source-id <id> ...]

Pro akzeptiert nur --size; kein --aspect-ratio / --image-size. Übliche Größen: 1024x1024, 1280x720, 720x1280, 1920x1920, 2560x1440, 1440x2560, 3840x2160, 2160x3840.

--label standardmäßig auf den gekürzten Prompt (≤30 Zeichen) wenn ausgelassen; geben Sie einen expliziten Wert an, wenn Sie eine bessere Bildunterschrift haben.

Verwenden Sie @Image1, @Image2, … in der --ref-source-id-Reihenfolge. Die CLI erzeugt eine derived-Kante pro Referenz.

Spiegeln Sie externe URLs zuerst mit mirror_url.js --url <URL>, dann übergeben Sie die zurückgegebene node_id über --ref-source-id.

Wenn eine Notiz das Bild erstellt hat, übergeben Sie --source-node-id <note_id>.

Versuchen Sie nicht, Bilder durch ASCII-Kunst oder Markdown-Einbettung zu erfinden – rufen Sie die CLI auf.

Erstnutzungs-Bildmodus

Für den Einmal-Abfrage-Fluss und die Preise pro Modus siehe die Projektdatei PROJECT_AGENT.md § „Erstnutzungs-Generierungsoptionen“.

Moduszuordnung: Standard 2K -> generate_image.js --image-size 2K; Pro 2K -> Pro exakt 2K; Maximale Qualität -> Pro exakt 4K.

Muster

Wählen Sie das passende. Für die Quellsuche folgen Sie der Projektdatei PROJECT_AGENT.md § „Kontextwahl“; dieses Skill besitzt nur den bildspezifischen Prompt und die CLI-Form.

Charakter-Vorabprüfung. Fragen Sie zuerst: Wird dieser Charakter in nachgelagerten Videos erscheinen (Video, Clip, Promo, 宣传片, 短片, 连续剧, Film, Szene, 拍片, Shot, Kurzfilm)?

  1. Lesen Sie workflow.json nach hochgeladenen Referenzen (subtype:"reference", metadata.source:"user_upload", nicht archiviert).
  2. Video-gebunden -> Muster 7, nicht Muster 1. Verwenden Sie ≥3 Schauspieler-Referenzen falls verfügbar; bei 0-2 Referenzen generieren Sie ein reines Text-4-Panel-Blatt.
  3. Geben Sie vor dem Auslösen eine Zeile zur Bestätigung aus; erlauben Sie Umleitung zu Muster 1.
  4. Einmalige statische Kunst/Poster/Porträt -> Muster 1.

Diese Vorabprüfung ist nicht verhandelbar. Das einzelne Frontporträt von Muster 1 gibt dem Videomodell einen zu engen Anker; die Identität driftet von Einstellung zu Einstellung. Direkt zu Muster 1 für Videearbeiten zu springen, ist der mit Abstand häufigste Fehler.

Standardwerte für Geschichts-/Skriptanker. Wenn script-compose oder story-to-video-workflow eine Aufschlüsselung hierher leitet:

  • Ein Basis-4-Panel-Blatt pro materialem Charakter.
  • Zusätzliche Blätter für materiale Charaktervarianten: Alter, Garderobe/Uniform/Verkleidung, Verletzung/schmutzig/nass/blutiger Zustand, Verwandlung oder kontinuitätsrelevante Looks.
  • Detaillierte Ortsanker für Schauplätze, die Einstellungen beeinflussen.
  • Gleicher-Ort-Varianten für Änderungen in Bildausschnitt/Skala/Zeit/Wetter/Licht/Dekoration/Geschichtszustand/Nahdetail-Abdeckung.
  • Bevorzugen Sie Referenz-zu-Clip nach Ankern. Storyboard nur auf Anfrage, wenn schwer kontrollierbar oder zur Diagnose benötigt.
  • Lassen Sie keine materialen Varianten aus Budget-/Geschwindigkeitsgründen fallen; der Aufrufer sollte zuerst Videoauflösung/Laufzeit anpassen.

1. Charakterporträt (nur einmalige statische Standbilder)

Auslöser: Charakterporträt/Kopfschuss/Protagonist/Schurke/Hauptfigur nur für einmalige statische Standbilder. Video-gebunden -> Muster 7.

  • node "$PAI_REPO_ROOT/server/cli/generate_image.js" --prompt "..." --aspect-ratio 9:16 --image-size 2K --subtype character --name "Detective Morris" --role "..." --description "..." — keine Referenzen. Ein Charakter ist ein Identitätsanker, keine Ableitung.
  • Prompt-Vorlage:

    [Stil] Charakterporträt von [NAME], [Rolle]. [Alter, Statur, Garderobe, Unterscheidungsmerkmale]. Frontale mittlere Nahaufnahme, Augenhöhe, direkt in die Kamera blickend, neutraler Gesichtsausdruck. Schlichter neutraler Hintergrund, weiche gleichmäßige Beleuchtung. Keine dramatischen Schatten, keine stilisierte Beleuchtung, kein Seitenprofil, keine Mehrfachansichten.

  • Projektstil übernehmen oder standardmäßig realistisch. Unbenannte Charaktere benennen.
  • Keine Kanten — Charaktere sind Wurzeln, also kein --ref-source-id.

2. Orts-Etablierungs-Standbild

Auslöser: Ort etablieren/entwerfen/visualisieren oder Genehmigung eines script-compose-Ortsvorschlags.

  • node "$PAI_REPO_ROOT/server/cli/generate_image.js" --prompt "..." --aspect-ratio 16:9 --image-size 2K --subtype location --name "Damm" --description "..." [--source-node-id <script_or_shot_note_id>] — keine Referenzen. Ein Ort ist ein Schauplatzanker, keine Ableitung.
  • Prompt-Vorlage:

    [Stil] Etablierungs-Standbild von [ORTSNAME]. [Visuelle Kurzbeschreibung — Architektur, Beleuchtung, Atmosphäre]. Weite Einstellung, Augenhöhe, keine Charaktere anwesend.

  • Rahmen frei von Charakteren halten. Architektur/Layout, Oberflächen, Dekoration, Epoche, Wetter, Tageszeit, Licht und Geschichtszustand einbeziehen, wenn relevant.
  • Gleicher-Ort-Varianten bewahren die Ortsidentität, während sie Weit/Nah-Skala, Tag/Nacht, Wetter, Dekoration, Beschädigung oder Detailabdeckung ändern.
  • Standardmäßig keine Referenzkanten. Wenn der Ort von einer Skript- oder Shot-Notiz abgeleitet wurde, --source-node-id verwenden, damit die Autorenkante landet.
  • Nachfolgend: Nach dem letzten skriptierten Ort die nächste Referenz-zu-Clip-Wiedergabe empfehlen. Storyboard nur erwähnen, wenn angefragt/benötigt.

3. Bearbeitung / Variation / Umsetzung eines bestehenden Bildes

Auslöser: Ändern/bearbeiten/ersetzen/hinzufügen/entfernen/anpassen/was-wäre-wenn/Variation eines bestehenden Bildes.

  • Quellknoten identifizieren (normalerweise das aktuellste image_result oder eines, das der Benutzer genannt hat). source.id und source.metadata.aspect_ratio abrufen.

  • node "$PAI_REPO_ROOT/server/cli/generate_image.js" --prompt "..." --aspect-ratio <Quellenverhältnis> --image-size <Quellgröße oder 2K> --subtype edit --source-node-id <source.id> --ref-source-id <source.id>.

  • Prompt als Transformation, nicht als vollständige Neubeschreibung:

    <konkrete Änderung>. Alles andere beibehalten.

    ✅ „Ändere den Regen zu fallendem Schnee. Behalte den Detektiv, die Garderobe und den Kamerarahmen unverändert.“ ✅ „Rendere als vollständiges 3D-Umsetzungsblatt desselben Charakters. Behalte Gesicht, Garderobe und Proportionen bei.“ ❌ „Ein Detektiv in einer verschneiten Gasse bei Nacht, der einen Trenchcoat trägt…“ — überspezifiziert, Identität driftet.

  • Die CLI erzeugt die abgeleitete Kante von <source.id> basierend auf --ref-source-id.

  • Mehrstufige Ketten verwenden eine Kante/einen Aufruf pro Schritt; nicht A -> C abflachen.

4. Szene mit bestehenden Charakteren

Auslöser: Charakter in Umgebung setzen / Einstellung von X und Y / Charakteraktion am Ort.

  • Jeden beteiligten Charakter identifizieren – jedes image_result dieser Person (bis zu 16). Die id jedes einzelnen sammeln.
  • node "$PAI_REPO_ROOT/server/cli/generate_image.js" --prompt "..." --aspect-ratio <zur Einstellung passend> --image-size 2K --ref-source-id <char1.id> --ref-source-id <char2.id> ....
  • Prompt: die vollständige Szenenbeschreibung. Benennen Sie jeden Charakter mit seiner Rolle, damit der Generator Identität an Rolle bindet. Beziehen Sie sich im Prompt auf sie als @Image1, @Image2, … in der --ref-source-id-Reihenfolge.
  • Kein --subtype – eine Szene ist weder ein Charakter noch eine Bearbeitung. Die CLI erzeugt eine abgeleitete Kante pro --ref-source-id.

5. Eigenständiges Standbild

Auslöser: Ein frisches Bild ohne Bezug zu vorhandenem Leinwandinhalt („generiere einen Berg in der Dämmerung“, „eine Noir-Gasse – nur die Umgebung“).

  • Einfach node "$PAI_REPO_ROOT/server/cli/generate_image.js" --prompt "..." mit sinnvollen Standardwerten (16:9, 2K, sofern der Benutzer nichts anderes wünscht). Kein Subtyp, keine Referenzen.

6. Storyboard-Mosaik – ein Composite pro Clip / Shot-Notiz

Auslöser: Storyboard, Mosaik, Raster, Shotliste, Abdeckung, Keyframe-Blatt, Shotplanung, Bildvorvisualisierung. Ausgabe ist EIN Composite pro Clip/≤15s Shot-Notiz, nicht ein Bild pro Panel.

  • Werkzeug/Aufruf: ein generate_image_pro.js --size 2560x1440 --subtype storyboard --label "Storyboard — Shot <N>" --source-node-id <shot_note_id> pro Mosaik.
  • Größe: Standard 2560x1440; Rasterform ist Zellenlayout, nicht Leinwandform. Überschreiben nur bei explizitem Porträt/Quadrat/Hochformat/Verhältnis:
    • „2x2 Storyboard“ → 2560x1440 (Standard)
    • „2x2 quadratisches Storyboard“ → 1920x1920
    • „2x2 Porträt-Storyboard“ → 1440x2560
    • „vertikales 2x4 Mosaik“ → 1440x2560
  • Raster/Referenzen: Standard 2×2. Relevante Charakter-/Ortsreferenzen übergeben (≤32). Vor 3×3+ warnen; kleinere Blätter empfehlen.

Für die Leinwand-Vorabprüfung, die Iterationslogik pro Shot-Notiz, den Hinweis auf fehlende Anker, die wörtliche Prompt-Vorlage und die Standard-Panel-Abdeckung, wenn kein Skript-Abschnitt existiert: siehe references/storyboard-mosaic.md.

Von der CLI gesetzte Knotenfelder

  • EIN image_result-Knoten PRO Mosaik.
  • Setzen Sie data.subtype = "storyboard" durch Übergabe von --subtype storyboard.

7. Charakterreferenzblatt (Standard für JEGLICHE video-gebundene Charakterarbeit – mit oder ohne Schauspieler-Referenzen)

Proaktiv für jeden Charakter verwenden, der in nachgelagerten Videos erscheint, unabhängig von Schauspieler-Referenzen.

Modus A – ≥3 hochgeladene Schauspieler-Referenzen. Fotos als --ref-source-id übergeben; --source-node-id <note_id> hinzufügen, wenn ein Skript/Shot das Design erstellt hat.

Modus B – 0-2 Referenzen / von Grund auf. Schauspieler-Referenzen weglassen; Alter/Statur/Garderobe/Unterscheidungsmerkmale explizit beschreiben. --source-node-id <note_id> hinzufügen, wenn von einer Notiz erstellt.

Wird auch bei expliziten Anfragen ausgelöst: „Entwerfe ein Charakterblatt / eine Umsetzung / ein Referenzblatt / ein Charakterdesign für [Charakter]“, „Erstelle ein 4-Panel-Charakterdesign“, „Generiere ein Produktionsreferenzblatt für nachgelagerte Videearbeit“.

Ausgabe: Ein Front-ganz / Profil-ganz / Rücken-ganz / Nah-Brust-Blatt, das direkt als --ref-source-id an das Video übergeben wird.

  • Vorabprüfung: Hochgeladene Referenzknoten identifizieren (subtype:"reference", idealerweise ≥3 Fotos). Referenzanzahl in einer Zeile bestätigen.
  • node "$PAI_REPO_ROOT/server/cli/generate_image_pro.js" --prompt "..." --size 2560x1440 --subtype character --name "<character_name>" --role "..." --ref-source-id <ref1> --ref-source-id <ref2> --ref-source-id <ref3> [--source-node-id <script_or_shot_note_id>] — Pro-Tarif ist der Standard für Charakterblätter, da Panel-Layout, Textunterdrückung und Identitätskonsistenz tragend sind. Übergeben Sie weder --aspect-ratio noch --image-size. Lösen Sie Modus A niemals mit weniger als 3 Referenzen aus (das Modell passt sich zu sehr an den einen Winkel an, den es hat).
  • Mit 0-2 Schauspieler-Referenzen den textbasierten Befehl aus Modus B aus references/character-sheet.md verwenden: derselbe Pro-Befehl, aber jede Schauspieler-Foto---ref-source-id weglassen; --source-node-id nur einfügen, wenn ein Skript oder eine Shot-Notiz das Design erstellt hat.
  • Ein Aufruf/Blatt pro Basischarakter oder materialer Variante. Basis vor Varianten generieren. Für identitätsbewahrende Varianten das Basisblatt als Referenz übergeben und nur dauerhafte Garderoben-/Zustandsänderung beschreiben.
  • Das Blatt als --ref-source-id <sheet_id> für nachgelagerte Einstellungen verwenden; kein normales Zuschneiden erforderlich.

Für die wörtliche 4-Panel-Prompt-Vorlage, optionale winkelspezifische Ausschnitte und Fallstricke (Kein-Text-Regel, Foto-Priorität, exakte Panel-Anzahl): siehe references/character-sheet.md.

Von der CLI gesetzte Knotenfelder

  • EIN image_result-Knoten mit data.subtype = "character".
  • data.name, data.role, data.description aus den CLI-Flags.
  • Eine derived-Kante pro --ref-source-id (damit das Blatt herkunftsverknüpft mit jedem Schauspielerfoto ist, von dem es trianguliert wurde).

Nach Rückkehr der CLI

Für Entwurfsstadium-JSON einen Satz mit Preis/Status – siehe die Projektdatei PROJECT_AGENT.md § „Entwurfsschleuse“. Für endgültige Ergebnisse folgen Sie der Nächster-Schritt-Empfehlungsregel des Projekthandbuchs.

Verwandte Skills