IndexNow : la clé, le premier envoi et la lecture de la réponse

IndexNow s’installe avec trois choses : une clé, un fichier texte sur votre hôte et une requête par publication. Ce chapitre donne les trois étapes, le tableau des codes de réponse et un script d’envoi à insérer dans votre publication.

Mise en œuvre6 min de lecture1658 vues
IndexNow : la clé, le premier envoi et la lecture de la réponse

IndexNow est un ping en une requête qui prévient les moteurs participants qu’une URL a été ajoutée, modifiée ou supprimée. Il faut trois choses : une clé, cette clé hébergée dans un fichier texte sur votre propre hôte, et une requête HTTP par publication. Le parcours est gratuit, prend une vingtaine de minutes, et fonctionne aussi bien sur un site statique que sur un CMS.

Ce chapitre suppose que votre page est déjà accessible et déjà dans votre sitemap. Si ce n’est pas confirmé, faites-le avant d’envoyer quoi que ce soit : un ping pour une URL qui renvoie 404 est perdu. La routine de publication en trois étapes de la page checklist de lancement produit couvre ce terrain, et ce chapitre est la version détaillée de sa troisième étape.

Quels moteurs écoutent vraiment

IndexNow est un protocole partagé : une requête atteint tous les participants. La liste est publiée sur indexnow.org et elle est courte.

MoteurSur la liste
Microsoft BingOui
YandexOui
NaverOui
Seznam.czOui
YepOui
GoogleNon listé

Bing est celui qui paie pour les autres. Son index alimente la recherche ChatGPT et Copilot, donc entrer tôt dans Bing est la route la plus courte vers le vivier de sources d’une réponse IA. Google a son propre chemin, et c’est pourquoi l’étape précédente vous fait faire les deux.

Étape 1 — créer une clé et l’héberger

La clé prouve au moteur que l’envoi vient de quelqu’un qui contrôle l’hôte. C’est une chaîne que vous inventez, avec des règles étroites : 8 à 128 caractères, uniquement a-z, A-Z, 0-9 et traits d’union. Un UUID sans accolades convient et se régénère facilement.

KEY=$(uuidgen | tr 'A-Z' 'a-z' | tr -d '{}')
echo -n "$KEY" > public/$KEY.txt
echo "https://example.com/$KEY.txt"

Le fichier doit être en UTF-8, porter le nom de la clé et contenir la clé et rien d’autre. Déployez-le, puis ouvrez l’URL dans un navigateur. Si elle ne renvoie pas la clé en texte brut, arrêtez-vous ici : toutes les étapes suivantes échoueront avec un 403 qui n’expliquera pas pourquoi.

Vous pouvez héberger le fichier ailleurs qu’à la racine, mais la clé ne couvre alors que les URL sous ce dossier. Une clé à /catalog/key.txt peut soumettre /catalog/anything et ne peut pas soumettre /help/anything. La racine évite toute la question.

Un point que beaucoup inversent : la clé n’est pas un secret comme un jeton d’API. Vous devez la publier à une URL lisible par tous, parce que ce fichier public est la preuve de contrôle. La mettre dans votre dépôt ne pose pas de problème. Ce qui compte, c’est que le fichier et la valeur envoyée restent synchronisés.

Étape 2 — envoyer une URL à la main

Avant d’automatiser, prouvez le câblage avec un seul GET. C’est la forme documentée pour une URL à la fois.

curl -s -o /dev/null -w '%{http_code}\n' \
  "https://api.indexnow.org/indexnow?url=https://example.com/your-page&key=$KEY"

Un 200 signifie que le fichier de clé a été trouvé et lu. Cela ne signifie pas que la page sera indexée. La documentation du protocole le dit explicitement : 200 indique seulement que le moteur a reçu votre URL.

Étape 3 — passer au point d’entrée par lots

Une URL par requête convient à un test manuel et ne convient pas à une chaîne de publication. La forme par lots accepte jusqu’à 10 000 URL dans un seul POST, bien plus que ce dont la plupart des sites ont besoin en une fois.

POST /indexnow HTTP/1.1
Host: api.indexnow.org
Content-Type: application/json; charset=utf-8

{
  "host": "example.com",
  "key": "your-key",
  "keyLocation": "https://example.com/your-key.txt",
  "urlList": [
    "https://example.com/page-a",
    "https://example.com/page-b"
  ]
}

La valeur host doit correspondre à l’hôte de chaque URL de la liste. Mélanger deux noms d’hôte dans une même charge utile est la raison la plus fréquente d’un 422 sur un lot qui semble correct.

Lire les codes de réponse

Cinq codes couvrent tout ce que renvoie le point d’entrée, et chacun pointe une erreur différente. Gardez ce tableau ouvert pendant la construction.

CodeSignificationÀ corriger
200ReçuRien. Reçu, pas indexé
400Requête invalideJSON mal formé ou encodage d’URL incorrect
403Clé invalideFichier absent, ou présent mais clé différente
422Non traitableUne URL n’appartient pas à l’hôte, ou la clé ne respecte pas le format
429Trop de requêtesRalentissez les envois ; vous êtes lu comme du spam

Le 403 est l’arrivée de presque toute première tentative, et il a deux causes : le fichier n’est pas où vous l’avez dit, ou il est là et la clé à l’intérieur ne correspond pas à celle envoyée. Récupérez le fichier avec curl et comparez-le à la valeur du script avant de changer autre chose. Un 422 sur un lot qui fonctionnait en URL unique pointe le champ host, pas la clé.

Le livrable : un envoi à insérer dans votre publication

Prenez ce script, changez deux lignes et exécutez-le à la fin de ce qui publie votre contenu. Il lit votre sitemap, envoie tout en un lot et affiche le code pour qu’un échec soit visible au lieu d’être silencieux.

#!/usr/bin/env bash
set -euo pipefail
HOST="example.com"
KEY="your-key"

URLS=$(curl -s "https://$HOST/sitemap.xml" \
  | grep -o '<loc>[^<]*</loc>' \
  | sed 's/<[^>]*>//g' \
  | python3 -c 'import json,sys; print(json.dumps([l.strip() for l in sys.stdin if l.strip()]))')

curl -s -o /dev/null -w 'indexnow: %{http_code}\n' \
  -X POST "https://api.indexnow.org/indexnow" \
  -H 'Content-Type: application/json; charset=utf-8' \
  -d "{\"host\":\"$HOST\",\"key\":\"$KEY\",\"keyLocation\":\"https://$HOST/$KEY.txt\",\"urlList\":$URLS}"

Deux habitudes font tenir l’ensemble dans le temps. Journalisez ce que vous avez envoyé et quand, pour qu’un envoi répété soit ignoré plutôt que répété. Et envoyez au changement, pas selon un calendrier : un envoi nocturne d’un sitemap inchangé est ce qui attire un 429.

Trois façons de rater son installation

Les trois renvoient un code visible, et c’est pourquoi le tableau des réponses est la première chose à consulter.

  1. Le fichier de clé est servi avec un mauvais type de contenu ou un saut de ligne en trop. Il semble correct dans le navigateur. Récupérez-le avec curl et comparez octet par octet.
  2. L’envoi part avant la fin du déploiement. Le moteur arrive sur une URL que l’hôte n’a pas encore publiée, et le ping est dépensé sur un 404.
  3. Chaque build envoie tout le sitemap. Rien ne casse au début, puis les envois renvoient 429 et les pings utiles se perdent dans le bruit.

Ce qu’IndexNow ne fera pas

Il ne fera pas indexer une page. Il avance la découverte ; le moteur décide toujours si la page mérite d’être gardée, et une page mince découverte plus vite reste une page mince. Il n’atteint pas Google, qui n’est pas sur la liste des participants, donc il ne remplace jamais le volet Search Console de votre routine.

Nous ne pouvons pas non plus vous dire combien de temps il fait gagner. Bien mesurer cela demande un groupe de contrôle d’URL non envoyées suivi sur plusieurs semaines, et nous n’avons pas encore mené ce test sur nos propres sites. Quiconque vous cite un nombre d’heures précis doit être interrogé sur son groupe de contrôle.

Ce qu’il vaut la peine de vérifier à côté d’IndexNow, c’est le reste de la chaîne. Si votre sitemap date chaque URL avec l’heure du build, envoyer plus fort ne corrige pas le signal ; notre enquête sur le lastmod des sitemaps a trouvé 13 sites sur 24 dans cet état. La chaîne de promotion produit est pensée pour vérifier toute la chaîne, pas un seul point d’entrée. Le volet développeur de l’API et du MCP montre comment brancher l’envoi sur votre propre publication.

Questions fréquentes

IndexNow fonctionne-t-il pour Google ?

Google ne figure pas parmi les participants listés sur indexnow.org. Nous n’avons pas testé si Google lit ces envois par une autre voie, donc nous ne trancherons pas.

À quelle fréquence puis-je envoyer ?

Le protocole ne publie pas de limite horaire, mais le 429 existe précisément pour les envois excessifs. Pour le contenu généré par les utilisateurs, l’orientation officielle est de réduire progressivement : chaque élément jusqu’à 20, puis un sur cinq jusqu’à 100, puis un sur dix jusqu’à 1 000.

Faut-il Bing Webmaster Tools ?

Pas pour envoyer. Il le faut pour vérifier : c’est là que vous voyez si vos URL ont été reçues, et c’est la seule confirmation gratuite du protocole.

Peut-on changer la clé plus tard ?

Oui. Hébergez le nouveau fichier, changez la valeur dans le script et gardez l’ancien fichier en place quelque temps. Les moteurs relisent le fichier de clé à chaque envoi, donc il n’y a pas d’enregistrement à refaire.

Fait partie du guide QueryWin · Niveau 2

IndexNow : la clé, le premier envoi et la lecture de la réponse