IndexNow einrichten: Schlüssel, erster Push und die Antwort lesen
IndexNow braucht drei Dinge: einen Schlüssel, eine Textdatei auf deinem Host und eine Anfrage pro Veröffentlichung. Dieses Kapitel zeigt die drei Schritte, die Antwortcodes und ein Sendeskript für deinen Veröffentlichungsschritt.

IndexNow ist ein Ping aus einer Anfrage, der teilnehmenden Suchmaschinen meldet, dass eine URL hinzugefügt, geändert oder entfernt wurde. Die Einrichtung braucht drei Dinge: einen Schlüssel, diesen Schlüssel als Textdatei auf deinem eigenen Host und eine HTTP-Anfrage pro Veröffentlichung. Der Weg ist kostenlos, dauert etwa zwanzig Minuten und funktioniert auf einer statischen Seite genauso wie in einem CMS.
Dieses Kapitel setzt voraus, dass deine Seite bereits erreichbar und bereits in der Sitemap steht. Wenn das nicht bestätigt ist, prüfe es, bevor du etwas sendest: Ein Ping für eine URL, die 404 zurückgibt, ist verschwendet. Die dreistufige Veröffentlichungsroutine in der Produkt-Launch-Checkliste deckt dieses Feld ab, und dieses Kapitel ist die ausführliche Version ihres dritten Schritts.
Welche Engines wirklich zuhören
IndexNow ist ein gemeinsames Protokoll: Eine Anfrage erreicht alle Teilnehmer. Die Liste steht auf indexnow.org und ist kurz.
| Engine | Auf der Liste |
|---|---|
| Microsoft Bing | Ja |
| Yandex | Ja |
| Naver | Ja |
| Seznam.cz | Ja |
| Yep | Ja |
| Nicht gelistet |
Bing bezahlt für die anderen. Sein Index speist die ChatGPT-Suche und Copilot, deshalb ist der frühe Eintrag in Bing der kürzeste Weg in den Quellenpool einer KI-Antwort. Google hat seinen eigenen Weg, und deshalb lässt dich der vorige Schritt beides tun.
Schritt 1 — Schlüssel erzeugen und hosten
Der Schlüssel beweist der Engine, dass die Einsendung von jemandem kommt, der den Host kontrolliert. Es ist eine Zeichenkette, die du erfindest, mit engen Regeln: 8 bis 128 Zeichen, nur a-z, A-Z, 0-9 und Bindestriche. Eine UUID ohne Klammern erfüllt das und lässt sich leicht neu erzeugen.
KEY=$(uuidgen | tr 'A-Z' 'a-z' | tr -d '{}')
echo -n "$KEY" > public/$KEY.txt
echo "https://example.com/$KEY.txt"
Die Datei muss UTF-8 sein, nach dem Schlüssel heißen und den Schlüssel und sonst nichts enthalten. Deploye sie und öffne die URL im Browser. Wenn sie den Schlüssel nicht als reinen Text zurückgibt, höre hier auf: Alle folgenden Schritte scheitern mit einem 403, der den Grund nicht nennt.
Du kannst die Datei außerhalb des Stammverzeichnisses hosten, aber dann deckt der Schlüssel nur URLs unter diesem Ordner ab. Ein Schlüssel unter /catalog/key.txt kann /catalog/anything senden und nicht /help/anything. Der Stamm vermeidet die ganze Frage.
Ein Punkt, den viele umdrehen: Der Schlüssel ist kein Geheimnis wie ein API-Token. Du musst ihn unter einer URL veröffentlichen, die jeder lesen kann, denn diese öffentliche Datei ist der Nachweis der Kontrolle. Ihn ins Repository zu legen ist in Ordnung. Wichtig ist, dass Datei und gesendeter Wert synchron bleiben.
Schritt 2 — eine URL von Hand senden
Bevor du automatisierst, beweise die Verkabelung mit einem einzigen GET. Das ist die dokumentierte Form für eine URL auf einmal.
curl -s -o /dev/null -w '%{http_code}\n' \
"https://api.indexnow.org/indexnow?url=https://example.com/your-page&key=$KEY"
Ein 200 bedeutet, dass die Schlüsseldatei gefunden und gelesen wurde. Es bedeutet nicht, dass die Seite indexiert wird. Die Protokolldokumentation sagt es klar: 200 zeigt nur, dass die Engine deine URL empfangen hat.
Schritt 3 — auf den Batch-Endpunkt wechseln
Eine URL pro Anfrage passt zu einem manuellen Test und nicht zu einer Veröffentlichungskette. Die Batch-Form nimmt bis zu 10 000 URLs in einem einzigen POST, mehr als die meisten Sites jemals in einem Lauf brauchen.
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"
]
}
Der Wert host muss zum Host jeder URL in der Liste passen. Zwei Hostnamen in einer Nutzlast zu mischen ist der häufigste Grund für ein 422 bei einem Batch, der korrekt aussieht.
Die Antwortcodes lesen
Fünf Codes decken alles ab, was der Endpunkt zurückgibt, und jeder zeigt auf einen anderen Fehler. Halte diese Tabelle beim Bauen offen.
| Code | Bedeutung | Zu beheben |
|---|---|---|
| 200 | Empfangen | Nichts. Empfangen, nicht indexiert |
| 400 | Ungültige Anfrage | Fehlerhaftes JSON oder falsche URL-Kodierung |
| 403 | Schlüssel ungültig | Datei fehlt, oder vorhanden mit anderem Schlüssel |
| 422 | Nicht verarbeitbar | Eine URL gehört nicht zum Host, oder der Schlüssel verletzt das Format |
| 429 | Zu viele Anfragen | Drossle die Einsendungen; du wirst als Spam gelesen |
Beim 403 landet fast jeder erste Versuch, und er hat zwei Ursachen: Die Datei ist nicht dort, wo du gesagt hast, oder sie ist da und der Schlüssel darin stimmt nicht mit dem gesendeten überein. Hole die Datei mit curl und vergleiche sie mit dem Wert im Skript, bevor du etwas anderes änderst. Ein 422 bei einem Batch, der als einzelne URL funktionierte, zeigt auf das Feld host, nicht auf den Schlüssel.
Das Ergebnis: eine Einsendung für deinen Veröffentlichungsschritt
Nimm dieses Skript, ändere zwei Zeilen und führe es am Ende dessen aus, was deine Inhalte veröffentlicht. Es liest deine Sitemap, sendet alles in einem Batch und gibt den Code aus, damit ein Fehler sichtbar wird statt still zu bleiben.
#!/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}"
Zwei Gewohnheiten halten das über die Zeit am Laufen. Protokolliere, was du wann gesendet hast, damit eine Wiederholung übersprungen statt wiederholt wird. Und sende bei Änderung, nicht nach Kalender: ein nächtlicher Lauf einer unveränderten Sitemap ist das, was ein 429 einbringt.
Drei Arten, die Einrichtung zu ruinieren
Alle drei geben einen sichtbaren Code zurück, deshalb ist die Antworttabelle das Erste, was du prüfst.
- Die Schlüsseldatei wird mit falschem Content-Type oder einem zusätzlichen Zeilenumbruch ausgeliefert. Im Browser sieht sie weiter richtig aus. Hole sie mit curl und vergleiche Byte für Byte.
- Die Einsendung startet, bevor das Deployment fertig ist. Die Engine kommt zu einer URL, die der Host noch nicht veröffentlicht hat, und der Ping wird für ein 404 verbraucht.
- Jeder Build sendet die ganze Sitemap. Anfangs bricht nichts, dann kommen 429 zurück, und die nützlichen Pings gehen im Rauschen unter.
Was IndexNow nicht leistet
Es wird keine Seite indexieren. Es zieht die Entdeckung vor; die Engine entscheidet weiter, ob die Seite es wert ist, und eine dünne Seite, die früher entdeckt wird, bleibt eine dünne Seite. Google erreicht es nicht, weil Google nicht auf der Teilnehmerliste steht, deshalb ersetzt es nie den Search-Console-Teil deiner Routine.
Wir können dir auch nicht sagen, wie viel Zeit er spart. Das sauber zu messen braucht eine Kontrollgruppe aus nicht gesendeten URLs über Wochen, und diesen Test haben wir auf unseren eigenen Websites noch nicht gefahren. Wer dir eine konkrete Stundenzahl nennt, sollte nach seiner Kontrollgruppe gefragt werden.
Was du neben IndexNow prüfen solltest, ist der Rest der Kette. Wenn deine Sitemap jeder URL die Build-Zeit stempelt, behebt stärkeres Senden nicht das Signal; unsere Untersuchung zum lastmod in Sitemaps fand 13 von 24 Sites in diesem Zustand. Der Produkt-Promotion-Ablauf ist dafür gedacht, die ganze Kette zu prüfen, nicht einen Endpunkt. Der Entwicklerbereich zu API und MCP zeigt, wie du die Einsendung an deine eigene Veröffentlichung anschließt.
Häufige Fragen
Funktioniert IndexNow für Google?
Google steht nicht auf der Teilnehmerliste von indexnow.org. Wir haben nicht getestet, ob Google diese Einsendungen über einen anderen Weg liest, deshalb behaupten wir weder das eine noch das andere.
Wie oft kann ich senden?
Das Protokoll veröffentlicht kein Stundenlimit, aber das 429 existiert genau für zu viele Einsendungen. Für nutzergenerierte Inhalte ist die offizielle Empfehlung, schrittweise zu drosseln: jedes Element bis 20, dann jedes fünfte bis 100, dann jedes zehnte bis 1 000.
Brauche ich die Bing Webmaster Tools?
Nicht zum Senden. Zum Prüfen schon: Dort siehst du, ob deine URLs empfangen wurden, und das ist die einzige kostenlose Bestätigung des Protokolls.
Kann ich den Schlüssel später ändern?
Ja. Hoster die neue Datei, ändere den Wert im Skript und lass die alte Datei eine Weile stehen. Die Engines lesen die Schlüsseldatei bei jeder Einsendung neu, es gibt also keine Registrierung zu wiederholen.
Teil von dem QueryWin-Handbuch · Stufe 2


