# getvivio.com # # Politique : indexation et citation souhaitees, entrainement refuse. # Le blocage effectif des robots indesirables est gere dans Cloudflare # (AI Crawl Control). Ce fichier declare l'intention ; il ne l'applique pas. # # ATTENTION AVANT DE MODIFIER CE FICHIER # Un robot n'obeit QU'AU SEUL groupe le plus specifique qui le nomme : des qu'un # groupe "User-Agent: " existe, le groupe "*" est integralement ignore pour # lui, Content-Signal compris. La directive Content-Signal doit donc etre repetee # dans CHAQUE groupe. Sans cette repetition, le "ai-train=no" du groupe "*" ne # s'adressait qu'aux robots qui ne le lisent pas, et les treize robots nommes # ci-dessous - c'est-a-dire exactement ceux que la politique vise - recevaient un # "Allow: /" nu, donc une autorisation sans reserve. User-Agent: * Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / # /opengraph-image N'EST PAS bloque ici, et ne doit pas l'etre. # # Cette adresse sert l'unique vignette de partage du site. Elle est declaree en # "og:image" sur TOUTES les pages, et en "image" dans le JSON-LD Article des 42 # articles de blog - aucun article n'ayant d'illustration propre, les 42 # pointent dessus. # # Un "Disallow: /opengraph-image" y figurait, avec l'intention de garder ce PNG # hors de l'index. Il produisait deux degats, tous deux invisibles cote serveur : # - les robots de partage (facebookexternalhit, Twitterbot, LinkedIn, Slack, # WhatsApp) respectent robots.txt : ils ne pouvaient pas chercher l'image, et # chaque page partagee s'affichait donc en lien nu, sans vignette. C'est # exactement le defaut que lib/seo.ts corrige page par page, annule ici d'un # seul trait pour le site entier ; # - Google exige que l'image d'un Article soit explorable. Bloquee, les 42 # donnees structurees Article deviennent invalides et perdent leur affichage # enrichi. # # L'intention d'origine reste satisfaite, et par le bon outil : next.config.mjs # pose "X-Robots-Tag: noindex, nofollow" sur /opengraph-image. Cet en-tete garde # le PNG hors de l'index tout en autorisant sa lecture - mais il n'est lisible # que si l'exploration est permise. Les deux mecanismes se contredisaient : le # robots.txt empechait Google de lire l'en-tete cense faire le travail. # Cloudflare genere ces chemins pour masquer les adresses e-mail des pages # legales (mentions, RGPD, contact DPO). Google les explorait et les comptait # en 404 : /cdn-cgi/l/email-protection et deux chemins encodes. # On bloque l'exploration plutot que de desactiver l'obfuscation, qui protege # des adresses reelles que le RGPD nous oblige a publier. Disallow: /cdn-cgi/ # /api/health repond du JSON en 200 a toute requete GET, et /api/rgpd n'accepte # que POST. Aucune des deux n'a de contenu a indexer ; explorees, elles # consomment du budget d'exploration et /api/health peut finir dans l'index # comme "page sans contenu". Rien ne les lie depuis le site, mais un robot les # tente par convention. # # NB : ce Disallow ne vaut que pour le groupe "*", donc pour Googlebot et les # robots non nommes plus bas — voir l'avertissement en tete de fichier. C'est # exactement le perimetre voulu : les moteurs des assistants IA n'ont aucune # raison d'aller y chercher quoi que ce soit, et leur repeter la consigne # alourdirait un fichier dont chaque groupe doit deja porter Content-Signal. Disallow: /api/ # --- Moteurs de recherche des assistants IA --- # Ce sont eux qui vont chercher une page au moment ou un utilisateur # pose une question. Ce sont donc eux qui decident si Vivio est cite. # Exploration autorisee, usage en entrainement refuse. User-Agent: OAI-SearchBot Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / User-Agent: ChatGPT-User Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / User-Agent: GPTBot Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / User-Agent: Claude-SearchBot Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / User-Agent: Claude-User Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / User-Agent: ClaudeBot Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / User-Agent: PerplexityBot Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / User-Agent: Perplexity-User Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / User-Agent: MistralAI-User Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / User-Agent: DuckAssistBot Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / User-Agent: Meta-ExternalFetcher Content-Signal: search=yes, ai-input=yes, ai-train=no Allow: / # --- Jetons dedies a l'entrainement --- # Ces deux user-agents n'explorent rien par eux-memes : ils ne servent qu'a # exprimer une preference d'entrainement, et cette preference s'exprime par la # ligne Allow/Disallow elle-meme. Ici, "Allow: /" ne voulait donc pas dire # "tu peux explorer" mais "tu peux entrainer tes modeles sur ce site" - soit # l'inverse exact de l'en-tete de ce fichier, adresse aux deux seuls robots # pour qui la question se posait. D'ou le Disallow. # # Google-Extended : couvre l'entrainement de Gemini et l'ancrage dans # Gemini / Vertex AI. Il ne couvre PAS la recherche Google ni les AI Overviews, # qui dependent de Googlebot : le referencement naturel, seule source # d'acquisition du site, n'est pas affecte par ce Disallow. User-Agent: Google-Extended Content-Signal: search=yes, ai-input=yes, ai-train=no Disallow: / # Applebot-Extended : couvre uniquement l'entrainement des modeles Apple. # Siri et Spotlight continuent de voir le site via Applebot, non restreint ici. User-Agent: Applebot-Extended Content-Signal: search=yes, ai-input=yes, ai-train=no Disallow: / Sitemap: https://getvivio.com/sitemap.xml