Plattformen
WordPress
Zähle eine WordPress-Website mit Runlight und sieh, wann KI-Agenten sie lesen.
Das Runlight-Plugin betreibt Runlight innerhalb einer WordPress-Website, mit dem Dashboard unter /runlight auf der Website und den Zahlen in ihrer eigenen Datenbank. Es kann auch an ein Runlight senden, das du anderswo betreibst, entweder den eigenständigen Server oder eine App, in die Runlight eingebunden ist, sodass ein Dashboard viele Websites abdeckt.
Was es tut
- Es fügt Runlights Skript in jede Seite ein. Auf einer Seite, die WordPress mit einem 404 beantwortet, zeichnet das Skript außerdem ein Ereignis namens 404 mit dem Pfad der fehlenden Seite auf, sodass die Eigenschaften von 404 in der Box Ereignisse die kaputten Adressen auflisten, auf die Leute gestoßen sind, und wie oft.
- Es lässt die eigenen Besuche von Administratoren weg, außer du schaltest das aus.
- Es zeichnet KI-Agenten wie ChatGPT und Claude auf, wenn sie deine Seiten abrufen. Agenten führen kein JavaScript aus, deshalb kann das Skript sie nicht sehen, und das Plugin zeichnet sie auf dem Server auf, sobald die Seite gesendet wurde.
- Es fügt dem Admin-Menü einen Eintrag Runlight hinzu, der das Dashboard dieser Website in wp-admin zeigt.
Einrichten
Installiere das Plugin und aktiviere es, mit wp plugin install runlight --activate oder unter Plugins, Neues Plugin hinzufügen. Es öffnet seinen Einrichtungsbildschirm, und nichts wird gezählt, bis du wählst, wo Runlight läuft. Klicke auf Run Runlight in this WordPress, und es beginnt, die Website zu zählen.
Der Eintrag Runlight im Admin-Menü zeigt die Zahlen, und sein Button Open in Runlight öffnet das vollständige Dashboard unter /runlight auf deiner Website. Dort kannst du Ziele, Trichter, Kurzlinks und E-Mail-Berichte hinzufügen und Verlaufsdaten aus Umami importieren. Wer Optionen verwalten darf, standardmäßig die Administratoren, ist Eigentümer dieses Runlight, und alle anderen werden gebeten, sich bei WordPress anzumelden.
Um Runlight innerhalb von WordPress zu betreiben, brauchst du PHP 8.2 oder neuer mit den Erweiterungen mbstring und openssl. Die Einstellungsseite unter Einstellungen, Runlight sagt dir, wenn etwas fehlt.
Wo die Zahlen liegen
Ist die Datenbank von WordPress MySQL 8.0.20 oder neuer oder MariaDB 11.4 oder neuer, speichert Runlight seine Zahlen dort, über die eigene Verbindung von WordPress, sodass deine Datenbank-Backups sie enthalten. Seine Tabellen sind nach dem Tabellenpräfix von WordPress benannt, etwa wp_rl_events, damit eine andere App oder ein anderes WordPress in derselben Datenbank seine eigenen behält. Gibt es Tabellen mit diesen Namen schon und gehören sie nicht zu Runlight, nutzt es eine SQLite-Datei. Andernfalls kommen die Zahlen in eine SQLite-Datei in wp-content/uploads/runlight, unter einem Namen, den niemand erraten kann, was PHPs Erweiterung sqlite3 voraussetzt. Jede Website in einem Netzwerk bekommt immer eine eigene Datei. Die Wahl fällt beim ersten Start von Runlight und ändert sich nie, damit sich die Zahlen nie auf zwei Orte aufteilen.
Wenn du das Plugin deaktivierst, bleibt alles erhalten. Wenn du es löschst, werden Runlights Tabellen oder sein Ordner entfernt, zusammen mit den Einstellungen des Plugins, auf jeder Website eines Netzwerks. Es löscht nur Runlights eigene Tabellen, jede einzeln beim Namen.
Orte
Die Länder der Besucher kommen aus einem Header, wenn ein CDN wie Cloudflare einen mitschickt. Andernfalls schalte unter Einstellungen, Runlight die Option Show which countries visitors come from ein, und das Plugin lädt einmal im Monat die kostenlose Länder-Datenbank von DB-IP herunter und legt sie im Uploads-Ordner ab. Adressen werden auf deinem Server nachgeschlagen und nie irgendwohin gesendet.
Stündliche Pflege
Der Cron von WordPress führt Runlights stündlichen Check jede Stunde aus. Er erzeugt den Salt für jeden Tag, verschickt E-Mail-Berichte, löscht Besuche, die älter sind als die eingestellte Aufbewahrungsdauer, und rechnet abgeschlossene Tage zusammen. Der Cron von WordPress läuft, wenn jemand die Website besucht, auf einer ruhigen Website kann er also spät dran sein, was nur Berichte verzögert. Websites, die den Cron von WordPress abschalten und wp-cron.php von einem echten Cron aufrufen, bekommen den Check nach dessen Zeitplan. Ist der Check seit über einem Tag nicht gelaufen, sagt die Einstellungsseite das.
E-Mail-Berichte
Ist in WordPress ein SMTP- oder Mail-Plugin aktiv, etwa WP Mail SMTP, FluentSMTP, Post SMTP oder Easy WP SMTP, verschickt Runlight seine E-Mail-Berichte und Test-E-Mails über WordPress, von der Administrator-E-Mail-Adresse und im Namen der Website. Einstellungen, E-Mail-Dienst im Dashboard sagt dann, welches Plugin sie verschickt. WordPress allein sendet mit PHPs mail(), was oft im Spam landet oder nirgends ankommt, deshalb bittet dich das Dashboard ohne ein solches Plugin, dort stattdessen einen Mail-Dienst einzurichten. Du kannst auch einen anderen Dienst wählen, während ein Plugin aktiv ist, und später an derselben Stelle zum Mailer von WordPress zurückkehren. Einen SMTP-Server bietet das Dashboard in WordPress nicht an, weil ein SMTP-Plugin das abdeckt und Runlight über dieses Plugin sendet.
Adressen der Besucher
Runlight zählt Besucher mit einem täglichen Hash ihrer Adresse und begrenzt, wie oft eine Adresse senden kann. Das Plugin ermittelt die Adresse selbst, sodass kein Besucher eine wählen kann. Es nimmt die Adresse, von der die Anfrage kam, außer das ist der Server selbst oder ein privates Netz, wo ein Proxy auf demselben Host die Anfrage weitergereicht hat. Dann nimmt es die nächstgelegene öffentliche Adresse in X-Forwarded-For, an das jeder Proxy etwas anhängt. Gehört diese Adresse zu Cloudflare, nimmt es die Adresse des Besuchers aus Cloudflares Header CF-Connecting-IP. Ein Host, der es besser weiß, kann das über den Filter runlight_client_ip mitteilen.
php
add_filter( 'runlight_client_ip', function ( $ip, $server ) {
return $server['HTTP_X_REAL_IP'] ?? $ip;
}, 10, 2 );Einfache Permalinks
Mit einfachen Permalinks schickt ein Server wie Apache nur index.php an WordPress, deshalb antwortet Runlight unter /index.php/runlight, was auf jedem Server funktioniert, und die Einstellungsseite zeigt diese Adresse an. Wählst du unter Einstellungen, Permalinks eine andere Struktur, zieht es nach /runlight um.
An ein Runlight senden, das du anderswo betreibst
- Gib auf dem Einrichtungsbildschirm des Plugins unter Connect to a Runlight you run elsewhere die Adresse ein, unter der dieses Runlight antwortet, etwa
https://stats.example.comfür den eigenständigen Server oderhttps://example.com/runlightfür eine App, in die Runlight eingebunden ist. Runlight zeigt sie unter Einstellungen, Einbinden als Runlight-Adresse an. - Klicke auf Connect. Dein Runlight bittet dich, dich anzumelden, falls du es noch nicht bist, und dann, die Verbindung für die Website zu erlauben, die diese Domain zählt. Zählt noch keine Website sie, bietet es an, eine hinzuzufügen, wenn seine Websites im Dashboard verwaltet werden, wie beim eigenständigen Server.
- Klicke auf Allow. Runlight schickt dich mit allen ausgefüllten Einstellungen zurück zu WordPress, und der Eintrag Runlight im Admin-Menü zeigt die Zahlen dieser Website.
Beim Verbinden bekommt das Plugin zwei Schlüssel. Der Agenten-Schlüssel meldet KI-Agenten, die deine Seiten lesen, und er kann nur Abrufe für diese eine Website melden, also weder deine Statistiken lesen noch in eine andere Website schreiben. Der Dashboard-Schlüssel zeigt das Dashboard dieser Website in wp-admin an, nur lesend, behandle ihn also wie ein Passwort. Der Dashboard-Schlüssel erscheint in Runlight unter Einstellungen, API und KI, und wenn du ihn dort löschst, hört das Dashboard in wp-admin auf zu funktionieren.
Zum Verbinden muss wp-admin über HTTPS laufen oder, solange du etwas ausprobierst, auf localhost, weil Runlight Leute nur an solche Adressen zurückschickt. In einer App, in die Runlight eingebunden ist, muss die Website schon in hostnames stehen (siehe Konfiguration), weil die Websites dort im Code festgelegt werden.
Die Einstellungen von Hand eintragen
Jede Einstellung im Plugin hat ihr Gegenstück in Runlight, unter Einstellungen, Einbinden im Abschnitt WordPress, Drupal und Craft, jeweils mit einem Button zum Kopieren. Kopiere Runlight-Adresse, Agenten-Schlüssel und Dashboard-Schlüssel in die Felder Runlight address, Agents key und Dashboard key und speichere. Runlight zeigt den Dashboard-Schlüssel nur einmal an, erstelle also einen neuen, wenn du ihn verlierst. Die Website-ID (im Plugin Site id) brauchst du nur, wenn dieses Runlight die Website nicht an ihrer Domain erkennen kann. Beim Speichern prüft das Plugin, ob die Adresse antwortet, und sagt dir das Ergebnis.
Zählen
Unter Counting zeichnet Count clicks on links to other sites jeden Klick auf einen Link zu einer anderen Website als Ereignis namens Outbound link auf, und Count file downloads zeichnet jeden Klick auf einen Link zu einer Datei, etwa einem PDF oder einem ZIP, als Ereignis namens File download auf. Beides ist eingeschaltet, bis du es ausschaltest.
Das Dashboard in wp-admin
Mit Runlight innerhalb von WordPress zeigt der Eintrag Runlight im Admin-Menü das ganze Dashboard in wp-admin, dasselbe wie unter /runlight, mit seinen Einstellungen, Zielen und Kurzlinks. Nur Seiten auf deiner eigenen Website dürfen es in einem Frame anzeigen. Wird wp-admin also unter einer anderen Adresse als die Website ausgeliefert, etwa mit www. bei einer der beiden, öffnet die Seite das Dashboard in einem neuen Tab.
Mit einem Runlight anderswo zeigt der Eintrag Runlight das Dashboard dieser Website in derselben Nur-Lese-Ansicht, die ein Freigabelink zeigt, mit ihren Berichten und Zeiträumen und ohne Runlights Einstellungen, Kurzlinks, Personen oder andere Websites. Der Button Open in Runlight öffnet das vollständige Dashboard in deinem eigenen Runlight.
Mit einem Runlight anderswo muss die Adresse, unter der wp-admin ausgeliefert wird, zu den Domains der Website in Runlight gehören, weil nur eine Admin-Seite auf einer davon das Dashboard anzeigen darf. Das Verbinden kümmert sich darum, und ein vorangestelltes www. macht keinen Unterschied. Der Schlüssel erreicht nie den Browser. Jedes Mal, wenn ein Admin die Seite öffnet, schickt der Server des Plugins den Schlüssel und den Origin des Admins an Runlight und bekommt ein Ticket zurück, das das Dashboard einmal öffnet, innerhalb von fünf Minuten. Die Seite lädt das Dashboard von deinem Runlight in einem Frame, den nur dieser Admin anzeigen darf. Der Frame hält seine Sitzung eine Stunde lang in der Seite, ohne Cookies, deshalb zeigen auch Browser, die Cookies in Frames blockieren, ihn an. Ist die Stunde um, sagt der Frame das und lädt die Seite auf Wunsch neu. Wenn du den Schlüssel in Runlights Einstellungen, API und KI löschst, ist er sofort gestoppt, zusammen mit jeder offenen Sitzung. Dein Runlight muss über HTTPS ausgeliefert werden, wenn wp-admin es wird, sonst verweigert der Browser den Frame.
Seiten-Caches
Manche Caching-Plugins liefern Seiten direkt vom Webserver aus, ohne PHP auszuführen, etwa WP Super Cache im Expertenmodus. Diese Seiten enthalten trotzdem das Skript, Besuche werden also gezählt. WordPress läuft bei diesen Anfragen nie, deshalb werden Abrufe gecachter Seiten durch KI-Agenten nicht gemeldet. Caches, die über PHP laufen, etwa WP Rocket und die meisten Caches auf Host-Ebene, melden Abrufe durch Agenten wie gewohnt.