Kai Ole Hartwig
Kubernetes-Migration geplant?

typo3-indexnow — neue Seiten in Minuten im Index.

Eine neue Seite wartet, bis ein Crawler zufällig vorbeikommt. Das kann Tage dauern. typo3-indexnow meldet Suchmaschinen über IndexNow, welche Seiten veröffentlicht, geändert, zeitgesteuert freigeschaltet oder entfernt wurden. Bing, Yandex, Seznam, Naver, Yep und Amazon teilen jede Meldung untereinander. Bings Index speist ChatGPT-Suche und Copilot – eine Seite kann dort am selben Tag zitierbar sein.

  • Composer-Paket:koh/typo3-indexnow
  • Basis:koh/indexnow, der framework-unabhängige Client
  • TYPO3: 14 · PHP: 8.5+ · MIT · Quellcode auf GitHub

TL;DR — Passt das zu meinem Setup?

Nutze es wenn …

Nutze es nicht wenn …

Aufwand

Ein Composer-Paket und eine Zeile in der Site-Konfiguration. Keinen Schlüssel erzeugen, keine Datei hochladen, keinen Cronjob anlegen.

So funktioniert es

Redaktion speichert, verschiebt, löscht      Startzeit läuft ab
Workspace wird veröffentlicht                         │
   │  DataHandler-Hook                               │  Scan pro Lauf
   ▼                                                 ▼
Queue tx_kohindexnow_queue   (eine Zeile pro Seite und Sprache)
   │
   ▼
indexnow:run   (Scheduler, alle fünf Minuten)
   │  URL erzeugen, Regeln prüfen, nach Host gruppieren
   ▼
ein Request pro Host ──► api.indexnow.org ──► Bing, Yandex, Seznam und weitere
AuslöserGemeldet wird
Seite oder Inhaltselement gespeichert, verschoben, gelöscht, wiederhergestelltDie Seite in der geänderten Sprache; bei Sichtbarkeit, Zugriff oder SEO-Flags alle Sprachen; beim Verschieben auch die alte Seite
Workspace veröffentlichtWas damit öffentlich wurde
Start- oder Endzeit läuft abDie Seite, obwohl niemand gespeichert hat
Erster Lauf mit aktivem HostJede sichtbare, indexierbare Seite in jeder Sprache

Eine geänderte Seite wird auch gemeldet, wenn sie jetzt versteckt, gelöscht oder noindex ist. Die Suchmaschine muss neu crawlen, um das zu erfahren. Die Elternseite geht mit, weil ein neuer Artikel die Liste ändert, in der er steht.

Kein Schlüssel zu verwalten

Der Schlüssel wird pro Host aus dem Encryption-Key der Installation abgeleitet (HMAC-SHA256). Jede Replica rechnet denselben, jeder Host bekommt einen eigenen, gespeichert wird nichts. Die Schlüsseldatei liefert eine Middleware unter /<key>.txt aus.

Was nie gemeldet wird

Eine Meldung lässt sich nicht zurücknehmen, und jede teilnehmende Suchmaschine bekommt sie. Deshalb prüft die Extension vor jedem Request, was rausgehen darf.

RegelWas sie verhindert
Nur im Application-Context ProductionLokale Installationen und Testsysteme schweigen.
Host-Policy der LibraryIP-Adressen, .localhost, .test, .local, .internal und Hosts mit dev, staging oder preview im Namen werden nie gemeldet – auch wenn sie in Production laufen. Dort existiert auch die Schlüsseldatei nicht.
Zugriffsgeschützte SeitenEine Frontend-Benutzergruppe auf der Seite, ihrer Übersetzung oder einer vererbenden Elternseite: Die URL bleibt privat, auch wenn die Seite sich ändert.
Startzeit in der ZukunftEine zeitgesteuerte Seite wird erst gemeldet, wenn sie online ist – auch wenn sie vorher aus dem Workspace veröffentlicht wurde.
Seitentypen ohne DokumentLinks, Shortcuts, Mount Points, Trenner, Ordner und Papierkorb, wie in der XML-Sitemap des Core.
Workspace-EntwürfeGemeldet wird erst, was veröffentlicht ist.

Weitere Hosts sperrt die Site-Einstellung indexnow.deniedHostSuffixes.

Neue Inhalte schneller in Bing, ChatGPT-Suche und Copilot? Ich helfe bei Einrichtung, Detailseiten für News oder Produkte und beim Monitoring der Meldungen. Anfragen →

Installation und Aktivierung

Zwei Schritte

  1. Paket installieren: composer require koh/typo3-indexnow, danach vendor/bin/typo3 extension:setup. Das Setup legt den Scheduler-Task an, der alle fünf Minuten indexnow:run ausführt.
  2. Das Set in jeder Site eintragen, die melden soll, in config/sites/<site>/config.yaml:
dependencies:
  - koh/indexnow

 

Beim ersten Lauf mit aktivem Host wird die ganze Site einmal gemeldet. Das ist der Go-live; danach gehen nur noch Änderungen raus.

Kommandos

 

vendor/bin/typo3 indexnow:status        # pro Host: aktiv oder warum nicht, Schlüsseldatei, Queue
vendor/bin/typo3 indexnow:run           # was der Scheduler-Task ausführt
vendor/bin/typo3 indexnow:submit-all    # alle indexierbaren Seiten erneut einreihen

 

indexnow:status ist die Antwort auf „Warum wird nichts gemeldet?“.

Site-Einstellungen

EinstellungStandardWirkung
indexnow.enabledtrueSchalter für die Site
indexnow.keyleerLeer: pro Host abgeleitet. Nur setzen, um einen bestehenden Schlüssel zu behalten
indexnow.excludedDoktypes3, 4, 6, 7, 199, 254, 255Seitentypen, die nie gemeldet werden
indexnow.includeParentPagetrueElternseite einer geänderten Seite mitmelden
indexnow.deniedHostSuffixesleerWeitere Hosts, die nie gemeldet werden

Zustellung: Queue, Wiederholung, Abbruch

Während eine Redakteurin speichert, passiert nichts Teures. Der Hook merkt sich die Datensätze und schreibt die Queue einmal am Ende des DataHandler-Laufs. URLs entstehen erst im Worker, aus dem rohen Seitendatensatz – deshalb gibt es auch für eine gelöschte Seite noch eine URL. Zwanzigmal speichern vor dem nächsten Lauf meldet die Seite einmal.

AntwortWas passiert
AngenommenDie Zeilen werden entfernt.
Vorübergehend (429, 5xx, keine Verbindung, 403 solange die Schlüsseldatei noch nicht abrufbar ist)Warten mit exponentiellem Backoff von einer Minute bis sechs Stunden, Retry-After wird beachtet. Nach acht Versuchen ist Schluss.
Abgelehnt (400, 422)Die Zeilen werden entfernt und der Fehler geloggt, denn derselbe Request würde wieder abgelehnt. Der Scheduler-Task endet mit Status 1.

HTTP läuft über den konfigurierten TYPO3-Client: Proxy, CA-Bundle und HTTP.allowed_hosts gelten, zehn Sekunden Timeout, keine Weiterleitungen.

Erweitern und Grenzen

Drei PSR-14-Events

Grenzen

Häufige Fallstricke

Nächster Schritt

Neue Inhalte in den Index bringen?

Wenn neue Seiten Tage brauchen, bis Bing und die KI-Suchen sie kennen, hilft typo3-indexnow. Sprich mich für die Einrichtung, Listener für deine Detailseiten oder das Monitoring der Meldungen an.

Einrichtung besprechen →

Oder direkt schreiben: mail@ole-hartwig.eu