AI Search crawler test results

LLM user-agent rendering capabilities analysis

January 2026

Powered by RESONEO

Résultats des tests de crawlers AI Search

Analyse des capacités de rendu des agents utilisateur LLM

Janvier 2026

Powered by RESONEO

Test protocol

🔬 Methodology

This study analyzes the real-world rendering capabilities of AI chatbot crawlers when users ask them to fetch and analyze web content. We deployed a test page with 15 distinct content injection methods, from static HTML to Shadow DOM, iframes, delayed JavaScript, and fetch() API calls, each containing a unique sentinel string.

By asking each AI assistant to visit our test page and report the sentinels they found, we determined exactly what content each crawler can (and cannot) see. All requests were logged with full headers, timing data, and behavioral patterns.

🧪 Try it yourself: Access the test page

⚠️ Scope limitation: This study focuses exclusively on "User-mode" bots, crawlers triggered when users ask AI assistants to fetch a URL. This does NOT cover:
  • Search indexing bots (GPTBot, ClaudeBot for training)
  • Dataset collection crawlers
  • Pre-indexing or caching systems

Protocole de test

🔬 Méthodologie

Cette étude analyse les capacités de rendu réelles des crawlers des chatbots IA lorsque les utilisateurs leur demandent de récupérer et d'analyser du contenu web. Nous avons déployé une page de test avec 15 méthodes d'injection de contenu distinctes, du HTML statique au Shadow DOM, iframes, JavaScript différé et appels fetch(), chacune contenant une chaîne sentinelle unique.

En demandant à chaque assistant IA de visiter notre page de test et de rapporter les sentinelles trouvées, nous avons déterminé exactement quel contenu chaque crawler peut (ou ne peut pas) voir. Toutes les requêtes ont été loguées avec les headers complets, les données de timing et les patterns comportementaux.

🧪 Essayez vous-même : Accéder à la page de test

⚠️ Périmètre de l'étude : Cette étude se concentre exclusivement sur les bots "mode utilisateur", les crawlers déclenchés quand les utilisateurs demandent aux assistants IA de récupérer une URL. Cela ne couvre PAS :
  • Les bots d'indexation search (GPTBot, ClaudeBot pour l'entraînement)
  • Les crawlers de collecte de datasets
  • Les systèmes de pré-indexation ou de cache

The simple truth

Not all AI assistants see your website the same way. Here's what you need to know:

Most advanced

Bing Copilot

Microsoft's AI assistant

  • Executes JavaScript
  • Reads Shadow DOM (unique!)
  • Accesses iframe content
  • Very short timeout (~53ms)
  • Stealth mode (no bot ID)
JS capable

Grok & DeepSeek

xAI and DeepSeek crawlers

  • Full JavaScript execution
  • fetch() API works
  • Waits 1-2 seconds for content
  • Cannot read Shadow DOM
  • Stealth mode (fake browser UA)
HTML only

ChatGPT, Claude, Gemini

OpenAI, Anthropic, Google

  • Honest bot identification
  • Reads static HTML perfectly
  • Sees <noscript> content
  • No JavaScript execution
  • Cannot see dynamic content
Broken

Perplexity

Perplexity AI

  • Identifies itself honestly
  • Empty HTTP headers
  • Compression decoding fails
No fetch

Google AI Mode

Google Search AI Overview

  • Cannot fetch URLs at all
  • Only uses Google Search index

La vérité simple

Tous les assistants IA ne voient pas votre site web de la même manière. Voici ce qu'il faut savoir :

Le plus avancé

Bing Copilot

L'assistant IA de Microsoft

  • Exécute le JavaScript
  • Lit le Shadow DOM (unique !)
  • Accède au contenu des iframes
  • Timeout très court (~53ms)
  • Mode furtif (pas d'ID bot)
Compatible JS

Grok & DeepSeek

Crawlers xAI et DeepSeek

  • Exécution JavaScript complète
  • API fetch() fonctionnelle
  • Attend 1-2 secondes le contenu
  • Ne lit pas le Shadow DOM
  • Mode furtif (faux UA navigateur)
HTML uniquement

ChatGPT, Claude, Gemini

OpenAI, Anthropic, Google

  • Identification honnête du bot
  • Lit parfaitement le HTML statique
  • Voit le contenu <noscript>
  • Pas d'exécution JavaScript
  • Ne voit pas le contenu dynamique
Cassé

Perplexity

Perplexity AI

  • S'identifie honnêtement
  • Headers HTTP vides
  • Échec décodage compression
Pas de fetch

Google AI Mode

AI Overview de Google Search

  • Ne peut pas fetch d'URLs
  • Utilise uniquement l'index Google

Technical details

📊 Capability matrix

Agent User-Agent Headers JS fetch() Shadow open Shadow closed iframe template noscript Max delay
Bing Copilot Stealth Chrome ~53ms
Grok (xAI) Stealth multi-IP ~2s
DeepSeek Stealth Firefox zh-CN ~1s
ChatGPT ChatGPT-User n/a
Claude Claude-User n/a
Gemini "Google" n/a
Perplexity Perplexity-User ✗ Empty n/a
AI Mode None (no fetch) n/a n/a

🔍 Agent details

📋 Crawler profile

Vendor Microsoft
User-Agent Chrome/142 Windows (stealth)
Identification None (stealth mode)
JavaScript Full execution
Architecture Multi-IP distributed
Page timeout ~53ms (very short!)
"_ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/142.0.7444.162"
"_ip": "64.71.166.35", "136.117.88.119"
"beacon.elapsed": 53

🎯 Sentinel visibility

✓ STATIC_HTML
✓ JS_INLINE
✓ SHADOW_OPEN
✓ IFRAME_SRC
✓ IFRAME_SRCDOC
✓ DATA_ATTR
✓ TEMPLATE

Key insight: Bing Copilot is the ONLY agent capable of reading Shadow DOM (open mode) and iframe content. However, its extremely short timeout (~53ms) means it misses any delayed content.

📋 Crawler profile

Vendor xAI
User-Agent Chrome/139 macOS + Safari iOS
Identification None (stealth mode)
JavaScript Full execution
Architecture Scouts (Safari) + Renderers (Chrome)
Page timeout ~2 seconds
// Scout (lightweight pre-fetch)
"_ua": "iPhone iOS 18.0 Safari/604.1"
// Renderer (full browser)
"_ua": "Chrome/139.0.0.0 Safari/537.36"
"_ip": "170.23.25.135"

🎯 Sentinel visibility

✓ STATIC_HTML
✓ NOSCRIPT
✓ JS_INLINE
✓ JS_DELAY
✓ FETCH
✓ DATA_ATTR

Key insight: Grok parses the rendered DOM (not HTML source), which explains why it sees noscript but not template content. Waits up to 2s for delayed JS.

📋 Crawler profile

Vendor DeepSeek (China)
User-Agent Firefox/128.0 Linux
Identification None (stealth mode)
JavaScript Full execution
Infrastructure Huawei Cloud Hong Kong
Page timeout ~1 second
"_ua": "Firefox/128.0 (Linux x86_64)"
"Accept-Language": "zh-CN,zh"
"_ip": "119.8.27.93"

🎯 Sentinel visibility

✓ STATIC_HTML
✓ JS_INLINE
✓ FETCH
✓ DATA_ATTR
✓ TEMPLATE

Key insight: DeepSeek parses HTML source after partial JS execution, which explains why it sees template (raw HTML) but not noscript (JS enabled). Shorter timeout than Grok (~1s).

📋 Crawler profile

Vendor OpenAI
User-Agent ChatGPT-User/1.0
Identification Honest (identifies as bot)
JavaScript No execution
Type Simple HTTP fetcher
Timeout header 15000ms (15s)
"_ua": "ChatGPT-User/1.0; +https://openai.com/bot"
"X-Envoy-Expected-Rq-Timeout-Ms": 15000
"_ip": "20.215.220.188"

🎯 Sentinel visibility

✓ STATIC_HTML
✓ NOSCRIPT
✓ TEMPLATE

Key insight: ChatGPT is transparent about its capabilities and limitations. It parses raw HTML source without any JS execution.

📋 Crawler profile

Vendor Anthropic
User-Agent Claude-User/1.0
Identification Honest (identifies as bot)
JavaScript No execution
Type Simple HTTP fetcher
Compression gzip, deflate (conservative)
"_ua": "Claude-User/1.0; +Claude-User@anthropic.com"
"Accept-Encoding": "gzip, deflate"
"_ip": "34.162.230.222"

🎯 Sentinel visibility

✓ STATIC_HTML
✓ NOSCRIPT
✓ TEMPLATE

Key insight: Claude behaves identically to ChatGPT: honest identification, raw HTML parsing, no JS. More conservative compression headers (no brotli/zstd).

📋 Crawler profile

Vendor Google
User-Agent "Google" (minimal)
Identification Partial (just "Google")
JavaScript No execution
Type HTTP fetcher (on-demand)
"_ua": "Google"
"Accept": "*/*"
"_ip": "142.250.88.34"

🎯 Sentinel visibility

✓ STATIC_HTML
✓ NOSCRIPT
✓ TEMPLATE

Key insight: Gemini initially hallucinated content based on URL inference. Only fetched the actual page when explicitly prompted to "fetch the content". Results identical to ChatGPT/Claude once it actually crawls.

📋 Crawler profile

Vendor Perplexity AI
User-Agent Perplexity-User/1.0
Identification Honest (identifies as bot)
JavaScript No execution
Status BROKEN (compression issue)
Headers Empty Accept-Encoding
"_ua": "Perplexity-User/1.0"
"Accept": "" // EMPTY!
"Accept-Encoding": "" // EMPTY!
"_ip": "18.97.43.86"

🎯 Sentinel visibility

Recommendation: To make your content accessible to Perplexity, disable gzip/brotli/zstd compression for requests with "Perplexity" in the User-Agent, or for requests with empty Accept-Encoding headers. See the integration recommendations section for server configuration examples.

📋 Crawler profile

Vendor Google
User-Agent N/A (no crawler)
Identification N/A
JavaScript N/A
Type Index-only (NO live fetch)
Data source Google Search Index only
// NO server logs generated
// AI Mode does not fetch URLs
// It only uses pre-indexed content from Google Search

🎯 Sentinel visibility

Key insight: Google AI Mode (AI Overviews) CANNOT fetch URLs at all. It only works with content already indexed by Google Search. For non-indexed pages, it either refuses to answer or hallucinates based on URL patterns. The ONLY solution is to get your page indexed by Google.

Détails techniques

📊 Matrice des capacités

Agent User-Agent Headers JS fetch() Shadow open Shadow closed iframe template noscript Délai max
Bing Copilot Stealth Chrome ~53ms
Grok (xAI) Stealth multi-IP ~2s
DeepSeek Stealth Firefox zh-CN ~1s
ChatGPT ChatGPT-User n/a
Claude Claude-User n/a
Gemini "Google" n/a
Perplexity Perplexity-User ✗ Vides n/a
AI Mode Aucun (pas de fetch) n/a n/a

🔍 Détails des agents

📋 Profil du crawler

Éditeur Microsoft
User-Agent Chrome/142 Windows (furtif)
Identification Aucune (mode furtif)
JavaScript Exécution complète
Architecture Multi-IP distribuée
Timeout page ~53ms (très court !)
"_ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/142.0.7444.162"
"_ip": "64.71.166.35", "136.117.88.119"
"beacon.elapsed": 53

🎯 Visibilité des sentinelles

✓ STATIC_HTML
✓ JS_INLINE
✓ SHADOW_OPEN
✓ IFRAME_SRC
✓ IFRAME_SRCDOC
✓ DATA_ATTR
✓ TEMPLATE

Point clé : Bing Copilot est le SEUL agent capable de lire le Shadow DOM (mode open) et le contenu des iframes. Cependant, son timeout extrêmement court (~53ms) fait qu'il rate tout contenu différé.

📋 Profil du crawler

Éditeur xAI
User-Agent Chrome/139 macOS + Safari iOS
Identification Aucune (mode furtif)
JavaScript Exécution complète
Architecture Scouts (Safari) + Renderers (Chrome)
Timeout page ~2 secondes
// Scout (pré-fetch léger)
"_ua": "iPhone iOS 18.0 Safari/604.1"
// Renderer (navigateur complet)
"_ua": "Chrome/139.0.0.0 Safari/537.36"
"_ip": "170.23.25.135"

🎯 Visibilité des sentinelles

✓ STATIC_HTML
✓ NOSCRIPT
✓ JS_INLINE
✓ JS_DELAY
✓ FETCH
✓ DATA_ATTR

Point clé : Grok parse le DOM rendu (pas le code source HTML), ce qui explique pourquoi il voit noscript mais pas le contenu template. Attend jusqu'à 2s pour le JS différé.

📋 Profil du crawler

Éditeur DeepSeek (Chine)
User-Agent Firefox/128.0 Linux
Identification Aucune (mode furtif)
JavaScript Exécution complète
Infrastructure Huawei Cloud Hong Kong
Timeout page ~1 seconde
"_ua": "Firefox/128.0 (Linux x86_64)"
"Accept-Language": "zh-CN,zh"
"_ip": "119.8.27.93"

🎯 Visibilité des sentinelles

✓ STATIC_HTML
✓ JS_INLINE
✓ FETCH
✓ DATA_ATTR
✓ TEMPLATE

Point clé : DeepSeek parse le code source HTML après exécution JS partielle, ce qui explique pourquoi il voit template (HTML brut) mais pas noscript (JS activé). Timeout plus court que Grok (~1s).

📋 Profil du crawler

Éditeur OpenAI
User-Agent ChatGPT-User/1.0
Identification Honnête (s'identifie comme bot)
JavaScript Pas d'exécution
Type Simple fetcher HTTP
Header timeout 15000ms (15s)
"_ua": "ChatGPT-User/1.0; +https://openai.com/bot"
"X-Envoy-Expected-Rq-Timeout-Ms": 15000
"_ip": "20.215.220.188"

🎯 Visibilité des sentinelles

✓ STATIC_HTML
✓ NOSCRIPT
✓ TEMPLATE

Point clé : ChatGPT est transparent sur ses capacités et limitations. Il parse le code source HTML brut sans aucune exécution JS.

📋 Profil du crawler

Éditeur Anthropic
User-Agent Claude-User/1.0
Identification Honnête (s'identifie comme bot)
JavaScript Pas d'exécution
Type Simple fetcher HTTP
Compression gzip, deflate (conservateur)
"_ua": "Claude-User/1.0; +Claude-User@anthropic.com"
"Accept-Encoding": "gzip, deflate"
"_ip": "34.162.230.222"

🎯 Visibilité des sentinelles

✓ STATIC_HTML
✓ NOSCRIPT
✓ TEMPLATE

Point clé : Claude se comporte de manière identique à ChatGPT : identification honnête, parsing HTML brut, pas de JS. Headers de compression plus conservateurs (pas de brotli/zstd).

📋 Profil du crawler

Éditeur Google
User-Agent "Google" (minimal)
Identification Partielle (juste "Google")
JavaScript Pas d'exécution
Type Fetcher HTTP (à la demande)
"_ua": "Google"
"Accept": "*/*"
"_ip": "142.250.88.34"

🎯 Visibilité des sentinelles

✓ STATIC_HTML
✓ NOSCRIPT
✓ TEMPLATE

Point clé : Gemini a d'abord halluciné du contenu basé sur l'inférence de l'URL. Il n'a récupéré la page qu'après un prompt explicite "fetch the content". Résultats identiques à ChatGPT/Claude une fois qu'il crawle vraiment.

📋 Profil du crawler

Éditeur Perplexity AI
User-Agent Perplexity-User/1.0
Identification Honnête (s'identifie comme bot)
JavaScript Pas d'exécution
Statut CASSÉ (problème compression)
Headers Accept-Encoding vide
"_ua": "Perplexity-User/1.0"
"Accept": "" // VIDE !
"Accept-Encoding": "" // VIDE !
"_ip": "18.97.43.86"

🎯 Visibilité des sentinelles

Recommandation : Pour rendre votre contenu accessible à Perplexity, désactivez la compression gzip/brotli/zstd pour les requêtes avec "Perplexity" dans le User-Agent, ou pour les requêtes avec des headers Accept-Encoding vides. Voir la section recommandations d'intégration pour des exemples de configuration serveur.

📋 Profil du crawler

Éditeur Google
User-Agent N/A (pas de crawler)
Identification N/A
JavaScript N/A
Type Index uniquement (PAS de fetch live)
Source données Index Google Search uniquement
// AUCUN log serveur généré
// AI Mode ne fetch pas les URLs
// Il utilise uniquement le contenu pré-indexé de Google Search

🎯 Visibilité des sentinelles

Point clé : Google AI Mode (AI Overviews) NE PEUT PAS fetch d'URLs du tout. Il fonctionne uniquement avec le contenu déjà indexé par Google Search. Pour les pages non indexées, il refuse de répondre ou hallucine en se basant sur les patterns d'URL. La SEULE solution est de faire indexer votre page par Google.

Integration recommendations

Practical guidance for making your content visible to AI assistants

Navigation menus

Hamburger menus and mobile navigation are often JavaScript-dependent or use CSS transforms that hide content from crawlers.

<!-- BAD: JS-only menu -->
<nav id="menu" class="hidden">...</nav>

<!-- GOOD: Static + noscript fallback -->
<nav>
  <ul>
    <li><a href="/services">Services</a></li>
    <li><a href="/about">About</a></li>
  </ul>
</nav>
MethodChatGPT/Claude/GeminiGrok/DeepSeekBing
Static <nav>
JS toggle menu
CSS :hover only

Dynamic content loading

Content loaded via JavaScript (React, Vue, AJAX) is invisible to most AI crawlers. Always provide static fallbacks.

<!-- Include noscript fallback -->
<div id="product-list">
  <!-- JS will populate this -->
</div>

<noscript>
  <div class="product">
    <h3>Product Name</h3>
    <p>$99 - Full description...</p>
  </div>
</noscript>
MethodChatGPT/Claude/GeminiGrok/DeepSeekBing
Static HTML
<noscript>~
JS immediate
JS delayed >2s

🪟 Modals and overlays

Popup content, cookie banners, and modal dialogs are typically invisible because they require user interaction or are hidden by default.

<!-- BAD: Hidden modal content -->
<div class="modal hidden">
  Important pricing info...
</div>

<!-- GOOD: Content in page + modal for UX -->
<section id="pricing">
  <h2>Pricing</h2>
  <p>Starting at $99/month...</p>
</section>
MethodChatGPT/Claude/GeminiGrok/DeepSeekBing
Inline content
display:none modal
JS-triggered popup

📦 Iframes and embeds

Embedded content (videos, maps, forms, widgets) is invisible to almost all AI crawlers. Only Bing Copilot can read iframe content.

<!-- Iframe alone = invisible to most -->
<iframe src="/booking-form"></iframe>

<!-- Add static description -->
<section>
  <h2>Book an Appointment</h2>
  <p>Schedule online or call us at...</p>
  <iframe src="/booking"></iframe>
</section>
MethodChatGPT/Claude/GeminiGrok/DeepSeekBing
iframe src
iframe srcdoc
YouTube embed~
Static description

👻 Web components and Shadow DOM

Shadow DOM is a universal blind spot. Even Bing can only read "open" mode. Use Shadow DOM for styling isolation, not for hiding important content.

<!-- Content in Shadow DOM = invisible -->
<product-card>
  <!-- Shadow root content here -->
</product-card>

<!-- Better: Slot-based with light DOM fallback -->
<product-card>
  <h3 slot="title">Product</h3>
  <p slot="desc">Description</p>
</product-card>
MethodChatGPT/Claude/GeminiGrok/DeepSeekBing
Light DOM
Shadow (open)
Shadow (closed)
Slotted content

📊 Structured data and JSON-LD

JSON-LD in script tags is NOT directly extracted by HTML-only user-mode crawlers (ChatGPT-User, Claude-User, Gemini). However, indexing and training bots (GPTBot, ClaudeBot, OAI-SearchBot, etc.) which are outside the scope of this study may have JS rendering capabilities and could potentially extract JSON-LD content.

<!-- JSON-LD: Good for SEO, not for AI crawlers -->
<script type="application/ld+json">
{
  "@type": "Product",
  "name": "Widget Pro"
}
</script>

<!-- Always duplicate in visible HTML -->
<h1>Widget Pro</h1>
MethodChatGPT/Claude/GeminiGrok/DeepSeekAI Mode
JSON-LD script✓*
Visible HTML✓*
Microdata✓*

* Only if page is indexed by Google

✅ AI Search best practices checklist

  • Put all critical content in static HTML (visible to everyone)
  • Use <noscript> fallbacks for JS-dependent content (ChatGPT, Claude, Gemini)
  • Keep important content loading under 2 seconds (Grok limit)
  • Avoid Shadow DOM for important content (universal blind spot)
  • Duplicate iframe content as static text on the page
  • Disable compression for Perplexity-User (or requests with empty Accept-Encoding)
  • Get your pages indexed by Google (required for AI Mode and ChatGPT that uses Google index)
  • Don't rely on modals or popups for critical information

Recommandations d'intégration

Guide pratique pour rendre votre contenu visible aux assistants IA

Menus de navigation

Les menus hamburger et la navigation mobile dépendent souvent du JavaScript ou utilisent des transformations CSS qui masquent le contenu aux crawlers.

<!-- MAUVAIS : menu JS uniquement -->
<nav id="menu" class="hidden">...</nav>

<!-- BON : Statique + fallback noscript -->
<nav>
  <ul>
    <li><a href="/services">Services</a></li>
    <li><a href="/a-propos">À propos</a></li>
  </ul>
</nav>
MéthodeChatGPT/Claude/GeminiGrok/DeepSeekBing
<nav> statique
Menu toggle JS
CSS :hover seul

Chargement de contenu dynamique

Le contenu chargé via JavaScript (React, Vue, AJAX) est invisible pour la plupart des crawlers IA. Prévoyez toujours des fallbacks statiques.

<!-- Inclure un fallback noscript -->
<div id="liste-produits">
  <!-- JS remplira ceci -->
</div>

<noscript>
  <div class="produit">
    <h3>Nom du produit</h3>
    <p>99€ - Description complète...</p>
  </div>
</noscript>
MéthodeChatGPT/Claude/GeminiGrok/DeepSeekBing
HTML statique
<noscript>~
JS immédiat
JS différé >2s

🪟 Modales et calques

Le contenu des popups, bannières cookies et dialogues modaux est généralement invisible car il nécessite une interaction utilisateur ou est masqué par défaut.

<!-- MAUVAIS : contenu modal caché -->
<div class="modal hidden">
  Infos tarifs importantes...
</div>

<!-- BON : Contenu dans la page + modal pour l'UX -->
<section id="tarifs">
  <h2>Tarifs</h2>
  <p>À partir de 99€/mois...</p>
</section>
MéthodeChatGPT/Claude/GeminiGrok/DeepSeekBing
Contenu inline
Modal display:none
Popup déclenché JS

📦 Iframes et embeds

Le contenu embarqué (vidéos, cartes, formulaires, widgets) est invisible pour presque tous les crawlers IA. Seul Bing Copilot peut lire le contenu des iframes.

<!-- Iframe seule = invisible pour la plupart -->
<iframe src="/formulaire-rdv"></iframe>

<!-- Ajouter une description statique -->
<section>
  <h2>Prendre rendez-vous</h2>
  <p>Réservez en ligne ou appelez-nous au...</p>
  <iframe src="/booking"></iframe>
</section>
MéthodeChatGPT/Claude/GeminiGrok/DeepSeekBing
iframe src
iframe srcdoc
Embed YouTube~
Description statique

👻 Web components et Shadow DOM

Le Shadow DOM est un angle mort universel. Même Bing ne peut lire que le mode "open". Utilisez le Shadow DOM pour l'isolation des styles, pas pour masquer du contenu important.

<!-- Contenu dans Shadow DOM = invisible -->
<product-card>
  <!-- Contenu shadow root ici -->
</product-card>

<!-- Mieux : Slots avec fallback light DOM -->
<product-card>
  <h3 slot="title">Produit</h3>
  <p slot="desc">Description</p>
</product-card>
MéthodeChatGPT/Claude/GeminiGrok/DeepSeekBing
Light DOM
Shadow (open)
Shadow (closed)
Contenu slotté

📊 Données structurées et JSON-LD

Le JSON-LD dans les balises script n'est PAS directement extrait par les crawlers user-mode HTML uniquement (ChatGPT-User, Claude-User, Gemini). Cependant, les bots d'indexation et d'entraînement (GPTBot, ClaudeBot, OAI-SearchBot, etc.) qui sont hors du périmètre de cette étude peuvent avoir des capacités de rendu JS et pourraient potentiellement extraire le contenu JSON-LD.

<!-- JSON-LD : Bon pour le SEO, pas pour les crawlers IA -->
<script type="application/ld+json">
{
  "@type": "Product",
  "name": "Widget Pro"
}
</script>

<!-- Toujours dupliquer dans le HTML visible -->
<h1>Widget Pro</h1>
MéthodeChatGPT/Claude/GeminiGrok/DeepSeekAI Mode
Script JSON-LD✓*
HTML visible✓*
Microdata✓*

* Uniquement si la page est indexée par Google

✅ Checklist des bonnes pratiques AI Search

  • Mettez tout le contenu critique en HTML statique (visible par tous)
  • Utilisez des fallbacks <noscript> pour le contenu JS (ChatGPT, Claude, Gemini)
  • Gardez le chargement du contenu important sous 2 secondes (limite Grok)
  • Évitez le Shadow DOM pour le contenu important (angle mort universel)
  • Dupliquez le contenu des iframes en texte statique sur la page
  • Désactivez la compression pour Perplexity-User (ou requêtes avec Accept-Encoding vide)
  • Faites indexer vos pages par Google (requis pour AI Mode et ChatGPT qui utilise l'index Google)
  • Ne comptez pas sur les modales ou popups pour les infos critiques