Un flux produit qu’OpenAI accepte, validé ligne par ligne

OpenAI écarte les lignes de flux mal formées sans vous le dire. Convrail synchronise votre catalogue, contrôle chaque produit contre la spécification officielle (longueurs des champs, format de prix, fichiers image, identifiants, valeurs de remplacement), exporte les lignes acceptées au format attendu par OpenAI et les livre par SFTP. Les lignes rejetées sont listées avec la raison et la correction.

Le problème du rejet silencieux

L’ingestion du flux OpenAI ne renvoie pas de rapport d’erreur par ligne. Un titre en majuscules, du HTML resté dans une description ou un prix écrit « 25,99 » : le produit est ignoré, et rien ne vous prévient. Les marchands le découvrent des semaines plus tard, quand un produit vendu chaque jour n’apparaît jamais dans ChatGPT. Convrail déplace ce contrôle de votre côté : chaque ligne est validée avant la livraison, et chaque rejet est écrit dans le journal d’exécution avec le champ, la règle et la correction.

✗ « 25,99 » comme prix : la ligne disparaît, et le produit avec
✓ intercepté avant livraison : le prix doit être « 25.99 EUR »

Les 9 champs requis, avec les limites exactes

Voici les règles que Convrail applique, issues de la spécification du flux produit OpenAI. Chacune est couverte par un test automatisé.

Champs requis du flux produit OpenAI et validation appliquée par Convrail
ChampRègleRejet typique
item_idRequis, stable, 100 caractères maxIdentifiant de variante qui change à chaque import
titleRequis, 150 caractères max, pas tout en majuscules« CASQUE SANS FIL XL »
descriptionRequise, 5 000 caractères max, texte brutBalises HTML laissées par l’éditeur de la boutique
urlRequise, URL http(s) valideChemin relatif
brandRequis, 70 caractères maxChamp fournisseur vide
image_urlRequise, lien HTTP(S) direct vers un JPEG ou PNG, HTTPS recommandéFichier .webp, URL avec identifiants
price« <montant> <ISO-4217> », supérieur à 0« 25,99 », « 25.99 », « 25,99 € »
availabilityin_stock, out_of_stock, pre_order, backorder ou unknown« disponible »
seller_nameRequis, vrai nom de vendeur, 70 caractères maxAbsent, « unknown »

Les champs conditionnels et recommandés sont contrôlés de la même façon quand ils sont présents, car un champ optionnel mal formé écarte aussi la ligne.

Champs conditionnels et recommandés validés par Convrail
ChampRègleRejet typique
is_eligible_search« true » ou « false » en minuscules ; absent vaut trueBooléen, « TRUE », « oui »
is_eligible_checkoutSi « true » : éligibilité search plus URL seller_privacy_policy et seller_tosCheckout activé sans URL de politiques
is_ads_eligible« true » ou « false » en minuscules ; requis pour la publicité« 1 », « oui »
target_countriesCodes ISO 3166-1 alpha-2 en majuscules, configurés avec votre compte OpenAI« France », « USA »
gtin8, 12, 13 ou 14 chiffres avec un chiffre de contrôle valideFaute de frappe dans le code-barres, tirets
sale_priceMême devise, strictement inférieur à pricePrix promotionnel égal au prix
group_idStable et différent de item_idgroup_id copié depuis item_id
brand, seller_nameVraies valeurs, jamais de remplacement« n/a », « null », « unknown »

Également contrôlés quand ils sont présents : mpn (70 caractères max), availability_date (ISO 8601), star_rating et popularity_score (de 0 à 5), review_count et return_deadline_in_days (entiers positifs). Sans GTIN ni MPN, identifier_exists vaut « no ». Un GTIN au chiffre de contrôle erroné est omis plutôt qu’envoyé : la ligne reste valide.

Du catalogue au fichier livré

  1. Votre catalogue reste synchronisé

    Les webhooks produit maintiennent à jour la copie de votre catalogue chez Convrail. Les changements sont regroupés sur 30 secondes : une modification en masse déclenche une reconstruction, pas cent. Une synchronisation complète est disponible à la demande.

  2. Chaque produit devient une ligne de flux

    Le HTML est retiré des descriptions, les prix sont formatés avec la devise de la boutique, les variantes sont regroupées sous group_id, et votre nom de vendeur, vos pays cibles et vos indicateurs d’éligibilité sont appliqués depuis les réglages du flux.

  3. Chaque ligne est validée

    Les lignes acceptées entrent dans le fichier. Les lignes rejetées sont journalisées avec le champ et la règle enfreinte. Le nombre de rejets est visible dans l’application avant que le fichier ne parte.

  4. Le fichier est exporté et découpé

    Formats : parquet, jsonl.gz, csv.gz ou tsv.gz. Les fichiers sont découpés à 500 000 articles ou environ 450 Mo, sous les limites de la spécification, avec des noms stables (feed-organic-000.jsonl.gz) pour que chaque livraison remplace l’instantané précédent.

  5. Livraison SFTP à l’heure que vous choisissez

    Convrail se connecte au point SFTP de votre compte OpenAI à l’heure prévue et dépose les fichiers. Les livraisons en échec sont rejouées, puis ouvrent une alerte.

Un journal pour chaque exécution

Chaque exécution enregistre le nombre d’articles lus, acceptés et rejetés, le diff avec l’exécution précédente (ajoutés, retirés, modifiés) et le statut de livraison. Les erreurs par ligne sont conservées avec l’exécution : vous pouvez retrouver quand un produit a quitté le flux, et pourquoi.

Champ du journalSignification
itemsTotal, itemsValid, itemsRejectedNombre de lignes construites, conservées et écartées
added, removed, changedDiff avec l’exécution précédente, calculé à partir d’un hash de chaque ligne
errorsUne entrée par article rejeté : item_id, champ, message
deliveryStatuspending, delivered ou failed, avec le nombre de tentatives

Si vous avez déjà un flux Google Shopping

La plupart des champs se transposent, pas tous. OpenAI attend is_eligible_search, is_eligible_checkout et target_countries que Google n’a jamais demandés, utilise seller_name à la place d’un compte marchand, et formate les booléens en chaînes minuscules. Convrail conserve aussi une projection compatible Google de votre flux : le même catalogue sert les deux canaux sans maintenir deux exports.

Questions fréquentes

Quels formats OpenAI accepte-t-il pour le flux produit ?

Parquet (recommandé pour les gros catalogues), JSON Lines compressé, CSV et TSV. Convrail exporte les quatre ; parquet et jsonl.gz sont proposés par défaut.

À quelle fréquence le flux est-il livré ?

Une fois par jour, à l’heure que vous choisissez, sous forme d’instantané complet avec des noms de fichiers stables pour que chaque livraison remplace la précédente. Les mises à jour intrajournalières par API sont sur la feuille de route.

Que devient un produit dont la ligne est invalide ?

Il est exclu de cette livraison et listé dans le journal d’exécution avec le champ et la règle enfreinte. Corrigez le produit dans votre boutique et l’exécution suivante le reprend.

Faut-il un flux distinct pour ChatGPT Ads ?

La spécification permet aux mêmes articles de servir les résultats organiques et la publicité via l’indicateur `is_ads_eligible`. Convrail le renseigne depuis vos réglages de flux ; une destination de livraison distincte pour la publicité est prévue.

Quelle taille de catalogue est possible ?

Les fichiers sont découpés à 500 000 articles ou environ 450 Mo chacun, dans les limites de la spécification. Dans notre test automatisé, un catalogue de 10 000 produits est validé, exporté et livré par SFTP en moins d’une minute.

Où sont conservés mes identifiants SFTP ?

Chiffrés au repos en AES-256-GCM, comme chaque secret que Convrail stocke. Ils ne sont déchiffrés qu’au moment de la livraison.

Mesurez le canal ChatGPT dès cette semaine

Gratuit pendant l'accès anticipé, le temps d'intégrer les premières boutiques. Laissez votre email et vous recevez le lien d'installation dès qu'une place s'ouvre.

Pas de newsletter. Un seul email avec le lien d'installation, rien d'autre.