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-ID | Ein-Satz-Positionierung | Anwendungsbereiche |
|---|---|---|
gradient-glass | Apple Vision OS / Spatial Glass | KI-Produktlaunches, Tech-Talks, Kreativ-Pitches |
clean-tech-blue | Stripe / Linear-Level Blau-Weiß | Fundraising-Pitches, Businesspläne, Unternehmensstrategie |
vector-illustration | Retro-Vektorgrafik + schwarze Konturen | Bildung & Training, Markengeschichten, Community-Austausch |
editorial-mono | Kinfolk / Monocle Editorial-Design | Markenlaunches, Kulturinterviews, Buchvorstellungen |
dark-aurora | Linear / Vercel Dark Neon | KI-Produkte, Entwickler-Tools, Tech-Talks |
risograph | Riso-Zweifarbendruck + Rastertextur | Kreativstudios, Design-Marken, Independent-Zines |
japanese-wabi | Muji / Kenya Hara Wabi-Sabi | Teezeremonie, Lifestyle, Luxusgüter, Kulturkurse |
swiss-grid | Bauhaus / Vignelli Internationaler Stil | Wissenschaftliche Vorträge, Museumsausstellungen, formelle Berichte |
hand-sketch | Sketchnote / Whiteboard-Handzeichnung | Workshops, Produkt-Brainstorming, Trainings |
y2k-chrome | Y2K Millennium Liquid Metal + Butterfly-Sticker | Streetwear, Unterhaltung, Brand-Kooperationen, Gen-Z-Marketing |
abstract-art-showcase | Schwarz-Weiß-minimalistisch, Kunstausstellungs-Feeling, große Schrift und abstrakte Bilder | Kunstkuratierung, Portfolios, Markenimage-Präsentationen |
coal-industry-business-company-profile | Industrie-Braun-Schwarz, fette Überschriften, Strukturlinien und robuste Icons | Energie, Fertigung, Schwergut-Unternehmensprofile |
college-candy-aesthetics-infographics | Bonbonfarben, Campus-Feeling, abgerundete Infografiken und leichte Dekoration | Bildung, Campus-Aktivitäten, leichte Datenkommunikation |
creative-agency | Kreativagentur-Flair, starke visuelle Collage, markanter Satzrhythmus | Agentur-Pitches, Markenkonzepte, Kreativ-Reports |
culinary-innovation | Gastronomie-Innovation, Food-Fotografie, warme Farbblöcke und Magazin-Layout | Gastronomiemarken, Lebensmittelinnovation, Menü-/Produkt-Launches |
data-science-consulting | Datenberatung Blau-Grau, modulares Layout, Diagramme und technische Informationshierarchie | Datenanalyse, KI-Beratung, Unternehmensdigitalisierung |
mindfulness-in-the-classroom-breathing-techniques | Sanfte Psychische-Gesundheit-Farbpalette, Weißraum, abgerundete Blöcke und ruhige Illustrationen | Psychische Gesundheit, Unterrichtsaktivitäten, Atemtrainingskurse |
mind-maps-workshop-professional | Professioneller Workshop-Stil, Mindmap-Knoten, klare Prozessstruktur | Trainingsworkshops, Methodik, Team-Ko-Kreation |
meeting-agenda | Meeting-Agenda-Stil, sauberes Raster, starke Informationsgruppierung und geschäftliche Überschriften | Regelmäßige Meetings, Projektsynchronisation, Management-Reports |
investment-company-business-plan | Investmentfonds-Textur, Tiefenkontrast, solides geschäftliches Layout | Investitionspläne, Fondspräsentationen, Businesspläne |
indigenous-cultures | Kulturelle Muster, Naturfarben, handwerkliche Textur und narrative Komposition | Kulturkurse, historische Themen, gemeinnützige Bildung |
health-disparities-and-social-determinants-of-health-doctor-of-philosophy-phd-in-health-behavior-and-health-education | Akademischer Stil öffentliche Gesundheit, rationales Raster, sanfte medizinische Farben und thesis-ähnliche Hierarchie | Medizinische Thesenverteidigungen, Public-Health-Berichte, Bildungsforschung |
geometric-duotone-thesis | Zweifarbige Geometrie, Thesenverteidigungs-Feeling, diagonale Formen und starke Überschriften | Akademische Verteidigungen, Forschungsberichte, kapitelbasierte Inhalte |
geometric-clinical-case | Geometrischer Medizinstil, kühle Farben, Fallkarten und klare Spalten | Klinische Fälle, medizinisches Training, Diagnose-Reports |
geometric-business | Geschäftliche geometrische Blöcke, solides Blau-Grün, einfache Diagrammsprache | Businesspläne, Team-Reports, Produktstrategie |
formal-lavender-portfolio | Formelles Lavendel-Feeling, Portfolio-Weißraum, elegante dünne Linien und sanftes Layout | Persönliche Portfolios, Design-Lebensläufe, professionelle Präsentationen |
flowery | Blumendekoration, sanfte Farbblöcke, romantisches aber geordnetes Layout | Lifestyle, Frauenmarken, Event-Präsentationen |
first-impressions | Thema erster Eindruck, starke Cover-Visuals, dramatische Beziehung zwischen Personen/Überschriften | Interview-Training, Personal Branding, Kommunikationskurse |
final-year-project-thesis-defense | Abschlussarbeit-Verteidigung, akademisches Raster, klare Kapitel und Datenseiten | Abschlussverteidigungen, Projektabschlüsse, Forschungspräsentationen |
fashion-business-consulting-toolkit-aesthetic | Modeberatung-Flair, hochwertige Collage, Magazin-Layout und neutrale Farben | Modebusiness, Markenberatung, Trendberichte |
economic-impact-of-coronavirus | Wirtschaftliche Auswirkungen-Berichtsstil, ernste Infografiken, kühle Farben und Datenerzählung | Makroökonomie, Politikanalyse, Risikoberichte |
eco-green-business-plan | Salbeigrün, Naturmaterial-Fotografie, umweltfreundliches Business und minimalistischer Splitscreen | Nachhaltiges 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ändigeslides_plan.jsonbereitgestellt 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 vonexamples/<id>/slides_plan.mdals 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:
| Benutzerszenario | Rezeptverzeichnis | Empfohlener Stil |
|---|---|---|
| Produkteinführung, Feature-Launch, KI-Produktvorstellung | examples/product-launch/ | gradient-glass |
| Investoren-Pitch, Businessplan, Investoren-Report | examples/investor-pitch/ | clean-tech-blue |
| Projektwochenbericht, Monatsbericht, Meeting-Synchronisation | examples/weekly-report/ | meeting-agenda |
| Kursmaterial, Training, Wissensvermittlung | examples/courseware/ | vector-illustration |
| Thesenverteidigung, Abschlussarbeit-Verteidigung, Projektabschluss | examples/thesis-defense/ | final-year-project-thesis-defense |
| Buchvorstellung, Kulturinterview, Meinungsaustausch | examples/book-sharing/ | editorial-mono |
Verwendung:
- Prüfen Sie, ob die Benutzeranforderung ein Rezept trifft.
- Lesen Sie das entsprechende
recipe.mdundslides_plan.md. - Schreiben Sie basierend auf dem Thema des Benutzers eine neue
slides_plan.mdum, ohne die Rezeptquelle zu ändern. - Bestätigen Sie mit dem Benutzer die Seitenzahl, jede Seitenüberschrift und den Schlüsselinhalt.
- Nach Bestätigung führen Sie
md_to_plan.pyaus, 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-profileoder Template-Visionsanalyse; Layouts könnenreference_imagetragen, 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 --checkaus. Es überprüft, ob das Backend tatsächlich ausführbar ist, nicht nur, ob der Pfad existiert. - macOS: Zuerst auf
/Applications/Keynote.appund AppleScript-Ausführbarkeit prüfen; andernfalls auflibreoffice --version || soffice --versionprüfen. - Windows: Zuerst prüfen, ob PowerPoint COM startbar ist; andernfalls auf
libreoffice --version/soffice --versionprüfen. - Linux / Kompatibilitätsebene: Auf
libreoffice --version || soffice --versionprüfen, nicht nurwhichverwenden.
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:
| Plattform | Installationsbefehl |
|---|---|
| Windows | winget install LibreOffice.LibreOffice |
| macOS | brew 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:
wingetunter Windows ist in Win10/11 integriert und zeigt ein UAC-Bestätigungsfenster an, das die Benutzerbestätigung erfordert; unter macOS erfordertbreweine zuvor installierte Homebrew-Installation.
render_template.py wählt das Rendering-Backend basierend auf Priorität automatisch aus:
- Windows: PowerPoint COM (bevorzugt, wenn Office lokal installiert ist, direkte PNG-Ausgabe, überspringt PDF-Schritt) > LibreOffice
- macOS: Keynote AppleScript (bevorzugt, wenn Keynote lokal vorhanden ist, direkte PNG-Ausgabe) > LibreOffice
- Linux / Kompatibilitätsebene: Über
--version(festgestellt durch tatsächliche Ausführung) verfügbaren LibreOffice / soffice-Befehl verwenden - 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
| Material | Pfad | Verwendung |
|---|---|---|
| Vorlagen-PNGs pro Seite | <cwd>/template_renders/<stem>/page-NN.png | Einmaliges Rendern durch lokales Backend, langfristig wiederverwendbar |
| Vorlagen-Stilanalyse | <cwd>/template_cache/<sha256>.json oder manuelles template_profile.json | Vom 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 direkttemplate_renders/<stem>/page-*.png, generierttemplate_profile.jsongemäß derTemplateProfile-Struktur vontemplate_analyzer.pyund übergibt es mit--template-profile template_profile.jsonangenerate_ppt.py. Wenn--template-strictverwendet wird, muss jedes Layoutreference_imageenthalten (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, damittemplate_analyzer.pyeinen 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.jsonoder 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.envsetzen oder die.envim Installationsverzeichnis des Skills verwenden; dies ist nur ein Fallback, nicht die.envdes 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, expliziteGPT_IMAGE2_PPT_ENVund den.env-Fallback im Skill-Installationsverzeichnis. Skripte lesen nicht rekursiv nach oben die.envim Projektverzeichnis des Aufrufers, um die versehentliche Übernahme von Geschäftsprojektschlüsseln zu vermeiden.python3 scripts/render_template.py --checkfü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 ausprompts.jsonoutput_format:png- Wenn
reference_image/asset_reference_imageaufgezeichnet 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.pngals ganzseitiges Hintergrundbild (enthält das vom Modell generierte Hintergrundbild und den Text). - Ebene 2: Das echte Bild, auf das
sourceverweist, als unabhängiges PPT-Bildobjekt, gemäß den Koordinaten vonslide_specauf 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 | |
|---|---|---|
| Anwendungsfall | Sie sind der Codex-Agent | Sie sind Claude Code / ein anderer Agent, der den lokalen codex CLI verwendet |
| Aufrufmethode | Direkter Aufruf des image_generation-Tools | Spawnt codex exec --full-auto-Unterprozess |
| Bildebenen | 1 … |
[Hier abgeschnitten; vollständige Übersetzung wie im Ursprungstext fortgesetzt]