| 开发者 |
kglundin
unseatai |
|---|---|
| 更新时间 | 2026年7月2日 22:21 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
/wp-json/seo-machine/v1/status endpoint that reports WordPress version, active SEO plugin, permalink structure, and potential plugin conflicts.llms.txt and llms-full.txt pages as plain text at their canonical URLs, making your content index machine-readable for AI crawlers.robots.txt allowlist for GPTBot, ClaudeBot, PerplexityBot, CCBot, Google-Extended, Applebot, and other LLM crawlers with Crawl-delay: 0.<meta name="description">, canonical, OpenGraph, and Twitter Card tags from the connector's meta fields.wp_enqueue_script when configured through the REST endpoint.https://yoursite.com/wp-json/seo-machine/v1/status (requires authentication).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.
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.
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.
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 each do_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./wp-json/seo-machine/v1/status endpoint permission from edit_posts to manage_options, since it reports site configuration and software/plugin version details that should be limited to administrators.<title> dedupe and the sitemap Cache-Control TTL cap) are now explicitly closed on the shutdown hook 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.$_SERVER['REQUEST_URI'] through wp_unslash() + sanitize_text_field() and wp_parse_url(), matching the text-file handler.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.&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.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 full wp_cache_flush(), which only a stale cached file explains.?unseat_sitemap=1 (no caching at any layer, so it can never go stale) and advertised via a Sitemap: 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).POST /wp-json/seo-machine/v1/flush (administrators only): performs a whole-namespace wp_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.unseat-connector so existing installs upgrade in place.Cache-Control: max-age header on sitemap_index.xml and per-type sitemap responses so downstream CDNs revalidate sooner.unseat-connector so existing installs upgrade in place.Text Domain: unseat-connector header.parse_url() to wp_parse_url() for consistency across PHP versions.$_SERVER['REQUEST_URI'] with isset() + wp_unslash() + sanitize_text_field() before parsing.llms.txt page output through esc_html().wp_enqueue_script() + wp_add_inline_script() instead of raw <script> tags in wp_head./llms.txt and /llms-full.txt. On every save of the llms-txt and llms-full-txt pages the plugin now also writes a real file at the WordPress root (ABSPATH/llms.txt, ABSPATH/llms-full.txt) so hosts that strip .txt URLs before WordPress is invoked still serve the file..txt page)./llms.txt and /llms-full.txt 301-redirecting to trailing-slash variants. The plugin now suppresses WordPress's redirect_canonical for these paths so AI crawlers that don't follow redirects get the file directly on the canonical URL.robots_txt filter (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 with Allow: /, Disallow: /wp-admin/, Crawl-delay: 0). No filter is injected when the site's "Discourage search engines" setting is on.