Privatrak

Dokumentation

So richten Sie Privatrak ein, benennen, was Ihnen wichtig ist, und lesen jeden Bericht.

Videoreihe ansehenAcht kurze Videos zum gesamten Produkt, auf YouTube.Wird in einem neuen Tab geöffnet

Server-Anfragen melden

KI-Dienste wie ChatGPT und Claude und die meisten anderen Crawler lesen Ihre Seiten, ohne JavaScript auszuführen, deshalb sieht der Tracker sie nie. Nur Ihr Server sieht sie. Meldet Ihr Server ihre Anfragen an Privatrak, zeigt die Seite KI-Dienste, wie oft jeder KI-Dienst Ihre Seiten gelesen hat. So erfassen Sie KI-Crawler und Bots auf Ihrer Website.

Ihre Plattform wählen

Richten Sie es einmal ein, für die Plattform, auf der Ihre Website läuft:

  • WordPress: Schalten Sie eine Einstellung im Plugin ein. Ohne Code.
  • Cloudflare: Fügen Sie eine Datei in einen Worker ein. Ohne eigenen Code, für jede Website hinter Cloudflare.
  • Next.js: Fügen Sie Ihrem Proxy eine Zeile hinzu.
  • Nuxt: Es ist nichts zu ergänzen, die Funktion ist standardmäßig an.
  • Node, Bun, Deno und Edge-Server: ein Aufruf pro Anfrage.
  • Jeder andere Server: Senden Sie die Anfragen an die Privatrak-API.

Richten Sie pro Website nur eine davon ein. Zwei zusammen melden jede Anfrage doppelt.

Bevor Sie beginnen

  • Ein Privatrak-Projekt für Ihre Website. Wie Sie eines anlegen, zeigt Erste Schritte.
  • Ihr Website-Schlüssel, also der Schlüssel vom Typ Ihre Website. Sie kopieren ihn unter Einstellungen › API-Schlüssel. Es ist derselbe Schlüssel, den der Tracker nutzt, und er kann nur Daten senden.

Server-Anfragen aus WordPress melden

Das Plugin Privatrak Analytics meldet Anfragen von Crawlern für Sie. Das Plugin muss installiert und mit Ihrem Projekt verbunden sein. Wie das geht, zeigt Auf WordPress einbinden.

  1. Öffnen Sie in WordPress Einstellungen › Privatrak.
  2. Schalten Sie KI-Dienste und Crawler zählen, die kein JavaScript ausführen ein.
  3. Klicken Sie auf Änderungen speichern.

Danach meldet Ihre Website jede Anfrage eines bekannten Crawlers. Ihre Besucher sind davon nicht betroffen.

Ein Cache-Plugin beantwortet Anfragen von Crawlern aus seinem Cache, bevor WordPress läuft, deshalb werden diese Anfragen nicht gezählt. WP Super Cache, W3 Total Cache und LiteSpeed Cache tun das mit ihren üblichen Einstellungen. Ihre Zahlen können dann niedriger sein als die tatsächlichen. Läuft Ihre Domain über Cloudflare, nutzen Sie stattdessen den Cloudflare Worker: Er zählt auch Seiten, die ein Cache ausliefert. Schalten Sie dann die Einstellung in WordPress aus, wie unter Cloudflare erklärt.

Server-Anfragen mit Cloudflare melden

Läuft Ihre Domain über Cloudflare, meldet ein kleiner Worker die Anfragen von Crawlern für Sie, egal womit Ihre Website gebaut ist: Webflow, Squarespace, Shopify, Wix, GitHub Pages, statisches Hosting oder WordPress. Er zählt auch Seiten, die ein Cache ausliefert. Die DNS-Einträge Ihrer Domain müssen über Cloudflare laufen (orange Wolke). Der Worker reicht jede Anfrage unverändert an Ihre Website weiter.

  1. Öffnen Sie in Cloudflare Workers & Pages und wählen Sie Create application. Legen Sie einen Worker aus der Vorlage Hello World an.
  2. Öffnen Sie den Code-Editor des Workers, ersetzen Sie den gesamten Inhalt durch den Inhalt von https://api.privatrak.com/cloudflare-worker.js und wählen Sie Deploy.
  3. Öffnen Sie Settings › Variables and Secrets und wählen Sie Add. Wählen Sie den Typ Secret, nennen Sie ihn PRIVATRAK_API_KEY, geben Sie Ihren Website-Schlüssel als Wert ein und wählen Sie Deploy.
  4. Öffnen Sie Settings › Domains & Routes und fügen Sie eine Route für Ihre Website hinzu, zum Beispiel example.com/*. Antwortet Ihre Website auch unter www.example.com, fügen Sie auch www.example.com/* hinzu. Stellen Sie den Fehlermodus der Route auf Fail open.

Danach meldet Ihre Website jede Anfrage eines bekannten Crawlers. Ihre Besucher sind davon nicht betroffen. Anfragen an die eigene workers.dev-Adresse des Workers werden nicht gemeldet.

Meldet Ihre Website Serveranfragen bereits auf anderem Weg, schalten Sie das aus, sonst wird jede Anfrage doppelt gezählt:

  • WordPress: Schalten Sie unter Einstellungen › Privatrak die Option KI-Dienste und Crawler zählen, die kein JavaScript ausführen aus.
  • Nuxt: Setzen Sie serverRequests: false, wie unter Auf Nuxt einbinden gezeigt.
  • Next.js: Entfernen Sie withPrivatrak() aus proxy.ts oder middleware.ts. Ein eigener Proxy bleibt bestehen. Die Komponente Privatrak in Ihrem Layout bleibt ebenfalls.
  • Ihr eigener Servercode: Rufen Sie report() nicht mehr auf.

Der kostenlose Workers-Tarif erlaubt 100.000 Anfragen pro Tag und Cloudflare-Konto, und jede Anfrage an Ihre Website zählt, auch die von Menschen. Mit Fail open läuft Ihre Website über diese Grenze hinaus weiter. Der Worker wird für den Rest des Tages übersprungen, deshalb werden diese Anfragen nicht gezählt. Ein kostenpflichtiger Workers-Tarif hat kein Tageslimit für Anfragen.

Server-Anfragen aus Next.js melden

Das Paket @privatrak/next meldet Anfragen von Crawlern aus Ihrem Proxy und ändert dabei nie eine Antwort. Mit Next.js 16 gehört das in proxy.ts:

import { withPrivatrak } from '@privatrak/next/server';

export const proxy = withPrivatrak();

Mit Next.js 13 bis 15 nennen Sie die Datei middleware.ts und schreiben export default withPrivatrak();. Der Proxy nutzt den Website-Schlüssel aus NEXT_PUBLIC_PRIVATRAK_API_KEY. Die vollständige Einrichtung steht unter Auf Next.js einbinden: eigener Proxy, Matcher, ein Schlüssel nur für den Server und Selbst-Hosting.

Server-Anfragen aus Nuxt melden

Das Modul @privatrak/nuxt meldet Anfragen von Crawlern aus Ihrem Nuxt-Server, sobald es Ihren Website-Schlüssel hat. Es ist standardmäßig an, Sie müssen also nichts ergänzen. Auf Nuxt einbinden zeigt, wie Sie das Modul einrichten und die Meldung ausschalten.

Server-Anfragen aus Node, Bun, Deno oder einem Edge-Server melden

Installieren Sie @privatrak/tracker und legen Sie einmal einen Reporter an, außerhalb Ihres Request-Handlers. Rufen Sie dann für jede Anfrage, die Ihr Server beantwortet, report() auf. Es entscheidet sofort, wirft nie einen Fehler und verzögert Ihre Antwort nie. Anfragen von Menschen werden nie gesendet.

npm install @privatrak/tracker

Das Modul http von Node, das auch Express und ähnliche Server nutzen:

import { createServer } from 'node:http';
import { createRequestReporter } from '@privatrak/tracker/server';

const reporter = createRequestReporter({ apiKey: 'your-website-key' });

createServer((req, res) => {
  reporter.report(req);
  // ...answer the request as usual
}).listen(3000);

Ein Cloudflare Worker, den Sie mit npm bauen. (Einen fertigen Worker finden Sie unter Server-Anfragen mit Cloudflare melden.) Bei Hosts, die die Arbeit nach der Antwort beenden, übergeben Sie das Ergebnis von report() an waitUntil() oder after():

import { createRequestReporter } from '@privatrak/tracker/server';

const reporter = createRequestReporter({ apiKey: 'your-website-key' });

export default {
  async fetch(request, env, ctx) {
    ctx.waitUntil(reporter.report(request));
    return fetch(request);
  },
};

report() nimmt eine Fetch-API-Request, das req von Node oder ein Objekt mit method, url und headers. Ist url nur ein Pfad, wird sie aus dem Host-Header ergänzt. In einem Skript, das sich beendet, rufen Sie vorher await reporter.flush() auf.

Der Reporter kennt diese Optionen:

OptionStandardWas sie bewirkt
apiKeyerforderlichIhr Website-Schlüssel.
apiHosthttps://api.privatrak.comDie Adresse der Privatrak-API.
flushIntervalMs2000Wie lange eine Anfrage auf andere wartet, um mit ihnen einen Aufruf zu teilen, in Millisekunden. Ein Aufruf enthält bis zu 100 Anfragen.
fetchdas der LaufzeitumgebungDie Funktion, mit der gesendet wird. Standard ist das fetch der Laufzeitumgebung.

Server-Anfragen über die API melden

Von jedem anderen Server senden Sie die Anfragen an POST /api/server-requests. Nutzen Sie Ihren Website-Schlüssel im Header X-API-Key. Ein Aufruf enthält 1 bis 100 Anfragen:

curl -X POST https://api.privatrak.com/api/server-requests \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your-website-key" \
  -d '{
    "requests": [
      {
        "url": "https://example.com/pricing",
        "user_agent": "ChatGPT-User/1.0; +https://openai.com/bot",
        "timestamp": "2026-10-26T09:12:03Z"
      },
      {
        "url": "https://example.com/robots.txt",
        "user_agent": "Googlebot/2.1 (+http://www.google.com/bot.html)"
      }
    ]
  }'

Jede Anfrage hat eine absolute url und den user_agent der Anfrage. Der timestamp ist optional, im Format 2026-10-26T09:12:03Z. Innerhalb eines Aufrufs zählen Anfragen mit demselben Crawler, derselben Seite und demselben Zeitstempel einmal. Ein Aufruf mit einem anderen Feld, etwa einer IP-Adresse, wird abgelehnt.

Senden Sie nur Anfragen, deren User-Agent zu einem Muster aus GET /api/crawler-patterns passt. Dann verlässt keine Anfrage eines Menschen Ihren Server. Die Liste braucht keinen Schlüssel und ändert sich selten, behalten Sie sie also einen Tag lang. Bei den Mustern wird zwischen Groß- und Kleinschreibung unterschieden. In JavaScript kompilieren Sie sie ohne Flags. In PHP nutzen Sie den Modifikator D.

Privatrak antwortet mit 202 und {"accepted": 2}, der Zahl der Anfragen im Aufruf, und zählt die von Crawlern. Pro Projekt nimmt es nach einem kurzen Schub 2 Aufrufe pro Sekunde an. Darüber antwortet es mit 429 und dem Header Retry-After.

Was Ihren Server verlässt

Gemeldet werden nur Anfragen bekannter Crawler. Zu jeder erhält Privatrak:

  • Die Adresse der Seite, gekürzt auf Website-Adresse und Seitenpfad, nachdem die Datenschutz-Einstellungen Ihres Projekts angewendet wurden.
  • Den User-Agent des Crawlers.
  • Den Zeitpunkt der Anfrage, wenn der Absender ihn angibt.

Über die Menschen auf Ihrer Website wird nichts gesendet, und nie eine IP-Adresse, ein Cookie oder ein anderer Header. Ihr Server prüft jede Anfrage selbst gegen die Liste der Crawler, deshalb löst die Anfrage eines Menschen keinen Aufruf an Privatrak aus.

Listet Ihr Projekt erlaubte Domains, zählt Privatrak nur Anfragen für Seiten dieser Domains. Gemeldete Anfragen verbrauchen Ihr monatliches Event-Kontingent nicht.

Prüfen, ob es funktioniert

  1. Rufen Sie eine Seite Ihrer Website so auf, wie es ein Crawler täte. Ersetzen Sie die Adresse durch Ihre eigene:
    curl -A "ChatGPT-User/1.0" https://example.com/
  2. Öffnen Sie in Privatrak KI-Dienste und wechseln Sie zum Tab Alle Crawler.

ChatGPT-User (OpenAI) erscheint unter KI-Antworten mit 1 Anfrage. Diese Testanfrage zählt wie eine echte. Erscheint nichts, prüfen Sie, ob Ihr Website-Schlüssel gesetzt ist, ob die Domain Ihrer Website unter den erlaubten Domains steht und ob kein Cache die Anfrage beantwortet hat.

Nächste Schritte

Server-Anfragen melden: KI-Crawler ohne JavaScript zählen