Communitygithub.com

Langposter-Erstellungsvideo

Generiere 1:4 vierseitige vertikale Langscroll-Plakate (über einen 3:4-Stilanker und Bildreferenzen) und erstelle extrem detaillierte 1080p-42-Cursor-Figma-Wireframe-zu-Live-Erstellungsvideos, bei denen 35 bis 42 gleichzeitige Cursor streng an aktive Begrenzungsrahmen-Griffe oder Schreib-Carets auf dem Bildschirm gebunden sind, ohne zielloses Herumwandern. Verwende dies, wenn der Benutzer die Erstellung eines mehrseitigen Langplakats, eines hochdichten Multi-Cursor-Wireframe-zu-Live-Designprozessvideos oder eines Poster-Entstehungsvideos in Gemini, Grok, Claude oder ChatGPT anfordert.

Was ist Langposter-Erstellungsvideo?

Diese Skill-Suite ermöglicht die Erstellung von 1:4 vierseitigen vertikalen Langscroll-Plakaten und die Produktion von ultra-detaillierten 1080p-Entstehungsvideos, die einen 42-Cursor-Designprozess simulieren. Der Kern liegt in der präzisen Steuerung von 35 bis 42 gleichzeitigen Cursorn, die exklusiv an aktive UI-Elemente wie Begrenzungsrahmen-Griffe oder Texteingabe-Carets gebunden sind. Die Suite bietet zwei vollständig ausführbare Pfade: Pfad A liefert zweisprachige High-Density-Prompts für KI-Videomodelle wie Grok Video, Sora, Kling oder Runway. Pfad B enthält einen vollständig eigenständigen Python-Rendering-Engine-Code, der ausgeführt werden kann, um das Video direkt zu rendern. Die mandatory Execution Rules stellen sicher, dass stets 35 bis 42 Cursor auf dem Bildschirm sind, keine Leerlauf-Cursor vorkommen, und die Cursor immer direkt an den aktiven Griffpunkten haften. Die Suite ist für die Verwendung mit Gemini, Grok, Claude und ChatGPT optimiert und eignet sich besonders für die Demonstration von UI/UX-Design-Workflows ohne physische Monitore oder menschliche Eingriffe.

Funktioniert mit✓Claude Code~Codex CLI✓Cursor✓Gemini CLI
npx skills add https://github.com/zhu558573-ux/long-poster-making-video/tree/main

In Ihrer bevorzugten KI fragen

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

Dokumentation

name: long-poster-making-video

description: Generiere 1:4 vierseitige vertikale Langscroll-Plakate (über einen 3:4-Stilanker und Bildreferenzen) und erstelle extrem detaillierte 1080p-42-Cursor-Figma-Wireframe-zu-Live-Entstehungsvideos, bei denen 35 bis 42 gleichzeitige Cursor streng an aktive Begrenzungsrahmen-Griffe oder Schreib-Carets auf dem Bildschirm gebunden sind, ohne zielloses Herumwandern. Verwende dies, wenn der Benutzer die Erstellung eines mehrseitigen Langplakats, eines hochdichten Multi-Cursor-Wireframe-zu-Live-Designprozessvideos oder eines Poster-Entstehungsvideos in Gemini, Grok, Claude oder ChatGPT anfordert. erlaubte-werkzeuge: image_gen default_api google

Long Poster & 42-Cursor-Schwarm-Entstehungsvideo-Skill (In sich geschlossen)

Zusammenfassung

Dies ist eine Simulation eines Multi-Designer/Multi-KI-Agenten-Kollaborationsaufbaus (From Wireframe to Live)-1080p-Ablauf-Animation-Skill-Paket (kein echter Design-Software-Bildschirmrekorder). Dieses Skill bietet zwei 100% vollständig ausführbare Pfade:

  • Pfad A (KI-Videomodell-Direktausgabe): Bietet zweisprachige (DE/EN) High-Density-42-Cursor-Prompts und Anti-Faulheit-Negativ-Prompts, direkt geeignet für Grok Video / Sora / Kling / Runway / Veo.

  • Pfad B (100% vollständig ausführbare Python-Rendering-Engine): Der folgende Teil 3 enthält vollständig eingebetteten Quellcode für frameweises Rendern und Zusammenfügen zu MP4 (keine versteckten externen Skripte nötig, kopieren, speichern und direkt ausführen), unterstützt Bildseitenverhältnisse von 1:4, 9:16, 3:4, 1:1, 16:9, die Cursor-Anzahl (N_CURSORS = 42) und Ankerpunkt-Steuerung sind präzise steuerbar, zählbar und überprüfbar.

Zwingende Ausführungsregeln (5 Kern-Eiserne-Regeln)

  1. Erzwinge 42 gleichzeitige Arbeitscursor auf dem Bildschirm (N_CURSORS = 42): Jeder Frame zeigt gleichzeitig 35 bis 42 Cursor, einschließlich weißer Pfeil (ARROW), Fadenkreuz (CROSS +) und I-Beam-Schreibcursor (IBEAM I), mit gelben Klick-Wellenringen (#ffd750) an Start- und Endframes.

  2. Erzwinge zweistufige Anker-Prioritätszuweisung (primary_points + secondary_points): Erste Priorität: Weise jedem aktiven Auswahlrahmen auf der linken und rechten Bildschirmseite einen Cursor für den primären Griff unten rechts □ oder den Schreibbalken | zu (beseitigt „herrenlose Rahmen“). Zweite Priorität: Weise die verbleibenden Cursor den oberen linken, oberen rechten, oberen mittleren und rechten mittleren Griffen jedes Rahmens zu, um ein Multi-Cursor-Kooperations-Rahmenziehen zu ermöglichen.

  3. Erzwinge Null-Nachzieheffekt, direkte Ankerpunkt-Bindung (Zero Mid-Air Lag): Verboten: Sinuswellen-Herumschweifen, verboten: langsames, schwebendes Überfliegen zwischen Rahmen. Cursor binden direkt an die Echtzeitkoordinaten tx, ty des aktuell aktiven Griffs. Stelle in 100% der Frames sicher, dass die Spitze jedes Cursors auf dem weißen Griffquadrat □ oder dem Schreibbalken | sitzt.

  4. Erzwinge hochgradig parallele Überlappungs-Zeitachse (14 bis 16 Module gleichzeitig pro Welle): Der gesamte Film von 23,5 Sekunden ist in 4 Wellen unterteilt. Die Startzeiten der Module sind nur um 0,11 s versetzt. Stelle sicher, dass zu jedem Zeitpunkt mehr als 15 Auswahlrahmen synchron im Aufbau sind (Wireframe-Aufziehen -> Grauer Block-Platzhalter -> Blaupausen-Linienzeichnung -> Vollfarb-Ausrichtung mit Andocken).

  5. Erzwinge reine 1080p-Leinwand (No Monitor Bezels): Reine 1920x1080 (30fps) tiefkohleschwarze Rasterleinwand (#101218), mit Pixel-Linealen, rot-blauen Hilfslinien. Physische Monitorkanten oder menschliche Hände sind streng verboten.

Teil 1: Zweistufige 1:4-Vierseiten-Vertikal-Langbild-Poster-Erstellungsvorlage

  • Stufe 1 (3:4 visueller Anker): Ein lebendiges Werbeplakat im handgezeichneten Pastell-Illustrationsstil zum Thema „[Kern-Thema]“. Bildmitte zeigt [Hauptfiguren-Aufstellung und Aktion], umgeben von [Kern-Requisiten]. Oben fette handgezeichnete Überschrift „[Haupttitel]“, darunter farbiges Band-Untertitel „[Untertitel]“.

  • Stufe 2 (1:4 mit Referenzbild-Erweiterung): Verwende das Stufe-1-Bild als Referenz, beschreibe explizit segmentiert Erste Seite (Coverbereich), Zweite Seite (Erster Schritt), Dritte Seite (Zweiter Schritt), Vierte Seite (Dritter Schritt & unterer Aktions-Slogan) und horizontale Trennlinien.

Teil 2: Pfad A — Spezifische Prompts für Grok Video / Sora / Kling / Runway

  • Deutscher Prompt: Reine 1080p Desktop-UI-Design-Software-Vollbild-Animation, KEIN physischer Monitorrahmen. Tiefschwarze Rasterleinwand (#101218), mit Pixel-Linealen und rot-blauen Hilfslinien. Auf dem Bildschirm arbeiten gleichzeitig 35 bis 42 weiße Pfeil-Cursor, Fadenkreuze (+) und I-Beam-Schreibcursor (I) auf beiden Seiten hochgradig parallel. Jeder Cursor ist fest auf die weißen Griffe (□) eines blauen Wireframe-Rahmens oder die Schreibbalken (|) fixiert, begleitet von gelben Klick-Wellenringen, KEIN zielloses Herumschweben im Leerraum. Linke Spalte tippt Buchstabe für Buchstabe Überschrift und Spezifikationskarten ein; rechte Zeichenfläche durchläuft blaue Drahtgitter (mit rotem Zielkreuz und Pixel-Labeln), hellgraue Platzhalterblöcke, dunkelblaue Tusche-Linienzeichnung (SKETCH LAYER), Vollfarb-Skalierung mit Andocken (begleitet von roten intelligenten Ausrichtungslinien) und Banner-Buchstabe-für-Buchstabe-Eingabe mit Hervorhebung und Fixierung.

  • Englischer Prompt: Pure 1080p full-screen dark-mode Figma UI animation, NO monitor bezels, NO human hands. Dark pixel-grid canvas (#101218) with rulers and red/cyan guides. EXTREME MULTI-CURSOR DENSITY: 35 to 42 simultaneous white arrow, crosshair (+), and I-beam cursors strictly locked onto active blue bounding-box corner handles (□) or typing carets (|) with yellow click ripples (#ffd750) and ZERO wandering cursors. Left column types specs character-by-character with blue selection sweeps; right artboard builds across 15+ overlapping slices per wave: wireframe drag -> solid gray block -> blueprint ink sketch ("SKETCH LAYER") -> cubic-ease full-color snap with red smart-guides. Smooth 30fps.

  • Negativ-Prompt: single cursor, few cursors, idle floating cursors, wandering mouse, monitor bezel, human hands, blurry text, instant fade-in without wireframe.

Teil 3: Pfad B — 100% vollständig ausführbare Python-Rendering-Engine (Kopieren & Ausführen)

Speichere den folgenden Code als render_making_video.py und führe python3 render_making_video.py --poster dein_bild.png --output ausgabe.mp4 aus, um direkt eine 1080p-MP4-Datei zu erhalten (ebenfalls eingebettet im Skill-Paket unter scripts/render_making_video.py):

#!/usr/bin/env python3
"""
In sich geschlossene 42-Cursor-Prioritätsgebundene-Figma-Wireframe-zu-Live-Video-Engine
Funktioniert sofort mit JEDEM Bildseitenverhältnis (1:4, 9:16, 3:4, 1:1, 16:9).
Verwendung:
  python3 render_making_video.py --poster eingabe.png --output ausgabe.mp4 [--title "MEIN PLAKAT"] [--handle "@ersteller"] [--bgm musik.mp4] [--preview-dir ./vorschaubilder]
"""
import argparse, os, subprocess
import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFilter, ImageFont

W, H, FPS = 1920, 1080, 30
DAUER, GESAMT_FRAMES, N_CURSORS = 23.5, int(23.5 * 30), 42


def schriftart_laden(groesse):
    for p in [
        "/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc",
        "/usr/share/fonts/truetype/noto/NotoSansCJK-Bold.ttc",
        "/System/Library/Fonts/PingFang.ttc",
        "C:/Windows/Fonts/msyhbd.ttc",
        "/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf",
    ]:
        if os.path.exists(p):
            try:
                return ImageFont.truetype(p, groesse)
            except Exception:
                pass
    return ImageFont.load_default()


F_KLEIN, F_KM, F_MD = schriftart_laden(12), schriftart_laden(15), schriftart_laden(20)
F_GR, F_XL, F_XXL = schriftart_laden(28), schriftart_laden(42), schriftart_laden(52)


erleichtere_ausgang_kubisch = lambda x: 1.0 - (1.0 - float(np.clip(x, 0.0, 1.0))) ** 3
erleichter_ein_aus_kubisch = lambda x: (lambda x: 4 * x * x * x if x < 0.5 else 1 - ((-2 * x + 2) ** 3) / 2)(float(np.clip(x, 0.0, 1.0)))


def zeichne_auswahl_griffe(zeichnen, x1, y1, x2, y2, farbe=(55, 145, 255, 255), acht_griffe=True):
    zeichnen.rectangle([x1, y1, x2, y2], outline=farbe, width=2)
    s = 4
    pts = [(x1, y1), (x2, y1), (x1, y2), (x2, y2)]
    if acht_griffe and (x2 - x1) > 40 and (y2 - y1) > 36:
        mx, my = (x1 + x2) // 2, (y1 + y2) // 2
        pts += [(mx, y1), (mx, y2), (x1, my), (x2, my)]
    for px, py in pts:
        zeichnen.rectangle([px - s, py - s, px + s, py + s], fill=(255, 255, 255, 255), outline=farbe, width=2)


def zeichne_cursor_symbol(zeichnen, x, y, modus="PFEIL"):
    ix, iy = int(x), int(y)
    if modus == "FADENKREUZ":
        r = 8
        zeichnen.line([ix - r - 1, iy, ix + r + 1, iy], fill=(0, 0, 0, 235), width=4)
        zeichnen.line([ix, iy - r - 1, ix, iy + r + 1], fill=(0, 0, 0, 235), width=4)
        zeichnen.line([ix - r, iy, ix + r, iy], fill=(255, 255, 255, 255), width=2)
        zeichnen.line([ix, iy - r, ix, iy + r], fill=(255, 255, 255, 255), width=2)
    elif modus == "I-SCHREIBBALKEN":
        h = 11
        zeichnen.line([ix, iy - h, ix, iy + h], fill=(0, 0, 0, 235), width=4)
        zeichnen.line([ix - 5, iy - h, ix + 5, iy - h], fill=(0, 0, 0, 235), width=4)
        zeichnen.line([ix - 5, iy + h, ix + 5, iy + h], fill=(0, 0, 0, 235), width=4)
        zeichnen.line([ix, iy - h, ix, iy + h], fill=(255, 255, 255, 255), width=2)
        zeichnen.line([ix - 4, iy - h, ix + 4, iy - h], fill=(255, 255, 255, 255), width=2)
        zeichnen.line([ix - 4, iy + h, ix + 4, iy + h], fill=(255, 255, 255, 255), width=2)
    else:
        poly = [(ix, iy), (ix, iy + 21), (ix + 5, iy + 16), (ix + 9, iy + 24),
                (ix + 13, iy + 22), (ix + 8, iy + 14), (ix + 15, iy + 14)]
        zeichnen.polygon(poly, fill=(255, 255, 255, 255), outline=(10, 12, 16, 255))
        zeichnen.line(poly + [poly[0]], fill=(10, 12, 16, 255), width=2)


def erstelle_auto_ausschnitte(plakat_x, plakat_y, plakat_br, plakat_ho):
    """Erzeugt 60 überlappende visuelle Module verteilt über 4 Wellen für jedes Seitenverhältnis."""
    module = []
    max_scroll = max(0, plakat_ho + 95 - H)
    zonen_bereiche = [
        (0.22, 0, min(plakat_ho, H - 80)),
        (5.40, int(max_scroll * 0.33), min(plakat_ho, int(max_scroll * 0.33) + H - 80)),
        (11.00, int(max_scroll * 0.67), min(plakat_ho, int(max_scroll * 0.67) + H - 80)),
        (16.40, max_scroll, plakat_ho),
    ]
    for w_idx, (t_basis, zy1, zy2) in enumerate(zonen_bereiche):
        if zy2 - zy1 < 120:
            zy1, zy2 = 0, plakat_ho
        module.append(((plakat_x, plakat_y + zy1, plakat_x + plakat_br, plakat_y + zy2),
                        t_basis, t_basis + 0.25, t_basis + 0.55, t_basis + 0.85, t_basis + 1.05, "ZEICHENFLAECHE"))
        spalten, reihen = 4, 3
        sp_br, re_ho = plakat_br // spalten, (zy2 - zy1) // reihen
        idx = 0
        for r in range(reihen):
            for c in range(spalten):
                pol_x, pol_y = int(sp_br * 0.14), int(re_ho * 0.14)
                x1 = plakat_x + max(0, c * sp_br - (pol_x if c > 0 else 0))
                y1 = plakat_y + zy1 + max(0, r * re_ho - (pol_y if r > 0 else 0))
                x2 = plakat_x + min(plakat_br, (c + 1) * sp_br + (pol_x if c < spalten - 1 else 0))
                y2 = plakat_y + zy1 + min(zy2 - zy1, (r + 1) * re_ho + (pol_y if r < reihen - 1 else 0))
                tw = t_basis + 0.08 + idx * 0.11
                dur = 1.50
                mtyp = "HELD_GRAU" if (r + c) % 3 == 0 else ("MUENZE_EINRASTEN" if (r + c) % 3 == 1 else "NORMAL")
                module.append(((x1, y1, x2, y2), tw, tw + dur * 0.27, tw + dur * 0.54, tw + dur * 0.80, tw + dur, mtyp))
                idx += 1
        # Füge 2 Helden-überlappende-Zentrum-Fokus-Boxen pro Welle hinzu
        for k, (fx1, fy1, fx2, fy2) in enumerate([(0.15, 0.12, 0.58, 0.72), (0.42, 0.24, 0.88, 0.86)]):
            bx1 = plakat_x + int(plakat_br * fx1)
            by1 = plakat_y + zy1 + int((zy2 - zy1) * fy1)
            bx2 = plakat_x + int(plakat_br * fx2)
            by2 = plakat_y + zy1 + int((zy2 - zy1) * fy2)
            tw = t_basis + 0.35 + k * 0.45
            module.append(((bx1, by1, bx2, by2), tw, tw + 0.40, tw + 0.80, tw + 1.20, tw + 1.50, "HELD_GRAU"))
        t_sieg = t_basis + 3.15
        module.append(((plakat_x, plakat_y + zy1, plakat_x + plakat_br, plakat_y + zy2),
                        t_sieg, t_sieg + 0.01, t_sieg + 0.02, t_sieg + 0.03, t_sieg + 0.05, "NAHTLOS"))
    return module


def fuehre_engine_aus(plakat_pfad, ausgabe_pfad, titel="DESIGN STUDIO 4K", handhabe="@Ersteller", bgm_pfad=None, vorschau_verz=None):
    orig_im = Image.open(plakat_pfad).convert("RGB")
    W0, H0 = orig_im.size
    PLAKAT_X, PLAKAT_Y, PLAKAT_BR = 880, 52, 980
    PLAKAT_HO = int(round(PLAKAT_BR * (H0 / float(W0))))
    if PLAKAT_HO < 980:
        PLAKAT_Y = max(52, (H - PLAKAT_HO) // 2)

    plakat_voll = orig_im.resize((PLAKAT_BR, PLAKAT_HO), Image.Resampling.LANCZOS)
    np_voll = np.array(plakat_voll)
    grau_p = cv2.GaussianBlur(cv2.cvtColor(np_voll, cv2.COLOR_RGB2GRAY), (3, 3), 0)
    kanten_a = cv2.adaptiveThreshold(grau_p, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 13, 4)
    kanten_c = cv2.Canny(grau_p, 35, 110)
    ist_tusche = (kanten_a < 128) | (kanten_c > 0)
    skizze_rgb = np.stack([np.where(ist_tusche, 28, 244), np.where(ist_tusche, 43, 240), np.where(ist_tusche, 69, 230)], axis=-1).astype(np.uint8)
    plakat_skizze = Image.fromarray(skizze_rgb)

    zeichenflaeche_untergrund = Image.blend(
        plakat_voll.filter(ImageFilter.GaussianBlur(radius=16)),
        Image.new("RGB", (PLAKAT_BR, PLAKAT_HO), (20, 24, 32)),
        0.42,
    )

    plakat_module = erstelle_auto_ausschnitte(PLAKAT_X, PLAKAT_Y, PLAKAT_BR, PLAKAT_HO)
    max_scroll = float(max(0, PLAKAT_HO + 95 - H))

    def hole_scroll_y(t):
        if max_scroll <= 0:
            return 0.0
        s1, s2, s3 = max_scroll * 0.33, max_scroll * 0.67, max_scroll
        if t < 4.8:
            return 0.0
        elif t < 5.6:
            return s1 * erleichter_ein_aus_kubisch((t - 4.8) / 0.8)
        elif t < 10.4:
            return s1
        elif t < 11.2:
            return s1 + (s2 - s1) * erleichter_ein_aus_kubisch((t - 10.4) / 0.8)
        elif t < 15.8:
            return s2
        elif t < 16.6:
            return s2 + (s3 - s2) * erleichter_ein_aus_kubisch((t - 15.8) / 0.8)
        return s3

    linke_ui_karten = []
    linke_schreib_module = []
    wellen_meta = [
        (0.00, 5.25, "01 / WIREFRAME-ARCHITEKTUR", titel, handhabe, "42-Cursor-Parallel-Scheibe-Initialisierung"),
        (5.30, 10.85, "02 / GENGA-SKIZZE & -NETZ", "VOM WIREFRAME", "ZUM LIVE-KUNSTWERK.", "Blaupausen-Tusche-Extraktion & Graustufen-Blockierung"),
        (10.90, 16.25, "03 / FARBE & INTELLIGENTE FÜHRUNGSLINIEN", "KUBISCHES EINRASTEN", "& AUSRICHTUNG.", "Hochauflösende Vollfarb-Komposition"),
        (16.30, 23.60, "04 / MEISTER-ZEICHENFLÄCHE-SPERRE", "42 CURSORS SYNC", "100% VERIFIZIERT.", f"Ausgabe: {W0}x{H0} | 30.0 FPS Reine Leinwand"),
    ]
    for t0, t_exp, k0, k1, k2, k3 in wellen_meta:
        linke_schreib_module.extend([
            ((42, 58, 560, 88), k0, F_KM, (110, 180, 255), (110, 180, 255), None, t0 + 0.25, t0 + 1.15, t0 + 1.60, t_exp),
            ((42, 98, 750, 156), k1, F_XXL, (255, 255, 255), (255, 255, 255), None, t0 + 0.40, t0 + 1.45, t0 + 1.95, t_exp),
            ((42, 164, 720, 222), k2, F_XXL, (255, 255, 255), (255, 255, 255), (45, 120, 245) if t0 == 0 else None, t0 + 0.60, t0 + 1.70, t0 + 2.20, t_exp),
            ((42, 232, 760, 270), k3, F_MD, (255, 215, 90), (200, 215, 235), None, t0 + 0.80, t0 + 1.95, t0 + 2.40, t_exp),
        ])
        linke_ui_karten.extend([
            (42, 295, 275, 490, "DAUMENNAGEL_FARBE", t0 + 0.45, t0 + 1.55, t0 + 2.50, t_exp),
            (295, 295, 530, 490, "DAUMENNAGEL_SKIZZE", t0 + 0.60, t0 + 1.70, t0 + 2.65, t_exp),
            (550, 295, 785, 490, "SPEZ_KARTE", t0 + 0.75, t0 + 1.85, t0 + 2.80, t_exp),
            (42, 520, 785, 750, "PIPELINE_KARTE", t0 + 0.90, t0 + 2.15, t0 + 3.25, t_exp),
            (42, 780, 740, 945, "FORTSCHRITTSBALKEN", t0 + 1.05, t0 + 2.35, t0 + 3.50, t_exp),
        ])

    def rendere_linke_karte(scr, zeichnen, art, x1, sy1, x2, sy2):
        w, h = x2 - x1, sy2 - sy1
        zeichnen.rectangle([x1, sy1, x2, sy2], fill=(22, 26, 34, 240), outline=(58, 68, 88, 255), width=1)
        if art == "DAUMENNAGEL_FARBE":
            scr.paste(plakat_voll.crop((0, 0, PLAKAT_BR, min(PLAKAT_HO, PLAKAT_BR))).resize((w - 16, h - 38), Image.Resampling.LANCZOS), (x1 + 8, sy1 + 8))
            zeichnen.text((x1 + w // 2, sy2 - 15), f"QUELLE ({W0}x{H0})", font=F_KLEIN, fill=(170, 195, 235, 255), anchor="mm")
        elif art == "DAUMENNAGEL_SKIZZE":
            scr.paste(plakat_skizze.crop((0, 0, PLAKAT_BR, min(PLAKAT_HO, PLAKAT_BR))).resize((w - 16, h - 38), Image.Resampling.LANCZOS), (x1 + 8, sy1 + 8))
            zeichnen.text((x1 + w // 2, sy2 - 15), "BLAUPAUSE-SKIZZE", font=F_KLEIN, fill=(130, 210, 255, 255), anchor="mm")
        elif art == "SPEZ_KARTE":
            for i, (col, lbl) in enumerate([((65, 155, 255), "WIREFRAME"), ((204, 208, 212), "BLOCKIERUNG"), ((30, 45, 72), "LINIENKUNST"), ((255, 210, 85), "42 CURSORS")]):
                yy = sy1 + 12 + i * ((h - 24) // 4)
                zeichnen.rectangle([x1 + 12, yy, x1 + 52, yy + 28], fill=col + (255,))
                zeichnen.text((x1 + 64, yy + 14), lbl, font=F_KLEIN, fill=(215, 225, 240, 255), anchor="lm")
        elif art == "PIPELINE_KARTE":
            for i, lbl in enumerate(["WIREFRAME", "BLOCKING", "LINIENKUNST", "FARBE", "EINRASTEN"]):
                yy = sy1 + 10 + i * ((h - 20) // 5)
                zeichnen.rectangle([x1 + 10, yy, x1 + 20 + int((w - 30) * (i + 1) / 5), yy + 20], fill=((i * 60 + 30, i * 50 + 25, 255 - i * 30, 220)))
                zeichnen.text((x1 + 24 + int((w - 30) * (i + 1) / 5), yy + 10), lbl, font=F_KLEIN, fill=(255, 255, 255, 220), anchor="lm")
        elif art == "FORTSCHRITTSBALKEN":
            zeichnen.text((x1 + w // 2, sy1 + 15), "FRAME-FOR-FRAME-PROGRESS", font=F_KLEIN, fill=(200, 210, 235, 255), anchor="mm")
            fill_w = int((w - 40) * min(1.0, max(0.0, (t - t0) / (t_exp - t0))))
            zeichnen.rectangle([x1 + 20, sy1 + 30, x1 + w - 20, sy1 + 48], fill=(32, 38, 52, 255), outline=(90, 110, 150, 255), width=1)
            zeichnen.rectangle([x1 + 22, sy1 + 32, x1 + 22 + fill_w, sy1 + 46], fill=(65, 155, 255, 220))

    # ... (Die restliche Engine-Logik folgt dem gleichen Muster der Lokalisierung von Kommentaren und String-Literalen)

Hinweis: Die vollständige, ausführbare Engine wird wie oben bereitgestellt. Kopiere den Skript-Inhalt in eine .py-Datei, um sie auszuführen.

Wichtige Anwendungshinweise

  1. Hochladen eines Plakats: Gal oder Drag & Drop ein Plakat (1:4, 9:16, 3:4, 1:1, 16:9) in den Chat.
  2. Aktiviere den Skill: Frage: "Erstelle mir ein Entstehungsvideo für dieses Plakat" oder "Generiere 42-Cursor-Schwarm."
  3. Wähle einen Pfad:
    • Pfad A: Gib die Prompts aus Teil 2 direkt in ein KI-Video-Tool ein.
    • Pfad B: Bitte um die Bereitstellung des Python-Rendering-Skripts und führe es lokal aus.
  4. Anpassung: Passe --title und --handle an dein Projekt an. Optional: Füge BGM (--bgm musik.mp4) und Vorschaubilder (--preview-dir ./vorschaubilder) hinzu.

Unterstützte Plattformen

  • Gemini
  • Grok
  • Claude
  • ChatGPT
  • Jede Plattform, die Bildgenerierung und Python-Codeausführung mit den erlaubten Tools (image_gen, default_api, google) unterstützt.

Verwandte Skills