01 Pourquoi Google indexe lentement (et pourquoi ca ne va pas s'ameliorer)
Googlebot doit explorer des milliards de pages chaque jour. Pour gerer cette charge, Google alloue a chaque site un budget de crawl : un nombre limite de pages que le robot visitera lors de chaque passage. Ce budget depend de l'autorite du domaine, de la taille du site et de la vitesse de reponse du serveur.
Pour un site neuf ou a faible autorite, ce budget est minuscule. Une page fraichement publiee peut rester invisible pendant plusieurs jours le temps que Googlebot la decouvre, la crawle, la rende, puis l'ajoute a son index. Chaque etape prend du temps, et aucune n'est garantie : Google peut tres bien crawler votre page et decider de ne pas l'indexer.
Pourquoi le crawl classique montre ses limites en 2026
Avec l'explosion du contenu genere par IA, la quantite de nouvelles pages publiees chaque jour atteint des niveaux jamais vus. Le modele traditionnel ou Google "decouvre" passivement vos pages via des liens entrants ou un sitemap devient de moins en moins efficace pour les petits sites. Le protocole push est la reponse naturelle a cette saturation : plutot que d'attendre d'etre decouvert, vous annoncez directement votre nouveau contenu aux moteurs.
02 Qu'est-ce que IndexNow ?
IndexNow est un protocole push developpe par Microsoft Bing et Yandex. Son principe est radicalement different du crawl classique : au lieu d'attendre que les robots passent sur votre site, vous leur envoyez directement la liste des URLs a indexer via une simple requete HTTP.
Qui devrait utiliser IndexNow ?
- Blogs et sites de contenu qui publient regulierement de nouveaux articles
- Sites e-commerce avec des fiches produit frequemment modifiees ou ajoutees
- Sites d'actualite ou la rapidite d'indexation est cruciale
- Sites generes par IA avec un volume eleve de nouvelles pages quotidiennes
- Tout site neuf qui veut accelerer son premier passage dans l'index
03 Comment fonctionne le protocole IndexNow
Le protocole est remarquablement simple. Il repose sur trois composants : une cle qui prouve votre propriete du domaine, un fichier de validation heberge sur votre serveur, et une API HTTP a laquelle vous envoyez vos URLs.
Quand vous soumettez une URL via l'API IndexNow, les moteurs partenaires recuperent la liste, verifient votre cle, puis declenchent un crawl prioritaire sur les URLs soumises. Le delai entre la soumission et l'indexation effective est generalement de quelques minutes a quelques heures, contre plusieurs jours en moyenne avec le crawl passif.
04 Generer sa cle IndexNow
La cle IndexNow est une chaine de caracteres unique qui lie votre domaine a vos soumissions. Voici les regles a respecter :
- Longueur entre 8 et 128 caracteres
- Uniquement des lettres minuscules (a-z), chiffres (0-9) et tirets (-)
- Aucun autre caractere special (pas de slash, underscore, point)
- Different d'un mot de passe classique (elle sera visible publiquement)
Voici un exemple de cle valide (generee aleatoirement) :
7a72973ae25c47c99692bba5568f174a
Vous pouvez generer la votre en utilisant un generateur de UUID, un openssl rand -hex 16 dans votre terminal, ou simplement en ecrivant une chaine aleatoire de 32 caracteres. L'important est qu'elle soit unique par domaine et que vous la conserviez.
05 Heberger le fichier de validation
Une fois votre cle generee, vous devez la rendre accessible publiquement sur votre domaine pour prouver que vous en etes le proprietaire. Creez un fichier texte dont le nom est exactement votre cle, placez-le a la racine de votre site.
// Fichier : /public/7a72973ae25c47c99692bba5568f174a.txt
// Contenu du fichier : la cle, et uniquement la cle
7a72973ae25c47c99692bba5568f174a
// URL de verification :
// https://monsite.com/7a72973ae25c47c99692bba5568f174a.txt
Le fichier doit retourner un code HTTP 200 et contenir uniquement la cle, sans espaces ni sauts de ligne superflus. Pour verifier que tout fonctionne, ouvrez simplement l'URL du fichier dans votre navigateur : vous devez voir la cle s'afficher.
06 Script Node.js pret a l'emploi
Voici le script principal. Copiez-le, remplacez les trois variables en haut (KEY, HOST, urls), et lancez-le.
const axios = require("axios");
const KEY = "7a72973ae25c47c99692bba5568f174a";
const HOST = "monsite.com";
const urls = [
"https://monsite.com/article-1",
"https://monsite.com/article-2",
"https://monsite.com/article-3"
];
async function submitIndexNow() {
try {
const response = await axios.post(
"https://api.indexnow.org/indexnow",
{
host: "monsite.com",
key: "7a72973ae25c47c99692bba5568f174a",
urlList: urls
},
{
headers: {
"Content-Type": "application/json"
}
}
);
console.log("Statut :", response.status);
console.log("URLs envoyees avec succes");
} catch (error) {
console.error(
error.response?.data || error.message
);
}
}
submitIndexNow();
Installation et premier lancement
mkdir indexnow && cd indexnow && npm init -ynpm install axiosKEY par votre cle reelleHOST par votre nom de domaine (sans https://)urls par la liste de vos URLs a indexernode indexnow.js07 Script Python pret a l'emploi
import requests
KEY = "7a72973ae25c47c99692bba5568f174a"
HOST = "monsite.com"
urls = [
"https://monsite.com/article-1",
"https://monsite.com/article-2",
"https://monsite.com/article-3"
]
def submit_indexnow():
payload = {
"host": HOST,
"key": KEY,
"urlList": urls
}
try:
r = requests.post(
"https://api.indexnow.org/indexnow",
json=payload,
headers={"Content-Type": "application/json"}
)
print(f"Statut : {r.status_code}")
print(r.text)
except Exception as e:
print(f"Erreur : {e}")
submit_indexnow()
pip install requestspython indexnow.py08 Script PHP et WordPress
Pour un site PHP classique ou WordPress, voici deux approches.
Script PHP autonome
<?php
$key = "7a72973ae25c47c99692bba5568f174a";
$host = "monsite.com";
$urls = [
"https://monsite.com/article-1",
"https://monsite.com/article-2"
];
$payload = json_encode([
"host" => $host,
"key" => $key,
"urlList" => $urls
]);
$ch = curl_init("https://api.indexnow.org/indexnow");
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "Statut : $httpCode\n";
echo "Reponse : $response\n";
Integration WordPress (functions.php)
// A ajouter dans le functions.php de votre theme
add_action("publish_post", function($post_id, $post) {
$key = "VOTRE_CLE_INDEXNOW";
$host = parse_url(home_url(), PHP_URL_HOST);
$url = get_permalink($post_id);
$payload = json_encode([
"host" => $host,
"key" => $key,
"urlList" => [$url]
]);
wp_remote_post("https://api.indexnow.org/indexnow", [
"body" => $payload,
"headers" => ["Content-Type" => "application/json"]
]);
}, 10, 2);
post_updated pour notifier lors des mises a jour d'articles existants.
09 Automatiser l'indexation avec un cron job
L'interet principal d'IndexNow est l'automatisation. Une fois le script en place, vous le branchez sur un cron job qui s'execute a intervalle regulier, ou sur un webhook declenche a chaque publication.
Cron job Linux (toutes les heures)
# Executer le script toutes les heures
0 * * * * /usr/bin/node /home/user/indexnow/indexnow.js
# Version Python
0 * * * * /usr/bin/python3 /home/user/indexnow/indexnow.py
Webhook Next.js / Vercel
// pages/api/indexnow.ts ou app/api/indexnow/route.ts
export async function POST(request: Request) {
const { urls } = await request.json();
const res = await fetch("https://api.indexnow.org/indexnow", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
host: "monsite.com",
key: "VOTRE_CLE",
urlList: urls
})
});
return Response.json({
status: res.status,
indexed: urls.length
});
}
10 Les erreurs frequentes et comment les corriger
Autres points de vigilance
- Le fichier .txt ne doit contenir que la cle, sans HTML ni espaces superflus
- La cle et le host doivent correspondre exactement a ceux du fichier de validation
- Ne pas depasser 10 000 URLs par jour (limite recommandee par Bing)
11 Le mythe de la "fausse cle" : pourquoi un code 200 ne suffit pas
Vous avez peut-etre vu circuler l'information selon laquelle IndexNow fonctionne meme avec une cle invalide. Cette observation est partiellement vraie, mais trompeuse. Voici ce qui se passe reellement :
L'API IndexNow repond parfois 200 OK meme si la cle est incorrecte ou absente. Le serveur accuse reception de votre requete, mais la validation de la cle est differee. Le traitement asynchrone signifie que l'API accepte d'abord le payload (code 200), puis verifie la cle dans un second temps. Si la cle est invalide, les URLs seront silencieusement ignorees par les moteurs.
Comment verifier que tout fonctionne
- Verifiez que votre fichier
VOTRE_CLE.txtest accessible en HTTPS et retourne bien la cle. - Soumettez une URL de test via le script.
- Attendez 5 a 10 minutes, puis cherchez
url:VOTRE_URLdans Bing. - Si l'URL apparait dans les resultats Bing dans l'heure, votre configuration est correcte.
12 Bonus SEO : combiner IndexNow avec les autres leviers d'indexation
IndexNow est un accelerateur puissant, mais il ne remplace pas les fondamentaux. Pour maximiser la vitesse d'indexation de vos pages, combinez-le systematiquement avec :
- Sitemap XML a jour et soumis dans Google Search Console et Bing Webmaster Tools
- Google Search Console : soumettez manuellement l'URL via l'outil d'inspection pour les pages critiques
- Bing Webmaster Tools : verifiez l'etat d'indexation de vos URLs soumises via IndexNow
- Maillage interne : chaque nouvelle page doit avoir au moins un lien interne depuis une page deja indexee
- Robots.txt : verifiez que votre fichier robots.txt n'interdit pas l'acces aux pages que vous voulez indexer
- Ne comptez pas uniquement sur IndexNow : le crawl classique et les backlinks restent les signaux les plus forts
Passez a l'indexation instantanee
Copiez le script correspondant a votre stack technique, remplacez les variables, et lancez votre premiere soumission en moins de 5 minutes. Automatisez avec un cron job pour ne plus jamais vous soucier de l'indexation de vos nouvelles pages.
⚡ Auditer votre site avec SEO Titan