Hier, j'ai mesuré ce que trente hôtes français déclarent dans leur sitemap. Conclusion : le fichier dit où sont les pages et quand elles ont changé, et le second champ est massivement faux.

Il existe un deuxième fichier qui dit quand une page est apparue. Il est plus vieux, on l'enterre régulièrement depuis la fermeture de Google Reader en 2013, et il a une propriété que le sitemap n'a pas : il peut transporter le texte.

Le 21 septembre 2026, j'ai relevé neuf flux RSS français et internationaux, sondé trente hôtes à six chemins conventionnels, et testé chaque flux avec six agents différents.

Le résultat que je n'attendais pas tient en une ligne. Chez Le Monde, un robot qui demande l'article reçoit 402 Payment Required. Le même robot qui demande le flux reçoit 200, avec le résumé de l'article dedans.

Ce que la SERP « flux rss » raconte

Relevé du 21 septembre 2026 sur Google France, langue française.

« flux rss » pèse 5 400 recherches mensuelles, concurrence publicitaire à l'indice 1 pour un CPC de 1,73 €. Autour : « rss » 5 400, « rss feed » 880, « créer un flux rss » 140, « lecteur rss » 110, « agrégateur rss » 70, « flux rss wordpress » 50, « atom rss » 30, « rss seo » 10.

Un piège de donnée, à signaler avant de sommer quoi que ce soit. « fil rss » affiche aussi 5 400, et sa série mensuelle est identique à la virgule près à celle de « flux rss » : 2 400, 2 400, 3 600, 4 400, 4 400, 5 400… Ce n'est pas une coïncidence, c'est le regroupement de synonymes de Google Ads. Les deux termes sont un seul volume affiché deux fois. La série de « rss » est différente (3 600, 3 600, 4 400…), elle compte donc séparément. Additionner les trois donnerait 16 200 et serait faux.

La tendance, elle, est franche et va dans un seul sens :

flux rss, recherches mensuelles
sept. 2025  6 600   ████████████████
déc.  2025  5 400   █████████████
mars  2026  5 400   █████████████
juin  2026  3 600   ████████
août  2026  2 400   ██████          -64 % sur douze mois

Les neuf résultats organiques : le portail de la fonction publique, Le Monde (« Les flux RSS du Monde », 14 juillet 2025), Wikipédia, rss.app, un tutoriel de la bibliothèque de Rennes 2, le support Microsoft, h2a-france.org, le Journal du Net, le Sénat.

Les neuf s'adressent au lecteur. Comment s'abonner, quel agrégateur choisir, où cliquer sur l'icône orange. Aucun ne s'adresse à l'éditeur, et aucun ne mentionne une machine qui lirait le fichier pour autre chose que l'afficher à un humain.

L'Aperçu IA suit exactement la même pente : six références, trois outils recommandés (Feedly, Inoreader, Zotero), et cette sortie :

« Si vous le souhaitez, je peux vous expliquer : comment configurer un lecteur de flux RSS étape par étape ; où trouver le bouton RSS sur les sites que vous lisez. »

C'est la cinquième fois consécutive qu'un Aperçu IA sur une requête technique se termine en demandant à qui il parle. « Erreur 503 » le 17, « erreur 403 » le 18, « captcha » le 19, « sitemap » le 20, « flux rss » le 21. Sur ces cinq sujets, le corpus français ne lui permet toujours pas de trancher entre le visiteur et l'exploitant du site.

Le protocole

Trente hôtes français, la même liste que les 17, 18, 19 et 20 septembre. Cinquième réemploi, et cette fois il y a une raison précise : la mesure d'hier a établi ce que chaque hôte déclare dans son sitemap. Reprendre la liste permet de poser la seule question qui m'intéresse, à savoir si le flux dit la même chose que le sitemap, ou mieux.

Trois passes :

1. decouverte  ->  <link rel="alternate" type="application/rss+xml"> dans le <head>
2. convention  ->  /rss /feed /rss.xml /feed.xml /atom.xml /index.xml
                   sur l'apex et sur www, soit 360 requetes
3. lecture     ->  chaque flux trouve, avec 6 agents, puis analyse du contenu

Les six agents : Chrome, GPTBot, ClaudeBot, PerplexityBot, une chaîne Googlebot, et Feedly, le lecteur de flux, présent comme témoin. Il sert à séparer deux choses qu'on confond : refuser un robot d'IA, et refuser un client qui n'est pas un navigateur.

Précautions héritées des relevés précédents : tout passe par un décodage tolérant avant comptage (le flux du Sénat n'est pas en UTF-8 et a fait planter mon analyseur au premier passage), les blocs CDATA sont dépliés avant de compter les mots, et les comptages de documentation ont été refaits en Python sur le texte détagué après une première passe en grep.

La découverte standard est morte : 2 sur 21

Un flux se déclare de façon normalisée, dans le <head>, avec <link rel="alternate" type="application/rss+xml">. C'est le mécanisme normalisé de découverte automatique. Il est lisible sans exécuter de JavaScript, ce qui compte pour des robots qui n'en exécutent pas.

Sur les trente hôtes, vingt et un ont servi leur page d'accueil en 200. Parmi ces vingt et un, deux portent cette balise :

Hôte Flux déclaré
lemonde.fr https://www.lemonde.fr/rss/une.xml
abondance.com https://www.abondance.com/feed

Dix-neuf sur vingt et un n'ont aucun lien de découverte. Une machine qui arrive sur ces pages d'accueil n'a aucun moyen normalisé d'apprendre qu'un flux existe.

Reste la convention. Trois cent soixante requêtes, et voici la distribution complète :

404  176      403  125      000   24
200   23      406    8      402    4

Sur les vingt-trois codes 200, cinq seulement renvoient réellement du XML de flux, et ils appartiennent à deux hôtes : ouest-france.fr/rss.xml et abondance sur quatre variantes d'adresse.

Les dix-huit autres 200 sont du HTML. francetvinfo.fr en fournit le cas d'école : /rss, /rss.xml, /feed.xml, /atom.xml et /index.xml répondent tous 200 en text/html. C'est une règle attrape-tout, et c'est le 200 creux déjà mesuré sur les murs anti-robots puis sur les sitemaps : un outil qui vérifie « le flux répond-il ? » en lisant le code HTTP valide ces cinq adresses.

Deux anomalies méritent leur nom.

urssaf.fr répond 500 sur /accueil/actualites.rss, avec 319 045 octets de HTML dans le corps. Une erreur serveur de 319 ko.

lemonde.fr répond 406 Not Acceptable sur /rss.xml, /feed.xml, /atom.xml et /index.xml. Et sur /rss, il répond autre chose.

Le 402 du Monde

https://www.lemonde.fr/rss renvoie un code que l'on ne croise presque jamais en production :

HTTP/2 402
retry-after: 0
content-type: text/html
via: 1.1 varnish

402 Payment Required. Trois tentatives, trois fois le même code, corps de 4 200 octets, titre « Accès restreint - Le Monde ». Verbatim :

« Votre trafic a été identifié comme automatisé (bot). Si vous êtes partenaire autorisé, abonné au Monde, ou si vous souhaitez obtenir une autorisation d'accès à ce contenu, merci de contacter : licensing[@]groupelemonde.fr en joignant une copie de cette page d'erreur, incluant votre adresse IP et votre identifiant de requête (RID). »

Deux choses à relever.

La première, c'est que le 402 est ici employé au sens littéral, et à ma connaissance c'est rare : ce n'est pas un refus technique, c'est un tarif. La page ne dit pas « vous n'avez pas le droit », elle dit « écrivez au service des licences ». Le mur n'est pas dans le pare-feu, il est dans le contrat.

La seconde, c'est l'en-tête retry-after: 0. Retry-After est un en-tête standard, défini par la RFC 9110, et l'article du 17 septembre avait établi qu'aucun éditeur de moteur, Google compris, n'écrit ce qu'un robot doit en faire. En voici un en production, posé à zéro sur un refus qui n'a rien de temporaire. Un robot qui suivrait cet en-tête à la lettre reviendrait immédiatement, et indéfiniment.

Et pendant ce temps, https://www.lemonde.fr/rss/une.xml répond 200 à tout le monde.

Neuf flux, un seul porte le texte

Voici les neuf flux exploitables trouvés le 21 septembre, avec ce qu'il y a dedans. « Mots » est la médiane du texte utile par entrée, CDATA déplié et balises retirées.

Flux Entrées Datées Texte intégral Mots (médiane) Plage de dates
lemonde.fr 16 16/16 non 31 20 → 21 sept.
lefigaro.fr 20 20/20 non 30 20 → 21 sept.
ouest-france.fr 10 10/10 oui (mais court) 40 19 → 21 sept.
franceinfo.fr 25 25/25 non 27 20 → 21 sept.
abondance.com 10 10/10 oui 1 367 14 → 18 sept.
senat.fr 5 5/5 non 5 7 → 20 sept.
blog.ovhcloud.com 20 20/20 non 27 7 juil. → 9 sept.
developers.google.com 10 10/10 non 44 15 mai → 16 sept.
openai.com/news 1 210 1 210/1 210 non 22 11 déc. 2015 → 18 sept. 2026

Trois lectures.

Un flux sur neuf transporte l'article. Abondance publie 1 367 mots par entrée en médiane, jusqu'à 5 208 pour la plus longue, dans un champ content:encoded. Les huit autres tiennent entre 5 et 44 mots. Le Sénat, avec 5 mots médians, ne publie guère plus qu'un titre répété.

Ouest-France mérite une nuance : le champ content:encoded est bien présent sur 10 entrées sur 10, mais il contient 40 mots. La balise du texte intégral sans le texte intégral.

Neuf flux sur neuf datent 100 % de leurs entrées. C'est le contraste avec la mesure d'hier. Le lastmod du sitemap était absent chez plusieurs hôtes du panel, gelé chez d'autres, ou posé à la même seconde sur des milliers d'URL. Ici, pas un seul item sans pubDate. La raison est structurelle : une date de publication est un fait que le CMS connaît, alors qu'une date de dernière modification significative est un jugement qu'il doit rendre. Le flux pose la question facile.

Le fichier d'OpenAI est un cas à part, et j'y reviens plus bas : 1 210 entrées remontant au 11 décembre 2015, l'intégralité de l'archive dans un seul fichier.

Deux défauts d'hygiène, tant qu'on est dans le fichier.

ouest-france.fr émet ses <link> avec des paramètres utm_ sur 10 entrées sur 10. Les huit autres flux : zéro. Une machine qui lit ce flux repart avec une adresse balisée, pas avec l'adresse canonique. C'est le sujet même de l'article du 13 septembre.

franceinfo.fr fait pire, et plus discrètement. Chaque <link> et chaque <guid> se termine par #xtor=RSS-3-[lestitres]. Les crochets ne sont pas échappés. La RFC 3986 les classe parmi les caractères réservés et ne les autorise que dans la partie hôte, pour les adresses IPv6 littérales. curl refuse net les adresses telles qu'elles sortent du flux : il a fallu retirer le fragment à la main pour tester ces articles. L'identifiant unique de chaque entrée du flux de franceinfo est une URL non conforme.

Le flux est ouvert, l'article est fermé

C'est la mesure centrale, et c'est celle qui change quelque chose.

Pour chaque flux, j'ai pris la première entrée, extrait son lien, et demandé le flux et l'article avec les mêmes quatre agents. Codes HTTP et nombre de mots réellement lisibles dans le corps :

Hôte Agent Flux Article
lemonde.fr Chrome 200 402 (111 mots de notice)
GPTBot 200 402 (111 mots)
ClaudeBot 200 200 (37 mots)
PerplexityBot 200 200 (37 mots)
ouest-france.fr les 4 200 403 (44 mots)
lefigaro.fr Chrome 200 200 (2 549 mots)
GPTBot / Claude / Perplexity 403 403 (16 mots)
senat.fr Chrome / Claude / Perplexity 200 200 (1 146 mots)
GPTBot 429 429 (3 mots)
abondance.com les 4 200 200 (2 810 mots)

Lisez la première ligne lentement.

Chez Le Monde, aucun des quatre agents ne peut lire l'article. Chrome et GPTBot se prennent le 402 des licences. ClaudeBot et PerplexityBot obtiennent un 200, mais le corps fait 37 mots : l'amorce, avant le paywall. Et les quatre obtiennent le flux, qui contient une description de 31 mots rédigée par la rédaction.

Autrement dit : le seul texte du Monde qu'une machine peut lire aujourd'hui sur cet article, c'est le résumé du flux. Pas parce que Le Monde l'a voulu ainsi, mais parce que le mur a été posé sur /rss, sur les articles et sur le site, et pas sur /rss/une.xml.

Ouest-France est encore plus net : son article renvoie 403 aux quatre agents, navigateur compris, tandis que son flux répond 200 à tous. Sur cet hôte, l'unique voie d'accès machine au contenu du jour est un flux de 10 entrées à 40 mots.

Le Figaro et le Sénat sont, eux, cohérents : ce qu'ils refusent, ils le refusent des deux côtés.

Ce qui déclenche le refus : le nom, pas le comportement

Le Figaro bloque le flux pour cinq agents sur six. J'ai voulu savoir sur quoi porte la règle. Neuf requêtes sur la même adresse, en ne changeant que la chaîne d'agent :

Chaîne d'agent envoyée Code
Chrome 140 200
curl/8.7.1 200
(chaîne vide) 200
Mozilla/5.0 (compatible; Xyzzy/9.9) 200
Feedly/1.0 (+http://www.feedly.com/fetcher.html) 200
Chrome 140 + GPTBot/1.2 403
Chrome 140 + PerplexityBot/1.0 403
Chrome 140 + Googlebot/2.1 403
GPTBot seul, et gptbot en minuscules 403
La vraie chaîne de Feedly, qui contient like FeedFetcher-Google 403

Le filtre ne regarde pas si vous êtes un robot. Il regarde si vous dites que vous en êtes un. Une chaîne vide passe. curl passe. Un nom inventé passe. Un nom connu est refusé, y compris en minuscules, y compris quand il apparaît en fin d'une chaîne Chrome par ailleurs valide.

C'est le même déclencheur que celui mesuré chez leboncoin le 19 septembre, appliqué cette fois à un flux. franceinfo se comporte à l'identique : chaîne vide et curl à 200, Chrome + GPTBot à 403.

Deux conséquences.

La première est involontaire et coûte cher : la vraie chaîne d'agent de Feedly est refusée, parce qu'elle contient les mots FeedFetcher-Google par courtoisie historique. Le Figaro refuse donc son flux à l'un des lecteurs de flux les plus répandus, en voulant refuser les robots d'IA. Un lecteur de flux est pourtant précisément le client pour lequel ce fichier existe.

La seconde demande une réserve honnête. Le fait qu'une chaîne contenant Googlebot/2.1 soit refusée ne signifie pas que Google est bloqué. Le vrai Googlebot s'authentifie par résolution DNS inverse depuis des plages d'adresses publiées, et une chaîne envoyée depuis ma connexion n'a aucune raison d'être servie. Ce que la mesure établit, c'est la forme de la règle : elle porte sur une chaîne de caractères. Et une règle qui porte sur une chaîne sert un client anonyme et refuse un client honnête.

Le Sénat, lui, ne refuse pas : il limite. GPTBot reçoit 429 Too Many Requests sur le flux comme sur l'article, quand les trois autres agents reçoivent 200 et 1 146 mots. Vérifié en série, à quatre secondes d'intervalle, pour écarter mon propre parallélisme. La réponse vient d'un répartiteur BigIP, en HTTP/1.0, avec un corps de 17 octets, et sans en-tête Retry-After. Deuxième 429 de la semaine sans le seul en-tête qui dirait quand revenir.

Ce que les éditeurs de moteurs en disent

Comptage de termes sur le texte détagué de six pages de documentation, avec « crawl » et « robots.txt » comme témoins pour prouver qu'il s'agit bien d'un silence sur le sujet et non d'une page vide.

Document rss atom feed websub sitemap crawl robots.txt
Google, build sitemap 12 9 6 1 100 4 15
Google, sitemaps overview 1 0 1 0 23 5 5
Google, AI features 1 0 1 0 4 3 7
OpenAI, bots 1 0 1 0 0 3 11
Anthropic, crawler 0 0 0 0 0 10 5
Perplexity, bots 0 0 0 0 0 1 3

Google est le seul à s'engager, et il s'engage clairement. Verbatim :

« If your CMS generates an RSS or Atom feed, you can submit the feed's URL as a sitemap. »

« Google accepts RSS 2.0 and Atom 1.0 feeds. »

Avec sa réserve, qui compte autant que l'engagement :

« keep in mind that this feed only provides information on recent URLs. »

Et une ligne que presque personne ne cite, qui est la seule mention d'un mécanisme de poussée dans toute cette documentation :

« If you use Atom or RSS, you can use WebSub to broadcast your changes to search engines, including Google. »

Chez Google, votre flux est donc un sitemap recevable, et il peut même prévenir au lieu d'attendre. Chez OpenAI, Anthropic et Perplexity : rien.

L'unique occurrence de « rss » chez OpenAI n'est d'ailleurs pas une instruction, c'est un pied de page. Et c'est là que la mesure devient franchement drôle.

Le flux vide d'OpenAI

La page de documentation des robots d'OpenAI se termine par : « Subscribe to the RSS feed for updates to this page. » Le lien existe. Le fichier existe. Il pèse 399 octets. Le voici en entier :

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>OpenAI crawler updates</title>
    <description>Updates to OpenAI web crawlers and user agents.</description>
    <link>https://developers.openai.com/api/docs/bots</link>
    <atom:link rel="self" type="application/rss+xml"
               href="https://developers.openai.com/api/docs/bots/rss.xml"/>
  </channel>
</rss>

Zéro entrée. Six relevés, trois agents, deux passages chacun, et le même fichier de 399 octets servi aussi sur le second hôte annoncé dans la balise self. Un canal valide, correctement typé, proprement auto-référencé, et vide.

Le contraste est dans la même maison : openai.com/news/rss.xml sert 1 210 entrées remontant au 11 décembre 2015. OpenAI sait publier un flux. Le seul qu'il laisse vide est celui qui vous dirait quand les règles de son robot changent.

Je ne tire pas de cela une thèse sur les intentions d'OpenAI ; un fichier vide est plus souvent un oubli qu'une doctrine. Mais si vous aviez prévu de surveiller ce flux pour savoir quand GPTBot change de comportement, il ne vous préviendra de rien.

Libération : les deux fichiers ont fusionné

Un dernier cas, parce qu'il éclaire le cluster entier.

Le robots.txt de Libération déclare quatre sitemaps, dont trois sous le répertoire /arc/outboundfeeds/. Le nom annonce des flux sortants. J'ai demandé celui de la une :

racine = <urlset>     20 URL     20 lastmod     20 changefreq     20 priority
plage lastmod : 2026-09-19T10:09 -> 2026-09-21T05:22

Ce n'est pas un flux. C'est un sitemap, avec les deux champs que Google déclare ignorer : changefreq et priority. Le fichier que le CMS appelle « outbound feed » est structurellement un fichier de sitemap, servi à l'adresse d'un flux.

Le reste du répertoire est cohérent avec lui-même : le sitemap.xml déclaré est un index de 100 entrées dont les cent lastmod portent la même valeur à la seconde près (2026-09-21T05:54:13), le sitemap_news.xml couvre 100 URL sur trois jours distincts, et le sections-sitemap.xml aligne 159 URL sans un seul lastmod. Quant à liberation.fr/sitemap.xml, il répond 404.

Libération ne publie donc aucun flux RSS. Ce qui en porte le nom est un sitemap, et les dates de ce sitemap-là sont fraîches. Ce qui rappelle, au passage, qu'un même hôte peut servir un fichier de déclaration à jour et trois autres qui ne le sont pas. Juger un site sur un seul de ses fichiers ne dit rien.

Notre propre flux, publié aujourd'hui

Auto-audit, et il était court : ce blog n'avait pas de flux. Quarante-cinq articles, un sitemap correct, et aucun canal de fraîcheur.

C'est corrigé avec cet article. https://www.agencegeoparis.com/feed.xml existe, et il applique exactement ce que la mesure ci-dessus recommande :

  • texte intégral dans content:encoded, médiane 3 511 mots par entrée, pas un teaser de 30 mots ;
  • <link> et <guid isPermaLink="true"> portant l'URL canonique, sans aucun paramètre de suivi ;
  • <pubDate> tiré de la date de l'article, jamais de l'heure de génération, qui est le défaut mesuré hier sur plusieurs sitemaps du panel ;
  • <atom:link rel="self">, encodage UTF-8 déclaré, XML validé au build ;
  • déclaré en <link rel="alternate" type="application/rss+xml"> sur toutes les pages du site, ce que dix-neuf hôtes sur vingt et un ne font pas.
  • servi en application/rss+xml par un en-tête explicite, parce que X-Content-Type-Options: nosniff est actif sur ce domaine et qu'un type approximatif deviendrait alors un fichier illisible.

Vingt articles, 498 ko. C'est lourd pour un flux, et c'est assumé : un fichier qui transporte le texte pèse le poids du texte.

Ce que cet article n'établit pas

Quatre réserves.

Le relevé part d'une seule adresse de sortie en France. Les 403, le 402 et le 429 mesurés ici peuvent tomber autrement pour un robot arrivant depuis les plages d'adresses publiées par son éditeur. Ce que j'établis, c'est la forme des règles, pas leur effet sur le trafic réel de chaque moteur.

Le panel de trente hôtes a été choisi pour un autre sujet. Il mélange presse, administrations, commerce et services, et le flux RSS est d'abord un format de presse. Que Cdiscount ou la MAIF n'en publient pas n'est pas un défaut : ce n'est pas leur usage. La mesure qui compte ici porte sur les hôtes qui en publient un.

Je n'établis nulle part qu'un moteur génératif lit réellement ces flux. Le silence des trois documentations est un silence, pas une preuve de comportement. Établir le contraire demanderait des logs serveur, c'est-à-dire la méthode de l'article du 1er août, et c'est la suite naturelle de celui-ci.

Enfin, neuf flux ne font pas une statistique. Le « un sur neuf porte le texte » décrit ces neuf-là, relevés un lundi matin.

Ce qu'il faut retenir

Le flux RSS n'est pas un levier de citation, pas plus que le sitemap ne l'était hier. Aucune documentation de moteur génératif ne s'engage dessus, et ce blog n'a aucune mesure montrant qu'un flux fait citer une page.

Mais la mesure du jour dit trois choses utiles.

Votre flux est peut-être la seule chose qu'une machine peut lire chez vous. Chez Le Monde et chez Ouest-France, c'est littéralement le cas aujourd'hui : l'article est refusé aux quatre agents testés, le flux leur est servi. Si c'est votre situation, alors les 30 mots de votre résumé sont tout ce qu'un moteur saura de votre article. Écrivez-les comme tels, ou publiez le texte entier.

Vos dates de flux sont justes, et vos dates de sitemap ne le sont probablement pas. Neuf flux sur neuf datent 100 % de leurs entrées, parce qu'une date de publication est un fait. Si vous voulez donner une date crédible à une machine, celle du flux est celle qui tient.

Vérifiez ce que votre mur refuse vraiment. Envoyez trois requêtes à votre propre flux : une en navigateur, une avec une chaîne vide, une avec GPTBot dedans. Si la chaîne vide passe et que GPTBot est refusé, votre filtre porte sur un nom et non sur un comportement, et il refuse probablement aussi Feedly, comme Le Figaro le fait sans le savoir.

Trois minutes de plus, tant que vous y êtes : votre flux est-il déclaré en <link rel="alternate"> ? Dix-neuf hôtes sur vingt et un ont oublié.

Chez Orbite, nous mesurons ce que vos fichiers de déclaration livrent réellement aux robots des moteurs génératifs, agent par agent, code par code, et corps de réponse à l'appui, pas seulement le code HTTP. Si vous voulez savoir ce que les vôtres racontent : parlons de votre visibilité générative. Les termes employés ici sont définis dans le glossaire GEO.

Pour la suite de ce cluster : ce que dit vraiment votre sitemap XML, ce que votre robots.txt autorise vraiment, le fichier llms.txt est-il utile, IndexNow face aux moteurs génératifs et les dates de contenu vues par les moteurs.