Communitygithub.com

JuneYaooo/gpt-image2-ppt-skills

Erstellen Sie visuell beeindruckende PPT-Folien über OpenAIs gpt-image-2 – nutzen Sie jeden Stil aus styles/<collection>/STYLE_ID.md oder imitieren Sie eine benutzerdefinierte .pptx-Vorlage; Ausgabe hochauflösender Folien-PNGs und einer 16:9 .pptx.

Was ist gpt-image2-ppt-skills?

Diese Fähigkeit ermöglicht es KI-Agenten, aus einer einfachen Markdown-Gliederung (oder einem `slides_plan.json`) und einer visuellen Stilvorlage professionelle PowerPoint-Präsentationen zu generieren. Sie nutzt OpenAIs `gpt-image-2` API, um für jede Folie ein Bild zu erzeugen, und verpackt diese anschließend in eine 16:9 .pptx-Datei. Die Stärke liegt in der großen Auswahl an vordefinierten Stilen – über 250, unterteilt in Sammlungen wie `initial`, `featured` und `xiamulingzi` – sowie in der Möglichkeit, eine beliebige .pptx-Vorlage zu klonen, um das Layout und Design präzise nachzuahmen. Der Agent kann entweder einen passenden Stil aus der Bibliothek wählen oder eine Benutzervorlage analysieren und deren visuelle Elemente auf alle Folien übertragen. Die Fähigkeit ist für Claude Code, Codex und andere vergleichbare KI-Entwicklungsumgebungen konzipiert und bietet eine flexible, scriptgesteuerte Pipeline von der Idee bis zur fertigen Präsentation. Sie enthält außerdem Szenario-Rezepte (`examples/`), die als Ausgangsvorlage für häufige Anwendungsfälle wie Produkteinführungen, Investoren-Pitches oder Kursmaterialien dienen.

Funktioniert mit✓Claude Code✓Codex CLI✓Cursor✓Gemini CLI
npx skills add JuneYaooo/gpt-image2-ppt-skills

In Ihrer bevorzugten KI fragen

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

Dokumentation

gpt-image2-ppt – PPT mit gpt-image-2 erstellen

Erstellen Sie aus einer Markdown-Gliederung (oder slides_plan.json) + einem visuellen Stil direkt über die offizielle OpenAI Images API (gpt-image-2) einzelne Folienbilder und packen Sie diese in eine 16:9 .pptx.

Verfügbare Stile

Stil-IDEin-Satz-PositionierungAnwendungsbereiche
gradient-glassApple Vision OS / Spatial GlassKI-Produktlaunches, Tech-Talks, Kreativ-Pitches
clean-tech-blueStripe / Linear-Level Blau-WeißFundraising-Pitches, Businesspläne, Unternehmensstrategie
vector-illustrationRetro-Vektorgrafik + schwarze KonturenBildung & Training, Markengeschichten, Community-Austausch
editorial-monoKinfolk / Monocle Editorial-DesignMarkenlaunches, Kulturinterviews, Buchvorstellungen
dark-auroraLinear / Vercel Dark NeonKI-Produkte, Entwickler-Tools, Tech-Talks
risographRiso-Zweifarbendruck + RastertexturKreativstudios, Design-Marken, Independent-Zines
japanese-wabiMuji / Kenya Hara Wabi-SabiTeezeremonie, Lifestyle, Luxusgüter, Kulturkurse
swiss-gridBauhaus / Vignelli Internationaler StilWissenschaftliche Vorträge, Museumsausstellungen, formelle Berichte
hand-sketchSketchnote / Whiteboard-HandzeichnungWorkshops, Produkt-Brainstorming, Trainings
y2k-chromeY2K Millennium Liquid Metal + Butterfly-StickerStreetwear, Unterhaltung, Brand-Kooperationen, Gen-Z-Marketing
abstract-art-showcaseSchwarz-Weiß-minimalistisch, Kunstausstellungs-Feeling, große Schrift und abstrakte BilderKunstkuratierung, Portfolios, Markenimage-Präsentationen
coal-industry-business-company-profileIndustrie-Braun-Schwarz, fette Überschriften, Strukturlinien und robuste IconsEnergie, Fertigung, Schwergut-Unternehmensprofile
college-candy-aesthetics-infographicsBonbonfarben, Campus-Feeling, abgerundete Infografiken und leichte DekorationBildung, Campus-Aktivitäten, leichte Datenkommunikation
creative-agencyKreativagentur-Flair, starke visuelle Collage, markanter SatzrhythmusAgentur-Pitches, Markenkonzepte, Kreativ-Reports
culinary-innovationGastronomie-Innovation, Food-Fotografie, warme Farbblöcke und Magazin-LayoutGastronomiemarken, Lebensmittelinnovation, Menü-/Produkt-Launches
data-science-consultingDatenberatung Blau-Grau, modulares Layout, Diagramme und technische InformationshierarchieDatenanalyse, KI-Beratung, Unternehmensdigitalisierung
mindfulness-in-the-classroom-breathing-techniquesSanfte Psychische-Gesundheit-Farbpalette, Weißraum, abgerundete Blöcke und ruhige IllustrationenPsychische Gesundheit, Unterrichtsaktivitäten, Atemtrainingskurse
mind-maps-workshop-professionalProfessioneller Workshop-Stil, Mindmap-Knoten, klare ProzessstrukturTrainingsworkshops, Methodik, Team-Ko-Kreation
meeting-agendaMeeting-Agenda-Stil, sauberes Raster, starke Informationsgruppierung und geschäftliche ÜberschriftenRegelmäßige Meetings, Projektsynchronisation, Management-Reports
investment-company-business-planInvestmentfonds-Textur, Tiefenkontrast, solides geschäftliches LayoutInvestitionspläne, Fondspräsentationen, Businesspläne
indigenous-culturesKulturelle Muster, Naturfarben, handwerkliche Textur und narrative KompositionKulturkurse, historische Themen, gemeinnützige Bildung
health-disparities-and-social-determinants-of-health-doctor-of-philosophy-phd-in-health-behavior-and-health-educationAkademischer Stil öffentliche Gesundheit, rationales Raster, sanfte medizinische Farben und thesis-ähnliche HierarchieMedizinische Thesenverteidigungen, Public-Health-Berichte, Bildungsforschung
geometric-duotone-thesisZweifarbige Geometrie, Thesenverteidigungs-Feeling, diagonale Formen und starke ÜberschriftenAkademische Verteidigungen, Forschungsberichte, kapitelbasierte Inhalte
geometric-clinical-caseGeometrischer Medizinstil, kühle Farben, Fallkarten und klare SpaltenKlinische Fälle, medizinisches Training, Diagnose-Reports
geometric-businessGeschäftliche geometrische Blöcke, solides Blau-Grün, einfache DiagrammspracheBusinesspläne, Team-Reports, Produktstrategie
formal-lavender-portfolioFormelles Lavendel-Feeling, Portfolio-Weißraum, elegante dünne Linien und sanftes LayoutPersönliche Portfolios, Design-Lebensläufe, professionelle Präsentationen
floweryBlumendekoration, sanfte Farbblöcke, romantisches aber geordnetes LayoutLifestyle, Frauenmarken, Event-Präsentationen
first-impressionsThema erster Eindruck, starke Cover-Visuals, dramatische Beziehung zwischen Personen/ÜberschriftenInterview-Training, Personal Branding, Kommunikationskurse
final-year-project-thesis-defenseAbschlussarbeit-Verteidigung, akademisches Raster, klare Kapitel und DatenseitenAbschlussverteidigungen, Projektabschlüsse, Forschungspräsentationen
fashion-business-consulting-toolkit-aestheticModeberatung-Flair, hochwertige Collage, Magazin-Layout und neutrale FarbenModebusiness, Markenberatung, Trendberichte
economic-impact-of-coronavirusWirtschaftliche Auswirkungen-Berichtsstil, ernste Infografiken, kühle Farben und DatenerzählungMakroökonomie, Politikanalyse, Risikoberichte
eco-green-business-planSalbeigrün, Naturmaterial-Fotografie, umweltfreundliches Business und minimalistischer SplitscreenNachhaltiges Business, Umweltmarken, gesunder Lifestyle

Alle verfügbaren Stile sind unter styles/ nach Sammlung gruppiert und werden auf die gleiche Weise verwendet: initial/ enthält die ersten 10, featured/ 22 ausgewählte und xiamulingzi/ 233 vom Designer @夏目玲子 bereitgestellte. Ein Verzeichnis finden Sie in styles/README.md; Cover der ausgewählten Stile sind in docs/distilled-styles.md zu sehen.

Stilauswahlprinzip: Wählen Sie basierend auf dem Inhaltsszenario den am besten passenden Stil aus styles/. Für Technik: dark-aurora / gradient-glass / data-science-consulting, für Business: clean-tech-blue / editorial-mono / eco-green-business-plan / investment-company-business-plan, für Kultur/Lifestyle: japanese-wabi / vector-illustration / culinary-innovation / flowery, für Akademisches: swiss-grid / geometric-duotone-thesis / final-year-project-thesis-defense, für Workshops/Training: hand-sketch / mind-maps-workshop-professional / mindfulness-in-the-classroom-breathing-techniques.

Szenario-Rezepte (optionale Startvorlagen)

examples/ ist kein neuer Skill und nicht für die Laufzeit erforderlich; es ist eine Bibliothek mit Szenario-Startvorlagen, die dem Agenten hilft, schneller eine erste Version von slides_plan.md zu erstellen, wenn der Benutzer nur vage Anforderungen angibt.

Auslöseregeln:

  • Wenn der Benutzer bereits eine vollständige Gliederung / vollständige slides_plan.md / vollständige slides_plan.json bereitgestellt hat, verwenden Sie kein Rezept, sondern folgen Sie dem Generierungsprozess direkt mit dem Inhalt des Benutzers.
  • Wenn der Benutzer nur sagt "Erstelle eine PPT für Produkteinführung / Investoren-Pitch / Wochenbericht / Kursmaterial / Thesenverteidigung / Buchvorstellung" und keine klare Folienstruktur vorgibt, prüfen Sie zuerst, ob in examples/ ein passendes Rezept vorhanden ist.
  • Das Rezept dient nur als Strukturreferenz: Lesen Sie examples/<id>/recipe.md, um das Szenario, den empfohlenen Stil und Hinweise zu verstehen, und verwenden Sie dann die Seitenstruktur von examples/<id>/slides_plan.md als Vorlage, um sie mit dem eigenen Thema und Inhalt des Benutzers umzuschreiben.
  • Verwenden Sie keine fiktiven Produkte, Unternehmen, Projekte oder Daten aus den Beispielen als fertige Benutzerergebnisse; sie müssen durch die vom Benutzer bereitgestellten Informationen ersetzt oder als Platzhalter gekennzeichnet werden, die auf Bestätigung warten.
  • Wenn der Benutzer echte Bilder, Logos, Screenshots, Diagramme oder Produkt-UI bereitstellt, behandeln Sie diese gemäß der Regel "echte externe Bilder einfügen"; das Rezept ist nur für die Inhaltsstruktur verantwortlich und ersetzt nicht den Workflow zur Materialerhaltung.

Derzeit integrierte Rezepte:

BenutzerszenarioRezeptverzeichnisEmpfohlener Stil
Produkteinführung, Feature-Launch, KI-Produktvorstellungexamples/product-launch/gradient-glass
Investoren-Pitch, Businessplan, Investoren-Reportexamples/investor-pitch/clean-tech-blue
Projektwochenbericht, Monatsbericht, Meeting-Synchronisationexamples/weekly-report/meeting-agenda
Kursmaterial, Training, Wissensvermittlungexamples/courseware/vector-illustration
Thesenverteidigung, Abschlussarbeit-Verteidigung, Projektabschlussexamples/thesis-defense/final-year-project-thesis-defense
Buchvorstellung, Kulturinterview, Meinungsaustauschexamples/book-sharing/editorial-mono

Verwendung:

  1. Prüfen Sie, ob die Benutzeranforderung ein Rezept trifft.
  2. Lesen Sie das entsprechende recipe.md und slides_plan.md.
  3. Schreiben Sie basierend auf dem Thema des Benutzers eine neue slides_plan.md um, ohne die Rezeptquelle zu ändern.
  4. Bestätigen Sie mit dem Benutzer die Seitenzahl, jede Seitenüberschrift und den Schlüsselinhalt.
  5. Nach Bestätigung führen Sie md_to_plan.py aus, um es in JSON zu konvertieren, und fahren Sie mit dem nächsten Schritt (Stil- oder Vorlagenklon) fort.

Layout-Bank-Sidecar für integrierte Stile (einziges Laufzeitformat)

Integrierte Stile verwenden eine Zwei-Datei-Struktur: "MD für Menschen, JSON für Maschinen":

styles/<collection>/<style-id>.md            # Stilbeschreibung, Design-Tokens, Basis-Prompts
styles/<collection>/<style-id>.layouts.json  # Erforderlich; Layout-Bank pro Seite, für automatische Seitenlayout-Zuweisung

generate_ppt.py verwendet das gleichnamige .layouts.json als RuntimeProfile ohne Referenzbild: Es weist verschiedene Layouts via assign_layouts() zu, schreibt visual_signature / content_capacity / best_for / avoid_for / variation_tags in den Prompt und speichert die gekürzten Layout-Informationen in metadata.json.

Derzeit müssen alle styles/**/*.md von einem gleichnamigen .layouts.json im selben Verzeichnis begleitet werden. Alte Stile, denen nur das Markdown und der Sidecar fehlen, geben vor der Bilderzeugung einen Fehler aus, anstatt stillschweigend den alten Prompt zu verwenden; migrieren Sie sie zuerst in das gepaarte Format. Beim Destillieren öffentlicher Vorlagen oder Hinzufügen neuer integrierter Stile muss gleichzeitig der JSON-Sidecar erstellt werden; packen Sie mehrseitige Layouts nicht nur in einen einzelnen MD-Abschnitt "Layoutsystem".

Einheitlicher RuntimeProfile-Ausführungskern

Strikter Vorlagenklon und strukturierte Style-Sidecars werden zuerst in ein gemeinsames RuntimeProfile kompiliert, das dann einheitlich durch assign_layouts(), Seitenprofil-Anhängung, Prompt-Kompilierung und Metadaten-Aufzeichnung läuft. Eintrittsadapter behalten nur notwendige Unterschiede:

  • template-clone: Von --template-profile oder Template-Visionsanalyse; Layouts können reference_image tragen, nur --template-strict übergibt dies tatsächlich an die Bildgenerierung.
  • distilled-style: Von <style>.md + <style>.layouts.json; verwendet Inhaltsrouting und mehrere Layouts, hängt nicht vom Originalvorlagenbild ab.

RuntimeProfile zeichnet einheitlich source_kind, festes prompt_strategy=layout-fields, layouts und capabilities (routing / evidence / reference / portability) auf. Die Priorität ist festgelegt: Gültiges Vorlagenprofil > Style-RuntimeProfile; wenn die Vorlagenanalyse keine Layouts ergibt, muss tatsächlich auf den strukturierten Style zurückgegriffen werden, nicht nur ein Hinweis ausgegeben werden. Die Laufzeit enthält keine legacy-freeform oder synthetischen Layout-Zweige mehr.

Vorlagenklon-Modus

Übergeben Sie dem Skill direkt eine .pptx-Vorlage; alle nachfolgenden Folien werden dieser Vorlage nachempfunden.

# Einzeiler: Automatisches Rendern + Vorlagenanalyse + Bilderzeugung. Erfordert ein verfügbares PPTX-Rendering-Backend auf dem lokalen Rechner.
python3 scripts/generate_ppt.py \
  --plan slides_plan.json \
  --template-pptx ./company-template.pptx \
  --template-strict

--template-strict bedeutet, dass jede Seite das entsprechende Vorlagenbild als Bildreferenz an gpt-image-2 übergibt, was die höchste Ähnlichkeit gewährleistet.

Vorlagen-Rendering: Kein PowerPoint auf dem lokalen Rechner erforderlich

Der Skill enthält render_template.py, das die .pptx automatisch in PNGs pro Seite rendert und unter <cwd>/template_renders/<stem>/page-NN.png speichert.

Agent-Vorabprüfung (MUSS bei Vorlagenklon durchgeführt werden)

Bevor Sie einen --template-pptx-Befehl ausführen, MÜSSEN Sie zuerst prüfen, ob ein verfügbares PPTX-Rendering-Backend auf dem lokalen Rechner vorhanden ist.

Prüfmethode:

  • Bevorzugt: Führen Sie im Skill-Verzeichnis python3 scripts/render_template.py --check aus. Es überprüft, ob das Backend tatsächlich ausführbar ist, nicht nur, ob der Pfad existiert.
  • macOS: Zuerst auf /Applications/Keynote.app und AppleScript-Ausführbarkeit prüfen; andernfalls auf libreoffice --version || soffice --version prüfen.
  • Windows: Zuerst prüfen, ob PowerPoint COM startbar ist; andernfalls auf libreoffice --version / soffice --version prüfen.
  • Linux / Kompatibilitätsebene: Auf libreoffice --version || soffice --version prüfen, nicht nur which verwenden.

Hinweis: HarmonyOS / Termux / Container / spezielle Architekturumgebungen mögen wie Linux aussehen, aber es kann nicht angenommen werden, dass ein Linux-aarch64 LibreOffice-Binary läuft; die tatsächliche Ausführung von render_template.py --check oder soffice --version ist maßgeblich. Verwenden Sie aspose-slides nicht als Standard-Fallback, da es in vielen mobilen/speziellen Python-Umgebungen kein installierbares Wheel gibt.

Wenn kein Backend verfügbar ist, informieren Sie den Benutzer, dass das Vorlagen-Rendering die Installation einer ausführbaren LibreOffice-Instanz erfordert, oder dass er manuell auf dem Desktop jede Vorlagenseite als page-01.png, page-02.png exportieren und über --template-images übergeben kann. Optionale Installationsbefehle:

PlattformInstallationsbefehl
Windowswinget install LibreOffice.LibreOffice
macOSbrew install --cask libreoffice
Linux (Debian/Ubuntu)sudo apt-get install -y libreoffice
Linux (Fedora/RHEL)sudo dnf install -y libreoffice
Linux (Arch)sudo pacman -S --noconfirm libreoffice-fresh

Nach der Installation erneut prüfen, um die Verfügbarkeit des Rendering-Backends zu bestätigen, bevor Sie mit dem weiteren Workflow fortfahren.

Hinweis: winget unter Windows ist in Win10/11 integriert und zeigt ein UAC-Bestätigungsfenster an, das die Benutzerbestätigung erfordert; unter macOS erfordert brew eine zuvor installierte Homebrew-Installation.

render_template.py wählt das Rendering-Backend basierend auf Priorität automatisch aus:

  1. Windows: PowerPoint COM (bevorzugt, wenn Office lokal installiert ist, direkte PNG-Ausgabe, überspringt PDF-Schritt) > LibreOffice
  2. macOS: Keynote AppleScript (bevorzugt, wenn Keynote lokal vorhanden ist, direkte PNG-Ausgabe) > LibreOffice
  3. Linux / Kompatibilitätsebene: Über --version (festgestellt durch tatsächliche Ausführung) verfügbaren LibreOffice / soffice-Befehl verwenden
  4. PDF -> PNG über pymupdf (bereits in den Anforderungen); falls nicht installiert, pdf2image + poppler verwenden

Wenn Sie generate_ppt.py --template-pptx ... ausführen und --template-images weglassen, wird das Rendering automatisch einmal aufgerufen; Sie können es auch manuell zuerst ausführen:

python3 scripts/render_template.py company-template.pptx
# -> <cwd>/template_renders/company_template/page-01.png ... page-NN.png

Zwei-Ebenen-Cache für Vorlagenimitation

MaterialPfadVerwendung
Vorlagen-PNGs pro Seite<cwd>/template_renders/<stem>/page-NN.pngEinmaliges Rendern durch lokales Backend, langfristig wiederverwendbar
Vorlagen-Stilanalyse<cwd>/template_cache/<sha256>.json oder manuelles template_profile.jsonVom multimodalen Agenten selbst aus Bildern erstellt; reine Textagenten benötigen externes Vision
Generierte Ausgabe<cwd>/outputs/<timestamp>/Neues Verzeichnis für jeden Durchlauf

Alle drei befinden sich im CWD des Aufrufers und sind natürlich mit dem Projekt verbunden; es wird empfohlen, template_renders/, template_cache/, outputs/ zur .gitignore des Projekts hinzuzufügen.

Vorlagenbildanalyse (Agent entscheidet selbst, ob VISION_* konfiguriert werden muss):

  • Wenn der aktuelle Code-Agent selbst ein multimodales Modell ist (z.B. multimodales Claude von Claude Code, multimodales GPT von Codex): Keine zusätzliche Konfiguration von VISION_* erforderlich. Der Agent liest direkt template_renders/<stem>/page-*.png, generiert template_profile.json gemäß der TemplateProfile-Struktur von template_analyzer.py und übergibt es mit --template-profile template_profile.json an generate_ppt.py. Wenn --template-strict verwendet wird, muss jedes Layout reference_image enthalten (absoluter oder zugänglicher Pfad zum Vorlagen-PNG).
  • Wenn der aktuelle Code-Agent ein reines Textmodell ist (z.B. nur DeepSeek-Textmodell): Es kann die Vorlagen-Screenshots nicht sehen; benötigt zusätzlich VISION_BASE_URL / VISION_API_KEY / VISION_MODEL_NAME, damit template_analyzer.py einen unabhängigen OpenAI-kompatiblen multimodalen Endpunkt für die Vorlagenanalyse aufruft.

Die Visionsanalyse und die Bildgenerierung (gpt-image-2) sind immer entkoppelt – ein Wechsel des Vision-Anbieters beeinflusst den Bildgenerierungspfad nicht.

Installation

git clone [email protected]:JuneYaooo/gpt-image2-ppt-skills.git
cd gpt-image2-ppt-skills
bash install_as_skill.sh --target claude   # Claude Code
# oder
bash install_as_skill.sh --target codex    # Codex
# API-Schlüssel für Direktverbindung werden bevorzugt über Agentenkonfiguration / Systemumgebungsvariablen injiziert

Umgebungsvariablen-Injektion (bei API-Direktverbindung)

Schreiben Sie die Schlüssel dieses Skills nicht in die .env-Datei im Stammverzeichnis des Aufruferprojekts, und lesen Sie auch nicht die generische .env im Benutzerprojekt, um Bilder zu generieren. Umgebungsvariablen sollten gemäß den Standardmethoden des Agentenframeworks injiziert werden:

  • Allgemein / CI / Server: Systemumgebungsvariablen, Docker Compose environment / env_file, Kubernetes Secrets, CI Secrets usw.
  • Claude Code: Benutzer-Level ~/.claude/settings.json oder Projekt-Level .claude/settings.local.json; Umgebungsvariablen in der Befehlszeile haben höchste Priorität.
  • OpenClaw / Benutzerdefinierte Agenten: Verwenden Sie apiKey / env-Referenz in der Framework-Konfiguration, um Systemumgebungsvariablen zu referenzieren; vermeiden Sie es, Schlüssel im Klartext in Projektkonfigurationen zu schreiben.
  • Lokaler standalone CLI-Fallback: Sie können GPT_IMAGE2_PPT_ENV=/path/to/private.env setzen oder die .env im Installationsverzeichnis des Skills verwenden; dies ist nur ein Fallback, nicht die .env des Geschäftsprojekts.

API-Direktverbindung benötigt diese Variablen:

OPENAI_BASE_URL=https://api.openai.com    # oder beliebiger OpenAI-kompatibler Relay
OPENAI_API_KEY=sk-...
GPT_IMAGE_MODEL_NAME=gpt-image-2
GPT_IMAGE_QUALITY=high                     # low / medium / high / auto

# Optional: Vision-Analyse-Backend für Vorlagenklon-Modus.
# Multimodaler Agent / nativer Codex kann selbst Bilder lesen und --template-profile generieren; diese Gruppe wird nicht benötigt.
# Nur reine Textagenten (z.B. DeepSeek-Textmodell) benötigen diese externen Angaben.
# Kein Standard-Endpunkt integriert; geben Sie einen vertrauenswürdigen Dienst ein, oder lassen Sie es leer.
# VISION_BASE_URL=https://your-openai-compatible-relay.example.com/v1
# VISION_API_KEY=sk-...
# VISION_MODEL_NAME=gemini-3.1-pro-preview   # oder gpt-4o / claude-3.5-sonnet etc. beliebige multimodale SKU

Die Konfigurationspriorität ist festgelegt: Aktuelle Prozess-Umgebungsvariablen > Plattform-injizierte gpt-image2-ppt_*-Variablen > GPT_IMAGE2_PPT_ENV / .env im Skill-Verzeichnis; JULING_GPT_IMAGE2_* dient nur als Kompatibilitäts-Fallback, wenn keine entsprechende OPENAI_*-Konfiguration vorhanden ist, und überschreibt keine expliziten Konfigurationen.

Sicherheitshinweis: Skripte lesen nur die aktuelle Prozessumgebung, plattforminjizierte gpt-image2-ppt_*-Variablen, explizite GPT_IMAGE2_PPT_ENV und den .env-Fallback im Skill-Installationsverzeichnis. Skripte lesen nicht rekursiv nach oben die .env im Projektverzeichnis des Aufrufers, um die versehentliche Übernahme von Geschäftsprojektschlüsseln zu vermeiden. python3 scripts/render_template.py --check führt eine minimale echte Konvertierung durch, um das Rendering-Backend zu überprüfen.

Wenn Sie selbst der Codex-Agent sind (native image_generation-Bildausgabe – empfohlen)

Wenn Sie selbst Codex sind (der Agent, der diesen Skill ausführt, ist Codex CLI / Codex TUI), und die aktuelle Umgebung das image_generation-Tool und einen ChatGPT-Login-Status bereitstellt, dann verwenden Sie nicht generate_ppt.py oder --backend codex für die Bildausgabe; generieren Sie Bilder direkt mit dem nativen Tool und verwenden Sie nur die md-Konvertierungs-/PPTX-Packlogik dieses Repos.

Kritische Abgrenzung: Python-Skripte laufen in einem Unterprozess und haben keinen Zugriff auf das native Tool der aktuellen Agentensitzung. generate_ppt.py --backend codex kann nur einen weiteren codex exec-Unterprozess starten, der einen anderen Codex zur Bildausgabe verwendet; es ist keine "Wiederverwendung des image_generation-Tools des aktuellen Codex". Wenn der aktuelle Agent bereits nativ Bilder generieren kann, muss die Bildausgabe vom Agenten selbst durchgeführt werden, nicht von generate_ppt.py.

Wie man es erkennt

Sie können auf das image_generation-Tool zugreifen und müssen OPENAI_API_KEY nicht manuell konfigurieren, um Bilder zu generieren – wenn diese beiden Bedingungen erfüllt sind, gehen Sie den nativen Pfad. Wenn die aktuelle Codex-Sitzung dieses Tool nicht hat, behandeln Sie es wie einen normalen Agenten: Gehen Sie den API-Direktverbindungsweg, verwenden Sie --backend codex als Fallback-Backend, oder lassen Sie den Benutzer die Umgebung ergänzen.

Bildausgabe-Workflow (Codex-nativer Pfad)

1. Vorbereiten der Folien-Daten

Wenn noch keine slides_plan.json vorhanden ist, schreiben Sie zuerst gemäß Schritt 2-3 des "Generierungsprozesses" unten slides_plan.md → führen Sie python3 scripts/md_to_plan.py ... aus, um es in JSON zu konvertieren.

2. Prompt mit der einheitlichen Laufzeit vorbereiten

Erstellen Sie generate_prompt() nicht manuell nach. Führen Sie --prepare-only aus, damit der API-Direktverbindungs- und der Codex-native Pfad dasselbe RuntimeProfile, Layout-Routing und den Prompt-Compiler gemeinsam nutzen:

python3 scripts/generate_ppt.py \
  --plan slides_plan.json \
  --style styles/<collection>/<id>.md \
  --prepare-only \
  --output outputs/<timestamp>

Dieser Befehl ruft keine Bild-API auf und packt keine PPTX; er generiert prompts.json, seitenweise Prompt-Texte und metadata.json. Für einen Single-Slide-Smoke-Test übergeben Sie gleichzeitig --slides 1.

3. Kompilierte Ergebnisse pro Seite lesen

Lesen Sie aus outputs/<timestamp>/prompts.json für jede Seite den prompt, reference_image, asset_reference_image und layout_id. Erstellen Sie keinen neuen Prompt basierend auf Markdown, da dies die strukturierte Layout-Bank umgehen würde.

4. image_generation-Tool zur Bildausgabe aufrufen

Rufen Sie für jede Seite Ihr image_generation-Tool auf:

  • prompt: Der bereits kompilierte vollständige Prompt dieser Seite aus prompts.json
  • output_format: png
  • Wenn reference_image / asset_reference_image aufgezeichnet wurde, übergeben Sie diese in der ursprünglichen Reihenfolge als Bildreferenzen
  • Speichern Sie die zurückgegebenen Bilder unter outputs/<timestamp>/images/slide-NN.png (NN = zweistellige Seitenzahl)

Sie können parallel laufen lassen (≤4 gleichzeitig empfohlen, um Ratenbegrenzungen zu vermeiden).

5. PPTX packen

Wenn dieses Deck keine externen echten Bildobjekte enthält, können Sie das folgende einfache Ganzseiten-PNG-Packen verwenden. Wenn eine Seite ein external_image / image_overlay / external_image_placeholder hat, das auf ein echtes Bild verweist, dürfen Sie dieses einfache Pack-Snippet nicht verwenden, da das echte Bild sonst in den Hintergrund-PNG der gesamten Seite eingebettet wird und der Benutzer es nicht in PowerPoint einzeln auswählen und ziehen kann. In diesem Fall MÜSSEN Sie die Standard-Packlogik von generate_ppt.py verwenden oder in einer vorhandenen Sitzung generate_pptx(..., metadata=metadata) aufrufen, damit das echte Bild als unabhängiges Bildobjekt auf den Hintergrund gelegt wird.

python3 -c "
from pptx import Presentation
from pptx.util import Inches
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
blank = prs.slide_layouts[6]
import os, glob
for p in sorted(glob.glob('outputs/<timestamp>/images/slide-*.png')):
    slide = prs.slides.add_slide(blank)
    slide.shapes.add_picture(p, 0, 0, width=prs.slide_width, height=prs.slide_height)
prs.save('outputs/<timestamp>/<title>.pptx')
print('done')
"

Die korrekte PPTX-Struktur für eine Seite mit externem echten Bild sollte sein:

  • Ebene 1: images/slide-XX.png als ganzseitiges Hintergrundbild (enthält das vom Modell generierte Hintergrundbild und den Text).
  • Ebene 2: Das echte Bild, auf das source verweist, als unabhängiges PPT-Bildobjekt, gemäß den Koordinaten von slide_spec auf den Hintergrund gelegt, kann in PowerPoint ausgewählt, gezogen und skaliert werden.

Vorlagenklon-Modus (Codex-nativer Pfad)

Sie selbst sind ein multimodaler Agent – lesen Sie direkt jede Vorlagenseite PNG, extrahieren Sie den visuellen Stil, schreiben Sie template_profile.json (Schema siehe TemplateProfile in template_analyzer.py, jedes Layout mit reference_image), und verwenden Sie dann --template-profile template_profile.json --template-strict --prepare-only, um die Prompts und Referenzen pro Seite zu kompilieren; wählen Sie nicht manuell eine andere Prompt-Zusammenstellungslogik.

Sie benötigen keine VISION_*-Konfiguration – Sie sind die Vision.

Unterschied zum untenstehenden "--backend codex"

Nativer Pfad (dieser Abschnitt)--backend codex
AnwendungsfallSie sind der Codex-AgentSie sind Claude Code / ein anderer Agent, der den lokalen codex CLI verwendet
AufrufmethodeDirekter Aufruf des image_generation-ToolsSpawnt codex exec --full-auto-Unterprozess
Bildebenen1 …

[Hier abgeschnitten; vollständige Übersetzung wie im Ursprungstext fortgesetzt]

Verwandte Skills