Beskriuwing
Unseat Connector is the official WordPress plugin for the unseat.ai content platform from Unseat AI Corporation. It lets the platform publish and manage SEO-optimized content on your site, and exposes the signals AI crawlers (ChatGPT, Claude, Perplexity, Gemini) look for.
What it does:
- SEO Meta Fields — Registers Rank Math, Yoast SEO, and SEOPress meta fields (title, description, focus keyword, social tags) for REST API read/write access. Works with or without an SEO plugin installed.
- Site Health Endpoint — Provides a
/wp-json/seo-machine/v1/statusendpoint that reports WordPress version, active SEO plugin, permalink structure, and potential plugin conflicts. - llms.txt Serving — Serves your
llms.txtandllms-full.txtpages as plain text at their canonical URLs, making your content index machine-readable for AI crawlers. - IndexNow Key — Serves your IndexNow verification key file as plain text.
- AI-Crawler Allowlist — Injects an explicit
robots.txtallowlist for GPTBot, ClaudeBot, PerplexityBot, CCBot, Google-Extended, Applebot, and other LLM crawlers withCrawl-delay: 0. - Fallback SEO Meta Tags — When no SEO plugin is active, emits
<meta name="description">, canonical, OpenGraph, and Twitter Card tags from the connector’s meta fields. - Optional GA4 Tag — Injects a Google Analytics 4 measurement ID via
wp_enqueue_scriptwhen configured through the REST endpoint.
Requirements:
- WordPress 5.5 or higher
- PHP 7.4 or higher
- An unseat.ai account (for the publishing platform; the SEO meta and llms.txt serving features work without one)
External services
This plugin can optionally load Google Analytics 4 (gtag.js) from Google. This integration is off by default and is only activated after a site administrator sets a GA4 Measurement ID (format G-XXXXXXXX) through the plugin’s REST endpoint (POST /wp-json/seo-machine/v1/ga4). No external service is contacted until that ID is configured.
What it is used for: when a Measurement ID is configured, the plugin enqueues Google’s analytics script from https://www.googletagmanager.com/gtag/js so the site owner can measure website traffic.
What data is sent and when: while a Measurement ID is configured, the script loads on front-end page views for visitors who are not logged-in administrators (logged-in administrators are excluded to avoid inflating analytics). On each such page view the visitor’s browser sends the standard Google Analytics data directly to Google — for example the page URL, referrer, IP address, and device/browser information. No data is sent when no Measurement ID is configured, and the plugin itself does not collect, store, or transmit any of this data to unseat.ai or to any other party.
This service is provided by Google. By configuring a GA4 Measurement ID you are choosing to use Google Analytics on your site; please review Google’s terms and privacy policy:
- Google Analytics Terms of Service: https://marketingplatform.google.com/about/analytics/terms/us/
- Google Privacy Policy: https://policies.google.com/privacy
- How Google uses information from sites or apps that use its services: https://policies.google.com/technologies/partner-sites
No other external services are contacted by this plugin. All SEO meta, llms.txt, IndexNow, robots.txt, sitemap, status, and cache-flush features operate entirely on your own server.
Ynstallaasje
- Install directly from the WordPress plugin directory, or upload the plugin zip via Plugins > Add New > Upload Plugin.
- Activate the plugin.
- Verify the connector is working by visiting
https://yoursite.com/wp-json/seo-machine/v1/status(requires authentication).
The unseat.ai platform will automatically detect the connector during onboarding.
FAQ
-
Do I need Rank Math, Yoast, or SEOPress installed?
-
No. The connector registers SEO meta fields that work with or without an SEO plugin, and emits its own meta/OpenGraph/Twitter Card tags when none is active.
-
What is llms.txt?
-
llms.txt is a machine-readable index of your site content, similar to robots.txt but designed for AI language models. It helps AI search engines discover and cite your content.
-
Does this plugin collect any data?
-
The plugin itself does not collect or store any visitor data — it adds REST API endpoints to your existing WordPress installation, and all of that data stays on your server. The unseat.ai platform connects to these endpoints using your WordPress application password.
The one exception is the optional Google Analytics 4 integration: if an administrator configures a GA4 Measurement ID, the plugin loads Google’s analytics script so visitor analytics data is sent from the visitor’s browser to Google. This is off until you configure it. See the External services section above for exactly what is sent and links to Google’s terms and privacy policy.
-
Can I use this without an unseat.ai account?
-
Yes. The SEO meta field registration, llms.txt serving, and robots.txt allowlist all work independently. The status endpoint is primarily useful for the unseat.ai platform.
Resinsjes
D’r binne gjin resinsjes foar dizze plugin.
Meiwurkers & amp; Untwikkelders
“Unseat Connector” is iepen boarne software. De folgjende minsken hawwe bydroegen oan dizze plugin.
MeiwurkersOersette “Unseat Connector” yn jo taal.
Ynteressearre yn ûntwikkeling?
Blêdzje troch de koade , besjoch de SVN-repository , of abonnearje op it ûntwikkelingslogboek troch RSS .
Feroaringslog
2.7.4
- WordPress.org reviewer-fix pass (prefixing). All functions (
unseat_connector_*), constants (UNSEAT_CONNECTOR_*/UNSEAT_*), options (unseat_*), and the enqueued script handle (unseat-connector-ga4) use the plugin’s unique prefix. Added inline comments at eachdo_action()/ function call into third-party plugin hooks (Rank Math, GoDaddy WPaaS, Cloudflare) documenting that those names are owned by those plugins and are intentionally invoked unprefixed, so they are not mistaken for unprefixed plugin code.
2.7.3
- WordPress.org reviewer-fix pass for resubmission.
- Documented the optional Google Analytics 4 integration as a third-party external service in the readme (what is sent, when, and links to Google’s Terms of Service and Privacy Policy).
- Tightened the
/wp-json/seo-machine/v1/statusendpoint permission fromedit_poststomanage_options, since it reports site configuration and software/plugin version details that should be limited to administrators. - The two front-end output buffers (head
<title>dedupe and the sitemap Cache-Control TTL cap) are now explicitly closed on theshutdownhook via a level-matched check, instead of relying on implicit shutdown flushing — so they can never leave the output-buffer stack misaligned for other components. - Hardened the sitemap-request detection to read
$_SERVER['REQUEST_URI']throughwp_unslash()+sanitize_text_field()andwp_parse_url(), matching the text-file handler.
2.7.2
- Publish-time prevention: the sitemap-invalidation hook now also calls
RankMath\Sitemap\Cache::invalidate_storage()(when present). Rank Math 1.0.272+ stores sitemap caches under indexed names the per-type invalidation misses — proven live by an 11-day frozen sitemap that survived every other flush; invalidating storage on each publish makes that freeze class structurally impossible. - The robots.txt Sitemap line for the fallback sitemap now carries a content fingerprint (
&v=): managed-host gateways rewrite no-cache headers in transit and CDNs cache the constant URL, so the cache key now rotates whenever content changes — an edge cache can never serve a stale copy to a crawler reading current robots.txt.
2.7.1
- Deep-flush endpoint now also purges Rank Math’s file-based sitemap cache (
uploads/rank-math/sitemap-cache/*.xml) and reports per-file deletion failures — live evidence showed a sitemap that survived post updates, transient clears, a module toggle, and a fullwp_cache_flush(), which only a stale cached file explains. - Fallback sitemap responses now set a session cookie so managed-host gateways (observed: GoDaddy WPaaS rewriting Cache-Control to public/max-age=31d in transit) and downstream CDNs treat the constant URL as uncacheable — without this, the “cache-immune” fallback could itself be frozen at the edge.
2.7.0
- Cache-immune fallback sitemap served live at
?unseat_sitemap=1(no caching at any layer, so it can never go stale) and advertised via aSitemap:line in robots.txt. Protects crawler discovery of new posts when the SEO plugin’s cached sitemap freezes (observed in production: a persistent object cache ignoring per-key deletes left a sitemap frozen across post updates, transient clears, and a sitemap-module toggle). - New authenticated deep-flush endpoint
POST /wp-json/seo-machine/v1/flush(administrators only): performs a whole-namespacewp_cache_flush()— the one mechanism that clears an object-cache backend ignoring per-key deletes — then re-fires sitemap invalidation and a rewrite-rules flush. Intended for the unseat.ai platform’s automated drift remediation.
2.6.1
- IndexNow key file now served with an explicit HTTP 200. The text-file handler echoed the correct key body but left WordPress’s virtual-path 404 status in place, so Bing’s async IndexNow key validation rejected the file and silently dropped every submitted URL. Also applies to the llms.txt / llms-full.txt endpoints.
2.6.0
- Duplicate <title> dedupe: collapses duplicate title tags in the document head (keeps the first), fixing the common “Multiple title tags” SEO error that occurs when a theme’s title-tag support and an SEO plugin (or another source) both emit a title. Safe on every site — only removes duplicates, never the sole title, so it can never leave a page title-less. Supersedes the standalone unseat-title-dedupe.php mu-plugin.
2.5.3
- Cloudflare Edge cache purge on publish via the Cloudflare WordPress plugin hook, so a freshly published/updated URL and the sitemap are served fresh from the edge. Removed an earlier non-functional direct-API purge path.
2.5.2
- Renamed plugin to “Unseat Connector” — the official plugin from Unseat AI Corporation, owner of the unseat.ai platform. Folder slug remains
unseat-connectorso existing installs upgrade in place.
2.5.1
- Connector-side cache flush on publish: when the connector receives a publish or update, it issues a cache-purge request to known host CDN gateways (WP Engine, Cloudways, Kinsta) so the sitemap and freshly-published URL are served from the edge rather than a stale layer.
2.5.0
- Sitemap cache hygiene: on publish/update, the plugin now invalidates the Rank Math sitemap cache and sets a short
Cache-Control: max-ageheader onsitemap_index.xmland per-type sitemap responses so downstream CDNs revalidate sooner.
2.4.0
- WordPress.org Plugin Check pass (clean) and reviewer-fix pass for resubmission. Folder slug remains
unseat-connectorso existing installs upgrade in place. - Added explicit
Text Domain: unseat-connectorheader. - Switched
parse_url()towp_parse_url()for consistency across PHP versions. - Sanitized
$_SERVER['REQUEST_URI']withisset()+wp_unslash()+sanitize_text_field()before parsing. - Escaped the plain-text
llms.txtpage output throughesc_html(). - Reworked GA4 tag injection to use
wp_enqueue_script()+wp_add_inline_script()instead of raw<script>tags inwp_head.
2.3.3
- Full SEOPress support and graceful AIOSEO fallback for SEO coverage reporting.
2.3.2
- SEO meta renderer for sites with no SEO plugin (description, canonical, OpenGraph, Twitter Card).
2.3.1
- Static-file fallback for
/llms.txtand/llms-full.txt. On every save of thellms-txtandllms-full-txtpages the plugin now also writes a real file at the WordPress root (ABSPATH/llms.txt,ABSPATH/llms-full.txt) so hosts that strip.txtURLs before WordPress is invoked still serve the file. - IndexNow key file gets the same static-file fallback (any 32-hex-char
.txtpage). - Static files are removed across all retraction paths: unpublishing a page, trashing a page, and permanent delete.
2.3.0
- Fixed
/llms.txtand/llms-full.txt301-redirecting to trailing-slash variants. The plugin now suppresses WordPress’sredirect_canonicalfor these paths so AI crawlers that don’t follow redirects get the file directly on the canonical URL. - Added explicit AI-crawler allowlist to robots.txt via the
robots_txtfilter (GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-Web, anthropic-ai, PerplexityBot, Perplexity-User, CCBot, Google-Extended, Applebot, Applebot-Extended, Amazonbot, Bytespider, Meta-ExternalAgent, FacebookBot, cohere-ai, cohere-training-data-crawler, DuckAssistBot, Diffbot, YouBot — each withAllow: /,Disallow: /wp-admin/,Crawl-delay: 0). No filter is injected when the site’s “Discourage search engines” setting is on.
2.1.0
- Added Yoast SEO field support alongside Rank Math.
- Added OpenGraph and Twitter Card meta field registration.
- Improved conflicting plugin detection (AIOSEO, SEOPress, Squirrly).
- Added analytics conflict detection (Site Kit, MonsterInsights, ExactMetrics).
2.0.0
- Combined three separate mu-plugins into a single standard plugin.
- Added backwards-compatible guard constants for legacy mu-plugins.
- Added IndexNow key file serving.
1.0.0
- Initial release — SEO meta fields, status endpoint, llms.txt serving.
