[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fc7xD25NXv2Sv43IkjEznWG0mJWYaMq7PQ4HAiHmeejM":3,"$f3qHPoo6I2dJCd5MeU8Hke3Rfr440zsEUWDWackAv6jg":25},{"_id":4,"slug":5,"__v":6,"author":7,"body":8,"canonical":9,"category":10,"createdAt":11,"date":12,"description":13,"htmlContent":14,"image":15,"imageAlt":15,"readingTime":16,"tags":17,"title":23,"updatedAt":24},"6a09d89daa6b273b0c034915","google-agent-the-web-s-new-visitor-just-got-an-identity-via-sejournal-slobodanmanic",0,"Equipe Seogard","Un nouveau user-agent vient d'apparaître dans vos logs serveur. Il ne s'appelle pas Googlebot. Il ne s'appelle pas Google-Extended. Il s'appelle `Google-Agent`. Et contrairement à tout ce que Google a envoyé sur vos sites depuis 1998, celui-ci n'indexe rien — il agit au nom d'un utilisateur réel, en temps réel.\n\n## Ce que Google-Agent change fondamentalement\n\nGooglebot crawle pour indexer. Google-Extended crawle pour entraîner des modèles IA. `Google-Agent` fait autre chose : il exécute des tâches pour le compte d'un utilisateur. Réserver un vol, comparer des prix, remplir un formulaire, ajouter un produit au panier. C'est la matérialisation technique de ce que Google appelle les \"AI agents\" depuis les annonces autour de Project Mariner et Gemini.\n\nLa distinction est structurelle, pas cosmétique. Un crawler indexe pour enrichir un moteur de recherche. Un agent IA consomme votre site comme un utilisateur le ferait — sauf qu'il le fait via des appels HTTP programmatiques, avec une vitesse et une précision qu'aucun humain n'atteint.\n\nLe problème : vos règles `robots.txt` actuelles, vos rate limiters, vos WAF — tout est calibré pour deux catégories de visiteurs : les humains et les crawlers. `Google-Agent` n'entre proprement dans aucune des deux. Et si vous le bloquez comme un bot, vous bloquez potentiellement des conversions réelles initiées par des utilisateurs via l'interface Gemini.\n\n### Un user-agent distinct, des intentions distinctes\n\nGoogle a fait le choix d'un token user-agent dédié : `Google-Agent`. Ce n'est pas un sous-token de Googlebot. C'est une identité séparée, ce qui signifie que vous pouvez le traiter indépendamment dans `robots.txt`, dans vos configurations serveur, et dans vos analytics.\n\nVoici ce que cela implique en pratique dans votre `robots.txt` :\n\n```text\n# Crawler d'indexation classique\nUser-agent: Googlebot\nAllow: /\n\n# Crawl pour l'entraînement IA (AI Overviews, Gemini training)\nUser-agent: Google-Extended\nDisallow: /\n\n# Agent IA agissant pour un utilisateur\nUser-agent: Google-Agent\nAllow: /products/\nAllow: /api/booking/\nDisallow: /admin/\nDisallow: /internal/\n```\n\nLa granularité est essentielle. Bloquer `Google-Agent` sur `/products/` d'un e-commerce de 12 000 SKU, c'est empêcher un utilisateur Gemini de comparer vos prix ou d'ajouter un article à son panier via l'agent. C'est l'équivalent de bloquer JavaScript pour un utilisateur mobile en 2016 — techniquement possible, commercialement suicidaire.\n\n### La différence avec Google-Extended\n\n`Google-Extended` a été introduit en septembre 2023 pour permettre aux éditeurs de bloquer l'utilisation de leur contenu dans l'entraînement des modèles Gemini et les AI Overviews, tout en restant indexés par Googlebot. C'est un mécanisme de contrôle sur l'usage des données.\n\n`Google-Agent` ne touche pas à l'entraînement. Il ne stocke pas votre contenu pour le réutiliser. Il le consomme en temps réel pour accomplir une tâche spécifique demandée par un utilisateur. La [documentation Google sur les robots](https://developers.google.com/search/docs/crawling-indexing/overview-google-crawlers) listera progressivement ces distinctions, mais la logique est déjà claire : trois tokens, trois finalités, trois stratégies de gestion.\n\n## Détecter Google-Agent dans vos logs\n\nAvant de décider quoi que ce soit, vous devez savoir si `Google-Agent` visite déjà votre site, à quelle fréquence, et quelles pages il cible.\n\n### Analyse des logs serveur\n\nSur un serveur Nginx, vos access logs contiennent déjà l'information. Voici comment extraire les requêtes `Google-Agent` :\n\n```bash\n# Extraire toutes les requêtes Google-Agent des 7 derniers jours\ngrep \"Google-Agent\" /var/log/nginx/access.log \\\n  | awk '{print $7}' \\\n  | sort \\\n  | uniq -c \\\n  | sort -rn \\\n  | head -50\n```\n\nCette commande vous donne les 50 URLs les plus visitées par `Google-Agent`, triées par fréquence. Sur un site e-commerce, vous verrez probablement une concentration sur les pages produits, les pages catégorie, et potentiellement les endpoints d'API si vous exposez une API publique.\n\nPour aller plus loin, croisez avec le code de réponse HTTP :\n\n```bash\n# Requêtes Google-Agent avec code de réponse\ngrep \"Google-Agent\" /var/log/nginx/access.log \\\n  | awk '{print $9, $7}' \\\n  | sort \\\n  | uniq -c \\\n  | sort -rn\n```\n\nSi vous voyez des 403 ou des 429 en masse, votre WAF ou votre rate limiter traite probablement `Google-Agent` comme un bot hostile. C'est le premier problème à corriger.\n\n### Séparation dans Google Analytics / côté serveur\n\n`Google-Agent` ne va probablement pas exécuter vos tags GA4 côté client. C'est un agent programmatique, pas un navigateur avec un runtime JavaScript complet. Pour le tracking, vous devez passer par l'analyse de logs serveur ou par un outil de log analysis comme Screaming Frog Log Analyser, en créant un filtre custom sur le user-agent.\n\nDans Screaming Frog Log Analyser, importez vos logs et créez un segment :\n\n1. **Configuration > User-Agent Segmentation**\n2. Ajoutez un segment custom : `Google-Agent`\n3. Pattern de matching : `Google-Agent` (string exacte ou regex `Google-Agent\\/`)\n\nCela vous permettra de visualiser les pages crawlées par l'agent, les codes de réponse reçus, la fréquence de visite, et de comparer avec le comportement de Googlebot classique.\n\n## Adapter votre infrastructure : rate limiting, WAF, et CDN\n\nLe problème technique le plus immédiat avec `Google-Agent` est le rate limiting. La plupart des configurations WAF et CDN traitent tous les bots de la même manière — soit vous êtes Googlebot (whitelist), soit vous êtes un bot inconnu (throttle ou block).\n\n### Configuration Nginx : rate limiting différencié\n\nVoici une configuration Nginx qui applique des limites de débit différentes selon le type de visiteur Google :\n\n```nginx\n# Définition des zones de rate limiting\nlimit_req_zone $binary_remote_addr zone=human:10m rate=30r/s;\nlimit_req_zone $binary_remote_addr zone=crawler:10m rate=5r/s;\nlimit_req_zone $binary_remote_addr zone=aiagent:10m rate=15r/s;\n\n# Map pour identifier le type de visiteur\nmap $http_user_agent $visitor_type {\n    default                \"human\";\n    \"~*Googlebot\"          \"crawler\";\n    \"~*Google-Extended\"    \"crawler\";\n    \"~*Google-Agent\"       \"aiagent\";\n    \"~*bingbot\"            \"crawler\";\n}\n\nserver {\n    listen 443 ssl;\n    server_name shop.example-retailer.fr;\n\n    location /products/ {\n        # Rate limit conditionnel\n        if ($visitor_type = \"crawler\") {\n            limit_req zone=crawler burst=10 nodelay;\n        }\n        if ($visitor_type = \"aiagent\") {\n            limit_req zone=aiagent burst=20 nodelay;\n        }\n        if ($visitor_type = \"human\") {\n            limit_req zone=human burst=50 nodelay;\n        }\n\n        proxy_pass http://backend;\n    }\n\n    # Bloquer Google-Agent sur les zones sensibles\n    location /checkout/ {\n        if ($http_user_agent ~* \"Google-Agent\") {\n            return 403;\n        }\n        proxy_pass http://backend;\n    }\n}\n```\n\nLe rate limit pour `Google-Agent` est volontairement plus élevé que pour un crawler classique (15 r/s vs 5 r/s) parce que l'agent agit en temps réel pour un utilisateur. Un délai de réponse de 3 secondes est acceptable pour un crawl d'indexation — c'est inacceptable pour un utilisateur qui attend que son agent IA finalise une comparaison de prix.\n\nEn revanche, bloquer `Google-Agent` sur `/checkout/` est une décision raisonnable : vous ne voulez probablement pas qu'un agent IA soumette des commandes sans validation humaine explicite à cette étape.\n\n### Cloudflare et CDN : attention aux règles par défaut\n\nSi vous utilisez Cloudflare, vérifiez votre configuration Bot Management. Par défaut, les bots non vérifiés peuvent être challengés avec un CAPTCHA ou bloqués. `Google-Agent` est nouveau — il est possible que Cloudflare ne le classe pas encore comme \"verified bot\" dans ses listes.\n\nCréez une règle custom dans Cloudflare Firewall Rules :\n\n- **Expression** : `(http.user_agent contains \"Google-Agent\")`\n- **Action** : Allow (ou Log si vous voulez observer avant d'autoriser)\n\nEt vérifiez que vos règles \"Bot Fight Mode\" ou \"Super Bot Fight Mode\" n'interceptent pas `Google-Agent` en amont.\n\n## Scénario concret : un comparateur de vols avec 28 000 pages\n\nPrenons un cas réaliste. FlightCompare.fr est un comparateur de vols avec 28 000 pages de résultats dynamiques (routes, dates, compagnies), 3 200 pages de contenu éditorial (guides destinations), et un moteur de réservation intégré.\n\n### Situation avant Google-Agent\n\n- **Googlebot** crawle environ 4 500 pages/jour, principalement les routes populaires et le contenu éditorial. Crawl budget géré via `robots.txt` et `\u003Clink rel=\"canonical\">` pour éviter les duplicatas de paramètres.\n- **Google-Extended** bloqué sur le contenu éditorial (les guides destinations sont monétisés via affiliate, l'éditeur ne veut pas alimenter les AI Overviews qui court-circuitent le clic).\n- **Trafic organique** : 180 000 sessions/mois, 40% sur les pages de routes.\n\n### Ce qui change avec Google-Agent\n\nUn utilisateur dit à Gemini : \"Trouve-moi le vol le moins cher Paris-Lisbonne du 15 au 22 juin, réserve-le si c'est sous 150€.\"\n\n`Google-Agent` doit :\n1. Accéder à la page de résultats Paris-Lisbonne sur FlightCompare.fr\n2. Parser les prix affichés (ou interagir avec l'API si elle est exposée)\n3. Comparer avec d'autres sources\n4. Potentiellement initier une réservation\n\nSi FlightCompare.fr bloque `Google-Agent` ou le rate-limit à 2 requêtes/seconde comme un crawler classique, l'agent se tourne vers un concurrent. L'utilisateur ne saura jamais que FlightCompare.fr avait le meilleur prix.\n\n### Impact estimé\n\nEn supposant que 5% du trafic de recherche passe par des agents IA d'ici fin 2026 (une estimation conservatrice vu la vitesse d'adoption de Gemini), FlightCompare.fr pourrait perdre 9 000 sessions/mois et les conversions associées s'il traite `Google-Agent` comme un bot à bloquer.\n\nLa stratégie optimale :\n\n```text\n# robots.txt de FlightCompare.fr\nUser-agent: Googlebot\nAllow: /\nDisallow: /api/\nDisallow: /admin/\n\nUser-agent: Google-Extended\nDisallow: /guides/\nAllow: /routes/\n\nUser-agent: Google-Agent\nAllow: /routes/\nAllow: /api/search/\nAllow: /api/availability/\nDisallow: /api/booking/confirm\nDisallow: /admin/\nDisallow: /guides/\n```\n\nL'agent a accès aux résultats de recherche et aux données de disponibilité, mais pas à l'endpoint de confirmation de réservation (qui nécessite une validation humaine). Les guides éditoriaux sont bloqués parce qu'un agent n'a pas besoin de lire un article \"Top 10 restaurants à Lisbonne\" pour réserver un vol.\n\n## Les implications pour le SSR et le rendering JavaScript\n\n`Google-Agent` pose une question que Googlebot avait déjà soulevée, mais avec une urgence nouvelle : votre site doit-il renvoyer du HTML exploitable côté serveur ?\n\n### Le problème du client-side rendering pour les agents\n\nUn agent IA n'est pas un navigateur. Il ne va pas attendre 3 secondes que votre SPA React hydrate, que vos appels API se résolvent, et que le DOM se stabilise. Si votre page produit renvoie un shell HTML vide avec un `\u003Cdiv id=\"root\">\u003C/div>` et que tout le contenu dépend de JavaScript côté client, `Google-Agent` verra... rien d'exploitable.\n\nC'est le même problème que le JavaScript SEO classique, mais amplifié. Googlebot a un pipeline de rendering dédié (le Web Rendering Service) qui exécute JavaScript. Rien n'indique que `Google-Agent` bénéficie du même pipeline — au contraire, il doit fonctionner en temps réel, ce qui exclut probablement un rendering headless coûteux en ressources pour chaque requête.\n\nSi vous avez encore des pages critiques rendues uniquement côté client, c'est le moment de migrer vers du SSR ou du SSG. Pour les stacks Next.js, la configuration est directe :\n\n```typescript\n// pages/products/[slug].tsx — Next.js avec getServerSideProps\nimport { GetServerSideProps } from 'next';\nimport { ProductPage } from '@/components/ProductPage';\nimport { fetchProduct, fetchAvailability } from '@/lib/api';\n\ninterface ProductProps {\n  product: Product;\n  availability: AvailabilityData;\n}\n\nexport const getServerSideProps: GetServerSideProps\u003CProductProps> = async (context) => {\n  const { slug } = context.params!;\n  const userAgent = context.req.headers['user-agent'] || '';\n\n  // Log Google-Agent visits pour analytics\n  if (userAgent.includes('Google-Agent')) {\n    console.log(`[Google-Agent] Product page accessed: /products/${slug}`);\n    // Optionnel : envoyer un event à votre système de monitoring\n  }\n\n  const [product, availability] = await Promise.all([\n    fetchProduct(slug as string),\n    fetchAvailability(slug as string),\n  ]);\n\n  if (!product) {\n    return { notFound: true };\n  }\n\n  return {\n    props: {\n      product,\n      availability,\n    },\n  };\n};\n\nexport default function Product({ product, availability }: ProductProps) {\n  return \u003CProductPage product={product} availability={availability} />;\n}\n```\n\nLe point clé : le contenu structuré (prix, disponibilité, caractéristiques produit) est dans le HTML initial renvoyé par le serveur. `Google-Agent` peut le parser immédiatement sans exécuter JavaScript.\n\nLes leçons du [JavaScript SEO sur les sites e-commerce](/blog/5-javascript-seo-lessons-from-top-ecommerce-sites) s'appliquent ici avec encore plus de force : chaque milliseconde de rendering JS est une milliseconde où un agent IA pourrait abandonner et passer au concurrent.\n\n## Structured data et machine-readability : un avantage concurrentiel\n\nSi `Google-Agent` doit comprendre qu'un produit coûte 89,90€, qu'il est en stock, et qu'il peut être livré en 48h, vous avez deux options : espérer qu'il parse correctement votre HTML arbitraire, ou lui fournir des données structurées explicites.\n\n### Schema.org comme interface machine\n\nLe JSON-LD `Product` n'est plus seulement un outil pour obtenir des rich snippets dans les SERP. C'est potentiellement l'interface primaire par laquelle `Google-Agent` comprend votre offre :\n\n```html\n\u003Cscript type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Product\",\n  \"name\": \"Casque Audio Pro X500\",\n  \"sku\": \"PRO-X500-BLK\",\n  \"brand\": {\n    \"@type\": \"Brand\",\n    \"name\": \"AudioTech\"\n  },\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"url\": \"https://shop.audiotech-store.fr/products/casque-pro-x500\",\n    \"priceCurrency\": \"EUR\",\n    \"price\": \"89.90\",\n    \"availability\": \"https://schema.org/InStock\",\n    \"deliveryLeadTime\": {\n      \"@type\": \"QuantitativeValue\",\n      \"minValue\": 1,\n      \"maxValue\": 2,\n      \"unitCode\": \"DAY\"\n    },\n    \"shippingDetails\": {\n      \"@type\": \"OfferShippingDetails\",\n      \"shippingRate\": {\n        \"@type\": \"MonetaryAmount\",\n        \"value\": \"4.90\",\n        \"currency\": \"EUR\"\n      },\n      \"deliveryTime\": {\n        \"@type\": \"ShippingDeliveryTime\",\n        \"handlingTime\": {\n          \"@type\": \"QuantitativeValue\",\n          \"minValue\": 0,\n          \"maxValue\": 1,\n          \"unitCode\": \"DAY\"\n        },\n        \"transitTime\": {\n          \"@type\": \"QuantitativeValue\",\n          \"minValue\": 1,\n          \"maxValue\": 2,\n          \"unitCode\": \"DAY\"\n        }\n      }\n    }\n  }\n}\n\u003C/script>\n```\n\nLa profondeur des données structurées compte. Prix, stock, délai de livraison, frais de port — plus vous êtes explicite, plus l'agent peut prendre une décision sans avoir à scraper et interpréter votre HTML. C'est la même logique que celle qui a fait évoluer la visibilité dans l'[ère de la recherche IA](/blog/the-tech-seo-audit-for-the-ai-search-era-how-to-maximize-your-ai-visibility-via-sejournal-jetoctopus) : les données structurées ne sont plus un bonus, elles deviennent l'interface principale de communication avec les systèmes de Google.\n\n### WebMCP : la prochaine couche\n\nGoogle a déjà posé les jalons de [WebMCP](/blog/why-now-is-the-time-to-prepare-for-webmcp) (Model Context Protocol pour le web), un protocole qui permettrait aux agents IA d'interagir avec des sites via des interfaces standardisées plutôt que de parser du HTML. `Google-Agent` est probablement le premier client concret de ce type de protocole. Si vous avez commencé à explorer WebMCP, vous avez une avance stratégique.\n\n## Les zones grises : ce que Google n'a pas encore clarifié\n\n### Authentification et sessions\n\nQue se passe-t-il quand `Google-Agent` doit se connecter au compte d'un utilisateur pour finaliser un achat ? Google n'a pas détaillé le mécanisme d'authentification. Plusieurs hypothèses :\n\n- **OAuth delegated access** : l'utilisateur autorise `Google-Agent` à agir en son nom via un token OAuth. C'est le scénario le plus propre techniquement, mais il nécessite que chaque site implémente un flow OAuth compatible.\n- **Credential relay** : l'agent utilise les identifiants stockés dans le compte Google de l'utilisateur (comme le fait déjà Chrome Autofill). Plus simple à déployer, mais soulève des questions de sécurité majeures.\n- **Session-less interaction** : l'agent n'interagit qu'avec les pages publiques et génère un lien de checkout pré-rempli que l'utilisateur finalise manuellement. Le scénario le plus limité mais le plus réaliste à court terme.\n\n### Consent et RGPD\n\nUn agent IA qui navigue votre site au nom d'un utilisateur doit-il accepter votre bannière de cookies ? Si `Google-Agent` refuse ou ignore le consent, et que vos pages produits sont derrière un cookie wall (mauvaise idée, mais ça existe), l'agent ne verra rien.\n\nPlus subtil : si `Google-Agent` accepte les cookies, les données de navigation sont-elles considérées comme des données personnelles de l'utilisateur mandataire ? La CNIL n'a pas encore statué, mais la question va se poser très vite pour les sites européens.\n\n### Impact sur les métriques de visibilité\n\nLes visites de `Google-Agent` ne devraient pas apparaître dans Search Console (ce n'est pas du crawl d'indexation). Elles n'apparaîtront pas dans GA4 si l'agent n'exécute pas JavaScript côté client. Vous pourriez avoir un canal de conversion significatif qui est totalement invisible dans vos outils analytics habituels.\n\nC'est précisément le type de [problème de visibilité multi-couche](/blog/stop-treating-ai-visibility-as-one-problem-it-s-actually-three-on-three-different-layers-via-sejournal-duaneforrester) que les SEOs doivent apprendre à traiter : la visibilité dans l'indexation classique, la visibilité dans les AI Overviews, et maintenant la visibilité auprès des agents IA qui agissent pour les utilisateurs.\n\n## Stratégie de monitoring : ne pas voler à l'aveugle\n\nLe risque le plus concret avec `Google-Agent` est de ne pas savoir ce qui se passe. Si votre WAF bloque l'agent, si votre SSR plante sur certaines pages, si vos données structurées sont invalides — vous n'avez aucun feedback direct de Google pour vous prévenir.\n\n### Ce qu'il faut monitorer\n\n1. **Présence de `Google-Agent` dans les logs** : fréquence, pages ciblées, codes de réponse. Un pic de 403 ou de 503 est un signal d'alerte immédiat.\n2. **Temps de réponse pour les requêtes `Google-Agent`** : si votre backend met 4 secondes à répondre parce que le SSR est lent, l'agent ira voir ailleurs.\n3. **Intégrité du HTML renvoyé** : vérifiez que les pages servies à `Google-Agent` contiennent bien les données structurées et le contenu attendu. Un bug de rendering conditionnel (servir un HTML différent selon le user-agent) peut casser silencieusement l'expérience agent.\n4. **Validité des données structurées** : un prix manquant ou un statut de stock incorrect dans votre JSON-LD, c'est un agent IA qui donne une mauvaise information à l'utilisateur — et un utilisateur qui ne convertira pas chez vous.\n\nUn outil de monitoring comme Seogard, qui détecte les régressions techniques en temps réel (meta disparues, SSR cassé, données structurées invalides), devient critique dans ce contexte. Vous ne pouvez pas vérifier manuellement 15 000 pages produits chaque jour pour vous assurer que `Google-Agent` reçoit le bon HTML.\n\n### Vérification manuelle avec cURL\n\nPour tester rapidement ce que `Google-Agent` voit sur une page spécifique :\n\n```bash\ncurl -s -H \"User-Agent: Google-Agent/1.0\" \\\n  -o /dev/null -w \"HTTP %{http_code} | Time: %{time_total}s | Size: %{size_download} bytes\\n\" \\\n  \"https://shop.audiotech-store.fr/products/casque-pro-x500\"\n\n# Vérifier le contenu HTML renvoyé\ncurl -s -H \"User-Agent: Google-Agent/1.0\" \\\n  \"https://shop.audiotech-store.fr/products/casque-pro-x500\" \\\n  | grep -o '\"price\":\"[^\"]*\"'\n```\n\nSi le `curl` avec le user-agent `Google-Agent` renvoie un 403 alors que le même URL avec un user-agent Chrome renvoie un 200, vous avez trouvé votre problème.\n\n## Ce que cela signifie pour la stratégie SEO globale\n\n`Google-Agent` n'est pas un ajustement incrémental. C'est l'introduction d'une troisième catégorie de visiteur sur le web, après les humains et les crawlers. Les sites qui seront les premiers à optimiser pour cette catégorie auront un avantage concurrentiel direct : ils seront ceux que les agents IA recommandent, ceux où les agents IA convertissent.\n\nCela rejoint la mutation plus large de la recherche vers l'[IA](/blog/google-updates-links-within-ai-overviews-ai-mode). Les AI Overviews répondent aux questions. Les agents IA exécutent des actions. Votre site doit être lisible par les premiers et actionnable par les seconds.\n\nTrois actions immédiates : auditez vos logs pour détecter `Google-Agent`, mettez à jour votre `robots.txt` avec des directives spécifiques à ce token, et vérifiez que vos pages critiques renvoient du HTML complet côté serveur avec des données structurées exhaustives. Le reste — WebMCP, OAuth pour agents, analytics dédiés — viendra dans les mois suivants. Mais la fondation technique, c'est maintenant qu'elle se pose.","https://seogard.io/blog/google-agent-the-web-s-new-visitor-just-got-an-identity-via-sejournal-slobodanmanic","Actualités SEO","2026-05-17T15:02:53.807Z","2026-05-17","Google-Agent n'est pas un crawler. C'est un agent IA qui agit pour l'utilisateur. Voici comment le détecter, le contrôler et adapter votre stack technique.","\u003Cp>Un nouveau user-agent vient d'apparaître dans vos logs serveur. Il ne s'appelle pas Googlebot. Il ne s'appelle pas Google-Extended. Il s'appelle \u003Ccode>Google-Agent\u003C/code>. Et contrairement à tout ce que Google a envoyé sur vos sites depuis 1998, celui-ci n'indexe rien — il agit au nom d'un utilisateur réel, en temps réel.\u003C/p>\n\u003Ch2>Ce que Google-Agent change fondamentalement\u003C/h2>\n\u003Cp>Googlebot crawle pour indexer. Google-Extended crawle pour entraîner des modèles IA. \u003Ccode>Google-Agent\u003C/code> fait autre chose : il exécute des tâches pour le compte d'un utilisateur. Réserver un vol, comparer des prix, remplir un formulaire, ajouter un produit au panier. C'est la matérialisation technique de ce que Google appelle les \"AI agents\" depuis les annonces autour de Project Mariner et Gemini.\u003C/p>\n\u003Cp>La distinction est structurelle, pas cosmétique. Un crawler indexe pour enrichir un moteur de recherche. Un agent IA consomme votre site comme un utilisateur le ferait — sauf qu'il le fait via des appels HTTP programmatiques, avec une vitesse et une précision qu'aucun humain n'atteint.\u003C/p>\n\u003Cp>Le problème : vos règles \u003Ccode>robots.txt\u003C/code> actuelles, vos rate limiters, vos WAF — tout est calibré pour deux catégories de visiteurs : les humains et les crawlers. \u003Ccode>Google-Agent\u003C/code> n'entre proprement dans aucune des deux. Et si vous le bloquez comme un bot, vous bloquez potentiellement des conversions réelles initiées par des utilisateurs via l'interface Gemini.\u003C/p>\n\u003Ch3>Un user-agent distinct, des intentions distinctes\u003C/h3>\n\u003Cp>Google a fait le choix d'un token user-agent dédié : \u003Ccode>Google-Agent\u003C/code>. Ce n'est pas un sous-token de Googlebot. C'est une identité séparée, ce qui signifie que vous pouvez le traiter indépendamment dans \u003Ccode>robots.txt\u003C/code>, dans vos configurations serveur, et dans vos analytics.\u003C/p>\n\u003Cp>Voici ce que cela implique en pratique dans votre \u003Ccode>robots.txt\u003C/code> :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan># Crawler d'indexation classique\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>User-agent: Googlebot\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Allow: /\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan># Crawl pour l'entraînement IA (AI Overviews, Gemini training)\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>User-agent: Google-Extended\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan># Agent IA agissant pour un utilisateur\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>User-agent: Google-Agent\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Allow: /products/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Allow: /api/booking/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /admin/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /internal/\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>La granularité est essentielle. Bloquer \u003Ccode>Google-Agent\u003C/code> sur \u003Ccode>/products/\u003C/code> d'un e-commerce de 12 000 SKU, c'est empêcher un utilisateur Gemini de comparer vos prix ou d'ajouter un article à son panier via l'agent. C'est l'équivalent de bloquer JavaScript pour un utilisateur mobile en 2016 — techniquement possible, commercialement suicidaire.\u003C/p>\n\u003Ch3>La différence avec Google-Extended\u003C/h3>\n\u003Cp>\u003Ccode>Google-Extended\u003C/code> a été introduit en septembre 2023 pour permettre aux éditeurs de bloquer l'utilisation de leur contenu dans l'entraînement des modèles Gemini et les AI Overviews, tout en restant indexés par Googlebot. C'est un mécanisme de contrôle sur l'usage des données.\u003C/p>\n\u003Cp>\u003Ccode>Google-Agent\u003C/code> ne touche pas à l'entraînement. Il ne stocke pas votre contenu pour le réutiliser. Il le consomme en temps réel pour accomplir une tâche spécifique demandée par un utilisateur. La \u003Ca href=\"https://developers.google.com/search/docs/crawling-indexing/overview-google-crawlers\">documentation Google sur les robots\u003C/a> listera progressivement ces distinctions, mais la logique est déjà claire : trois tokens, trois finalités, trois stratégies de gestion.\u003C/p>\n\u003Ch2>Détecter Google-Agent dans vos logs\u003C/h2>\n\u003Cp>Avant de décider quoi que ce soit, vous devez savoir si \u003Ccode>Google-Agent\u003C/code> visite déjà votre site, à quelle fréquence, et quelles pages il cible.\u003C/p>\n\u003Ch3>Analyse des logs serveur\u003C/h3>\n\u003Cp>Sur un serveur Nginx, vos access logs contiennent déjà l'information. Voici comment extraire les requêtes \u003Ccode>Google-Agent\u003C/code> :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Extraire toutes les requêtes Google-Agent des 7 derniers jours\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">grep\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"Google-Agent\"\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> /var/log/nginx/access.log\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  |\u003C/span>\u003Cspan style=\"color:#B392F0\"> awk\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> '{print $7}'\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  |\u003C/span>\u003Cspan style=\"color:#B392F0\"> sort\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  |\u003C/span>\u003Cspan style=\"color:#B392F0\"> uniq\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -c\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  |\u003C/span>\u003Cspan style=\"color:#B392F0\"> sort\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -rn\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  |\u003C/span>\u003Cspan style=\"color:#B392F0\"> head\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -50\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Cette commande vous donne les 50 URLs les plus visitées par \u003Ccode>Google-Agent\u003C/code>, triées par fréquence. Sur un site e-commerce, vous verrez probablement une concentration sur les pages produits, les pages catégorie, et potentiellement les endpoints d'API si vous exposez une API publique.\u003C/p>\n\u003Cp>Pour aller plus loin, croisez avec le code de réponse HTTP :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Requêtes Google-Agent avec code de réponse\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">grep\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"Google-Agent\"\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> /var/log/nginx/access.log\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  |\u003C/span>\u003Cspan style=\"color:#B392F0\"> awk\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> '{print $9, $7}'\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  |\u003C/span>\u003Cspan style=\"color:#B392F0\"> sort\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  |\u003C/span>\u003Cspan style=\"color:#B392F0\"> uniq\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -c\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  |\u003C/span>\u003Cspan style=\"color:#B392F0\"> sort\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -rn\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Si vous voyez des 403 ou des 429 en masse, votre WAF ou votre rate limiter traite probablement \u003Ccode>Google-Agent\u003C/code> comme un bot hostile. C'est le premier problème à corriger.\u003C/p>\n\u003Ch3>Séparation dans Google Analytics / côté serveur\u003C/h3>\n\u003Cp>\u003Ccode>Google-Agent\u003C/code> ne va probablement pas exécuter vos tags GA4 côté client. C'est un agent programmatique, pas un navigateur avec un runtime JavaScript complet. Pour le tracking, vous devez passer par l'analyse de logs serveur ou par un outil de log analysis comme Screaming Frog Log Analyser, en créant un filtre custom sur le user-agent.\u003C/p>\n\u003Cp>Dans Screaming Frog Log Analyser, importez vos logs et créez un segment :\u003C/p>\n\u003Col>\n\u003Cli>\u003Cstrong>Configuration > User-Agent Segmentation\u003C/strong>\u003C/li>\n\u003Cli>Ajoutez un segment custom : \u003Ccode>Google-Agent\u003C/code>\u003C/li>\n\u003Cli>Pattern de matching : \u003Ccode>Google-Agent\u003C/code> (string exacte ou regex \u003Ccode>Google-Agent\\/\u003C/code>)\u003C/li>\n\u003C/ol>\n\u003Cp>Cela vous permettra de visualiser les pages crawlées par l'agent, les codes de réponse reçus, la fréquence de visite, et de comparer avec le comportement de Googlebot classique.\u003C/p>\n\u003Ch2>Adapter votre infrastructure : rate limiting, WAF, et CDN\u003C/h2>\n\u003Cp>Le problème technique le plus immédiat avec \u003Ccode>Google-Agent\u003C/code> est le rate limiting. La plupart des configurations WAF et CDN traitent tous les bots de la même manière — soit vous êtes Googlebot (whitelist), soit vous êtes un bot inconnu (throttle ou block).\u003C/p>\n\u003Ch3>Configuration Nginx : rate limiting différencié\u003C/h3>\n\u003Cp>Voici une configuration Nginx qui applique des limites de débit différentes selon le type de visiteur Google :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Définition des zones de rate limiting\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">limit_req_zone \u003C/span>\u003Cspan style=\"color:#E1E4E8\">$binary_remote_addr zone=human:10m rate=30r/s;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">limit_req_zone \u003C/span>\u003Cspan style=\"color:#E1E4E8\">$binary_remote_addr zone=crawler:10m rate=5r/s;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">limit_req_zone \u003C/span>\u003Cspan style=\"color:#E1E4E8\">$binary_remote_addr zone=aiagent:10m rate=15r/s;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Map pour identifier le type de visiteur\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">map\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> $\u003C/span>\u003Cspan style=\"color:#FFAB70\">http_user_agent\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> $visitor_type {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">    default\u003C/span>\u003Cspan style=\"color:#9ECBFF\">                \"human\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">    \"~*Googlebot\"\u003C/span>\u003Cspan style=\"color:#9ECBFF\">          \"crawler\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">    \"~*Google-Extended\"\u003C/span>\u003Cspan style=\"color:#9ECBFF\">    \"crawler\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">    \"~*Google-Agent\"\u003C/span>\u003Cspan style=\"color:#9ECBFF\">       \"aiagent\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">    \"~*bingbot\"\u003C/span>\u003Cspan style=\"color:#9ECBFF\">            \"crawler\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">server\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    listen \u003C/span>\u003Cspan style=\"color:#79B8FF\">443\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> ssl;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    server_name \u003C/span>\u003Cspan style=\"color:#E1E4E8\">shop.example-retailer.fr;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    location\u003C/span>\u003Cspan style=\"color:#B392F0\"> /products/ \u003C/span>\u003Cspan style=\"color:#E1E4E8\">{\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">        # Rate limit conditionnel\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">        if\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> ($visitor_type \u003C/span>\u003Cspan style=\"color:#F97583\">= \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"crawler\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">            limit_req \u003C/span>\u003Cspan style=\"color:#E1E4E8\">zone=crawler burst=10 nodelay;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">        if\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> ($visitor_type \u003C/span>\u003Cspan style=\"color:#F97583\">= \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"aiagent\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">            limit_req \u003C/span>\u003Cspan style=\"color:#E1E4E8\">zone=aiagent burst=20 nodelay;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">        if\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> ($visitor_type \u003C/span>\u003Cspan style=\"color:#F97583\">= \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"human\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">            limit_req \u003C/span>\u003Cspan style=\"color:#E1E4E8\">zone=human burst=50 nodelay;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">        proxy_pass \u003C/span>\u003Cspan style=\"color:#E1E4E8\">http://backend;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    # Bloquer Google-Agent sur les zones sensibles\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    location\u003C/span>\u003Cspan style=\"color:#B392F0\"> /checkout/ \u003C/span>\u003Cspan style=\"color:#E1E4E8\">{\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">        if\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> ($http_user_agent \u003C/span>\u003Cspan style=\"color:#F97583\">~* \u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"Google-Agent\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">            return\u003C/span>\u003Cspan style=\"color:#79B8FF\"> 403\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">        proxy_pass \u003C/span>\u003Cspan style=\"color:#E1E4E8\">http://backend;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Le rate limit pour \u003Ccode>Google-Agent\u003C/code> est volontairement plus élevé que pour un crawler classique (15 r/s vs 5 r/s) parce que l'agent agit en temps réel pour un utilisateur. Un délai de réponse de 3 secondes est acceptable pour un crawl d'indexation — c'est inacceptable pour un utilisateur qui attend que son agent IA finalise une comparaison de prix.\u003C/p>\n\u003Cp>En revanche, bloquer \u003Ccode>Google-Agent\u003C/code> sur \u003Ccode>/checkout/\u003C/code> est une décision raisonnable : vous ne voulez probablement pas qu'un agent IA soumette des commandes sans validation humaine explicite à cette étape.\u003C/p>\n\u003Ch3>Cloudflare et CDN : attention aux règles par défaut\u003C/h3>\n\u003Cp>Si vous utilisez Cloudflare, vérifiez votre configuration Bot Management. Par défaut, les bots non vérifiés peuvent être challengés avec un CAPTCHA ou bloqués. \u003Ccode>Google-Agent\u003C/code> est nouveau — il est possible que Cloudflare ne le classe pas encore comme \"verified bot\" dans ses listes.\u003C/p>\n\u003Cp>Créez une règle custom dans Cloudflare Firewall Rules :\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Expression\u003C/strong> : \u003Ccode>(http.user_agent contains \"Google-Agent\")\u003C/code>\u003C/li>\n\u003Cli>\u003Cstrong>Action\u003C/strong> : Allow (ou Log si vous voulez observer avant d'autoriser)\u003C/li>\n\u003C/ul>\n\u003Cp>Et vérifiez que vos règles \"Bot Fight Mode\" ou \"Super Bot Fight Mode\" n'interceptent pas \u003Ccode>Google-Agent\u003C/code> en amont.\u003C/p>\n\u003Ch2>Scénario concret : un comparateur de vols avec 28 000 pages\u003C/h2>\n\u003Cp>Prenons un cas réaliste. FlightCompare.fr est un comparateur de vols avec 28 000 pages de résultats dynamiques (routes, dates, compagnies), 3 200 pages de contenu éditorial (guides destinations), et un moteur de réservation intégré.\u003C/p>\n\u003Ch3>Situation avant Google-Agent\u003C/h3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Googlebot\u003C/strong> crawle environ 4 500 pages/jour, principalement les routes populaires et le contenu éditorial. Crawl budget géré via \u003Ccode>robots.txt\u003C/code> et \u003Ccode>&#x3C;link rel=\"canonical\">\u003C/code> pour éviter les duplicatas de paramètres.\u003C/li>\n\u003Cli>\u003Cstrong>Google-Extended\u003C/strong> bloqué sur le contenu éditorial (les guides destinations sont monétisés via affiliate, l'éditeur ne veut pas alimenter les AI Overviews qui court-circuitent le clic).\u003C/li>\n\u003Cli>\u003Cstrong>Trafic organique\u003C/strong> : 180 000 sessions/mois, 40% sur les pages de routes.\u003C/li>\n\u003C/ul>\n\u003Ch3>Ce qui change avec Google-Agent\u003C/h3>\n\u003Cp>Un utilisateur dit à Gemini : \"Trouve-moi le vol le moins cher Paris-Lisbonne du 15 au 22 juin, réserve-le si c'est sous 150€.\"\u003C/p>\n\u003Cp>\u003Ccode>Google-Agent\u003C/code> doit :\u003C/p>\n\u003Col>\n\u003Cli>Accéder à la page de résultats Paris-Lisbonne sur FlightCompare.fr\u003C/li>\n\u003Cli>Parser les prix affichés (ou interagir avec l'API si elle est exposée)\u003C/li>\n\u003Cli>Comparer avec d'autres sources\u003C/li>\n\u003Cli>Potentiellement initier une réservation\u003C/li>\n\u003C/ol>\n\u003Cp>Si FlightCompare.fr bloque \u003Ccode>Google-Agent\u003C/code> ou le rate-limit à 2 requêtes/seconde comme un crawler classique, l'agent se tourne vers un concurrent. L'utilisateur ne saura jamais que FlightCompare.fr avait le meilleur prix.\u003C/p>\n\u003Ch3>Impact estimé\u003C/h3>\n\u003Cp>En supposant que 5% du trafic de recherche passe par des agents IA d'ici fin 2026 (une estimation conservatrice vu la vitesse d'adoption de Gemini), FlightCompare.fr pourrait perdre 9 000 sessions/mois et les conversions associées s'il traite \u003Ccode>Google-Agent\u003C/code> comme un bot à bloquer.\u003C/p>\n\u003Cp>La stratégie optimale :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan># robots.txt de FlightCompare.fr\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>User-agent: Googlebot\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Allow: /\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /api/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /admin/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>User-agent: Google-Extended\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /guides/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Allow: /routes/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>User-agent: Google-Agent\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Allow: /routes/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Allow: /api/search/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Allow: /api/availability/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /api/booking/confirm\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /admin/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>Disallow: /guides/\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>L'agent a accès aux résultats de recherche et aux données de disponibilité, mais pas à l'endpoint de confirmation de réservation (qui nécessite une validation humaine). Les guides éditoriaux sont bloqués parce qu'un agent n'a pas besoin de lire un article \"Top 10 restaurants à Lisbonne\" pour réserver un vol.\u003C/p>\n\u003Ch2>Les implications pour le SSR et le rendering JavaScript\u003C/h2>\n\u003Cp>\u003Ccode>Google-Agent\u003C/code> pose une question que Googlebot avait déjà soulevée, mais avec une urgence nouvelle : votre site doit-il renvoyer du HTML exploitable côté serveur ?\u003C/p>\n\u003Ch3>Le problème du client-side rendering pour les agents\u003C/h3>\n\u003Cp>Un agent IA n'est pas un navigateur. Il ne va pas attendre 3 secondes que votre SPA React hydrate, que vos appels API se résolvent, et que le DOM se stabilise. Si votre page produit renvoie un shell HTML vide avec un \u003Ccode>&#x3C;div id=\"root\">&#x3C;/div>\u003C/code> et que tout le contenu dépend de JavaScript côté client, \u003Ccode>Google-Agent\u003C/code> verra... rien d'exploitable.\u003C/p>\n\u003Cp>C'est le même problème que le JavaScript SEO classique, mais amplifié. Googlebot a un pipeline de rendering dédié (le Web Rendering Service) qui exécute JavaScript. Rien n'indique que \u003Ccode>Google-Agent\u003C/code> bénéficie du même pipeline — au contraire, il doit fonctionner en temps réel, ce qui exclut probablement un rendering headless coûteux en ressources pour chaque requête.\u003C/p>\n\u003Cp>Si vous avez encore des pages critiques rendues uniquement côté client, c'est le moment de migrer vers du SSR ou du SSG. Pour les stacks Next.js, la configuration est directe :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">// pages/products/[slug].tsx — Next.js avec getServerSideProps\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">import\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> { GetServerSideProps } \u003C/span>\u003Cspan style=\"color:#F97583\">from\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> 'next'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">import\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> { ProductPage } \u003C/span>\u003Cspan style=\"color:#F97583\">from\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> '@/components/ProductPage'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">import\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> { fetchProduct, fetchAvailability } \u003C/span>\u003Cspan style=\"color:#F97583\">from\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> '@/lib/api'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">interface\u003C/span>\u003Cspan style=\"color:#B392F0\"> ProductProps\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">  product\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#B392F0\"> Product\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#FFAB70\">  availability\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#B392F0\"> AvailabilityData\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">export\u003C/span>\u003Cspan style=\"color:#F97583\"> const\u003C/span>\u003Cspan style=\"color:#B392F0\"> getServerSideProps\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#B392F0\"> GetServerSideProps\u003C/span>\u003Cspan style=\"color:#E1E4E8\">&#x3C;\u003C/span>\u003Cspan style=\"color:#B392F0\">ProductProps\u003C/span>\u003Cspan style=\"color:#E1E4E8\">> \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#F97583\"> async\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"color:#FFAB70\">context\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) \u003C/span>\u003Cspan style=\"color:#F97583\">=>\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  const\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> { \u003C/span>\u003Cspan style=\"color:#79B8FF\">slug\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> } \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> context.params\u003C/span>\u003Cspan style=\"color:#F97583\">!\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  const\u003C/span>\u003Cspan style=\"color:#79B8FF\"> userAgent\u003C/span>\u003Cspan style=\"color:#F97583\"> =\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> context.req.headers[\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'user-agent'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">] \u003C/span>\u003Cspan style=\"color:#F97583\">||\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> ''\u003C/span>\u003Cspan style=\"color:#E1E4E8\">;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">  // Log Google-Agent visits pour analytics\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  if\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (userAgent.\u003C/span>\u003Cspan style=\"color:#B392F0\">includes\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">'Google-Agent'\u003C/span>\u003Cspan style=\"color:#E1E4E8\">)) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    console.\u003C/span>\u003Cspan style=\"color:#B392F0\">log\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(\u003C/span>\u003Cspan style=\"color:#9ECBFF\">`[Google-Agent] Product page accessed: /products/${\u003C/span>\u003Cspan style=\"color:#E1E4E8\">slug\u003C/span>\u003Cspan style=\"color:#9ECBFF\">}`\u003C/span>\u003Cspan style=\"color:#E1E4E8\">);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\">    // Optionnel : envoyer un event à votre système de monitoring\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  const\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> [\u003C/span>\u003Cspan style=\"color:#79B8FF\">product\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#79B8FF\">availability\u003C/span>\u003Cspan style=\"color:#E1E4E8\">] \u003C/span>\u003Cspan style=\"color:#F97583\">=\u003C/span>\u003Cspan style=\"color:#F97583\"> await\u003C/span>\u003Cspan style=\"color:#79B8FF\"> Promise\u003C/span>\u003Cspan style=\"color:#E1E4E8\">.\u003C/span>\u003Cspan style=\"color:#B392F0\">all\u003C/span>\u003Cspan style=\"color:#E1E4E8\">([\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    fetchProduct\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(slug \u003C/span>\u003Cspan style=\"color:#F97583\">as\u003C/span>\u003Cspan style=\"color:#79B8FF\"> string\u003C/span>\u003Cspan style=\"color:#E1E4E8\">),\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">    fetchAvailability\u003C/span>\u003Cspan style=\"color:#E1E4E8\">(slug \u003C/span>\u003Cspan style=\"color:#F97583\">as\u003C/span>\u003Cspan style=\"color:#79B8FF\"> string\u003C/span>\u003Cspan style=\"color:#E1E4E8\">),\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  ]);\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  if\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> (\u003C/span>\u003Cspan style=\"color:#F97583\">!\u003C/span>\u003Cspan style=\"color:#E1E4E8\">product) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">    return\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> { notFound: \u003C/span>\u003Cspan style=\"color:#79B8FF\">true\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> };\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  return\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    props: {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      product,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      availability,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  };\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">};\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">export\u003C/span>\u003Cspan style=\"color:#F97583\"> default\u003C/span>\u003Cspan style=\"color:#F97583\"> function\u003C/span>\u003Cspan style=\"color:#B392F0\"> Product\u003C/span>\u003Cspan style=\"color:#E1E4E8\">({ \u003C/span>\u003Cspan style=\"color:#FFAB70\">product\u003C/span>\u003Cspan style=\"color:#E1E4E8\">, \u003C/span>\u003Cspan style=\"color:#FFAB70\">availability\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> }\u003C/span>\u003Cspan style=\"color:#F97583\">:\u003C/span>\u003Cspan style=\"color:#B392F0\"> ProductProps\u003C/span>\u003Cspan style=\"color:#E1E4E8\">) {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  return\u003C/span>\u003Cspan style=\"color:#E1E4E8\"> &#x3C;\u003C/span>\u003Cspan style=\"color:#B392F0\">ProductPage\u003C/span>\u003Cspan style=\"color:#B392F0\"> product\u003C/span>\u003Cspan style=\"color:#E1E4E8\">={\u003C/span>\u003Cspan style=\"color:#FFAB70\">product\u003C/span>\u003Cspan style=\"color:#E1E4E8\">} \u003C/span>\u003Cspan style=\"color:#B392F0\">availability\u003C/span>\u003Cspan style=\"color:#E1E4E8\">={\u003C/span>\u003Cspan style=\"color:#FFAB70\">availability\u003C/span>\u003Cspan style=\"color:#E1E4E8\">} />;\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Le point clé : le contenu structuré (prix, disponibilité, caractéristiques produit) est dans le HTML initial renvoyé par le serveur. \u003Ccode>Google-Agent\u003C/code> peut le parser immédiatement sans exécuter JavaScript.\u003C/p>\n\u003Cp>Les leçons du \u003Ca href=\"/blog/5-javascript-seo-lessons-from-top-ecommerce-sites\">JavaScript SEO sur les sites e-commerce\u003C/a> s'appliquent ici avec encore plus de force : chaque milliseconde de rendering JS est une milliseconde où un agent IA pourrait abandonner et passer au concurrent.\u003C/p>\n\u003Ch2>Structured data et machine-readability : un avantage concurrentiel\u003C/h2>\n\u003Cp>Si \u003Ccode>Google-Agent\u003C/code> doit comprendre qu'un produit coûte 89,90€, qu'il est en stock, et qu'il peut être livré en 48h, vous avez deux options : espérer qu'il parse correctement votre HTML arbitraire, ou lui fournir des données structurées explicites.\u003C/p>\n\u003Ch3>Schema.org comme interface machine\u003C/h3>\n\u003Cp>Le JSON-LD \u003Ccode>Product\u003C/code> n'est plus seulement un outil pour obtenir des rich snippets dans les SERP. C'est potentiellement l'interface primaire par laquelle \u003Ccode>Google-Agent\u003C/code> comprend votre offre :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;\u003C/span>\u003Cspan style=\"color:#85E89D\">script\u003C/span>\u003Cspan style=\"color:#B392F0\"> type\u003C/span>\u003Cspan style=\"color:#E1E4E8\">=\u003C/span>\u003Cspan style=\"color:#9ECBFF\">\"application/ld+json\"\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">{\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"@context\": \"https://schema.org\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"@type\": \"Product\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"name\": \"Casque Audio Pro X500\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"sku\": \"PRO-X500-BLK\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"brand\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"@type\": \"Brand\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"name\": \"AudioTech\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  \"offers\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"@type\": \"Offer\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"url\": \"https://shop.audiotech-store.fr/products/casque-pro-x500\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"priceCurrency\": \"EUR\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"price\": \"89.90\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"availability\": \"https://schema.org/InStock\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"deliveryLeadTime\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"@type\": \"QuantitativeValue\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"minValue\": 1,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"maxValue\": 2,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"unitCode\": \"DAY\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    \"shippingDetails\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"@type\": \"OfferShippingDetails\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"shippingRate\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"@type\": \"MonetaryAmount\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"value\": \"4.90\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"currency\": \"EUR\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      \"deliveryTime\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"@type\": \"ShippingDeliveryTime\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"handlingTime\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          \"@type\": \"QuantitativeValue\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          \"minValue\": 0,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          \"maxValue\": 1,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          \"unitCode\": \"DAY\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        },\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        \"transitTime\": {\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          \"@type\": \"QuantitativeValue\",\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          \"minValue\": 1,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          \"maxValue\": 2,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">          \"unitCode\": \"DAY\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">        }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">      }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">    }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">  }\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">}\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E1E4E8\">&#x3C;/\u003C/span>\u003Cspan style=\"color:#85E89D\">script\u003C/span>\u003Cspan style=\"color:#E1E4E8\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>La profondeur des données structurées compte. Prix, stock, délai de livraison, frais de port — plus vous êtes explicite, plus l'agent peut prendre une décision sans avoir à scraper et interpréter votre HTML. C'est la même logique que celle qui a fait évoluer la visibilité dans l'\u003Ca href=\"/blog/the-tech-seo-audit-for-the-ai-search-era-how-to-maximize-your-ai-visibility-via-sejournal-jetoctopus\">ère de la recherche IA\u003C/a> : les données structurées ne sont plus un bonus, elles deviennent l'interface principale de communication avec les systèmes de Google.\u003C/p>\n\u003Ch3>WebMCP : la prochaine couche\u003C/h3>\n\u003Cp>Google a déjà posé les jalons de \u003Ca href=\"/blog/why-now-is-the-time-to-prepare-for-webmcp\">WebMCP\u003C/a> (Model Context Protocol pour le web), un protocole qui permettrait aux agents IA d'interagir avec des sites via des interfaces standardisées plutôt que de parser du HTML. \u003Ccode>Google-Agent\u003C/code> est probablement le premier client concret de ce type de protocole. Si vous avez commencé à explorer WebMCP, vous avez une avance stratégique.\u003C/p>\n\u003Ch2>Les zones grises : ce que Google n'a pas encore clarifié\u003C/h2>\n\u003Ch3>Authentification et sessions\u003C/h3>\n\u003Cp>Que se passe-t-il quand \u003Ccode>Google-Agent\u003C/code> doit se connecter au compte d'un utilisateur pour finaliser un achat ? Google n'a pas détaillé le mécanisme d'authentification. Plusieurs hypothèses :\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>OAuth delegated access\u003C/strong> : l'utilisateur autorise \u003Ccode>Google-Agent\u003C/code> à agir en son nom via un token OAuth. C'est le scénario le plus propre techniquement, mais il nécessite que chaque site implémente un flow OAuth compatible.\u003C/li>\n\u003Cli>\u003Cstrong>Credential relay\u003C/strong> : l'agent utilise les identifiants stockés dans le compte Google de l'utilisateur (comme le fait déjà Chrome Autofill). Plus simple à déployer, mais soulève des questions de sécurité majeures.\u003C/li>\n\u003Cli>\u003Cstrong>Session-less interaction\u003C/strong> : l'agent n'interagit qu'avec les pages publiques et génère un lien de checkout pré-rempli que l'utilisateur finalise manuellement. Le scénario le plus limité mais le plus réaliste à court terme.\u003C/li>\n\u003C/ul>\n\u003Ch3>Consent et RGPD\u003C/h3>\n\u003Cp>Un agent IA qui navigue votre site au nom d'un utilisateur doit-il accepter votre bannière de cookies ? Si \u003Ccode>Google-Agent\u003C/code> refuse ou ignore le consent, et que vos pages produits sont derrière un cookie wall (mauvaise idée, mais ça existe), l'agent ne verra rien.\u003C/p>\n\u003Cp>Plus subtil : si \u003Ccode>Google-Agent\u003C/code> accepte les cookies, les données de navigation sont-elles considérées comme des données personnelles de l'utilisateur mandataire ? La CNIL n'a pas encore statué, mais la question va se poser très vite pour les sites européens.\u003C/p>\n\u003Ch3>Impact sur les métriques de visibilité\u003C/h3>\n\u003Cp>Les visites de \u003Ccode>Google-Agent\u003C/code> ne devraient pas apparaître dans Search Console (ce n'est pas du crawl d'indexation). Elles n'apparaîtront pas dans GA4 si l'agent n'exécute pas JavaScript côté client. Vous pourriez avoir un canal de conversion significatif qui est totalement invisible dans vos outils analytics habituels.\u003C/p>\n\u003Cp>C'est précisément le type de \u003Ca href=\"/blog/stop-treating-ai-visibility-as-one-problem-it-s-actually-three-on-three-different-layers-via-sejournal-duaneforrester\">problème de visibilité multi-couche\u003C/a> que les SEOs doivent apprendre à traiter : la visibilité dans l'indexation classique, la visibilité dans les AI Overviews, et maintenant la visibilité auprès des agents IA qui agissent pour les utilisateurs.\u003C/p>\n\u003Ch2>Stratégie de monitoring : ne pas voler à l'aveugle\u003C/h2>\n\u003Cp>Le risque le plus concret avec \u003Ccode>Google-Agent\u003C/code> est de ne pas savoir ce qui se passe. Si votre WAF bloque l'agent, si votre SSR plante sur certaines pages, si vos données structurées sont invalides — vous n'avez aucun feedback direct de Google pour vous prévenir.\u003C/p>\n\u003Ch3>Ce qu'il faut monitorer\u003C/h3>\n\u003Col>\n\u003Cli>\u003Cstrong>Présence de \u003Ccode>Google-Agent\u003C/code> dans les logs\u003C/strong> : fréquence, pages ciblées, codes de réponse. Un pic de 403 ou de 503 est un signal d'alerte immédiat.\u003C/li>\n\u003Cli>\u003Cstrong>Temps de réponse pour les requêtes \u003Ccode>Google-Agent\u003C/code>\u003C/strong> : si votre backend met 4 secondes à répondre parce que le SSR est lent, l'agent ira voir ailleurs.\u003C/li>\n\u003Cli>\u003Cstrong>Intégrité du HTML renvoyé\u003C/strong> : vérifiez que les pages servies à \u003Ccode>Google-Agent\u003C/code> contiennent bien les données structurées et le contenu attendu. Un bug de rendering conditionnel (servir un HTML différent selon le user-agent) peut casser silencieusement l'expérience agent.\u003C/li>\n\u003Cli>\u003Cstrong>Validité des données structurées\u003C/strong> : un prix manquant ou un statut de stock incorrect dans votre JSON-LD, c'est un agent IA qui donne une mauvaise information à l'utilisateur — et un utilisateur qui ne convertira pas chez vous.\u003C/li>\n\u003C/ol>\n\u003Cp>Un outil de monitoring comme Seogard, qui détecte les régressions techniques en temps réel (meta disparues, SSR cassé, données structurées invalides), devient critique dans ce contexte. Vous ne pouvez pas vérifier manuellement 15 000 pages produits chaque jour pour vous assurer que \u003Ccode>Google-Agent\u003C/code> reçoit le bon HTML.\u003C/p>\n\u003Ch3>Vérification manuelle avec cURL\u003C/h3>\n\u003Cp>Pour tester rapidement ce que \u003Ccode>Google-Agent\u003C/code> voit sur une page spécifique :\u003C/p>\n\u003Cpre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">curl\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -s\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -H\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"User-Agent: Google-Agent/1.0\"\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#79B8FF\">  -o\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> /dev/null\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -w\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"HTTP %{http_code} | Time: %{time_total}s | Size: %{size_download} bytes\\n\"\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">  \"https://shop.audiotech-store.fr/products/casque-pro-x500\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># Vérifier le contenu HTML renvoyé\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#B392F0\">curl\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -s\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -H\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> \"User-Agent: Google-Agent/1.0\"\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#9ECBFF\">  \"https://shop.audiotech-store.fr/products/casque-pro-x500\"\u003C/span>\u003Cspan style=\"color:#79B8FF\"> \\\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F97583\">  |\u003C/span>\u003Cspan style=\"color:#B392F0\"> grep\u003C/span>\u003Cspan style=\"color:#79B8FF\"> -o\u003C/span>\u003Cspan style=\"color:#9ECBFF\"> '\"price\":\"[^\"]*\"'\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Si le \u003Ccode>curl\u003C/code> avec le user-agent \u003Ccode>Google-Agent\u003C/code> renvoie un 403 alors que le même URL avec un user-agent Chrome renvoie un 200, vous avez trouvé votre problème.\u003C/p>\n\u003Ch2>Ce que cela signifie pour la stratégie SEO globale\u003C/h2>\n\u003Cp>\u003Ccode>Google-Agent\u003C/code> n'est pas un ajustement incrémental. C'est l'introduction d'une troisième catégorie de visiteur sur le web, après les humains et les crawlers. Les sites qui seront les premiers à optimiser pour cette catégorie auront un avantage concurrentiel direct : ils seront ceux que les agents IA recommandent, ceux où les agents IA convertissent.\u003C/p>\n\u003Cp>Cela rejoint la mutation plus large de la recherche vers l'\u003Ca href=\"/blog/google-updates-links-within-ai-overviews-ai-mode\">IA\u003C/a>. Les AI Overviews répondent aux questions. Les agents IA exécutent des actions. Votre site doit être lisible par les premiers et actionnable par les seconds.\u003C/p>\n\u003Cp>Trois actions immédiates : auditez vos logs pour détecter \u003Ccode>Google-Agent\u003C/code>, mettez à jour votre \u003Ccode>robots.txt\u003C/code> avec des directives spécifiques à ce token, et vérifiez que vos pages critiques renvoient du HTML complet côté serveur avec des données structurées exhaustives. Le reste — WebMCP, OAuth pour agents, analytics dédiés — viendra dans les mois suivants. Mais la fondation technique, c'est maintenant qu'elle se pose.\u003C/p>",null,12,[18,19,20,21,22],"google-agent","AI agents","robots.txt","user-agent","SEO technique","Google-Agent : comprendre le nouveau visiteur IA de vos sites","Sun May 17 2026 15:02:53 GMT+0000 (Coordinated Universal Time)",[26,41,55],{"_id":27,"slug":28,"__v":6,"author":7,"canonical":29,"category":10,"createdAt":30,"date":31,"description":32,"image":15,"imageAlt":15,"readingTime":16,"tags":33,"title":39,"updatedAt":40},"6a0d4ea4aa6b273b0cde629a","reasoning-lift-what-happens-to-brand-visibility-when-ai-thinks-harder","https://seogard.io/blog/reasoning-lift-what-happens-to-brand-visibility-when-ai-thinks-harder","2026-05-20T06:03:16.188Z","2026-05-20","Analyse technique de 200 réponses GPT-5.2 : le raisonnement élevé cite plus de sources, favorise le haut de funnel et redéfinit la visibilité de marque.",[34,35,36,37,38],"reasoning lift","AI search","brand visibility","GEO","LLM","Reasoning lift : impact du raisonnement IA sur la visibilité des marques","Wed May 20 2026 06:03:16 GMT+0000 (Coordinated Universal Time)",{"_id":42,"slug":43,"__v":6,"author":7,"canonical":44,"category":10,"createdAt":45,"date":31,"description":46,"image":15,"imageAlt":15,"readingTime":16,"tags":47,"title":53,"updatedAt":54},"6a0d86d3aa6b273b0c0cbec7","google-brings-ai-content-verification-to-search-via-sejournal-mattgsouthern","https://seogard.io/blog/google-brings-ai-content-verification-to-search-via-sejournal-mattgsouthern","2026-05-20T10:02:59.955Z","Google intègre SynthID à Search pour vérifier le contenu IA. Analyse technique des watermarks, impact sur le crawl et stratégies SEO concrètes.",[48,49,50,51,52],"google","synthid","ai content verification","search","seo technique","SynthID dans Search : impact technique sur le SEO","Wed May 20 2026 10:02:59 GMT+0000 (Coordinated Universal Time)",{"_id":56,"slug":57,"__v":6,"author":7,"canonical":58,"category":10,"createdAt":59,"date":31,"description":60,"image":15,"imageAlt":15,"readingTime":16,"tags":61,"title":67,"updatedAt":68},"6a0df755aa6b273b0c69952f","google-s-llms-txt-guidance-depends-on-which-product-you-ask-via-sejournal-mattgsouthern","https://seogard.io/blog/google-s-llms-txt-guidance-depends-on-which-product-you-ask-via-sejournal-mattgsouthern","2026-05-20T18:03:01.922Z","Google Search ignore llms.txt, mais Lighthouse l'audite pour l'agentic browsing. Analyse technique des contradictions et guide d'implémentation.",[62,63,64,65,66],"llms.txt","agentic browsing","Lighthouse","AI Search","Google","llms.txt : Google Search et Lighthouse se contredisent","Wed May 20 2026 18:03:01 GMT+0000 (Coordinated Universal Time)"]