KI-Console Connect

Description

KI-Console Connect detects known AI crawler visits server-side by matching incoming request user agents against a crawler catalog. It helps site owners see when bots such as GPTBot, ChatGPT-related fetchers and other AI crawlers request their WordPress site.

The plugin works without adding frontend JavaScript and does not track normal human visitors. Local counters in WordPress show matched crawler visits for the last 7 and 30 days.

When an API token from KI-Console is configured, the plugin validates the connected WordPress domain, caches plugin entitlements, retrieves the KI-Console tracking key automatically, syncs llms.txt content when enabled, and renders a local score badge. The badge can also be placed manually with the [kicc_badge] shortcode.

The llms.txt route, footer badge and optimizer modules are off by default. The plugin does not add frontend JavaScript and does not load external badge images, CSS or scripts.

The optional optimizer can add AI crawler robots.txt allowances, sitemap hints, conservative meta tags, Organization/WebSite schema and IndexNow pings at runtime through WordPress hooks. If a physical robots.txt exists, administrators can optionally add a clearly marked reversible KI-Console block. If the API token becomes invalid, the service is inactive, or the plugin is disabled or uninstalled, these optimizations stop automatically or are removed best effort.

The crawler catalog is cached locally and includes a bundled fallback list, so detection can continue if the remote catalog is temporarily unavailable.

External services

This plugin connects to KI-Console, a service operated by Alpasana GmbH, Switzerland.

KI-Console service: https://ki-console.com/
KI-Console terms: https://ki-console.com/agb.php
KI-Console privacy policy: https://ki-console.com/datenschutz.php

Catalog updates:
The plugin ships with the complete AI crawler catalog and works fully offline. It makes no request on activation and schedules no cron event until an administrator explicitly connects the site by storing a KI-Console API token.

Once connected, the plugin requests https://ki-console.com/ki-crawler-catalog.json daily through WordPress Cron to update the catalog and the tracking endpoint metadata. This GET request has no request body and its User-Agent header contains only the plugin name and version – the site URL is not sent, because the catalog is a public file. Administrators can also trigger this request manually from the settings screen. Removing the token stops the scheduled request and clears the cron event.

Tracking pings:
Tracking pings are sent only after the plugin has retrieved a KI-Console tracking key through a valid API token. When an incoming request matches a known crawler, the plugin sends a non-blocking POST request to https://ki-console.com/track.php. The POST body contains the tracking key, exact bot name, request path without query strings, Unix timestamp and crawler catalog version. The plugin does not send WordPress usernames, email addresses, cookies, page content or the original full user agent in the tracking POST body.

Plugin status and token validation:
If an API token is configured, the plugin can request https://ki-console.com/api.php?endpoint=plugin-status&name=<domain> to validate that the token belongs to the current WordPress domain and to retrieve plugin entitlements. These GET requests include the API token only in the Authorization header. The response is cached locally without the token and can contain website ID, domain, verification status, enabled plan features, score, public report URL, badge state, whether llms.txt is available, the tracking key and the shared IndexNow key for the connected website.

llms.txt sync:
If an API token is configured and the site administrator enables llms.txt delivery, WordPress Cron can request https://ki-console.com/api.php?endpoint=plugin-llms&id=<website_id> to download generated llms.txt content for the verified connected website. The token is sent only in the Authorization header. The plugin stores only the text content, hash, generation time and cache timestamps locally. Public /llms.txt requests are served from the local cache only and do not call KI-Console.

Badge status:
If an API token is configured, the cached plugin-status response includes score, badge label, badge state and the public report URL. The shortcode and optional footer badge render this data locally as HTML and link to the public report. They do not load an external image, JavaScript or stylesheet from KI-Console.

IndexNow:
If the site administrator enables the IndexNow optimizer module, the plugin sends URL submission requests to the IndexNow global endpoint at https://api.indexnow.org/indexnow. IndexNow is operated by the IndexNow.org sponsors for notifying participating search engines about changed URLs.

The plugin uses the shared IndexNow key returned by KI-Console for the connected website and serves /<key>.txt through a virtual WordPress route. No physical IndexNow key file is written. When posts are published or updated, the plugin sends a throttled non-blocking POST request. Administrators can also submit the homepage and latest public published posts/pages manually in one blocking batch from the admin UI. The request body contains the site host, published URLs, the IndexNow key and the virtual key location. It does not send WordPress usernames, email addresses, cookies, page content or the API token.

IndexNow service: https://www.indexnow.org/
IndexNow documentation: https://www.indexnow.org/documentation
IndexNow terms and privacy information: https://www.indexnow.org/terms

Installation

  1. Upload the ki-console-connect folder to /wp-content/plugins/, or install the plugin ZIP through Plugins > Add New > Upload Plugin.
  2. Activate KI-Console Connect in WordPress.
  3. Open the KI-Console menu in WordPress admin.
  4. Paste the API token from KI-Console. Tracking and IndexNow are configured automatically after the token is validated.
  5. Optionally click “Jetzt für KI optimieren” to enable the runtime optimizer, llms.txt delivery and footer badge. Every module can also be switched individually.

FAQ

Does the plugin track normal visitors?

No. The plugin checks the request user agent server-side. It sends tracking pings only when a KI-Console tracking key has been retrieved through a valid API token and the request matches a known AI crawler.

Is a KI-Console account required?

The bundled and cached catalog can detect crawler matches locally. An API token is required if you want to send crawler proof events to KI-Console, use the plugin bridge, sync llms.txt, show local badge data or use the shared IndexNow key.

What data is sent to KI-Console?

Catalog updates send a GET request for the crawler catalog. Tracking pings, when enabled after token validation, send the tracking key, exact bot name, request path, timestamp and catalog version. Plugin API requests, when an API token is configured, send the API token as a bearer token to validate the domain, refresh entitlements and sync llms.txt content if that feature is enabled.

Does /llms.txt call KI-Console on every bot request?

No. When enabled, /llms.txt is served only from the local WordPress cache. KI-Console sync happens through WordPress Cron or when settings are saved.

Does the badge load an external image?

No. The shortcode and optional footer badge render local HTML from cached KI-Console status data and link to the public report.

Does the optimizer write robots.txt, llms.txt or IndexNow files?

By default, optimizations are delivered at runtime through WordPress hooks and virtual routes. If a physical robots.txt exists, administrators can explicitly allow the plugin to add a marked KI-Console block to that file. The block is removed on reset, invalid token, deactivation and uninstall when the file is writable. The plugin never writes physical llms.txt or IndexNow key files.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“KI-Console Connect” is open source software. The following people have contributed to this plugin.

Contributors

Translate “KI-Console Connect” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

0.5.8

  • No remote request and no cron event on activation. The bundled crawler catalog makes the plugin fully functional offline.
  • Catalog updates now run only while an administrator has explicitly connected the site with an API token; removing the token clears the scheduled event.
  • The catalog request no longer sends the site URL in its User-Agent.
  • Badge link output now carries rel=”nofollow”.

0.5.6

  • Ausgabe der llms.txt über wp_kses() abgesichert (von den WordPress-Coding-Standards anerkannte Funktion).
  • Eingaben im Adminbereich werden direkt beim Zugriff bereinigt.
  • Pfadermittlung lädt im Frontend keine Admin-Dateien mehr nach.

0.5.5

  • Pfade zu Dateien im Seitenwurzelverzeichnis über get_home_path() statt über die Konstante ABSPATH bestimmt.
  • Sitemap-Adresse über get_sitemap_url() ermittelt.
  • Nonce- und Berechtigungsprüfung für die Rückmeldungen im Adminbereich ergänzt.
  • Ausgabe der llms.txt über wp_strip_all_tags() abgesichert.

0.5.4

  • Wartungs-Release: konsistente Versionierung und sauberer WordPress.org-Build.

0.5.3

  • Fixed llms.txt output being HTML-escaped (for example > became &gt;); the file is now served as clean plain text.

0.5.2

  • Fixed a 301 redirect (/llms.txt -> /llms.txt/) that could make the served llms.txt appear unavailable when rewrite rules were stale after an update; the file is now served reliably before canonical redirects run.

0.5.1

  • WordPress.org readiness: hardened input sanitizing and output escaping, completed the translation template, prefixed the badge shortcode to [kicc_badge] and refreshed the external services documentation.

0.5.0

  • Added manual IndexNow submission from the admin UI.
  • Added optional, reversible physical robots.txt block handling.
  • Kept frontend assets local and optimizer output runtime-only by default.