Botkibble
AI agents, LLMs, and crawlers have to wade through navigation bars, sidebars, ads, and comment forms to reach the content they want, and every element costs tokens. Cloudflare measured an 80% reduction in token usage when converting a blog post from HTML to Markdown (16,180 tokens down to 3,150). Botkibble adds a Markdown endpoint to every published post and page. Cloudflare offers Markdown for Agents at the CDN edge on Pro, Business, and Enterprise plans. Botkibble does the same thing (for free) at the origin, so it works on any host. GitHub Repository Three ways to request Markdown: .md suffix: append .md to any post or page URL (e.g. example.com/my-post.md) Query parameter: add ?format=markdown to any post or page URL Content negotiation: send Accept: text/markdown in the request header What’s in every response: Structured metadata header with title, date, categories, tags, word count, character count, and estimated token count (in YAML frontmatter format, readable by any AI agent) Clean Markdown converted from fully-rendered post HTML (shortcodes run, filters applied) Content-Type: text/markdown and Vary: Accept response headers Content-Signal header for AI signal declaration — defaults to ai-train=no, search=yes, ai-input=yes — see contentsignals.org X-Markdown-Tokens header with estimated token count Discovery via in the HTML head and Link HTTP header Automatic cache invalidation when a post is updated or deleted Performance: Botkibble writes Markdown to disk on the first request, then serves it as a static file. A built-in Fast-Path serves cached files during WordPress’s init hook, before the main database query runs. No extra configuration needed. Add a web server rewrite rule and Botkibble bypasses PHP entirely, serving .md files the same way a server would serve an image or CSS file: Method Avg. response time Standard HTML 0.97s Markdown (cold, first request) 0.95s Markdown (cached, PHP Fast-Path) 0.87s Markdown (Nginx/Apache direct) 0.11s Serving directly from disk is 88% faster than a full WordPress page load. See the Performance section below for Nginx and Apache configuration. Security: Drafts, private posts, and password-protected content return 403 Forbidden Rate limits cache-miss regenerations (20/min by default) to mitigate DoS abuse X-Robots-Tag: noindex keeps Markdown versions out of search results Link: rel="canonical" points search engines back to the HTML version Cache variants (optional): You can persist alternate cached representations by adding ?botkibble_variant=slim (or any other variant name). Variant caches are stored under: /wp-content/uploads/botkibble/_v/ / .md What it does NOT do: Expose drafts, private posts, or password-protected content Serve non-post/page content types by default Require any configuration. Activate and it works. Why Markdown? HTML is expensive for AI systems to process. Cloudflare measured an 80% reduction in token usage when converting a blog post from HTML to Markdown (16,180 tokens down to 3,150). Cloudflare now offers Markdown for Agents at the CDN edge via the Accept: text/markdown header, available on Pro, Business, and Enterprise plans. This plugin does the same thing at the origin, so it works on any host. It also adds .md suffix URLs, ?format=markdown query parameters, YAML frontmatter, static file caching, and server-level offloading. If you use Cloudflare, both share the same Accept: text/markdown header, Content-Signal headers, and X-Markdown-Tokens response headers. Cloudflare currently defaults to Content-Signal: ai-train=yes, search=yes, ai-input=yes with no way to change it. Botkibble defaults to ai-train=no and lets you override the full signal per site via the botkibble_content_signal filter. Performance & Static Offloading This plugin supports static file offloading by writing Markdown content to /wp-content/uploads/botkibble/. Nginx Configuration To bypass PHP entirely and have Nginx serve the files (including variants) directly: # Variants location ~* ^/(_v/[^/]+/.+)\.md$ { default_type text/markdown; try_files /wp-content/uploads/botkibble/$1.md /index.php?$args; } # Default location ~* ^/(.+)\.md$ { default_type text/markdown; try_files /wp-content/uploads/botkibble/$1.md /index.php?$args; } Apache (.htaccess) Add this to your .htaccess before the WordPress rules: RewriteEngine On # Variants RewriteCond %{DOCUMENT_ROOT}/wp-content/uploads/botkibble/_v/$1/$2.md -f RewriteRule ^_v/([^/]+)/(.+)\.md$ /wp-content/uploads/botkibble/_v/$1/$2.md [L,T=text/markdown] # Default RewriteCond %{DOCUMENT_ROOT}/wp-content/uploads/botkibble/$1.md -f RewriteRule ^(.*)\.md$ /wp-content/uploads/botkibble/$1.md [L,T=text/markdown] Even without these rules, the plugin uses a “Fast-Path” that serves cached files from PHP before the main database query is executed. Credits We thank Cristi Constantin (https://github.com/cristi-constantin) for contributing cache variants, URL and SEO improvements, and fixing important bugs.
Top keywords
- markdown24×3.18%
- md16×2.12%
- botkibble15×1.99%
- text8×1.06%
- text markdown8×1.06%
- uploads8×1.06%
- uploads botkibble8×1.06%
- wp-content8×1.06%
- wp-content uploads8×1.06%
- wp-content uploads botkibble8×1.06%
- content7×0.93%
- header7×0.93%
Npcink Abilities Toolkit
Npcink Abilities Toolkit helps a WordPress site expose, review, and safely inspect Abilities API capabilities for AI hosts and clients. The admin page is built for site operators first. It shows whether the site’s ability package is working, which abilities are available, which abilities are read-only, and which write-like abilities require host approval. For developers and host runtimes, the plugin also provides ability registration helpers, category helpers, schema normalization, annotation normalization, REST discovery values, and optional canonical projection for Npcink AI when Npcink AI is installed. It can be used by any WordPress plugin or client that consumes the WordPress Abilities API. Npcink AI is one optional consumer, not the owner of this plugin. It does not run AI models, execute workflows, route prompts, contact model providers, manage billing or quotas, own MCP governance, or approve final WordPress writes. Read-only host composition recipe metadata may document how hosts can compose abilities, but those records do not run queues, schedule jobs, execute workflows, or create a second registry. Host composition recipe metadata is available through read-only helpers and Abilities API discovery abilities for hosts that need catalog discovery without execution ownership. Bundled starter locale files are limited to translations intentionally maintained in this repository. Incomplete bundled locale packs are removed until they can be maintained as complete starter translations. WordPress.org directory translations are managed separately through translate.wordpress.org/GlotPress and are not runtime authority owned by this plugin. External Services and Remote Requests This plugin does not automatically contact Npcink AI, model providers, analytics services, tracking services, or cloud services. Some abilities can prepare request payloads for a separate host or cloud add-on, but this plugin does not send those payloads to an external service by itself. The npcink-abilities-toolkit/upload-media-from-url ability is inert as a dry-run preview unless a separate authenticated host supplies approval context and commits the operation. When an approved host runtime commits that ability, WordPress sends an HTTP request to the caller-provided URL in order to fetch the media file for the local media library. The remote endpoint is chosen by the caller, not by this plugin. This plugin stores no provider credentials or remote-service configuration for that ability. This is not provider routing, cloud execution, or stored external-service configuration. Requirements WordPress 6.9 or later. WordPress 6.9 introduced the Abilities API used by this plugin. PHP 8.0 or later. The WordPress Abilities API REST routes must be available before third-party provider plugins or external clients can discover and run abilities. Public API npcink_abilities_toolkit_register_category( $category_id, $args ) npcink_abilities_toolkit_register_readonly( $ability_id, $definition ) npcink_abilities_toolkit_register_write_proposal( $ability_id, $definition ) npcink_abilities_toolkit_normalize_schema( $schema, $default_type ) npcink_abilities_toolkit_normalize_annotations( $annotations, $risk_level ) npcink_abilities_toolkit_get_registered() npcink_abilities_toolkit_get_workflow_definitions() npcink_abilities_toolkit_get_workflow_definition( $recipe_id ) The workflow definition helpers return read-only recipe metadata for host-side composition. They are not a workflow registry, execution engine, scheduler, approval store, audit store, model router, prompt registry, or final write authority. Third-Party Integration Quickstart Provider plugins should wait until plugins_loaded, check that the public helper exists, and then register their abilities through the helper functions: if ( function_exists( 'npcink_abilities_toolkit_register_readonly' ) ) { npcink_abilities_toolkit_register_readonly( 'acme/site-summary', $definition ); } Do not include files from this plugin’s includes/ directory or instantiate classes in the Npcink_Abilities_Toolkit namespace. Those are implementation details. Use npcink_abilities_toolkit_register_readonly() for read-only context and diagnostic abilities. Use npcink_abilities_toolkit_register_write_proposal() only when the callback returns a proposal, preview, diff, or handoff payload. Third-party provider callbacks should not perform final host-governed commits. Approval, audit, quota, and final write authorization belong to the consuming host runtime. REST clients should first discover the catalog through: /wp-json/wp-abilities/v1/categories /wp-json/wp-abilities/v1/abilities /wp-json/wp-abilities/v1/abilities/{namespace}/{name}/run /wp-json/npcink-abilities-toolkit/v1/contract The contract endpoint is a compatibility and boundary discovery endpoint for authenticated host runtimes. It does not replace the WordPress Abilities API catalog and does not run abilities. Full provider examples and REST client notes are maintained in the public repository: https://github.com/muze-page/npcink-abilities-toolkit If the wp-abilities/v1 REST routes are missing, enable the WordPress Abilities API baseline or compatibility plugin before connecting third-party providers or clients. Admin Page After activation with a Npcink AI host plugin, open Npcink AI -> AI Ability Set in wp-admin. When this standalone package is installed without a Npcink AI host menu, open Tools -> AI Ability Set instead. The page is designed for site operators first: it shows site ability status, groups available abilities with plain labels and risk posture, and can run two official read-only checks: site info and bounded redacted diagnostics summary. The Checks tab explains what each check proves and what it does not prove before it runs. Check results are shown as a plain summary table, with raw JSON kept behind a support disclosure. Developer Access keeps copyable REST endpoint values, raw discovery fetches, and ability ID export available for host/client setup. It does not run showcase workflows, model calls, write abilities, approval flows, or demo abilities. The Tools -> AI Ability Set page remains the standalone surface when no Npcink AI host menu is active; host detection must not create approval, quota, audit, or workflow control-plane behavior in this plugin. Built-In Abilities The plugin includes migrated low-risk WordPress read abilities, deterministic comment helpers, and host-governed WordPress write/destructive abilities using canonical npcink-abilities-toolkit/* ids. It also includes npcink-abilities-toolkit/wp-diagnostics-summary, a redacted WordPress-only diagnostics summary for Abilities API clients. This summary intentionally omits Npcink AI settings, MCP settings, API keys, database names, table prefixes, filesystem paths, error logs, and external HTTP probes. It also includes npcink-abilities-toolkit/search-posts and npcink-abilities-toolkit/search-post-meta, bounded local WordPress search helpers for keyword and explicit post-meta discovery. These are read-only helpers and do not call external search indexes or mutate content. It also includes npcink-abilities-toolkit/list-workflow-recipes and npcink-abilities-toolkit/get-workflow-recipe, read-only host composition recipe metadata discovery abilities. These expose metadata only and do not execute workflow runtime behavior. Core governance handoff docs include a catalog snapshot, permission matrix, and schema boundary audit for hosts that consume this plugin through npcink-ai-core. Developer Verification For the default local source gate, run: composer test:all When the plugin is installed in a local WordPress site, run: WP_PATH=/path/to/wordpress composer smoke:wp For isolated bounded-chain performance validation, run: composer perf:smoke