Google Indexing API für Magento 2
Erfordert Änderungen an der Vorlage
Nein
Kleine Änderungen
Wesentliche Änderungen
Erfordert Programmierkenntnisse
Nein
Grundlegend
Erweitert
Schwierigkeiten bei der Konfiguration
Auswirkungen auf die Leistung
Kompatibilität mit Magento-Standards
Google schneller über Änderungen im Shop informieren
Das Modul Kowal Google Indexing API für Magento 2 hilft dabei, URLs effizienter an Google zu melden, die hinzugefügt, geändert oder aus dem Index entfernt werden sollten. Anstatt ausschließlich auf den standardmäßigen erneuten Besuch der Seite durch den Google-Bot zu warten, kann der Administrator ausgewählte Adressen an eine von der Google Indexing API verarbeitete Warteschlange übergeben.
Die Lösung ist besonders nützlich für Shops, in denen sich Inhalte, Angebot, Produktverfügbarkeit, CMS-Seiten, Landing Pages oder Blogbeiträge häufig ändern. Das Modul strukturiert den gesamten Prozess: Es sammelt Adressen aus verschiedenen Bereichen von Magento, prüft sie, entfernt Duplikate, überwacht Limits und speichert die Historie der Kommunikation mit Google.
Die Google Indexing API ist offiziell hauptsächlich für Seiten mit strukturierten Daten
JobPostingundBroadcastEventvorgesehen. Die Meldung einer URL über die API garantiert weder die Indexierung noch die Position in den Suchergebnissen oder die Annahme jeder Adresse durch Google. Das Modul ist ein Werkzeug zur Unterstützung der technischen URL-Übermittlung und kein Ersatz für sauberes technisches SEO, XML-Sitemap, Canonicals, robots, hreflang und interne Verlinkung.
Die wichtigsten Vorteile
Bessere Kontrolle über die URL-Übermittlung
Das Modul bietet Administratoren einen zentralen Ort zur Verwaltung von URLs, die auf den Versand an Google warten. Produkte, Kategorien, CMS-Seiten, der manuelle URL-Import und künftige Quellen können dieselbe Warteschlange nutzen. Dadurch müssen keine separaten Integrationen für jeden Inhaltstyp aufgebaut werden.
Weniger manuelle Arbeit nach Änderungen im Shop
Adressen können direkt im Magento-Adminpanel zur Warteschlange hinzugefügt werden. Das Modul stellt Massenaktionen sowie Buttons auf den Bearbeitungsseiten ausgewählter Entitäten bereit, sodass der Administrator die Indexierung einzelner Seiten oder größerer URL-Gruppen schnell veranlassen kann.
Sicherere Nutzung der API-Limits
Die Google Indexing API arbeitet mit Limits. Das Modul berücksichtigt Tages- und Minutenlimits, die Größe des per Cron verarbeiteten Pakets sowie die Versandverzögerung. Dadurch werden Adressen nicht chaotisch versendet und das Risiko eines unnötigen Verbrauchs des verfügbaren Limits lässt sich leichter begrenzen.
Weniger Duplikate und wiederholte Meldungen
Vor dem Speichern einer Adresse normalisiert das Modul die URL, validiert sie und prüft, ob dieselbe Adresse nicht bereits in der aktiven Warteschlange vorhanden ist. Wenn eine ähnliche Meldung bereits existiert, kann das System sie aktualisieren oder als dedupliziert markieren. Das reduziert Unordnung in der Warteschlange und verringert die Zahl unnötiger Requests an Google.
Mehr Transparenz für das Team
Jede Meldung hat einen Status, eine Quelle, eine Aktion, eine Priorität, eine Anzahl von Versuchen, einen geplanten Versandzeitpunkt sowie Informationen zur Google-Antwort. Der Administrator sieht, welche Adressen warten, welche erfolgreich gesendet wurden, welche erneut versucht werden müssen und welche mit einem dauerhaften Fehler beendet wurden.
Einfachere Problemdiagnose
Das Modul speichert Kommunikationslogs mit der Google API, darunter Request-Typ, Endpoint-Adresse, Payload, HTTP-Status, Antwortinhalt und Laufzeit. Das erleichtert die Analyse von Fehlern auf Seiten der Konfiguration, Berechtigungen, Limits oder der gemeldeten URLs selbst.
Bereit für das Wachstum des Shops
Die Architektur des Moduls basiert auf einem gemeinsamen Scheduler und einer Warteschlange. Neue URL-Quellen müssen nicht direkt mit Google kommunizieren. Es reicht aus, die Adressen an die Warteschlange zu übergeben, und der bestehende Prozessor übernimmt Validierung, Zeitplanung, Limits, Wiederholungen und Logging.
So funktioniert das Modul in der Praxis
Das Modul arbeitet als Zwischenschicht zwischen Magento und der Google Indexing API.
- Der Administrator oder eine Integration wählt die zu meldenden URLs aus.
- Das Modul normalisiert und validiert die URLs, unter anderem hinsichtlich Schema, Host und erlaubter Quellen.
- Korrekte Adressen gelangen mit passendem Status, Aktion und Versandzeitpunkt in die zentrale Warteschlange.
- Der Magento-Cron holt zyklisch Datensätze ab, die zur Verarbeitung bereit sind.
- Der Warteschlangen-Prozessor respektiert Limits, Prioritäten, Verzögerungen und Datensatzsperren.
- Das Modul sendet die Meldung an die Google Indexing API oder führt die Verarbeitung im Dry-Run-Modus aus.
- Die Google-Antwort wird am Warteschlangen-Datensatz sowie in den API-Logs gespeichert.
- Bei temporären Fehlern kann das Modul einen erneuten Versuch mit Verzögerung einplanen.
Dadurch hängt der Versand von URLs nicht von einem einzelnen Klick oder einem direkten Request aus dem Adminpanel ab. Der gesamte Prozess ist warteschlangenbasiert, auditierbar und widerstandsfähiger gegenüber vorübergehenden API-Problemen.
Hauptfunktionen
- zentrale URL-Warteschlange für verschiedene Inhaltsquellen,
- Unterstützung der Aktionen
URL_UPDATEDundURL_DELETED, - manueller Import vieler URLs über das Adminpanel,
- Massenaktionen für Produkte und CMS-Seiten,
- Buttons zum Melden der Indexierung auf den Bearbeitungsseiten von Produkt, Kategorie und CMS-Seite,
- optionale Integration mit Amasty Blog als separates Modul,
- Normalisierung und Validierung von URLs,
- Whitelist erlaubter Hosts,
- Unterstützung von Store View und Identifizierung der Meldequelle,
- Deduplizierung aktiver Meldungen,
- Versandverzögerung, also Indexing Lag,
- Prioritäten und die Aktion
Transmit Now, - Verarbeitung per Cron,
- Kontrolle des Tages- und Minutenlimits,
- Wiederholungen temporärer Fehler mit Verzögerung,
- Warteschlangenstatus:
scheduled,pending,processing,success,retry,failed_permanent,cancelled, - Dry-Run-Modus für sichere Tests ohne echte Requests,
- API-Logs und Log-Retention,
- Test credentials und metadata im Setup-Assistenten.
Für wen ist dieses Modul geeignet
Das Modul eignet sich für Magento-2-Shops, die:
- ihr Produktangebot häufig aktualisieren,
- viele CMS-Seiten veröffentlichen oder ändern,
- SEO-Maßnahmen für viele Inhaltstypen durchführen,
- Kontrolle darüber benötigen, welche URLs an Google gemeldet wurden,
- den manuellen Aufwand bei der Verwaltung von Meldungen reduzieren möchten,
- in einer Multistore- oder Multilanguage-Umgebung arbeiten,
- ein klares Audit von Requests an Google benötigen.
Diese Lösung ist besonders wertvoll für E-Commerce-, SEO- und Admin-Teams, die einen gemeinsamen, strukturierten Prozess zur Meldung von Änderungen im Shop an Google nutzen möchten.
Beispielhafte Anwendungsfälle
Neue oder geänderte Produkte
Nach dem Hinzufügen eines neuen Produkts oder einer wesentlichen Änderung eines bestehenden Produkts kann der Administrator dessen Adresse an die Warteschlange übergeben. Das Modul kümmert sich um das Speichern der Meldung, die richtige Verzögerung, die Deduplizierung und den späteren Versand.
Aktualisierung von CMS-Seiten und Landing Pages
Wenn das Marketingteam eine neue Kampagne, Promotion oder Informationsseite veröffentlicht, kann die URL ohne manuelle Arbeit außerhalb von Magento zur Warteschlange hinzugefügt werden.
Bereinigung von Adressen nach Änderungen auf der Website
Das Modul unterstützt nicht nur Meldungen von Aktualisierungen, sondern auch die Aktion URL_DELETED. Dadurch können Informationen über Adressen an Google übergeben werden, die aus dem Index entfernt werden sollten, sofern das jeweilige Szenario mit den API-Nutzungsrichtlinien übereinstimmt.
SEO-Maßnahmen in großem Umfang
Bei größeren Änderungen im Shop, etwa der Aktualisierung vieler Produkte, einer Content-Migration oder einer Überarbeitung von Kategorien, kann der Administrator Massenaktionen nutzen und den Fortschritt in der Warteschlange verfolgen.
Geschäftlicher Effekt
Die Implementierung des Moduls gibt dem Team mehr Kontrolle über die technische Meldung von Änderungen an Google. Anstelle verstreuter, manueller und schwer überprüfbarer Maßnahmen entsteht ein einheitlicher Prozess: Die Adresse gelangt in die Warteschlange, wird validiert, unter Berücksichtigung der Limits gesendet und das Ergebnis ist im Adminpanel sichtbar.
Der wichtigste Mehrwert des Moduls ist die Strukturierung der Arbeit rund um die Indexierung: weniger zufällige Requests, weniger Duplikate, bessere Diagnose und eine klarere Verantwortlichkeit dafür, was an Google gemeldet wurde.
Google Indexing API für Magento 2 - Installation und Konfiguration
1. Wichtige Informationen vor der Implementierung
Das Modul integriert Magento 2 mit der Google Indexing API und ermöglicht das Hinzufügen von URLs zu einer zentralen Meldungswarteschlange. Die Warteschlange wird durch den Magento-Cron verarbeitet, und jede Meldung wird validiert, dedupliziert, mit Limits versehen und protokolliert.
Gemäß der Google-Dokumentation ist die Indexing API offiziell in erster Linie für Seiten mit strukturierten Daten vorgesehen:
JobPosting,BroadcastEvent, eingebettet inVideoObject.
Die Nutzung der API für Produkte, Kategorien, CMS-Seiten oder Blogbeiträge garantiert weder die Indexierung noch die Platzierung in den Suchergebnissen. Das Modul sollte als technisches Werkzeug zur Übermittlung von URLs betrachtet werden und nicht als Ersatz für XML-Sitemap, korrekte Canonicals, robots, hreflang, interne Verlinkung und die allgemeine SEO-Qualität.
Offizielle Google-Materialien:
- https://developers.google.com/search/apis/indexing-api/v3/quickstart
- https://developers.google.com/search/apis/indexing-api/v3/prereqs
- https://developers.google.com/search/apis/indexing-api/v3/using-api
- https://developers.google.com/search/apis/indexing-api/v3/quota-pricing
2. Anforderungen
Stellen Sie vor der Installation sicher, dass die Umgebung die folgenden Anforderungen erfüllt:
- Magento 2.4.x,
- PHP 8.1 oder neuer,
- Composer,
- funktionsfähiger Magento-Cron,
- Möglichkeit zur Installation des Pakets
google/apiclient, - Adminzugang zu Magento,
- Google Cloud-Projekt mit aktivierter Indexing API,
- in Google Search Console verifizierte Property für die Shop-Domain,
- Google-Servicekonto als Inhaber in Google Search Console hinzugefügt.
Das Modul erfordert das Paket:
google/apiclient:^2.16Das Paket ist in der composer.json des Moduls deklariert, daher sollte Composer es automatisch installieren.
3. Installation des Moduls
3.1. Installation über Composer aus einem VCS-Repository
Wenn das Modul aus einem privaten oder öffentlichen Git-Repository installiert wird, fügen Sie das Repository dem Magento-Projekt hinzu:
composer config repositories.kowal.google.indexing.api vcs https://github.com/kowalco/google-indexing-apiWenn das Repository privat ist, konfigurieren Sie ein GitHub-Token:
composer config --global --auth github-oauth.github.com Installieren Sie das Paket:
composer require kowal/module-google-indexing-apiAktivieren Sie das Modul:
bin/magento module:enable Kowal_GoogleIndexingApiFühren Sie das Datenbank-Schema-Upgrade aus:
bin/magento setup:upgradeLeeren Sie den Cache:
bin/magento cache:flushIm Produktionsmodus führen Sie zusätzlich aus:
bin/magento setup:di:compilebin/magento setup:static-content:deploybin/magento cache:flush3.2. Lokale Installation in app/code
Wenn das Modul ohne Composer als lokaler Code installiert wird, platzieren Sie es im Verzeichnis:
app/code/Kowal/GoogleIndexingApiInstallieren Sie anschließend die Abhängigkeit Google API Client im Magento-Projekt nach:
composer require google/apiclient:^2.16Aktivieren Sie das Modul und führen Sie die Standard-Magento-Befehle aus:
bin/magento module:enable Kowal_GoogleIndexingApibin/magento setup:upgradebin/magento cache:flushFür Produktion:
bin/magento setup:di:compilebin/magento setup:static-content:deploybin/magento cache:flush3.3. Installationsprüfung
Prüfen Sie, ob das Modul aktiv ist:
bin/magento module:status Kowal_GoogleIndexingApiNach erfolgreicher Installation sollten im Adminpanel verfügbar sein:
Stores > Configuration > Kowal > Google Indexing API,- das Admin-Menü
Google Indexing API > Indexing Queue, Google Indexing API > Import URLs,Google Indexing API > API Logs,Google Indexing API > Setup Assistant.
In der Datenbank sollten folgende Tabellen erstellt werden:
kowal_google_indexing_queue,kowal_google_indexing_api_log.
4. Vorbereitung von Google Cloud und Search Console
4.1. Erstellen eines Google Cloud-Projekts
- Öffnen Sie die Google Cloud Console.
- Erstellen Sie ein neues Projekt oder wählen Sie ein bestehendes Projekt, das für den Shop verwendet wird.
- Aktivieren Sie die API:
Indexing APIOhne aktivierte API kann das Modul keine Meldungen korrekt versenden.
4.2. Erstellen eines Servicekontos
- Gehen Sie in Google Cloud zu
IAM & Admin > Service Accounts. - Erstellen Sie ein neues Servicekonto.
- Generieren Sie einen Schlüssel im JSON-Format.
- Laden Sie die JSON-Datei herunter und bewahren Sie sie sicher auf.
Das Modul verlangt, dass das JSON mindestens die Felder enthält:
type,project_id,private_key,client_email.
Das Feld type muss den Wert haben:
service_account4.3. Servicekonto als Inhaber in Search Console hinzufügen
- Öffnen Sie Google Search Console.
- Wählen Sie die Property aus, die der Shop-Domain entspricht.
- Stellen Sie sicher, dass die Property verifiziert ist.
- Fügen Sie die Adresse
client_emailaus der JSON-Datei als Inhaber der Property hinzu.
Beispiel einer Servicekonto-Adresse:
my-service-account@project-name.iam.gserviceaccount.comWenn das Servicekonto nicht Inhaber der Search-Console-Property ist, kann Google Berechtigungsfehler zurückgeben, zum Beispiel fehlende Bestätigung des URL-Eigentums.
5. Konfiguration des Moduls in Magento
Die Konfiguration befindet sich unter:
Stores > Configuration > Kowal > Google Indexing APIDie Konfiguration unterstützt Magento-Scopes:
- Default Config,
- Website,
- Store View.
Dadurch können bei Bedarf separate Einstellungen für verschiedene Shops oder Store Views verwendet werden.
6. Abschnitt General
Enable
Standardmäßig:
NoAktiviert oder deaktiviert die Funktion des Moduls.
Wenn das Feld den Wert No hat, verarbeitet der Cron die Warteschlange nicht. Adressen können in der Datenbank vorhanden sein, aber der Warteschlangen-Prozessor sendet sie nicht an Google.
Empfehlung:
- Setzen Sie bei der ersten Konfiguration
Nooder lassen SieDry Run = Yes, - setzen Sie nach erfolgreichen Tests
Yes.
Dry Run
Standardmäßig:
YesTestmodus. Wenn Dry Run aktiviert ist, verarbeitet das Modul Warteschlangen-Datensätze, speichert Status und Logs, sendet aber keine echte Meldung an Google.
Das ist der sicherste Modus für den ersten Start, Konfigurationstests und die Prüfung, ob URLs wie erwartet in die Warteschlange gelangen.
Empfehlung:
- Führen Sie die ersten Tests immer mit
Dry Run = Yesdurch, - deaktivieren Sie
Dry Runerst nach Prüfung von credentials, allowed hosts, Warteschlange und Logs.
7. Abschnitt Google Access Credentials
Credentials Source
Standardmäßig:
Encrypted configuration valueBestimmt, woher das Modul das JSON des Google-Servicekontos bezieht.
Verfügbare Optionen:
| Option | Technischer Wert | Beschreibung |
|---|---|---|
Encrypted configuration value | config | Das JSON wird in die Magento-Konfiguration eingefügt und als verschlüsselter sensitive config-Wert gespeichert. |
Uploaded JSON file | file | Das JSON wird als Datei hochgeladen und außerhalb des pub-Verzeichnisses in var/google-indexing gespeichert. |
Empfehlung:
- für einfache Implementierungen kann der verschlüsselte Wert in der Konfiguration verwendet werden,
- für Umgebungen mit Dateizugriffskontrolle kann der Upload einer JSON-Datei bequemer sein.
Service Account JSON
Sichtbar, wenn Credentials Source = Encrypted configuration value.
In dieses Feld muss der vollständige Inhalt der JSON-Datei des Google-Servicekontos eingefügt werden.
Das Modul validiert das JSON vor dem Speichern. Geprüft werden:
- Korrektheit des JSON-Formats,
- Vorhandensein der Felder
type,project_id,private_key,client_email, - der Wert
type = service_account.
Der Wert wird als verschlüsselte Magento-Konfiguration gespeichert.
Service Account JSON File
Sichtbar, wenn Credentials Source = Uploaded JSON file.
Ermöglicht das Hochladen der JSON-Datei des Google-Servicekontos.
Das Modul:
- akzeptiert nur Dateien mit der Erweiterung
.json, - validiert den Dateiinhalt,
- prüft die erforderlichen Felder
type,project_id,private_key,client_email, - speichert die Datei außerhalb des öffentlichen Verzeichnisses in
var/google-indexing, - versucht, die Dateiberechtigungen auf
0600zu setzen, sofern der Dateitreiber dies erlaubt.
Die Datei wird mit einem vom Konfigurations-Scope abhängigen Namen gespeichert, zum Beispiel für den globalen Scope:
var/google-indexing/service-account-default-0.jsonGoogle Cloud Project ID
Textfeld für die Kennung des Google Cloud-Projekts.
In der aktuellen Implementierung des Moduls basiert die Hauptautorisierung auf den Daten aus dem JSON des Servicekontos. Das Feld Google Cloud Project ID dient einer informativen und ordnenden Funktion in der Konfiguration, besonders wenn der Shop mehrere Umgebungen oder mehrere Google Cloud-Projekte nutzt.
Empfehlung:
- tragen Sie den Wert
project_idaus der JSON-Datei ein, - verwenden Sie separate Google Cloud-Projekte für Produktions- und Testumgebungen, falls diese Trennung im Projekt vorgesehen ist.
8. Abschnitt Queue and Limits
Daily Publish Limit
Standardmäßig:
200Bestimmt die maximale Anzahl an Publish-Meldungen, die das Modul pro Tag ausführen darf.
Der Limiter zählt Requests des Typs:
publish,publish_dry_run.
Wenn das Limit ausgeschöpft ist, ruft der Warteschlangen-Prozessor bis zum nächsten Tagesfenster keine weiteren Datensätze zum Versand ab.
Empfehlung:
- belassen Sie
200, wenn das Projekt das standardmäßige Onboarding-Limit von Google nutzt, - erhöhen Sie den Wert nur dann, wenn für das Google Cloud-Projekt ein höheres Limit genehmigt wurde,
- die Einstellung
0blockiert den Versand, da die Anzahl verfügbarer Slots dann0beträgt.
Requests Per Minute Limit
Standardmäßig:
60Bestimmt die maximale Anzahl an Publish-Requests pro Minute.
Das Modul vergleicht diesen Wert mit der Anzahl der in den Logs gespeicherten Requests aus der letzten Minute. Wenn das Minutenlimit ausgeschöpft ist, verarbeitet der Cron in diesem Lauf keine weiteren Datensätze.
Empfehlung:
- für eine typische Implementierung den Standardwert beibehalten,
- den Wert reduzieren, wenn Sie die API konservativer belasten möchten,
0nur setzen, wenn Sie den Versand vorübergehend stoppen möchten.
Cron Batch Size
Standardmäßig:
20Bestimmt die maximale Anzahl an Warteschlangen-Datensätzen, die in einem Cron-Lauf verarbeitet werden.
Die tatsächliche Zahl der verarbeiteten Datensätze wird zusätzlich begrenzt durch:
Daily Publish Limit,Requests Per Minute Limit,- die Anzahl versandbereiter Datensätze,
- Status und Datum von
scheduled_at.
Empfehlung:
20ist ein sicherer Startwert,- bei großen Warteschlangen kann der Wert erhöht werden, jedoch nur unter Berücksichtigung der Google-Limits.
Default Indexing Lag minutes
Standardmäßig:
15Bestimmt die Standardverzögerung zwischen dem Hinzufügen einer URL zur Warteschlange und dem Zeitpunkt, ab dem sie gesendet werden darf.
Die Verzögerung hilft dabei:
- Duplikate zu reduzieren,
- den Versand nach jeder kleinen Änderung zu vermeiden,
- dem Administrator Zeit zur Korrektur von Inhalten zu geben,
- das API-Limit besser zu verwalten.
In der aktuellen Implementierung wird diese Einstellung verwendet, wenn die Meldung keine eigene Verzögerung hat.
Manual Form Indexing Lag minutes
Standardmäßig:
15Bestimmt die Verzögerung für URLs, die über das Formular hinzugefügt wurden:
Google Indexing API > Import URLsWenn der Administrator eine URL-Liste manuell einfügt, wird jede gültige Adresse mit dieser Verzögerung eingeplant.
Empfehlung:
- setzen Sie
0, wenn der manuelle Import sofort in die Warteschlange gelangen soll, - belassen Sie
15, wenn Sie einen Puffer für Deduplizierung und Meldungskontrolle beibehalten möchten.
Mass Action Indexing Lag minutes
Standardmäßig:
15Bestimmt die Verzögerung für URLs, die hinzugefügt wurden über:
- Massenaktionen für Produkte,
- Massenaktionen für CMS-Seiten,
- Buttons zur Meldung der Indexierung auf den Bearbeitungsseiten von Produkt, Kategorie und CMS-Seite.
Empfehlung:
- für Massenoperationen den Wert
15oder höher beibehalten, - für kleine Shops und manuelle Admin-Arbeit kann ein niedrigerer Wert erwogen werden.
Max Attempts
Standardmäßig:
5Bestimmt die maximale Anzahl an Versandversuchen für einen Warteschlangen-Datensatz.
Wenn Google einen temporären Fehler zurückgibt, setzt das Modul den Status retry, sofern die Anzahl der Versuche kleiner ist als Max Attempts. Nach Überschreiten des Limits erhält der Datensatz den Status failed_permanent.
Als temporär behandelte Fehler:
408,409,412,429,500,502,503,504.
Retry Delay minutes
Standardmäßig:
15Grundverzögerung vor dem nächsten Versandversuch nach einem temporären Fehler.
Der Cron verwendet eine ansteigende Verzögerung. Der Multiplikator hängt von der Anzahl der Versuche ab und ist auf maximal 24 begrenzt. Dadurch werden weitere Versuche nicht zu aggressiv ausgeführt.
Beispiel für den Wert 15:
| Versuch | Ungefähre Verzögerung |
|---|---|
| 1 | 15 Minuten |
| 2 | 30 Minuten |
| 3 | 60 Minuten |
| 4 | 120 Minuten |
Allowed Source Types
Standardmäßig:
manual,product,category,cms_page,amasty_blog_postListe zulässiger Quelltypen, durch Kommas getrennt.
Unterstützte Werte:
| Wert | Bedeutung |
|---|---|
manual | URL, die manuell über das Importformular hinzugefügt wurde. |
product | Produkt-URL. |
category | Kategorie-URL. |
cms_page | CMS-Seiten-URL. |
amasty_blog_post | URL eines Amasty-Blogbeitrags, wenn ein separates Integrationsmodul verwendet wird. |
Wenn der Quelltyp nicht in der Liste enthalten ist, überspringt der Scheduler die Meldung und markiert sie als skipped.
Empfehlung:
- behalten Sie die Standardwerte bei, wenn der Shop alle üblichen Quellen nutzt,
- entfernen Sie Quellen, die Sie nicht für die Warteschlange zulassen möchten.
Allowed URL Hosts
Standardmäßig:
leerListe zulässiger URL-Hosts, durch Kommas getrennt.
Beispiel:
example.com,www.example.comWenn die Liste ausgefüllt ist, akzeptiert das Modul nur Adressen, die zu den angegebenen Hosts gehören. Wenn eine URL einen anderen Host hat, gibt die Validierung den Fehler zurück:
host_not_allowedEmpfehlung:
- füllen Sie diese Liste in der Produktion immer aus,
- fügen Sie alle vom Shop genutzten Hosts hinzu, zum Beispiel die Hauptdomain, die
www-Version, Store-View-Domains und Sprachdomains, - fügen Sie keine Testdomains in die Produktionskonfiguration ein.
Require HTTPS URLs
Standardmäßig:
YesErzwingt, dass gemeldete URLs das Schema https verwenden.
Wenn das Feld aktiviert ist, wird eine Adresse mit http mit folgendem Fehler abgelehnt:
https_requiredEmpfehlung:
- für produktive Shops
Yesbeibehalten, Nonur in Ausnahmefällen in Testumgebungen verwenden.
9. Abschnitt Auto-Indexing
Enable Auto-Indexing
Standardmäßig:
NoDas Feld ist für automatische Integrationen beim Speichern oder Löschen von Entitäten sowie für zusätzliche URL-Provider vorbereitet.
Im aktuellen Umfang des Moduls stehen manuelle und administrative Mechanismen zum Hinzufügen von URLs zur Warteschlange zur Verfügung, darunter URL-Import, Mass Actions und Buttons auf Bearbeitungsformularen.
Empfehlung:
- belassen Sie
No, wenn Auto-Indexing im Projekt nicht implementiert wurde, - aktivieren Sie es erst dann, wenn das Projekt die Verarbeitung automatischer Entitätsereignisse enthält, die diese Konfiguration nutzt.
10. Abschnitt Logs
API Log Retention Days
Standardmäßig:
90Bestimmt die Anzahl der Tage, für die API-Logs aufbewahrt werden.
Der Cron zum Bereinigen der Logs läuft täglich um:
03:15Er entfernt Einträge, die älter sind als die in diesem Feld angegebene Anzahl an Tagen.
Empfehlung:
90Tage sind ein sinnvoller diagnostischer Wert,- bei einer großen Anzahl von Requests kann die Retention reduziert werden,
- bei SEO-Audits kann die Retention erhöht werden, wobei die Größe der Log-Tabelle zu berücksichtigen ist.
11. Installations- und Konfigurationsassistent
Der Assistent befindet sich unter:
Google Indexing API > Setup AssistantSein Ziel ist die schnelle Prüfung, ob die Konfiguration auf Magento- und Google-Seite für den ersten Test bereit ist.
11.1. Abschnitt Current Status
Der Assistent zeigt den aktuellen Status der wichtigsten Elemente an:
| Feld | Bedeutung |
|---|---|
Module | Informiert darüber, ob das Modul in der Konfiguration aktiviert ist. |
Dry Run | Informiert darüber, ob der Testmodus ohne echten Versand an Google aktiv ist. |
Credentials | Zeigt an, ob das Modul die Google-credentials lesen und parsen kann. |
Service Account Email | Zeigt client_email aus dem JSON des Servicekontos an. Diese Adresse sollte als Inhaber in Search Console hinzugefügt werden. |
Allowed Hosts | Zeigt die in der Konfiguration zugelassenen Hosts an. |
Queue | Zeigt die Anzahl der Datensätze mit den Status scheduled, pending, retry und failed_permanent an. |
Wenn Credentials den Status Missing or invalid hat, sollten Sie zur Konfiguration zurückkehren und das JSON oder die credentials-Datei korrigieren.
Wenn Allowed Hosts den Status Not configured anzeigt, begrenzt das Modul keine Hosts. Technisch kann das funktionieren, für produktive Umgebungen wird jedoch empfohlen, die Shop-Hosts explizit einzutragen.
11.2. Abschnitt Setup Steps
Der Assistent zeigt eine Liste der Schritte an, die vor dem ersten echten Request erforderlich sind:
- Erstellen oder Auswählen eines Google Cloud-Projekts.
- Aktivieren der Indexing API und Erstellen eines JSON-Schlüssels für das Servicekonto.
- Einfügen des JSON oder Hochladen der JSON-Datei in die Magento-Konfiguration.
- Hinzufügen der Service Account Email als Inhaber in Google Search Console.
- Ausführen von Tests und anschließend Import einer URL bei aktiviertem
Dry Run.
Der Assistent enthält Links zu:
- Google Cloud für die Indexing API,
- der Modulkonfiguration in Magento,
- Google Search Console.
11.3. Test Google Credentials
Der Button:
Test Google Credentialsprüft, ob Magento die Daten des Servicekontos verwenden kann, um ein OAuth-Token für den Scope zu erhalten:
https://www.googleapis.com/auth/indexingEin positives Ergebnis bedeutet, dass:
- das JSON korrekt ist,
- der private Schlüssel verwendet werden kann,
- Google ein OAuth-Token ausgestellt hat.
Ein negatives Ergebnis kann bedeuten:
- ungültiges JSON,
- fehlerhafter oder beschädigter
private_key, - fehlendes Pflichtfeld im JSON,
- Problem bei der Kommunikation mit Google,
- Verwendung eines Schlüssels, der kein Servicekonto-Schlüssel ist.
Dieser Test bestätigt noch nicht, dass das Servicekonto Eigentümerzugriff auf die Domain in Search Console hat. Dafür ist ein URL-metadata-Test oder eine echte Meldung einer Test-URL erforderlich.
11.4. Test URL Metadata
Das Formular:
Test URL Metadataermöglicht die Eingabe einer öffentlichen URL von einem erlaubten Host und führt einen metadata-Request an die Google Indexing API aus.
Vor dem Versand des Requests führt das Modul folgende Schritte aus:
- Normalisierung der URL,
- Prüfung, ob die URL absolut ist,
- Prüfung des Schemas
httpoderhttps, - bei aktiviertem
Require HTTPS URLswirdhttpsverlangt, - Prüfung von
Allowed URL Hosts, sofern diese konfiguriert wurden.
Mögliche Ergebnisse:
| Ergebnis | Bedeutung |
|---|---|
| Erfolg HTTP 2xx | Google hat metadata für die URL zurückgegeben. |
| HTTP 404 | Bedeutet häufig, dass für die URL noch keine frühere erfolgreiche Meldung über die Indexing API vorliegt. Das muss keine fehlerhafte Konfiguration bedeuten. |
| Validierungsfehler vor dem Request | Die URL erfüllt die Bedingungen des Moduls nicht, zum Beispiel falscher Host, kein HTTPS oder keine absolute Adresse. |
| HTTP-Fehler ungleich 404 | Die Google-Meldung, Search-Console-Berechtigungen, credentials und Limits sollten geprüft werden. |
Der Metadata-Test erstellt keine neue Publish-Meldung. Er dient zur Diagnose der Verbindung und des URL-Status.
12. Erste Inbetriebnahme Schritt für Schritt
Empfohlene Reihenfolge für die erste Inbetriebnahme:
- Installieren Sie das Modul und führen Sie
setup:upgradeaus. - Gehen Sie in Magento zu
Stores > Configuration > Kowal > Google Indexing API. - Setzen Sie
Enable = Yes. - Lassen Sie
Dry Run = Yes. - Wählen Sie die Quelle der credentials.
- Fügen Sie das JSON des Servicekontos ein oder laden Sie die JSON-Datei hoch.
- Füllen Sie
Google Cloud Project IDmit dem Wertproject_idaus dem JSON. - Füllen Sie
Allowed URL Hostsaus, zum Beispielexample.com,www.example.com. - Belassen Sie die Standardlimits, sofern Google keine höheren Limits genehmigt hat.
- Speichern Sie die Konfiguration und leeren Sie den Cache.
- Gehen Sie zu
Google Indexing API > Setup Assistant. - Prüfen Sie, ob der Assistent die credentials als bereit anzeigt.
- Klicken Sie auf
Test Google Credentials. - Fügen Sie die Service Account Email als Inhaber in Google Search Console hinzu, falls dies noch nicht erfolgt ist.
- Führen Sie
Test URL Metadatafür eine öffentliche URL eines erlaubten Hosts aus. - Gehen Sie zu
Google Indexing API > Import URLs. - Fügen Sie eine Test-URL mit der Aktion
URL_UPDATEDhinzu. - Starten Sie den Magento-Cron:
bin/magento cron:run- Prüfen Sie
Google Indexing API > Indexing Queue. - Prüfen Sie
Google Indexing API > API Logs. - Wenn alles korrekt funktioniert, deaktivieren Sie
Dry Run. - Fügen Sie erneut eine Test-URL hinzu und prüfen Sie die echte Google-Antwort.
13. URL-Import aus dem Adminpanel
Der manuelle Import befindet sich unter:
Google Indexing API > Import URLsDas Formular enthält folgende Felder:
| Feld | Beschreibung |
|---|---|
Action | Typ der Meldung an Google: Hinzufügen/Aktualisieren oder Entfernen. |
Store View | Store View, dem die Meldung zugeordnet werden soll. Verfügbar ist auch die globale Option Use global/no store. |
URLs | Liste absoluter URLs, eine Adresse pro Zeile. |
Verfügbare Aktionen:
| Aktion im Formular | API-Wert | Bedeutung |
|---|---|---|
Submit URLs for indexing | URL_UPDATED | Informiert Google darüber, dass die URL hinzugefügt oder aktualisiert wurde. |
Delete URLs from indexing | URL_DELETED | Informiert Google darüber, dass die URL entfernt wurde und aus dem Index entfernt werden kann. |
Nach dem Absenden des Formulars zeigt das Modul eine Zusammenfassung an:
- hinzugefügt,
- aktualisiert,
- dedupliziert,
- ungültig,
- übersprungen.
Die ersten 10 Validierungsmeldungen werden als Notice im Adminpanel angezeigt.
14. Indexierungswarteschlange
Die Warteschlange befindet sich unter:
Google Indexing API > Indexing QueueJeder Warteschlangen-Datensatz enthält unter anderem:
- URL,
- URL-Hash,
- Store ID,
- Website ID,
- Quelltyp,
- ID der Quellentität,
- Herkunft des Requests,
- die Aktion
URL_UPDATEDoderURL_DELETED, - Status,
- Priorität,
- Anzahl der Versuche,
- maximale Anzahl der Versuche,
- geplantes Versanddatum,
- Verarbeitungsdatum,
- letzter Fehlercode,
- letzter Fehlergrund,
- letzte Fehlermeldung,
- Google-Antwort,
- die Information
created_by.
Warteschlangenstatus
| Status | Bedeutung |
|---|---|
scheduled | Die URL ist eingeplant, wartet aber noch auf das Datum scheduled_at. |
pending | Die URL ist bereit für die Verarbeitung durch den Cron. |
processing | Die URL wird aktuell verarbeitet. |
success | Google hat eine erfolgreiche Antwort zurückgegeben. |
retry | Es ist ein temporärer Fehler aufgetreten und der Datensatz wartet auf einen weiteren Versuch. |
failed_permanent | Der Versand ist dauerhaft fehlgeschlagen oder die maximale Anzahl an Versuchen wurde überschritten. |
cancelled | Der Datensatz wurde manuell abgebrochen. |
Aktionen für Warteschlangen-Datensätze
| Aktion | Funktion |
|---|---|
Transmit Now | Setzt den Datensatz als dringend, sperrt ihn, sendet ihn sofort über den Google-Client und speichert das Ergebnis. |
Retry | Setzt den Datensatz auf pending, entfernt die Sperre und plant sofort einen erneuten Versuch ein. |
Cancel | Setzt den Status auf cancelled und entfernt die Sperre. |
Hinweis: Transmit Now führt einen echten Request aus, wenn Dry Run = No gilt. Bei Dry Run = Yes wird ein Dry-Run-Log ohne echten Versand an Google gespeichert.
15. Cron
Das Modul fügt zwei Cron-Aufgaben in der Gruppe default hinzu.
Verarbeitung der Warteschlange
kowal_google_indexing_process_queueZeitplan:
*/5 * * * *Die Aufgabe startet den Warteschlangen-Prozessor alle 5 Minuten.
Der Prozessor:
- Prüft, ob das Modul aktiviert ist.
- Gibt alte Sperren von
processing-Datensätzen frei, die älter als 30 Minuten sind. - Verschiebt
scheduled-Datensätze nachpending, wennscheduled_at <= now. - Prüft verfügbare Slots in den Tages- und Minutenlimits.
- Ruft
pending- undretry-Datensätze ab. - Sortiert sie nach Priorität und geplantem Versanddatum.
- Sendet einen Request an Google oder führt einen Dry Run aus.
- Speichert Antwort, Status und API-Log.
Log-Bereinigung
kowal_google_indexing_cleanup_logsZeitplan:
15 3 * * *Die Aufgabe entfernt API-Logs, die älter sind als die im Feld angegebene Anzahl an Tagen:
API Log Retention Days16. API-Logs
Die Logs sind verfügbar unter:
Google Indexing API > API LogsDas Log umfasst:
- ID des Warteschlangen-Datensatzes,
- Store ID,
- Request-Typ,
- Endpoint-URL,
- Payload,
- HTTP-Status,
- Response-Body,
- Dauer des Requests,
- Erstellungsdatum des Logs.
Request-Typen:
| Typ | Bedeutung |
|---|---|
publish | Echte Meldung einer URL an Google. |
publish_dry_run | Verarbeitung im Dry-Run-Modus ohne echten Request an Google. |
metadata | Metadata-Test für eine URL. |
17. Mass Actions und Admin-Buttons
Das Modul fügt Mechanismen zum Melden von URLs aus dem Adminpanel hinzu.
Produkte
Im Produkt-Grid steht eine Massenaktion zur Verfügung, die Produkt-URLs zur Warteschlange hinzufügt.
Das Modul überspringt Produkte, die:
- deaktiviert sind,
- nicht einzeln sichtbar sind.
Die URLs werden auf Basis von URL Rewrites für aktive Store Views generiert.
CMS-Seiten
Im CMS-Seiten-Grid steht eine Massenaktion zur Verfügung, die Seiten-URLs zur Warteschlange hinzufügt.
Das Modul überspringt inaktive Seiten.
Wenn eine CMS-Seite allen Store Views zugewiesen ist, löst das Modul die URLs für alle Store Views auf.
Produkt, Kategorie und CMS-Seite - Buttons im Bearbeitungsformular
Das Modul fügt Buttons zur Meldung der Indexierung auf den Bearbeitungsseiten hinzu von:
- Produkt,
- Kategorie,
- CMS-Seite.
Der Button löst die Entitäts-URLs für Store Views auf und fügt sie als URL_UPDATED zur Warteschlange hinzu.
18. Empfohlene Startkonfiguration
Für die erste produktive Implementierung:
| Feld | Empfehlung |
|---|---|
Enable | Yes nach dem Speichern von credentials und allowed hosts. |
Dry Run | Yes für die Testphase, später No. |
Credentials Source | Encrypted configuration value oder Uploaded JSON file, je nach Projektrichtlinie. |
Google Cloud Project ID | project_id aus dem JSON. |
Daily Publish Limit | 200, es sei denn, Google hat ein höheres Limit genehmigt. |
Requests Per Minute Limit | 60 oder weniger bei einer vorsichtigen Implementierung. |
Cron Batch Size | 20. |
Default Indexing Lag | 15. |
Manual Form Indexing Lag | 0-15, je nach Arbeitsweise der Administratoren. |
Mass Action Indexing Lag | 15. |
Max Attempts | 5. |
Retry Delay | 15. |
Allowed Source Types | manual,product,category,cms_page,amasty_blog_post. |
Allowed URL Hosts | Alle produktiven Hosts des Shops. |
Require HTTPS URLs | Yes. |
Enable Auto-Indexing | No, es sei denn, das Projekt implementiert automatische Provider. |
API Log Retention Days | 90. |
19. Typische Probleme und Diagnose
Credentials test failed
Prüfen Sie:
- ob das JSON korrekt ist,
- ob das JSON von einem Servicekonto stammt,
- ob es
private_keyundclient_emailenthält, - ob das Feld
typeden Wertservice_accounthat, - ob die JSON-Datei beim Einfügen nicht beschädigt wurde.
Google gibt einen Berechtigungsfehler zurück
Prüfen Sie:
- ob die Domain in Search Console verifiziert ist,
- ob
client_emaildes Servicekontos als Inhaber hinzugefügt wurde, - ob die getestete URL zu derselben Search-Console-Property gehört,
- ob Sie das richtige Google Cloud-Projekt und das richtige JSON verwenden.
Die URL wird vor dem Versand abgelehnt
Prüfen Sie die Validierungsmeldung:
| Meldung | Ursache |
|---|---|
empty_url | Leere URL. |
url_too_long | Die URL hat mehr als 2048 Zeichen. |
url_not_absolute | Die URL hat kein Schema oder keinen Host. |
https_required | HTTPS ist erforderlich, die URL verwendet jedoch HTTP. |
invalid_scheme | Das Schema ist weder http noch https. |
host_not_allowed | Der Host der URL befindet sich nicht in Allowed URL Hosts. |
Die Warteschlange wird nicht verarbeitet
Prüfen Sie:
- ob
Enable = Yesgilt, - ob der Magento-Cron funktioniert,
- ob die Datensätze den Status
pendingoderretryhaben, - ob
scheduled_atnicht in der Zukunft liegt, - ob Tages- oder Minutenlimits nicht ausgeschöpft sind,
- ob
Daily Publish LimitundRequests Per Minute Limitnicht auf0gesetzt sind.
Datensätze wechseln in retry
Prüfen Sie:
- den HTTP-Status im Warteschlangen-Datensatz,
- das API-Log,
- die Google-Antwort,
- ob nicht das Limit
429auftritt, - ob keine temporären
5xx-Fehler vorliegen, - ob
Max AttemptsundRetry Delaywie erwartet gesetzt sind.
20. Optionale Integration mit Amasty Blog
Die Integration mit Amasty Blog ist als separates Modul vorgesehen:
Kowal_GoogleIndexingApiAmastyBlogPaket:
kowal/module-google-indexing-api-amasty-blogDieses Modul ist für die Funktion der Hauptintegration nicht erforderlich. Es sollte nur in Projekten installiert werden, die amasty/blog verwenden und eine Massenaktion für Blogbeiträge benötigen.
Write Your Own Review





















