Skip to main content

Server Logs / API Ingest

Wenn deine Website nicht hinter Cloudflare oder Akamai läuft — z. B. weil dein eigenes nginx die Edge ist — kannst du AI-Crawler-Besuche direkt an Finseo pushen. Jedes System, das einen HTTP-POST senden kann, funktioniert: eine Server-Side-Tracking-Pipeline, ein gefiltertes nginx-Access-Log mit Cron-Job oder ein eigenes Skript. Die Verbindung findest du unter Bot Analytics → Sync → Server Logs / API → Connect. Der Dialog erzeugt dein projektgebundenes Ingest-Token (fslg_…) und zeigt Endpoint, ein NDJSON-Beispiel sowie fertige nginx- und Cron-Vorlagen zum Kopieren.
AI-Crawler wie GPTBot, ClaudeBot und PerplexityBot führen kein JavaScript aus — ein Client-Snippet kann sie nicht sehen. Bot Traffic arbeitet ausschließlich mit serverseitigen Daten, deshalb müssen die Daten aus deinen Edge- oder Server-Logs kommen.

Endpoint

Der Body ist NDJSON: ein JSON-Objekt pro Zeile, eine Zeile pro Request. Plaintext und gzip werden beide akzeptiert — Finseo erkennt gzip automatisch an den Magic Bytes, kein zusätzlicher Header nötig.

Log-Zeilen-Format

Die Feldnamen sind absichtlich identisch mit dem Cloudflare-Feed — ein Exportformat funktioniert für alle Finseo-Push-Integrationen.

Antwort

  • received — Zeilen im Batch
  • botVisits — als verifizierte AI-/Search-Crawler-Requests erkannte Zeilen
  • saved — nach Deduplizierung geschriebene Zeilen
Damit kannst du deinen Cron selbst überwachen. Der Integrationsstatus springt mit der ersten erfolgreichen Lieferung von Awaiting first push auf Connected.
Retries sind unkritisch: Finseo dedupliziert serverseitig über Bot + Zeitstempel + IP + Pfad. Ein doppelt gesendeter Batch erzeugt nie Doppelzählungen. Du kannst auch ungefilterte Logs senden — Nicht-Crawler-Zeilen werden verworfen und nie gespeichert — Vorfiltern hält deine Payloads aber klein.

Option A: Push aus deinem Server-Side-Tracking

Wenn du bereits ein zentrales Request-Log hast (Server-Side-Tracking, Log-Pipeline), filtere es auf die Crawler-User-Agents und poste den Batch stündlich oder täglich:

Option B: gefiltertes nginx-Access-Log + Cron

Vollprotokollierung ist nicht nötig. Ein zweites, gefiltertes Log nur mit AI-Crawlern umfasst typischerweise wenige tausend Zeilen pro Tag — kein Aggregationsservice erforderlich:
Alle 10 Minuten rotieren und pushen:
Bei autoskalierenden Servern gehören nginx-Config und Cron ins AMI/User-Data — sonst melden frische Instanzen nichts. Wenn deine Infrastruktur einen zentralen Request-Store hat, ist Option A die bessere Wahl: eine Integrationsstelle, kein Datenverlust beim Scale-in.

Limits

  • Max. 16 MB pro Request-Body (64 MB dekomprimiert), max. 20.000 Zeilen pro Push
  • Rate-Limits pro IP und pro Token — Batches senden, keine Einzel-Requests
  • Nur Requests verifizierter AI- und Search-Crawler werden gespeichert; alles andere wird verworfen

Testen ohne Server-Änderungen

Du willst echte Zahlen sehen, bevor irgendetwas umgebaut wird? Bot Analytics → Upload Server Logs akzeptiert rohe nginx-, Apache- und Cloudflare-Text-Logs bis 1 GB — einfach einen Tag Logs exportieren und manuell hochladen.

Trennen

Klicke auf der Server-Logs-/API-Karte auf Manage → Disconnect. Das Ingest-Token wird sofort ungültig — weitere Pushes werden mit 403 abgelehnt. Denk daran, auch deinen Cron-Job zu entfernen.

Troubleshooting

Finseo verifiziert die Crawler-Identität über die publizierten IP-Ranges der Anbieter. Wenn du die IP deines Load Balancers statt der echten Client-IP (erster Eintrag aus X-Forwarded-For) sendest, schlägt die Verifizierung fehl und die Zeilen werden verworfen. Prüfe außerdem, ob ClientRequestUserAgent den vollständigen Original-UA-String enthält.
401 bedeutet, dass der Authorization: Bearer-Header fehlt; 403 bedeutet, dass das Token ungültig ist oder über Disconnect widerrufen wurde. Kopiere das aktuelle Token aus dem Connect-Dialog.
Der Status springt beim ersten erfolgreichen POST um — prüfe die JSON-Antwort in deinem Cron-Output. Ein 413 bedeutet, dass der Batch die Größenlimits überschritten hat; teile ihn auf.
Das ist die Deduplizierung: Zeilen mit gleichem Bot, Zeitstempel, IP und Pfad — z. B. aus einem wiederholten Batch — werden nur einmal gespeichert.