Aller au contenu principal

Préparer la soumission

Préparer votre app pour le ChatGPT Store

Votre application fonctionne en local, les tests passent, les fonctionnalités sont complètes. Il est temps de préparer la soumission au ChatGPT Store. Cette étape demande de la rigueur : une soumission incomplète sera rejetée et retardera votre lancement.

Les assets requis

Le Store exige un ensemble d’éléments visuels et textuels pour présenter votre app.

Icône de l’application

  • Format : PNG ou SVG
  • Taille : 512 x 512 pixels minimum
  • Style : fond transparent ou couleur unie, pas de texte minuscule
  • Conseil : testez votre icône en 32x32 — elle doit rester lisible en miniature

Captures d’écran

Fournissez 3 à 5 captures d’écran montrant votre app en action :

  • Au moins une capture montrant un widget dans la conversation
  • Au moins une capture montrant le résultat d’une action
  • Si vous avez du commerce, une capture du flux d’achat

Dimensions : 1280 x 800 pixels, format PNG.

Textes de présentation

{
  "listing": {
    "shortDescription": "Max 80 caractères — résumé en une phrase",
    "longDescription": "Max 2000 caractères — détails complets de l'app",
    "category": "productivity",
    "tags": ["weather", "forecast", "travel"],
    "supportEmail": "[email protected]",
    "privacyPolicyUrl": "https://monapp.com/privacy",
    "termsUrl": "https://monapp.com/terms"
  }
}

Le fichier de soumission

Le SDK génère un package de soumission :

# Vérifier que tout est en ordre
npx chatgpt-app validate

# Construire le package de soumission
npx chatgpt-app build --production

# Le package est généré dans dist/

Ce que validate vérifie

1

Manifest complet

Tous les champs obligatoires de chatgpt-app.json sont renseignés.

2

Actions valides

Chaque action a une description, des paramètres typés et un handler fonctionnel.

3

Widgets rendus

Les widgets produisent un arbre de composants valide sans erreur.

4

Sécurité

Pas de secrets en clair, HTTPS obligatoire, signatures configurées.

5

Assets complets

Icône, captures, descriptions, politique de confidentialité présentes.

Hébergement de votre backend

Votre app a besoin d’un serveur accessible publiquement pour les actions. Options recommandées :

  • Vercel / Netlify Functions — déploiement automatique, scaling inclus
  • Railway / Render — serveurs Node.js persistants
  • AWS Lambda / Google Cloud Functions — pour les architectures serverless
  • VPS classique — si vous préférez gérer votre infrastructure

Configuration de production

// src/index.ts — mode production
import { ChatGPTApp } from "@openai/apps-sdk";

const app = new ChatGPTApp({
  slug: process.env.OPENAI_APP_SLUG!,
  mode: "production",
  serverUrl: "https://api.monapp.com",
  webhookSecret: process.env.WEBHOOK_SECRET!,
});

Politique de confidentialité

Le Store exige une politique de confidentialité accessible publiquement. Elle doit couvrir :

  • Les données collectées et pourquoi
  • Comment les données sont stockées et protégées
  • Les droits des utilisateurs (accès, suppression, export)
  • La conformité RGPD si vous ciblez l’Europe
  • Les services tiers utilisés (Stripe, analytics, etc.)

Checklist de pré-soumission

Avant de cliquer sur « Soumettre », vérifiez chaque point :

  • Le manifest chatgpt-app.json est complet
  • L’icône 512x512 est prête
  • 3 à 5 captures d’écran sont préparées
  • Les descriptions courte et longue sont rédigées
  • La politique de confidentialité est en ligne
  • Les conditions d’utilisation sont en ligne
  • Le backend est déployé et accessible
  • L’authentification fonctionne en production
  • npx chatgpt-app validate passe sans erreur
  • npx chatgpt-app build --production génère le package

Points clés à retenir

  • La soumission nécessite des assets visuels (icône, captures), des textes et des URLs légales
  • La commande validate vérifie la conformité de votre package
  • Votre backend doit être hébergé et accessible publiquement avant la soumission
  • La politique de confidentialité est obligatoire — incluez la conformité RGPD
  • Une soumission incomplète est automatiquement rejetée