Un site e-commerce de 22 000 pages qui voyait 8 000 requêtes par jour depuis les bots OpenAI en janvier 2026 en absorbe aujourd'hui plus de 25 000. La facture d'infrastructure n'a pas changé, mais le ratio crawl utile / crawl parasite s'est effondré. Depuis le lancement de GPT-5, les données de logs serveur confirment ce que beaucoup suspectaient : l'activité de crawl d'OpenAI a approximativement triplé, et la hiérarchie entre ses bots s'est inversée.
OAI-SearchBot dépasse GPTBot : ce que les logs révèlent
Jusqu'à fin 2025, GPTBot était le crawler dominant d'OpenAI. Son rôle : alimenter les modèles de langage en données d'entraînement. OAI-SearchBot, lancé plus discrètement, servait la fonctionnalité de recherche intégrée à ChatGPT. La dynamique s'est inversée.
Les données agrégées reportées par Search Engine Journal montrent qu'OAI-SearchBot génère désormais plus d'événements de log que GPTBot sur la majorité des sites analysés. Cette inversion coïncide avec le déploiement de GPT-5 et l'expansion massive de la fonctionnalité de recherche web dans ChatGPT.
Pourquoi cette inversion compte
GPTBot crawle pour entraîner des modèles. Son activité est sporadique, concentrée sur du contenu textuel long, et relativement prévisible. OAI-SearchBot crawle pour répondre à des requêtes utilisateur en temps réel. Son profil est radicalement différent :
- Fréquence : requêtes continues, réparties sur 24h, avec des pics corrélés aux heures d'activité des utilisateurs ChatGPT (14h-22h UTC).
- Profondeur : OAI-SearchBot suit les liens internes plus agressivement — il ne se contente pas d'une page, il explore le cluster thématique.
- Variété des URLs : là où GPTBot revisitait souvent les mêmes pages de référence, OAI-SearchBot frappe des URLs longue traîne, des pages de catégories, des fiches produit profondes.
Cette distinction est critique pour la gestion du crawl budget. Un site qui bloquait GPTBot pensant se protéger d'OpenAI laissait potentiellement OAI-SearchBot consommer des ressources sans contrôle.
Comment identifier les deux bots dans vos logs
La première étape est de segmenter proprement vos logs d'accès. Voici une commande pour extraire et compter les hits par user-agent OpenAI sur un fichier access log Nginx standard :
# Compter les requêtes par bot OpenAI sur les 7 derniers jours
zcat /var/log/nginx/access.log.*.gz | \
cat - /var/log/nginx/access.log | \
awk -F'"' '{print $6}' | \
grep -iE '(GPTBot|OAI-SearchBot|ChatGPT-User)' | \
sort | uniq -c | sort -rn
# Résultat typique post-GPT-5 :
# 18432 Mozilla/5.0 AppleWebKit/537.36 (compatible; OAI-SearchBot/1.0; +https://openai.com/searchbot)
# 6891 Mozilla/5.0 (compatible; GPTBot/1.1; +https://openai.com/gptbot)
# 2104 Mozilla/5.0 AppleWebKit/537.36 (compatible; ChatGPT-User/1.0; +https://openai.com/bot)
Trois user-agents distincts, trois comportements, trois stratégies de gestion. ChatGPT-User est le troisième larron — il intervient quand un utilisateur ChatGPT demande explicitement de visiter une URL. Son volume est plus faible mais ses requêtes sont les plus qualitatives en termes de potentiel de citation.
Pour une analyse plus fine sur le long terme, notre article sur l'analyse de logs pour les crawlers IA détaille les métriques à suivre et les patterns à détecter.
L'impact concret sur l'infrastructure : un scénario chiffré
Prenons un cas réaliste. MaisonDeco.fr, un e-commerce de décoration intérieure : 18 000 pages produit, 1 200 pages de catégories, 400 articles de blog. Hébergé sur un cluster de 3 serveurs applicatifs derrière un load balancer, avec un SSR Next.js.
Avant GPT-5 (janvier 2026)
- GPTBot : ~3 200 requêtes/jour, concentrées entre 2h et 6h UTC
- OAI-SearchBot : ~1 800 requêtes/jour, réparties sur la journée
- ChatGPT-User : ~200 requêtes/jour
- Total OpenAI : ~5 200 requêtes/jour
- Impact CPU : négligeable (< 2% de la capacité SSR)
Après GPT-5 (avril 2026)
- GPTBot : ~4 100 requêtes/jour (+28%)
- OAI-SearchBot : ~12 500 requêtes/jour (+594%)
- ChatGPT-User : ~800 requêtes/jour (+300%)
- Total OpenAI : ~17 400 requêtes/jour (x3.3)
- Impact CPU : pics à 15-18% de la capacité SSR entre 15h et 21h UTC
Le problème n'est pas le volume brut — 17 400 requêtes/jour reste gérable. Le problème est la concurrence avec Googlebot pendant les heures de pointe. Quand OAI-SearchBot et Googlebot crawlent simultanément des pages produit qui nécessitent un rendu SSR (hydratation React, requêtes API catalogue, génération de structured data), le temps de réponse moyen passe de 180ms à 420ms. Et Googlebot, lui, interprète cette lenteur comme un signal négatif.
La cascading failure qu'on ne voit pas venir
Le scénario catastrophe : OAI-SearchBot qui martèle des pages de filtres à facettes (URLs avec paramètres ?couleur=bleu&taille=L&tri=prix). Ces pages sont les plus coûteuses en SSR — chaque combinaison déclenche une requête base de données distincte. Sur MaisonDeco.fr, ces URLs représentaient 67% des requêtes OAI-SearchBot mais seulement 3% des pages réellement utiles pour la visibilité IA.
C'est exactement le type de régression silencieuse — une dégradation progressive du temps de réponse serveur, invisible dans Google Search Console mais dévastatrice pour le crawl budget Googlebot — qu'un monitoring continu comme Seogard permet de détecter avant qu'elle n'impacte les rankings.
Configurer robots.txt et la gestion du crawl rate pour les bots OpenAI
La documentation officielle d'OpenAI reconnaît trois user-agents dans le robots.txt : GPTBot, OAI-SearchBot, et ChatGPT-User. Chacun respecte les directives Disallow, mais aucun ne supporte Crawl-delay (à l'image de Googlebot).
Stratégie différenciée par bot
Bloquer uniformément tous les bots OpenAI est une approche binaire qui fait perdre de la visibilité dans ChatGPT Search. La stratégie optimale est une approche granulaire :
# robots.txt — Stratégie différenciée OpenAI
# GPTBot : entraînement modèle — autoriser le contenu éditorial,
# bloquer les pages transactionnelles et les pages à faible valeur
User-agent: GPTBot
Allow: /blog/
Allow: /guides/
Disallow: /produit/
Disallow: /categorie/
Disallow: /compte/
Disallow: /panier/
Disallow: /recherche/
Disallow: /*?*tri=
Disallow: /*?*page=
Disallow: /*?*filtre=
# OAI-SearchBot : recherche temps réel — autoriser les pages
# à forte valeur de citation, bloquer les filtres à facettes
User-agent: OAI-SearchBot
Allow: /produit/
Allow: /categorie/
Allow: /blog/
Disallow: /compte/
Disallow: /panier/
Disallow: /*?*tri=
Disallow: /*?*page=2
Disallow: /*?*page=3
Disallow: /*?*page=4
Disallow: /*?*page=5
Disallow: /*?*filtre=
# ChatGPT-User : navigation directe utilisateur — accès large
User-agent: ChatGPT-User
Allow: /
Disallow: /compte/
Disallow: /panier/
Disallow: /api/
Le piège des paramètres d'URL
Notez le traitement des URLs paginées pour OAI-SearchBot : la page 1 d'une catégorie est autorisée (c'est la page canonique, celle qui a le plus de chances d'être citée), mais les pages 2+ sont bloquées. C'est un compromis pragmatique. Chaque page de pagination coûte un rendu SSR et n'apporte quasi aucune valeur en tant que source de citation IA.
Google a récemment élargi sa documentation sur les règles robots.txt non supportées. Le même enjeu s'applique aux bots OpenAI : certaines syntaxes de pattern matching que vous pensez fonctionnelles sont silencieusement ignorées. Testez systématiquement vos règles avec le robots.txt parser d'OpenAI.
Rate limiting au niveau serveur : la vraie ligne de défense
Le robots.txt est une directive, pas un mécanisme d'enforcement. Un bot bien élevé le respecte. Mais le volume de requêtes d'un bot qui respecte vos Allow peut quand même saturer votre infrastructure. Le rate limiting côté serveur est la seule garantie.
Configuration Nginx avec limitation par user-agent
# /etc/nginx/conf.d/ai-bot-rate-limit.conf
# Définir une zone de rate limiting spécifique aux bots IA
# Clé = adresse IP du bot, zone = 10MB, rate = 2 requêtes/seconde
map $http_user_agent $is_ai_bot {
default 0;
"~*GPTBot" 1;
"~*OAI-SearchBot" 1;
"~*ChatGPT-User" 1;
"~*anthropic-ai" 1;
"~*ClaudeBot" 1;
"~*PerplexityBot" 1;
"~*Bytespider" 1;
}
# Zone de rate limiting : 2 req/s avec burst de 10
limit_req_zone $binary_remote_addr zone=ai_bots:10m rate=2r/s;
server {
listen 443 ssl http2;
server_name www.maisondeco.fr;
# Appliquer le rate limit uniquement aux bots IA
location / {
if ($is_ai_bot) {
set $limit_ai "1";
}
limit_req zone=ai_bots burst=10 nodelay;
# Le nodelay permet de servir les requêtes du burst
# immédiatement sans les mettre en file d'attente
proxy_pass http://backend_ssr;
}
# Pages statiques (images, CSS, JS) : pas de rate limit
location ~* \.(jpg|jpeg|png|webp|gif|css|js|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
# Les bots IA ne crawlent généralement pas ces assets,
# mais autant ne pas gaspiller de rate limit dessus
}
}
Pourquoi 2 requêtes/seconde ?
Ce chiffre n'est pas arbitraire. Pour un site e-commerce SSR avec un temps de rendu moyen de 200ms, 2 req/s signifie que le bot consomme en permanence ~400ms de temps CPU par seconde dédiées à son crawl. Sur un serveur à 8 cœurs, cela représente ~5% d'un cœur — un impact maîtrisé.
Montez à 5 req/s et vous êtes à ~12.5% d'un cœur, ce qui reste acceptable en heures creuses mais peut créer de la contention pendant les pics de trafic utilisateur (soldes, campagnes PPC).
Le trade-off : un rate limit trop agressif (0.5 req/s) ralentit la capacité d'OAI-SearchBot à indexer vos pages récentes. Si vous publiez 50 nouvelles fiches produit par jour et que le bot ne peut en crawler que 1 800 par heure (0.5 × 3600), il lui faudra bien plus d'une journée pour les découvrir — en supposant qu'il ne crawle que des pages nouvelles, ce qui n'est jamais le cas.
Monitorer l'activité de crawl IA : au-delà du simple comptage
Compter les requêtes par user-agent est la base. Mais le triplement de l'activité OpenAI rend nécessaire un monitoring plus sophistiqué, centré sur trois métriques avancées.
1. Le ratio crawl utile / crawl gaspillé
Toutes les pages crawlées ne génèrent pas de la visibilité IA. Une fiche produit en rupture de stock, une page de filtre vide, une URL avec des paramètres de tracking — c'est du crawl gaspillé.
Pour calculer ce ratio, croisez vos données de logs avec votre sitemap et votre base de données produit :
# Extraire les URLs crawlées par OAI-SearchBot
zcat /var/log/nginx/access.log.*.gz | \
grep "OAI-SearchBot" | \
awk '{print $7}' | \
sort -u > /tmp/oai_crawled_urls.txt
# Comparer avec les URLs du sitemap (pages "utiles")
comm -23 \
<(sort /tmp/oai_crawled_urls.txt) \
<(xmllint --xpath '//*[local-name()="loc"]/text()' sitemap.xml | \
sed 's|https://www.maisondeco.fr||g' | sort) \
> /tmp/oai_wasted_crawl.txt
# Calculer le ratio
TOTAL=$(wc -l < /tmp/oai_crawled_urls.txt)
WASTED=$(wc -l < /tmp/oai_wasted_crawl.txt)
echo "Ratio gaspillé : $(echo "scale=1; $WASTED * 100 / $TOTAL" | bc)%"
# Résultat typique : 35-55% de crawl gaspillé sur un e-commerce
# non optimisé pour les bots IA
Un ratio de crawl gaspillé supérieur à 40% est un signal d'alarme. Chaque requête gaspillée est une requête qui aurait pu crawler une page à forte valeur de citation.
2. Le temps de réponse par segment de bot
Le temps de réponse que vous servez aux bots IA influence directement la fréquence à laquelle ils reviennent — et potentiellement la fraîcheur des données qu'ils utilisent pour générer des réponses. Segmentez vos métriques :
# Temps de réponse moyen par bot OpenAI (dernier jour)
awk '
/OAI-SearchBot/ { oai_total += $NF; oai_count++ }
/GPTBot/ { gpt_total += $NF; gpt_count++ }
/ChatGPT-User/ { cu_total += $NF; cu_count++ }
END {
if (oai_count > 0) printf "OAI-SearchBot : %.0fms (n=%d)\n", oai_total/oai_count*1000, oai_count
if (gpt_count > 0) printf "GPTBot : %.0fms (n=%d)\n", gpt_total/gpt_count*1000, gpt_count
if (cu_count > 0) printf "ChatGPT-User : %.0fms (n=%d)\n", cu_total/cu_count*1000, cu_count
}
' /var/log/nginx/access.log
Si OAI-SearchBot voit des temps de réponse systématiquement supérieurs à 500ms, il va mécaniquement réduire son crawl rate — ce qui est exactement l'inverse de ce que vous voulez si vous cherchez la visibilité dans ChatGPT Search.
3. Le taux de pages rendues avec contenu complet vs. shell vide
C'est le risque le plus insidieux pour les sites avec du rendu JavaScript côté client. Si votre SSR tombe en fallback (React shell vide, contenu chargé en client-side), les bots IA récupèrent une page HTML quasi vide. Ils ne reviennent pas la crawler comme le fait Googlebot avec son second pass de rendering.
Pour les architectures JavaScript complexes, notre analyse sur les fallbacks sans JavaScript en 2026 explore les stratégies de résilience SSR face aux crawlers qui n'exécutent pas JavaScript.
Le triplement du crawl IA dans le contexte stratégique plus large
Ce triplement n'est pas un événement isolé. Il s'inscrit dans une tendance documentée par plusieurs études récentes. L'analyse portant sur 68 millions de visites de crawlers IA montre que la visibilité dans les réponses IA est corrélée à l'accessibilité et à la fraîcheur du contenu pour ces crawlers.
La course au contenu frais
L'inversion de dominance entre OAI-SearchBot et GPTBot révèle la priorité stratégique d'OpenAI : la recherche temps réel plutôt que l'entraînement batch. GPT-5 intègre vraisemblablement une architecture de retrieval-augmented generation (RAG) plus agressive, où le modèle interroge le web en temps réel pour enrichir ses réponses.
Les implications pour les éditeurs de contenu :
- La fraîcheur compte plus que jamais. Un article publié il y a 2 heures sur un sujet tendance a plus de chances d'être crawlé et cité qu'un article de fond publié il y a 6 mois. Ce n'est pas un choix éditorial d'OpenAI — c'est un artefact de l'architecture RAG qui privilégie le contenu récemment crawlé.
- Le structured data devient un signal de parsing. OAI-SearchBot n'est pas documenté comme utilisant les données structurées, mais les patterns de crawl montrent qu'il passe plus de temps sur les pages avec du JSON-LD bien formé. L'hypothèse : le structured data facilite l'extraction d'informations factuelles, ce qui rend la page plus "utile" pour le RAG.
- Les sites rapides sont crawlés plus profondément. C'est un pattern observé sur Googlebot depuis des années et qui se confirme avec les bots IA : à robots.txt égal, un site qui répond en 150ms voit 2 à 3 fois plus de pages crawlées par session de bot qu'un site à 600ms.
Impact sur la stratégie GEO (Generative Engine Optimization)
La question que chaque Lead SEO doit se poser : bloquer ou accueillir ce crawl triplé ? La réponse dépend de votre modèle économique.
Si votre revenus dépendent du trafic organique direct (publicité display, e-commerce), chaque citation dans ChatGPT qui satisfait l'utilisateur sans clic est une perte sèche. Mais les données montrent que les CTR des AI Overviews de Google ne provoquent pas un effondrement total des clics — le trafic se redistribue plutôt qu'il ne disparaît.
Si votre modèle repose sur l'autorité de marque (SaaS B2B, conseil, services), la citation dans les réponses IA est un canal d'acquisition de notoriété qu'il serait contre-productif de couper. L'article sur l'architecture machine-first pose bien le cadre : votre site doit désormais servir deux publics — les humains et les agents.
Vérification de l'identité des bots : ne faites pas confiance au user-agent seul
Le triplement du crawl OpenAI a un effet secondaire prévisible : la multiplication des scrapers qui usurpent les user-agents OpenAI. N'importe quel script peut se déclarer OAI-SearchBot.
Valider les IPs sources d'OpenAI
OpenAI publie les plages IP de ses crawlers via un fichier JSON documenté dans sa documentation officielle. Voici comment implémenter une vérification au niveau Nginx :
# /etc/nginx/conf.d/openai-ip-verify.conf
# Géoliste des IPs OpenAI (à mettre à jour périodiquement)
# Source : https://openai.com/searchbot.json et gptbot.json
geo $is_real_openai {
default 0;
20.15.240.0/20 1;
20.171.206.0/24 1;
# ... ajouter toutes les plages du fichier JSON officiel
# Script d'update automatique recommandé (cron hebdomadaire)
}
# Bloquer les faux bots OpenAI
map "$is_ai_bot:$is_real_openai" $fake_ai_bot {
"1:0" 1; # Se déclare bot IA mais IP non reconnue
default 0;
}
server {
# ...
if ($fake_ai_bot) {
return 403;
}
}
Automatisez la mise à jour des plages IP avec un cron :
#!/bin/bash
# /etc/cron.weekly/update-openai-ips.sh
curl -s https://openai.com/gptbot.json | \
jq -r '.prefixes[].ipv4Prefix // empty' | \
awk '{print " " $1 " 1;"}' > /etc/nginx/openai_ips.conf
nginx -t && systemctl reload nginx
Sans cette vérification, vos métriques de crawl IA sont polluées par du bruit. Et votre rate limiting s'applique à des bots légitimes tandis que les scrapers passent entre les mailles du filet avec d'autres user-agents.
Préparer l'infrastructure pour la prochaine vague
Si le crawl a triplé avec GPT-5, il est raisonnable d'anticiper une nouvelle multiplication avec les prochaines itérations. La tendance structurelle est claire : les LLM évoluent vers plus de recherche temps réel, ce qui signifie plus de crawl.
Actions prioritaires par ordre d'impact
1. Implémentez un cache HTTP dédié aux bots IA. Un reverse proxy Varnish ou une couche de cache Nginx qui sert des pages pré-rendues aux bots IA élimine le coût SSR. Le contenu peut être rafraîchi toutes les 15-30 minutes sans pénaliser la fraîcheur perçue.
2. Segmentez vos dashboards. Ajoutez dans votre stack d'observabilité (Grafana, Datadog, ou même un simple script ELK) des panels dédiés au crawl IA. Temps de réponse par bot, pages les plus crawlées, ratio 200/301/404/429 par user-agent.
3. Auditez votre robots.txt trimestriellement. Le paysage des bots IA évolue vite. De nouveaux user-agents apparaissent (Perplexity, You.com, Cohere). Vérifiez que votre politique de crawl couvre tous les agents pertinents.
4. Monitorez les régressions en continu. Un changement de déploiement qui casse le SSR, un robots.txt écrasé par un merge, une règle Nginx qui bloque involontairement OAI-SearchBot — ces incidents silencieux sont les plus coûteux. Un outil de monitoring comme Seogard détecte automatiquement ce type de régression dès qu'elle survient, avant qu'elle n'impacte votre visibilité IA.
Le triplement du crawl OpenAI n'est pas une anomalie — c'est le nouveau baseline. Les sites qui traitent ce crawl comme un problème d'infrastructure à résoudre plutôt que comme une menace à bloquer sont ceux qui captureront la visibilité dans la recherche IA de demain. Monitorez, segmentez, optimisez — dans cet ordre.