presseportale/config/search_console.php
Kevin Adametz 6c4618afed admin: Indexierungsstatus aus der Search Console, Kundenansicht vorbereitet und zu (Anhang 1: 1c.4, E8)
press-releases:check-index-status fragt täglich je Portal ein Kontingent
veröffentlichter Meldungen über die URL Inspection API ab, nach Alter
gestaffelt, nie geprüfte zuerst. Jede Antwort wird als Momentaufnahme in
press_release_index_checks gespeichert; der reduzierte Befund (IndexState)
trennt „noch nicht gecrawlt" von „gecrawlt, nicht indexiert".

Client authentifiziert sich als Service-Konto über ein selbst signiertes
JWT — kein Google-SDK. Admin ▸ Reports ▸ Indexierung zeigt die Verteilung
je Portal getrennt nach Direkteinreichung und Syndikation (Status-Log
source=api; Altbestand ohne Log zählt als direkt).

Das Kundenpanel heißt jetzt „Auslieferung", zeigt Sitemap-Datum und die
Abrufe durch Such- und KI-Dienste mit dem Satz „Ein Abruf ist kein Zitat";
der Google-Index-Block hängt an GSC_CUSTOMER_VISIBLE (false).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 14:21:51 +00:00

50 lines
1.9 KiB
PHP

<?php
/*
|--------------------------------------------------------------------------
| Google Search Console — Indexierungsstatus (Roadmap 1c.4)
|--------------------------------------------------------------------------
|
| Abgleich veröffentlichter Meldungen über die URL Inspection API. Läuft
| zunächst nur als Admin-Auswertung; die Anzeige beim Kunden ist per
| `customer_visible` geschlossen (Entscheidung E8, 17.09.2026), bis die
| Verteilung getrennt nach Direkteinreichung und Syndikation bekannt ist.
|
| Zugang über ein Service-Konto (JSON-Schlüsseldatei), das in der Search
| Console als Nutzer der jeweiligen Property eingetragen ist. Quote: 2.000
| Abfragen je Tag und Property — `daily_budget` bleibt bewusst weit darunter
| und wird nach Alter gestaffelt auf die jüngsten Meldungen verteilt.
|
*/
return [
'enabled' => (bool) env('GSC_ENABLED', false),
// Pfad zur JSON-Schlüsseldatei des Service-Kontos (außerhalb von public/).
'credentials' => env('GSC_SERVICE_ACCOUNT_FILE'),
// Property je Portal, wie in der Search Console angelegt
// (Domain-Property „sc-domain:…" oder URL-Präfix „https://…/").
'properties' => [
'presseecho' => env('GSC_PROPERTY_PRESSEECHO', 'sc-domain:presseecho.de'),
'businessportal24' => env('GSC_PROPERTY_BUSINESSPORTAL24', 'sc-domain:businessportal24.de'),
],
// Abfragen je Lauf und Portal.
'daily_budget' => (int) env('GSC_DAILY_BUDGET', 300),
// Wie oft eine Meldung erneut geprüft wird, gestaffelt nach Alter seit
// Veröffentlichung: [maximales Alter in Tagen => Abstand in Tagen].
// Die letzte Stufe gilt für alles Ältere.
'recheck_days' => [
14 => 3,
90 => 14,
365 => 45,
PHP_INT_MAX => 180,
],
// Indexierungsstatus in der Absenderansicht zeigen (E8: zunächst zu).
'customer_visible' => (bool) env('GSC_CUSTOMER_VISIBLE', false),
];