Communitygithub.com

gpt-image2-ppt — Génération de présentations PPT avec gpt-image…

Générez des diapositives PPT visuellement percutantes via l'API gpt-image-2 d'OpenAI. Utilisez n'importe quel style disponible dans `styles/<collection>/STYLE_ID.md` ou imitez un modèle .pptx fourni par l'utilisateur. Produit des PNG haute résolution et un fichier .pptx 16:9.

Qu'est-ce que gpt-image2-ppt — Génération de présentations PPT avec gpt-image… ?

Cette compétence permet de générer automatiquement des présentations PowerPoint de haute qualité à l'aide du modèle `gpt-image-2` d'OpenAI. Elle prend en entrée un plan de diapositives au format Markdown ou JSON, ainsi qu'un style visuel choisi parmi une vaste bibliothèque de styles pré-définis (classés par collections : `initial/`, `featured/`, `xiamulingzi/`). Pour chaque diapositive, elle construit un prompt détaillé intégrant les caractéristiques du style, le contenu à afficher et une mise en page spécifique, puis génère une image PNG via l'API. Enfin, elle assemble toutes les images dans un fichier .pptx au format 16:9. La compétence supporte également le clonage de modèles : l'utilisateur peut fournir un fichier .pptx existant, qui sera analysé (rendu en pages PNG, analyse visuelle) pour extraire sa charte graphique et reproduire le même rendu sur de nouvelles diapositives. L'outil propose des « recettes » de démarrage rapide pour les cas d'usage courants (lancement produit, levée de fonds, cours, soutenance, etc.). Elle fonctionne en mode API directe ou via les outils natifs de l'agent (Codex, Claude Code), et gère les environnements Windows, macOS et Linux.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

gpt-image2-ppt — Générer des présentations PPT avec gpt-image-2

Prenez un plan Markdown (ou un slides_plan.json) + un style visuel, envoyez-le directement à l'API officielle OpenAI Images (gpt-image-2), générez chaque diapositive sous forme d'image, puis empaquetez le tout en un fichier .pptx 16:9.

Styles disponibles

Identifiant du styleDescription en une phraseCas d'usage typique
gradient-glassApple Vision OS / Spatial GlassLancement de produit IA, partage technique, proposition créative
clean-tech-blueBleu et blanc de type Stripe / LinearLevée de fonds, business plan, stratégie d'entreprise
vector-illustrationIllustration vectorielle vintage + contours noirsFormation, storytelling de marque, partage communautaire
editorial-monoDesign éditorial style Kinfolk / MonocleLancement de marque, interview culturelle, partage de lecture
dark-auroraNéons sombres style Linear / VercelProduit IA, outils développeur, partage technique
risographImpression bichrome Risograph + trame de pointsStudio créatif, marque culturelle, fanzine indépendant
japanese-wabiWabi-sabi style Muji / Kenya HaraCérémonie du thé, style de vie, luxe, conférence culturelle
swiss-gridGrille Bauhaus / VignelliRapport académique, exposition muséale, présentation sérieuse
hand-sketchSketchnote / tableau blanc dessiné à la mainAtelier, brainstorming produit, formation
y2k-chromeMétal liquide Y2K + autocollants papillonsMarque streetwear, divertissement, co-branding, marketing génération Z
abstract-art-showcaseMinimalisme noir et blanc, ambiance galerie d'art, grands caractères et images abstraitesCommissariat d'exposition, portfolio, identité de marque
coal-industry-business-company-profileMarron industriel, titres en gras, lignes structurelles et icônes robustesÉnergie, industrie lourde, présentation d'entreprise
college-candy-aesthetics-infographicsCouleurs candy, ambiance campus, infographies arrondies et décorations légèresÉducation, événement scolaire, vulgarisation de données légères
creative-agencyAmbiance agence créative, collage visuel fort, rythme typographique marquéProposition d'agence, projet de marque, rapport créatif
culinary-innovationInnovation culinaire, photographie d'ingrédients, blocs de couleurs chaudes et mise en page magazineMarque culinaire, innovation alimentaire, lancement de menu/nouveauté
data-science-consultingGris-bleu conseil en données, mise en page modulaire, graphiques et hiérarchie techniqueAnalyse de données, conseil IA, transformation numérique
mindfulness-in-the-classroom-breathing-techniquesPalette de couleurs douces pour la santé mentale, espaces vides, blocs arrondis et illustrations calmesSanté mentale, activité en classe, exercice de respiration
mind-maps-workshop-professionalStyle atelier professionnel, nœuds de mind map, structure de processus claireAtelier de formation, méthodologie, co-création d'équipe
meeting-agendaOrdre du jour de réunion, grille propre, regroupement d'informations fort et titres professionnelsRéunion, synchronisation de projet, rapport à la direction
investment-company-business-planTexture société d'investissement, contraste foncé/clair, mise en page professionnelle stablePlan d'investissement, présentation de fonds, business plan
indigenous-culturesMotifs culturels, couleurs naturelles, texture artisanale et composition narrativeCours de culture, sujet historique, éducation solidaire
health-disparities-and-social-determinants-of-health-doctor-of-philosophy-phd-in-health-behavior-and-health-educationStyle académique santé publique, grille rationnelle, couleurs médicales douces et hiérarchie de thèseSoutenance de thèse médicale, rapport de santé publique, recherche éducative
geometric-duotone-thesisGéométrie bichrome, ambiance soutenance de thèse, formes en diagonale et titres fortsSoutenance académique, rapport de recherche, contenu par chapitre
geometric-clinical-caseStyle géométrique médical, palette de couleurs calmes, fiches de cas cliniques et colonnes clairesCas clinique, formation médicale, rapport de diagnostic
geometric-businessBlocs géométriques professionnels, tons bleus/verts stables, langage graphique simpleBusiness plan, rapport d'équipe, stratégie produit
formal-lavender-portfolioLavande formel, espacement de portfolio, lignes fines élégantes et mise en page doucePortfolio personnel, CV de designer, présentation professionnelle
floweryDécorations florales, blocs de couleurs douces, mise en page romantique mais ordonnéeStyle de vie, marque féminine, présentation d'événement
first-impressionsThème première impression, visuel de couverture fort, relation dramatique personnage/titreFormation à l'entretien, marque personnelle, cours de communication
final-year-project-thesis-defenseSoutenance de projet de fin d'études, grille académique, chapitres clairs et pages de donnéesSoutenance de diplôme, conclusion de projet, présentation de recherche
fashion-business-consulting-toolkit-aestheticAmbiance conseil en mode, collage haut de gamme, mise en page magazine et couleurs neutresMode business, conseil en marque, rapport de tendance
economic-impact-of-coronavirusStyle rapport d'impact économique, infographie sérieuse, couleurs calmes et narration de donnéesMacroéconomie, analyse politique, rapport de risque
eco-green-business-planVert sauge, photographie de matériaux naturels, éco-business et écran partagé minimalisteCommerce durable, marque éco-responsable, style de vie sain

Tous les styles disponibles sont regroupés dans styles/ et organisés par collection : initial/ pour les 10 premiers styles, featured/ pour 22 styles sélectionnés, et xiamulingzi/ pour 233 styles fournis par la designer @夏目玲子. L'index des collections est dans styles/README.md ; les couvertures des styles sélectionnés sont dans docs/distilled-styles.md.

Principe de choix du style : Sélectionnez d'abord le style le plus adapté dans styles/ en fonction du contenu. Pour les présentations techniques, privilégiez dark-aurora / gradient-glass / data-science-consulting. Pour les présentations business, regardez clean-tech-blue / editorial-mono / eco-green-business-plan / investment-company-business-plan. Pour les thèmes culturels et lifestyle, utilisez japanese-wabi / vector-illustration / culinary-innovation / flowery. Pour les présentations académiques, choisissez swiss-grid / geometric-duotone-thesis / final-year-project-thesis-defense. Pour les ateliers et formations, préférez hand-sketch / mind-maps-workshop-professional / mindfulness-in-the-classroom-breathing-techniques.

Recettes par scénario (modèles de démarrage optionnels)

examples/ n'est pas une nouvelle compétence, ni une entrée obligatoire lors de l'exécution. C'est une bibliothèque de modèles de démarrage par scénario, qui aide l'agent à rédiger plus rapidement une première version de slides_plan.md lorsque l'utilisateur ne fournit qu'un besoin vague.

Règles de déclenchement :

  • Si l'utilisateur a déjà fourni un plan complet / un slides_plan.md complet / un slides_plan.json complet, n'utilisez pas de recette, suivez directement le processus de génération avec le contenu de l'utilisateur.
  • Si l'utilisateur dit simplement "Fais un PPT de lancement produit / Levée de fonds / Rapport hebdomadaire / Cours / Soutenance de thèse / Partage de lecture" ou d'autres scénarios courants, sans donner de structure de page claire, commencez par vérifier si examples/ contient une recette correspondante.
  • La recette ne sert que de référence de structure : lisez examples/<id>/recipe.md pour comprendre le scénario, le style recommandé et les points d'attention, puis référez-vous à la structure de page de examples/<id>/slides_plan.md pour l'adapter au thème et au contenu de l'utilisateur.
  • Ne prenez pas les produits, entreprises, projets ou données fictifs des exemples comme le produit final de l'utilisateur ; remplacez-les impérativement par les informations fournies par l'utilisateur, ou indiquez-les explicitement comme des espaces réservés et attendez la confirmation de l'utilisateur.
  • Si l'utilisateur fournit des images réelles, des logos, des captures d'écran, des graphiques de recherche ou des UI de produit, traitez-les selon la règle "image réelle externe à inclure" ; la recette ne gère que la structure du contenu, elle ne remplace pas le processus de fidélité des éléments.

Recettes intégrées actuelles :

Scénario utilisateurDossier de recetteStyle recommandé
Lancement produit, nouvelle fonctionnalité, présentation d'un produit IAexamples/product-launch/gradient-glass
Levée de fonds, business plan, présentation aux investisseursexamples/investor-pitch/clean-tech-blue
Rapport hebdomadaire, mensuel, synchronisation de réunionexamples/weekly-report/meeting-agenda
Cours, formation, vulgarisation scientifiqueexamples/courseware/vector-illustration
Soutenance de thèse, soutenance de projet de fin d'études, présentation de conclusionexamples/thesis-defense/final-year-project-thesis-defense
Partage de lecture, interview culturelle, partage d'opinionexamples/book-sharing/editorial-mono

Utilisation :

  1. Déterminez si la demande de l'utilisateur correspond à une recette.
  2. Lisez le recipe.md et le slides_plan.md correspondants.
  3. Rédigez un nouveau fichier slides_plan.md basé sur le thème de l'utilisateur, sans modifier directement le fichier source de la recette.
  4. Confirmez avec l'utilisateur le nombre de pages, le titre et le contenu clé de chaque page.
  5. Une fois l'utilisateur d'accord, exécutez md_to_plan.py pour convertir en JSON, puis poursuivez le processus de clonage du style ou du modèle spécifié ci-dessous.

Fichier sidecar de banque de dispositions pour les styles intégrés (format d'exécution unique)

Les styles intégrés utilisent une structure à deux fichiers : "MD pour les humains, JSON pour les machines" :

styles/<collection>/<style-id>.md            # Description du style, design tokens, prompt de base
styles/<collection>/<style-id>.layouts.json  # Obligatoire ; banque de dispositions par page pour l'attribution automatique des mises en page

generate_ppt.py utilise le .layouts.json homonyme comme RuntimeProfile sans image de référence : via assign_layouts(), il attribue différentes dispositions, intègre visual_signature / content_capacity / best_for / avoid_for / variation_tags dans le prompt, et écrit les informations réduites de la disposition choisie dans metadata.json.

Actuellement, tous les fichiers styles/**/*.md doivent être accompagnés d'un fichier .layouts.json du même nom dans le même répertoire. Les anciens styles qui n'ont que le Markdown et pas de sidecar généreront une erreur avant la génération d'image, sans utiliser silencieusement l'ancien prompt. Pour les nouveaux styles distillés ou ajoutés ultérieurement, vous devez produire simultanément le sidecar JSON ; ne compressez pas une description textuelle de "système de mise en page" multi-page dans un seul MD.

Noyau d'exécution RuntimeProfile unifié

Le clonage strict de modèles et le sidecar de style structuré sont d'abord compilés dans le même RuntimeProfile, puis passent par assign_layouts(), l'attachement du profil de page, la compilation du prompt et l'enregistrement dans metadata. Les adaptateurs d'entrée ne conservent que les différences nécessaires :

  • template-clone : provient de --template-profile ou de l'analyse visuelle du modèle ; la disposition peut contenir reference_image ; seul --template-strict transmet effectivement l'image de référence pour la génération.
  • distilled-style : provient de <style>.md + <style>.layouts.json ; utilise le routage de contenu et les dispositions multiples, ne dépend pas de l'image du modèle original.

Le RuntimeProfile enregistre de manière unifiée source_kind, prompt_strategy=layout-fields (fixe), layouts et capabilities (routing / evidence / reference / portability). La priorité est fixe : profil de modèle valide > RuntimeProfile de style ; si l'analyse du modèle n'a pas de dispositions, il faut vraiment revenir au style structuré, pas seulement afficher un message. L'exécution ne contient plus de branche legacy-freeform ou de disposition synthétique.

Mode de clonage de modèle

Donnez directement un modèle .pptx à la compétence, et toutes les pages suivantes imiteront ce modèle.

# Une ligne : rendu automatique + analyse du modèle + génération d'images. Nécessite un backend de rendu PPTX disponible localement.
python3 scripts/generate_ppt.py \
  --plan slides_plan.json \
  --template-pptx ./company-template.pptx \
  --template-strict

--template-strict signifie que chaque page envoie la page correspondante du modèle comme image de référence à gpt-image-2, pour la meilleure fidélité.

Rendu du modèle : pas besoin d'utiliser PowerPoint sur la machine locale

La compétence contient render_template.py, qui convertit automatiquement le .pptx en PNG par page, et les enregistre dans <cwd>/template_renders/<stem>/page-NN.png.

Vérification préalable par l'agent (obligatoire pour le clonage de modèle)

Avant d'exécuter toute commande --template-pptx, vous devez d'abord vérifier si un backend de rendu PPTX est disponible localement.

Méthode de vérification :

  • Recommandé : Exécutez python3 scripts/render_template.py --check dans le répertoire de la compétence. Il vérifie si le backend est réellement exécutable, et pas seulement si le chemin existe.
  • macOS : Vérifiez d'abord la présence de /Applications/Keynote.app et si AppleScript est exécutable ; sinon, vérifiez libreoffice --version || soffice --version.
  • Windows : Vérifiez d'abord si le composant COM PowerPoint est disponible ; sinon, vérifiez libreoffice --version / soffice --version.
  • Linux / environnements de compatibilité : Vérifiez libreoffice --version || soffice --version ; n'utilisez pas seulement which.

Remarque : Les environnements HarmonyOS / Termux / conteneurs / architectures spéciales peuvent ressembler à Linux, mais on ne peut pas supposer que le binaire LibreOffice pour Linux aarch64 fonctionne ; basez-vous toujours sur le résultat réel de l'exécution de render_template.py --check ou soffice --version. Ne considérez pas aspose-slides comme solution de repli par défaut ; il n'a pas de wheel installable dans de nombreux environnements Python mobiles/spéciaux.

Si aucun backend n'est disponible, informez d'abord l'utilisateur que le rendu du modèle nécessite l'installation de LibreOffice exécutable, ou demandez-lui d'exporter manuellement chaque page du modèle au format page-01.png, page-02.png sur son ordinateur de bureau, puis de les transmettre via --template-images. Commandes d'installation optionnelles :

PlateformeCommande d'installation
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

Après l'installation, vérifiez à nouveau qu'un backend de rendu est disponible avant de poursuivre.

Remarque : Sur Windows, winget est intégré à Win10/11 et affichera une boîte de confirmation UAC (l'utilisateur doit cliquer sur "Oui"). Sur macOS, brew nécessite d'avoir Homebrew installé au préalable.

Le backend de rendu de render_template.py est choisi automatiquement par ordre de priorité :

  1. Windows : PowerPoint COM (prioritaire si Office est installé localement, sortie directe en PNG, contourne l'étape PDF) > LibreOffice
  2. macOS : Keynote AppleScript (prioritaire si Keynote est installé, sortie directe en PNG) > LibreOffice
  3. Linux / environnements de compatibilité : Commande LibreOffice / soffice détectée comme exécutable via --version
  4. PDF -> PNG via pymupdf (déjà dans requirements) ; si absent, utilise pdf2image + poppler

Si vous omettez --template-images lors de l'exécution de generate_ppt.py --template-pptx ..., le rendu sera appelé automatiquement. Vous pouvez aussi l'exécuter manuellement d'abord :

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

Double cache pour l'imitation de modèle

ÉlémentCheminUsage
PNG de chaque page du modèle<cwd>/template_renders/<stem>/page-NN.pngRendu unique par le backend local, réutilisable
Analyse du style du modèle<cwd>/template_cache/<sha256>.json ou template_profile.json écrit manuellementGénéré par l'agent multimodal lui-même ; les agents texte pur ont besoin d'une vision externe
Résultat de la génération<cwd>/outputs/<timestamp>/Nouveau répertoire à chaque exécution

Les trois se trouvent dans le répertoire de travail de l'appelant, évoluant naturellement avec le projet. Il est recommandé d'ajouter template_renders/, template_cache/, outputs/ au fichier .gitignore du projet.

Analyse visuelle du modèle (l'agent décide lui-même s'il a besoin de configurer VISION_*) :

  • Si l'agent de code actuel est un modèle multimodal (par ex. Claude multimodal de Claude Code, GPT multimodal de Codex) : aucune configuration supplémentaire de VISION_* n'est nécessaire. L'agent lit directement template_renders/<stem>/page-*.png, génère template_profile.json selon la structure TemplateProfile de template_analyzer.py, puis le transmet à generate_ppt.py avec --template-profile template_profile.json. Si vous utilisez aussi --template-strict, chaque disposition doit contenir reference_image (chemin absolu ou accessible du PNG du modèle).
  • Si l'agent de code actuel est un modèle texte pur (par ex. connecté uniquement au modèle texte DeepSeek) : il ne peut pas voir les captures d'écran du modèle ; vous devez configurer VISION_BASE_URL / VISION_API_KEY / VISION_MODEL_NAME pour que template_analyzer.py appelle un point d'accès multimodal compatible OpenAI indépendant pour l'analyse du modèle.

L'analyse visuelle et la génération d'images par gpt-image-2 sont toujours découplées : changer de fournisseur de vision n'affecte pas le pipeline de génération d'images.

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
# ou
bash install_as_skill.sh --target codex    # Codex
# Les clés nécessaires pour la connexion directe à l'API sont injectées de préférence via la configuration de l'agent / les variables d'environnement système

Injection de variables d'environnement (connexion directe à l'API)

N'écrivez pas les clés de cette compétence dans le fichier .env à la racine du projet métier de l'appelant, et ne lisez pas le fichier .env général du projet utilisateur pour générer des images. Les variables d'environnement doivent être injectées selon les méthodes standard du framework de l'agent :

  • Général / CI / Serveur : utilisez les variables d'environnement système, environment / env_file de Docker Compose, Kubernetes Secret, CI Secret, etc.
  • Claude Code : utilisez le fichier utilisateur ~/.claude/settings.json ou le fichier projet .claude/settings.local.json pour injecter les variables d'environnement ; les variables d'environnement de la ligne de commande ont la priorité la plus élevée.
  • OpenClaw / Agent personnalisé : utilisez apiKey / env reference dans la configuration du framework pour référencer les variables d'environnement système, en évitant d'écrire la clé en clair dans la configuration du projet.
  • Fallback local standalone CLI : vous pouvez définir GPT_IMAGE2_PPT_ENV=/path/to/private.env, ou utiliser le fichier .env dans le répertoire d'installation de la compétence ; ce n'est qu'une solution de repli, pas le fichier .env du projet métier.

La connexion directe à l'API nécessite ces variables :

OPENAI_BASE_URL=https://api.openai.com    # ou tout relais compatible OpenAI
OPENAI_API_KEY=sk-...
GPT_IMAGE_MODEL_NAME=gpt-image-2
GPT_IMAGE_QUALITY=high                     # low / medium / high / auto

# Optionnel : backend d'analyse visuelle pour le mode de clonage de modèle.
# Les agents multimodaux / Codex natif peuvent lire les images eux-mêmes pour générer --template-profile, ils n'ont pas besoin des variables ci-dessous.
# Seuls les agents texte pur (comme le modèle texte DeepSeek) ont besoin de ces variables supplémentaires.
# Ne fournissez pas de point d'accès par défaut intégré, remplissez un service de confiance, ou ne remplissez rien.
# VISION_BASE_URL=https://your-openai-compatible-relay.example.com/v1
# VISION_API_KEY=sk-...
# VISION_MODEL_NAME=gemini-3.1-pro-preview   # ou gpt-4o / claude-3.5-sonnet, etc., tout SKU multimodal

La priorité de configuration est fixe : variables d'environnement du processus courant > variables gpt-image2-ppt_* injectées par la plateforme > GPT_IMAGE2_PPT_ENV / fichier .env dans le répertoire de la compétence ; les variables JULING_GPT_IMAGE2_* ne servent que de fallback de compatibilité lorsqu'il n'y a pas de variable OPENAI_* correspondante, elles ne remplacent jamais une configuration explicite.

Avertissement de sécurité : Le script lit uniquement les variables d'environnement du processus courant, les variables gpt-image2-ppt_* injectées par la plateforme, le fichier GPT_IMAGE2_PPT_ENV explicite, et le fichier .env du répertoire d'installation de la compétence en fallback. Le script ne remonte pas pour lire les fichiers .env dans les répertoires projet de l'appelant, afin d'éviter de capturer accidentellement les clés du projet métier. python3 scripts/render_template.py --check exécute une conversion minimale réelle pour valider le backend de rendu.

Si vous êtes l'agent Codex (génération d'image native via image_generation — recommandé)

Si vous êtes vous-même Codex (l'agent qui exécute cette compétence est Codex CLI / Codex TUI) et que l'environnement courant fournit l'outil image_generation ainsi qu'une session authentifiée ChatGPT, alors n'utilisez pas generate_ppt.py ou --backend codex pour la génération d'images. Utilisez directement l'outil natif pour générer les images, et ne réutilisez que la logique de conversion MD / d'empaquetage PPTX de ce dépôt.

Limite clé : Les scripts Python s'exécutent dans un processus enfant et n'ont pas accès à l'outil natif image_generation de la session agent courante. Ce que generate_ppt.py --backend codex peut faire, c'est uniquement lancer un sous-processus codex exec, pour qu'un autre Codex génère les images ; ce n'est pas "réutiliser l'outil image_generation du Codex actuel". Par conséquent, lorsque l'agent actuel peut déjà générer des images nativement, l'action de génération doit être effectuée par l'agent lui-même, pas par generate_ppt.py.

Comment déterminer

Vous avez accès à l'outil image_generation et vous pouvez générer des images sans configurer manuellement OPENAI_API_KEY. Si ces deux conditions sont remplies, suivez le chemin natif. Si la session Codex actuelle n'a pas cet outil, traitez-la comme un agent normal : utilisez la connexion directe à l'API, le backend de repli --backend codex, ou demandez à l'utilisateur de compléter l'environnement.

Processus de génération d'images (chemin natif Codex)

1. Préparez les données des diapositives

Si vous n'avez pas encore de slides_plan.json, suivez d'abord les étapes 2-3 de la section "Processus de génération" ci-dessous : rédigez slides_plan.md → python3 scripts/md_to_plan.py ... pour convertir en JSON.

2. Préparez le prompt avec le runtime unifié

Ne reproduisez pas manuellement generate_prompt(). Exécutez --prepare-only pour que la connexion directe à l'API et le chemin natif Codex partagent le même RuntimeProfile, le même routage de dispositions et le même compilateur de prompt :

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

Cette commande n'appelle pas l'API d'image, ni n'empaquette le PPTX ; elle génère prompts.json, le texte du prompt par page et metadata.json. Pour un test sur une seule page, ajoutez --slides 1.

3. Lisez le résultat compilé de chaque page

Depuis outputs/<timestamp>/prompts.json, lisez le prompt, reference_image, asset_reference_image et layout_id de chaque page. Ne reconstruisez pas un prompt à partir du Markdown, sinon vous contournerez la banque de dispositions structurée.

4. Appelez l'outil image_generation pour générer les images

Pour chaque page, appelez votre outil image_generation :

  • prompt : le prompt complet déjà compilé pour cette page dans prompts.json
  • output_format : png
  • Si reference_image / asset_reference_image sont enregistrés, transmettez-les dans l'ordre comme images de référence
  • Enregistrez l'image retournée dans outputs/<timestamp>/images/slide-NN.png (NN est le numéro de page à deux chiffres)

Vous pouvez le faire en parallèle (4 maximum recommandé pour éviter le rate limiting).

5. Empaquetez le PPTX

Si le deck ne contient pas d'images réelles externes, vous pouvez utiliser le simple collage PNG plein écran ci-dessous. Si une page contient external_image / image_overlay / external_image_placeholder pointant vers une image réelle, n'utilisez pas ce collage simplifié, sinon l'image réelle sera fusionnée dans le PNG de fond de page, et l'utilisateur ne pourra pas la sélectionner ni la déplacer individuellement dans PowerPoint. Dans ce cas, utilisez impérativement la logique d'empaquetage standard de generate_ppt.py, ou appelez generate_pptx(..., metadata=metadata) dans une session existante, pour que l'image réelle reste un objet picture indépendant superposé sur le fond.

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')
"

La structure PPTX correcte pour une page avec image externe réelle doit être :

  • Calque 1 : images/slide-XX.png comme image de fond de page entière (contenant le fond et le texte générés par le modèle).
  • Calque 2 : l'image réelle pointée par source comme objet picture PPT indépendant, placé sur le fond selon les coordonnées slide_spec, sélectionnable, déplaçable et redimensionnable dans PowerPoint.

Mode de clonage de modèle (chemin natif Codex)

Vous êtes vous-même un agent multimodal — utilisez directement Read pour lire les PNG de chaque page du modèle, extrayez le style visuel, écrivez template_profile.json (schéma dans TemplateProfile de template_analyzer.py, chaque disposition doit contenir reference_image), puis utilisez --template-profile template_profile.json --template-strict --prepare-only pour compiler le prompt et la référence de chaque page ; ne choisissez pas manuellement une autre logique de construction de prompt.

Vous n'avez pas besoin de configurer VISION_* — vous êtes la vision.

Différence avec la section « --backend codex » ci-dessous

Chemin natif (cette section)--backend codex
Cas d'usageVous êtes l'agent CodexVous êtes Claude Code / un autre agent, utilisant le CLI codex local
Méthode d'appelAppelez directement l'outil image_generationLancez un sous-processus codex exec --full-auto
Nombre de couches de génération1

...

[truncaté pour la traduction]

Skills associés