[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fCjAfXMkcvB6E505Xcf3GkPP41JlaIo2WCAQPQ9IPgFw":3,"$ftgMkJvZYzgD39A8LLj1VSBsC6gzaQsARr2nLKTxs2OI":244,"$fEpOwTqKzp0PBT5CZiTIKirya1TAZ11WM6QDa30Z1o6M":248},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":11,"num_ratings":11,"last_updated":13,"tested_up_to":14,"requires_at_least":15,"requires_php":16,"tags":17,"homepage":23,"download_link":24,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27,"discovery_status":28,"vulnerabilities":29,"developer":30,"crawl_stats":26,"alternatives":37,"analysis":115,"fingerprints":221},"agentmark","AgentMark","1.0.0","Selvakumar Duraipandian","https:\u002F\u002Fprofiles.wordpress.org\u002Fselvasudar\u002F","\u003Cp>\u003Cstrong>The Problem:\u003C\u002Fstrong>\u003Cbr \u002F>\nWordPress outputs HTML that’s difficult for AI systems to parse accurately. Important content gets lost in markup, scripts, and styling.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>The Solution:\u003C\u002Fstrong>\u003Cbr \u002F>\nAgentMark provides clean Markdown versions of your posts and pages through simple \u003Ccode>.md\u003C\u002Fcode> endpoints, plus an industry-standard \u003Ccode>llms.txt\u003C\u002Fcode> file that helps AI agents discover your best content.\u003C\u002Fp>\n\u003Ch4>Use Cases\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>AI Search Engines\u003C\u002Fstrong>: Help tools like Perplexity, Claude, and ChatGPT cite your content accurately\u003C\u002Fli>\n\u003Cli>\u003Cstrong>RAG Systems\u003C\u002Fstrong>: Enable companies to build knowledge bases from your public content\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Documentation\u003C\u002Fstrong>: Provide developers with clean, parseable API docs\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Content Syndication\u003C\u002Fstrong>: Share articles in a universal, lightweight format\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Knowledge Graphs\u003C\u002Fstrong>: Help semantic web tools understand your site structure\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Key Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Zero Configuration\u003C\u002Fstrong>: Works out of the box with sensible defaults\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Markdown Endpoints\u003C\u002Fstrong>: Access any post\u002Fpage as Markdown by adding \u003Ccode>.md\u003C\u002Fcode> to the URL\u003C\u002Fli>\n\u003Cli>\u003Cstrong>llms.txt Standard\u003C\u002Fstrong>: Auto-generates discovery file for AI agents\u003C\u002Fli>\n\u003Cli>\u003Cstrong>YAML Front Matter\u003C\u002Fstrong>: Rich metadata for better AI understanding\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Flexible\u003C\u002Fstrong>: Control which post types are exposed\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Performance\u003C\u002Fstrong>: Built-in caching and rate limiting\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Privacy-Focused\u003C\u002Fstrong>: Per-post control over AI access\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Standards-Compliant\u003C\u002Fstrong>: Follows emerging llms.txt specification\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Business Value\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Future-Proof\u003C\u002Fstrong>: Position your content for the AI-driven web\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Zero Cost\u003C\u002Fstrong>: No API fees or external dependencies\u003C\u002Fli>\n\u003Cli>\u003Cstrong>SEO Boost\u003C\u002Fstrong>: Alternate content formats can improve discoverability\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Competitive Edge\u003C\u002Fstrong>: Early adoption of AI-friendly formats\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Analytics\u003C\u002Fstrong>: Track which content AI agents prefer\u003C\u002Fli>\n\u003C\u002Ful>\n","AI-Ready Markdown Endpoints & llms.txt discovery for WordPress. Clean, machine-readable content for AI agents and RAG systems.",0,111,"2026-03-22T16:41:00.000Z","6.9.4","6.9","7.4",[18,19,20,21,22],"ai","api","llms","markdown","rag","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fagentmark.1.0.0.zip",100,null,"2026-04-16T10:56:18.058Z","no_bundle",[],{"slug":31,"display_name":7,"profile_url":8,"plugin_count":32,"total_installs":33,"avg_security_score":25,"avg_patch_time_days":34,"trust_score":35,"computed_at":36},"selvasudar",2,40,30,94,"2026-05-19T20:41:06.062Z",[38,56,67,85,100],{"slug":39,"name":40,"version":41,"author":42,"author_profile":43,"description":44,"short_description":45,"active_installs":25,"downloaded":46,"rating":11,"num_ratings":11,"last_updated":47,"tested_up_to":14,"requires_at_least":48,"requires_php":49,"tags":50,"homepage":54,"download_link":55,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"jumpsuitai-llms-txt","JumpsuitAI – llms.txt + Markdown Endpoints","1.1.4","Brad Phillips","https:\u002F\u002Fprofiles.wordpress.org\u002Fbradphillips\u002F","\u003Cp>JumpsuitAI – llms.txt + Markdown Endpoints automatically publishes:\u003C\u002Fp>\n\u003Cp>Plugin website: https:\u002F\u002Fjumpsuitai.com\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u002Fllms.txt\u003C\u002Fstrong> — a structured list of links to your public content\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u002Fllms-full.txt\u003C\u002Fstrong> — the entire documentation in a single file (optional, enable in settings)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>.md endpoints\u003C\u002Fstrong> — request a public URL with \u003Cstrong>.md\u003C\u002Fstrong> appended to get a lightweight Markdown representation\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>It also includes a simple \u003Cstrong>Groups & Content\u003C\u002Fstrong> screen to keep your output organized with sensible defaults (Pages and Posts), plus per-item controls like \u003Cstrong>Hide from LLMs\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Ch4>Pro (separate plugin)\u003C\u002Fh4>\n\u003Cp>JumpsuitAI – llms.txt + Markdown Endpoints Pro adds:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Custom groups and manual ordering\u003C\u002Fli>\n\u003Cli>Per-item short descriptions\u003C\u002Fli>\n\u003Cli>Optional section support\u003C\u002Fli>\n\u003Cli>Custom intro text and blockquote customization\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>External Services\u003C\u002Fh3>\n\u003Cp>This plugin uses Freemius for plugin updates and (optional) usage analytics. Any data collection is opt-in.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Service: Freemius\u003C\u002Fli>\n\u003Cli>Terms: https:\u002F\u002Ffreemius.com\u002Fterms\u002F\u003C\u002Fli>\n\u003Cli>Privacy: https:\u002F\u002Ffreemius.com\u002Fprivacy\u002F\u003C\u002Fli>\n\u003C\u002Ful>\n","Generate \u002Fllms.txt, \u002Fllms-full.txt & .md endpoints for AI\u002FLLMs in WordPress. Works with Yoast SEO, Rank Math, SEOPress & All in One SEO.",774,"2026-02-17T01:43:00.000Z","5.0","7.2",[18,51,52,21,53],"content-discovery","llms-txt","seo","https:\u002F\u002Fjumpsuitai.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fjumpsuitai-llms-txt.1.1.4.zip",{"slug":57,"name":58,"version":6,"author":7,"author_profile":8,"description":59,"short_description":60,"active_installs":33,"downloaded":61,"rating":11,"num_ratings":11,"last_updated":62,"tested_up_to":14,"requires_at_least":15,"requires_php":16,"tags":63,"homepage":23,"download_link":66,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"markdown-for-ai-agents","Markdown for AI Agents","\u003Cp>Markdown for AI Agents is a lightweight WordPress plugin that enables HTTP content negotiation for your site’s content. When a client (like an AI agent or a custom script) requests a page with the \u003Ccode>Accept: text\u002Fmarkdown\u003C\u002Fcode> header, the plugin intercepts the request and returns a clean, structured Markdown representation of the post or page content.\u003C\u002Fp>\n\u003Cp>This is ideal for AI crawlers, RAG (Retrieval-Augmented Generation) systems, and non-browser clients that prefer machine-friendly text over complex HTML.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Important note:\u003C\u002Fstrong> This plugin is primarily a developer\u002Fintegration tool. Human visitors browsing your site will never see any difference — the Markdown output is only served when explicitly requested via the \u003Ccode>Accept: text\u002Fmarkdown\u003C\u002Fcode> HTTP header. Normal browser requests always receive the standard HTML page.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Key Features:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Automatically detects \u003Ccode>Accept: text\u002Fmarkdown\u003C\u002Fcode> headers.\u003C\u002Fli>\n\u003Cli>Converts HTML content to clean Markdown using the League HTMLToMarkdown library.\u003C\u002Fli>\n\u003Cli>Strips away theme layout, navigation, headers, footers, and sidebars — serving only the main content.\u003C\u002Fli>\n\u003Cli>Adds useful HTTP response headers: \u003Ccode>Content-Type: text\u002Fmarkdown\u003C\u002Fcode>, \u003Ccode>Vary: Accept\u003C\u002Fcode>, and \u003Ccode>X-Markdown-Word-Count\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Respects WordPress visibility rules and filters.\u003C\u002Fli>\n\u003Cli>No configuration required — works out of the box for posts, pages, and custom post types.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>How It Works\u003C\u002Fh3>\n\u003Cp>This plugin uses a standard web technique called \u003Cstrong>HTTP content negotiation\u003C\u002Fstrong>. The same URL on your site can serve different representations of the same content depending on what the client asks for:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>A regular browser sends \u003Ccode>Accept: text\u002Fhtml\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> receives your normal HTML page.\u003C\u002Fli>\n\u003Cli>An AI agent sends \u003Ccode>Accept: text\u002Fmarkdown\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> receives a clean Markdown version of the same page.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>No extra URLs, no duplicate content, no configuration needed. The plugin hooks into WordPress’s \u003Ccode>template_redirect\u003C\u002Fcode> action, detects the \u003Ccode>Accept\u003C\u002Fcode> header, captures the rendered HTML, converts it to Markdown, and returns it with appropriate headers.\u003C\u002Fp>\n\u003Ch3>Why Markdown for AI Agents?\u003C\u002Fh3>\n\u003Cp>When building RAG (Retrieval-Augmented Generation) applications or AI pipelines that ingest web content, HTML is extremely noisy. A typical WordPress page contains thousands of tokens worth of HTML tags, inline styles, navigation menus, scripts, and layout markup — none of which carries meaning for an AI model.\u003C\u002Fp>\n\u003Cp>Serving clean Markdown instead can reduce token consumption by up to 60%, which means:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Lower API costs\u003C\u002Fstrong> — fewer tokens ingested when loading pages into vector stores or LLM pipelines.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Faster processing\u003C\u002Fstrong> — less text for the model to parse, filter, and discard.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Better retrieval accuracy\u003C\u002Fstrong> — higher signal-to-noise ratio improves the quality of RAG results.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Simpler pipelines\u003C\u002Fstrong> — no need for custom HTML stripping logic on the client side; the plugin handles it server-side.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Any AI agent, crawler, or ingestion script that sends \u003Ccode>Accept: text\u002Fmarkdown\u003C\u002Fcode> in its request header will automatically receive the clean Markdown version — no extra URLs, no separate endpoints, no changes to your content workflow.\u003C\u002Fp>\n","Serve clean Markdown versions of WordPress content to AI agents using HTTP content negotiation.",241,"2026-03-09T01:32:00.000Z",[18,64,65,21,22],"content-negotiation","llm","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmarkdown-for-ai-agents.1.0.0.zip",{"slug":68,"name":69,"version":70,"author":71,"author_profile":72,"description":73,"short_description":74,"active_installs":75,"downloaded":76,"rating":11,"num_ratings":11,"last_updated":77,"tested_up_to":14,"requires_at_least":78,"requires_php":79,"tags":80,"homepage":83,"download_link":84,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"mescio-for-agents","Mescio for Agents","1.6.5","Mescio","https:\u002F\u002Fprofiles.wordpress.org\u002Fvinsmach\u002F","\u003Cp>\u003Cstrong>Mescio for Agents\u003C\u002Fstrong> makes your WordPress site AI-ready by silently serving posts, pages and WooCommerce products as clean, structured Markdown to any AI agent or LLM pipeline that requests it — using the standard HTTP \u003Ccode>Accept: text\u002Fmarkdown\u003C\u002Fcode> content negotiation header.\u003C\u002Fp>\n\u003Cp>Human visitors using a browser are \u003Cstrong>completely unaffected\u003C\u002Fstrong>. Mescio for Agents only activates when an AI agent or crawler explicitly asks for Markdown.\u003C\u002Fp>\n\u003Ch4>Why Markdown?\u003C\u002Fh4>\n\u003Cp>Feeding raw HTML to an AI is expensive and noisy. A heading like \u003Ccode>## About Us\u003C\u002Fcode> costs ~3 tokens in Markdown vs 12–15 tokens as HTML — before accounting for \u003Ccode>\u003Cdiv>\u003C\u002Fcode> wrappers, navigation bars and script tags that carry zero semantic value. This blog post you are reading takes 16,180 tokens in HTML and 3,150 tokens in Markdown. That is an 80% reduction.\u003C\u002Fp>\n\u003Cp>Markdown has become the \u003Cem>lingua franca\u003C\u002Fem> for AI systems. Mescio for Agents lets your site speak it natively, at zero cost to your human visitors.\u003C\u002Fp>\n\u003Ch4>How it works\u003C\u002Fh4>\n\u003Cp>When an HTTP client sends a request with \u003Ccode>Accept: text\u002Fmarkdown\u003C\u002Fcode>, Mescio for Agents intercepts the WordPress request lifecycle before any template is rendered, converts the post content to clean Markdown, and returns it with the correct \u003Ccode>Content-Type: text\u002Fmarkdown\u003C\u002Fcode> header.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>curl https:\u002F\u002Fyoursite.com\u002Fyour-post\u002F \\\n  -H \"Accept: text\u002Fmarkdown\"\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Zero configuration\u003C\u002Fstrong> — works out of the box on any singular post, page or custom post type\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>\u002Fllms.txt\u003C\u002Fcode> endpoint\u003C\u002Fstrong> — auto-generated index of all your content in the \u003Ca href=\"https:\u002F\u002Fllmstxt.org\" rel=\"nofollow ugc\">llmstxt.org\u003C\u002Fa> standard format, so AI agents can discover what’s on your site\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>\u002Fllms-full.txt\u003C\u002Fcode> endpoint\u003C\u002Fstrong> — full site content in a single Markdown file, ready for RAG pipelines\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WooCommerce support\u003C\u002Fstrong> — product pages include price, SKU, stock status, rating, attributes and gallery; products are grouped by category in \u003Ccode>llms.txt\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>YAML front matter\u003C\u002Fstrong> — every document includes structured metadata (title, description, URL, date, categories, tags, featured image)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Multilingual\u003C\u002Fstrong> — detects language via WPML, Polylang, TranslatePress or WordPress locale; emits \u003Ccode>Content-Language\u003C\u002Fcode> and \u003Ccode>Link: rel=alternate\u003C\u002Fcode> headers\u003C\u002Fli>\n\u003Cli>\u003Cstrong>REST API endpoint\u003C\u002Fstrong> — \u003Ccode>\u002Fwp-json\u002Fmescio-for-agents\u002Fv1\u002Fmarkdown?id=\u003Cpost_id>\u003C\u002Fcode> or \u003Ccode>?url=\u003Cpermalink>\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Page builder cleanup\u003C\u002Fstrong> — aggressively strips Elementor, Divi, WPBakery and Beaver Builder layout noise\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Token count header\u003C\u002Fstrong> — \u003Ccode>X-Markdown-Tokens\u003C\u002Fcode> tells AI pipelines how large the document is before processing\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Content Signals\u003C\u002Fstrong> — emits \u003Ccode>Content-Signal: ai-train=yes, search=yes, ai-input=yes\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Correct HTTP caching\u003C\u002Fstrong> — \u003Ccode>Vary: Accept\u003C\u002Fcode> ensures CDNs cache HTML and Markdown versions separately\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Response headers\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ccode>Content-Type: text\u002Fmarkdown; charset=utf-8\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>Content-Language: it\u003C\u002Fcode> (or detected language)\u003C\u002Fli>\n\u003Cli>\u003Ccode>Vary: Accept\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>X-Markdown-Tokens: 725\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>Content-Signal: ai-train=yes, search=yes, ai-input=yes\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>Link: \u003Curl>; rel=\"alternate\"; hreflang=\"en\"\u003C\u002Fcode> (when translations available)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Multilingual plugin support\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>WPML\u003C\u002Fstrong> — reads language and available translations automatically\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Polylang\u003C\u002Fstrong> — reads language and links to translated post IDs\u003C\u002Fli>\n\u003Cli>\u003Cstrong>TranslatePress\u003C\u002Fstrong> — reads \u003Ccode>trp_language\u003C\u002Fcode> post meta\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Manual\u003C\u002Fstrong> — configure primary language and additional languages in Settings \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Mescio for Agents\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>REST API\u003C\u002Fh4>\n\u003Cpre>\u003Ccode>GET \u002Fwp-json\u002Fmescio-for-agents\u002Fv1\u002Fmarkdown?id=42\nGET \u002Fwp-json\u002Fmescio-for-agents\u002Fv1\u002Fmarkdown?url=https:\u002F\u002Fyoursite.com\u002Fmy-page\u002F\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Developer hooks\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Filter: \u003Ccode>mescio_enabled_post_types\u003C\u002Fcode>\u003C\u002Fstrong> — add or remove post types dynamically.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Filter: \u003Ccode>mescio_pre_convert_content\u003C\u002Fcode>\u003C\u002Fstrong> — modify the HTML before conversion to Markdown.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Filter: \u003Ccode>mescio_post_convert_content\u003C\u002Fcode>\u003C\u002Fstrong> — modify the Markdown after conversion.\u003C\u002Fp>\n\u003Ch4>Privacy\u003C\u002Fh4>\n\u003Cp>This plugin does not collect, store or transmit any personal data. It does not set cookies. It does not make external HTTP requests.\u003C\u002Fp>\n","Mescio for Agents serves your WordPress content as clean Markdown to AI agents and GPT crawlers. Human visitors never notice a thing.",20,516,"2026-03-16T13:35:00.000Z","6.0","8.0",[81,18,65,21,82],"agents","rest-api","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fmescio-for-agents\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmescio-for-agents.1.6.5.zip",{"slug":86,"name":87,"version":88,"author":89,"author_profile":90,"description":91,"short_description":92,"active_installs":93,"downloaded":94,"rating":11,"num_ratings":11,"last_updated":95,"tested_up_to":14,"requires_at_least":96,"requires_php":16,"tags":97,"homepage":23,"download_link":99,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"md4ai","md4AI","1.3.0","Erik","https:\u002F\u002Fprofiles.wordpress.org\u002Fcodekraft\u002F","\u003Cp>The \u003Cstrong>md4AI\u003C\u002Fstrong> plugin provides a powerful, multi-layered approach to Generative Engine Optimization (GEO).\u003C\u002Fp>\n\u003Ch3>1. Automatic AI Bot Detection (Zero-Config)\u003C\u002Fh3>\n\u003Cp>md4AI automatically detects requests from a comprehensive list of known AI agents (like GPTBot, ClaudeBot, Google-Extended, etc.) and serves them a lightweight, on-the-fly Markdown version of your content instead of the standard HTML theme. This ensures a clean, parsable data feed for LLMs right out of the box.\u003C\u002Fp>\n\u003Ch3>2. Per-Post Custom Markdown (Metabox)\u003C\u002Fh3>\n\u003Cp>The plugin adds a new metabox to your post and page editor, giving you full control over the AI-optimized version of your content.\u003Cbr \u002F>\nServing an md version of the website is particular useful if your website has editors like Elementor \u002F Beaver Builder \u002F Divi Builder \u002F other div bloated editors because bots usually skips complex and too much nested content.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Generate Custom Markdown:\u003C\u002Fstrong> Convert your post’s content into Markdown with one click.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Manually Edit:\u003C\u002Fstrong> Modify and enhance the Markdown to be exactly as you want AIs to see it.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>(Optional) Enhance with AI:\u003C\u002Fstrong> If you also use the \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fai-services\u002F\" rel=\"ugc\">AI Services\u003C\u002Fa>\u003C\u002Fstrong> plugin, you can use the “Generate with AI” button to automatically add FAQs, discussion questions, or key takeaways extracted from your post.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Serve Enhanced Content:\u003C\u002Fstrong> When an AI bot visits this \u003Cem>specific post\u003C\u002Fem>, it will be served your new, custom-tailored Markdown version, giving it far richer data.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Automatic Fallback:\u003C\u002Fstrong> If you don’t create a custom version, the plugin falls back to the automatic on-the-fly conversion.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>3. Site-Wide AI Instructions (llms.txt)\u003C\u002Fh3>\n\u003Cp>The plugin adds a new main page under ‘Utilities’ with dedicated tabs for configuration and insights. From here, you can create and manage a \u003Ccode>llms.txt\u003C\u002Fcode> file for your entire site.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>What is \u003Ccode>llms.txt\u003C\u002Fcode>?\u003C\u002Fstrong> This is a file, similar to \u003Ccode>robots.txt\u003C\u002Fcode>, that provides general instructions, context, and useful links to AI crawlers. It’s a new standard to help guide LLMs in understanding your site’s content and purpose.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Manage Content:\u003C\u002Fstrong> Use the settings page to write your \u003Ccode>llms.txt\u003C\u002Fcode> content, which will then be served automatically to bots that look for it.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Learn More:\u003C\u002Fstrong> You can find more details on this new standard at \u003Ca href=\"https:\u002F\u002Fllmstxt.org\u002F\" rel=\"nofollow ugc\">https:\u002F\u002Fllmstxt.org\u002F\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>This combination gives you full control, from automatic optimization to granular, AI-enhanced, per-post content and site-wide AI directives.\u003C\u002Fp>\n\u003Ch3>4. GEO\u002FAIO Insights & Validation\u003C\u002Fh3>\n\u003Cp>The dedicated GEO\u002FAIO Insights tab provides a unique validation mechanism for your site’s AI presence, offering measurable scores (0-100) on how well your brand is understood by Generative Engines.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>The Validation Process\u003C\u002Fstrong>: We ask a Large Language Model (LLM) to complete a “knowledge card” about your site (e.g., brand name, main topics, product categories).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Ground Truth Check\u003C\u002Fstrong>: The AI response is immediately compared with real data extracted from your WordPress database (e.g., site title, author names, WooCommerce categories)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Final Score\u003C\u002Fstrong>: Based on this cross-check, the insight provides a score for brand identity and technical relevance, highlighting exactly where the AI provided incorrect or insufficient data (hallucinations or missing data).\u003C\u002Fli>\n\u003C\u002Ful>\n","Optimise content for generative engines (GEO) by serving custom Markdown and a site-wide llms.txt.",10,398,"2026-03-24T09:45:00.000Z","6.2",[18,98,52,21,53],"geo","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmd4ai.1.3.0.zip",{"slug":101,"name":102,"version":88,"author":103,"author_profile":104,"description":105,"short_description":106,"active_installs":11,"downloaded":107,"rating":11,"num_ratings":11,"last_updated":108,"tested_up_to":14,"requires_at_least":78,"requires_php":109,"tags":110,"homepage":112,"download_link":113,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":114},"botkibble","Botkibble","gregrandall","https:\u002F\u002Fprofiles.wordpress.org\u002Fgregrandall\u002F","\u003Cp>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. \u003Ca href=\"https:\u002F\u002Fblog.cloudflare.com\u002Fmarkdown-for-agents\u002F\" rel=\"nofollow ugc\">Cloudflare measured\u003C\u002Fa> an 80% reduction in token usage when converting a blog post from HTML to Markdown (16,180 tokens down to 3,150).\u003C\u002Fp>\n\u003Cp>Botkibble adds a Markdown endpoint to every published post and page.\u003C\u002Fp>\n\u003Cp>Cloudflare offers \u003Ca href=\"https:\u002F\u002Fdevelopers.cloudflare.com\u002Ffundamentals\u002Freference\u002Fmarkdown-for-agents\u002F\" rel=\"nofollow ugc\">Markdown for Agents\u003C\u002Fa> 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.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgreg-randall\u002Fbotkibble\" rel=\"nofollow ugc\">GitHub Repository\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Three ways to request Markdown:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ccode>.md\u003C\u002Fcode> suffix\u003C\u002Fstrong>: append \u003Ccode>.md\u003C\u002Fcode> to any post or page URL (e.g. \u003Ccode>example.com\u002Fmy-post.md\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Query parameter\u003C\u002Fstrong>: add \u003Ccode>?format=markdown\u003C\u002Fcode> to any post or page URL\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Content negotiation\u003C\u002Fstrong>: send \u003Ccode>Accept: text\u002Fmarkdown\u003C\u002Fcode> in the request header\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>What’s in every response:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>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)\u003C\u002Fli>\n\u003Cli>Clean Markdown converted from fully-rendered post HTML (shortcodes run, filters applied)\u003C\u002Fli>\n\u003Cli>\u003Ccode>Content-Type: text\u002Fmarkdown\u003C\u002Fcode> and \u003Ccode>Vary: Accept\u003C\u002Fcode> response headers\u003C\u002Fli>\n\u003Cli>\u003Ccode>Content-Signal\u003C\u002Fcode> header for AI signal declaration — defaults to \u003Ccode>ai-train=no, search=yes, ai-input=yes\u003C\u002Fcode> — see \u003Ca href=\"https:\u002F\u002Fcontentsignals.org\u002F\" rel=\"nofollow ugc\">contentsignals.org\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ccode>X-Markdown-Tokens\u003C\u002Fcode> header with estimated token count\u003C\u002Fli>\n\u003Cli>Discovery via \u003Ccode>\u003Clink rel=\"alternate\">\u003C\u002Fcode> in the HTML head and \u003Ccode>Link\u003C\u002Fcode> HTTP header\u003C\u002Fli>\n\u003Cli>Automatic cache invalidation when a post is updated or deleted\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Performance:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>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 \u003Ccode>init\u003C\u002Fcode> hook, before the main database query runs. No extra configuration needed.\u003C\u002Fp>\n\u003Cp>Add a web server rewrite rule and Botkibble bypasses PHP entirely, serving \u003Ccode>.md\u003C\u002Fcode> files the same way a server would serve an image or CSS file:\u003C\u002Fp>\n\u003Cp>  Method\u003Cbr \u002F>\n  Avg. response time\u003C\u002Fp>\n\u003Cp>  Standard HTML\u003Cbr \u002F>\n  0.97s\u003C\u002Fp>\n\u003Cp>  Markdown (cold, first request)\u003Cbr \u002F>\n  0.95s\u003C\u002Fp>\n\u003Cp>  Markdown (cached, PHP Fast-Path)\u003Cbr \u002F>\n  0.87s\u003C\u002Fp>\n\u003Cp>  Markdown (Nginx\u002FApache direct)\u003Cbr \u002F>\n  0.11s\u003C\u002Fp>\n\u003Cp>Serving directly from disk is \u003Cstrong>88% faster\u003C\u002Fstrong> than a full WordPress page load. See the Performance section below for Nginx and Apache configuration.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Security:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Drafts, private posts, and password-protected content return \u003Ccode>403 Forbidden\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Rate limits cache-miss regenerations (20\u002Fmin by default) to mitigate DoS abuse\u003C\u002Fli>\n\u003Cli>\u003Ccode>X-Robots-Tag: noindex\u003C\u002Fcode> keeps Markdown versions out of search results\u003C\u002Fli>\n\u003Cli>\u003Ccode>Link: rel=\"canonical\"\u003C\u002Fcode> points search engines back to the HTML version\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Cache variants (optional):\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>You can persist alternate cached representations by adding \u003Ccode>?botkibble_variant=slim\u003C\u002Fcode> (or any other variant name).\u003Cbr \u002F>\nVariant caches are stored under:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002Fwp-content\u002Fuploads\u002Fbotkibble\u002F_v\u002F\u003Cvariant>\u002F\u003Cslug>.md\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>What it does NOT do:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Expose drafts, private posts, or password-protected content\u003C\u002Fli>\n\u003Cli>Serve non-post\u002Fpage content types by default\u003C\u002Fli>\n\u003Cli>Require any configuration. Activate and it works.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Why Markdown?\u003C\u002Fh3>\n\u003Cp>HTML is expensive for AI systems to process. \u003Ca href=\"https:\u002F\u002Fblog.cloudflare.com\u002Fmarkdown-for-agents\u002F\" rel=\"nofollow ugc\">Cloudflare measured\u003C\u002Fa> an 80% reduction in token usage when converting a blog post from HTML to Markdown (16,180 tokens down to 3,150).\u003C\u002Fp>\n\u003Cp>Cloudflare now offers \u003Ca href=\"https:\u002F\u002Fdevelopers.cloudflare.com\u002Ffundamentals\u002Freference\u002Fmarkdown-for-agents\u002F\" rel=\"nofollow ugc\">Markdown for Agents\u003C\u002Fa> at the CDN edge via the \u003Ccode>Accept: text\u002Fmarkdown\u003C\u002Fcode> header, available on Pro, Business, and Enterprise plans.\u003C\u002Fp>\n\u003Cp>This plugin does the same thing at the origin, so it works on any host. It also adds \u003Ccode>.md\u003C\u002Fcode> suffix URLs, \u003Ccode>?format=markdown\u003C\u002Fcode> query parameters, YAML frontmatter, static file caching, and server-level offloading.\u003C\u002Fp>\n\u003Cp>If you use Cloudflare, both share the same \u003Ccode>Accept: text\u002Fmarkdown\u003C\u002Fcode> header, \u003Ccode>Content-Signal\u003C\u002Fcode> headers, and \u003Ccode>X-Markdown-Tokens\u003C\u002Fcode> response headers.\u003C\u002Fp>\n\u003Cp>Cloudflare currently defaults to \u003Ccode>Content-Signal: ai-train=yes, search=yes, ai-input=yes\u003C\u002Fcode> with no way to change it. Botkibble defaults to \u003Ccode>ai-train=no\u003C\u002Fcode> and lets you override the full signal per site via the \u003Ccode>botkibble_content_signal\u003C\u002Fcode> filter.\u003C\u002Fp>\n\u003Ch3>Performance & Static Offloading\u003C\u002Fh3>\n\u003Cp>This plugin supports static file offloading by writing Markdown content to \u003Ccode>\u002Fwp-content\u002Fuploads\u002Fbotkibble\u002F\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch3>Nginx Configuration\u003C\u002Fh3>\n\u003Cp>To bypass PHP entirely and have Nginx serve the files (including variants) directly:\u003C\u002Fp>\n\u003Cpre>\u003Ccode># Variants\nlocation ~* ^\u002F(_v\u002F[^\u002F]+\u002F.+)\\.md$ {\n    default_type text\u002Fmarkdown;\n    try_files \u002Fwp-content\u002Fuploads\u002Fbotkibble\u002F$1.md \u002Findex.php?$args;\n}\n\n# Default\nlocation ~* ^\u002F(.+)\\.md$ {\n    default_type text\u002Fmarkdown;\n    try_files \u002Fwp-content\u002Fuploads\u002Fbotkibble\u002F$1.md \u002Findex.php?$args;\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Apache (.htaccess)\u003C\u002Fh3>\n\u003Cp>Add this to your \u003Ccode>.htaccess\u003C\u002Fcode> before the WordPress rules:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>RewriteEngine On\n# Variants\nRewriteCond %{DOCUMENT_ROOT}\u002Fwp-content\u002Fuploads\u002Fbotkibble\u002F_v\u002F$1\u002F$2.md -f\nRewriteRule ^_v\u002F([^\u002F]+)\u002F(.+)\\.md$ \u002Fwp-content\u002Fuploads\u002Fbotkibble\u002F_v\u002F$1\u002F$2.md [L,T=text\u002Fmarkdown]\n\n# Default\nRewriteCond %{DOCUMENT_ROOT}\u002Fwp-content\u002Fuploads\u002Fbotkibble\u002F$1.md -f\nRewriteRule ^(.*)\\.md$ \u002Fwp-content\u002Fuploads\u002Fbotkibble\u002F$1.md [L,T=text\u002Fmarkdown]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Even without these rules, the plugin uses a “Fast-Path” that serves cached files from PHP before the main database query is executed.\u003C\u002Fp>\n\u003Ch3>Credits\u003C\u002Fh3>\n\u003Cp>We thank Cristi Constantin (https:\u002F\u002Fgithub.com\u002Fcristi-constantin) for contributing cache variants, URL and SEO improvements, and fixing important bugs.\u003C\u002Fp>\n","Serves every published post and page as Markdown for AI agents and crawlers. No configuration, no API keys. Activate and it works.",204,"2026-02-26T21:19:00.000Z","8.2",[81,18,19,111,21],"crawlers","https:\u002F\u002Fgithub.com\u002Fgreg-randall\u002Fbotkibble","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbotkibble.1.3.0.zip","2026-04-06T09:54:40.288Z",{"attackSurface":116,"codeSignals":164,"taintFlows":175,"riskAssessment":214,"analyzedAt":220},{"hooks":117,"ajaxHandlers":160,"restRoutes":161,"shortcodes":162,"cronEvents":163,"entryPointCount":11,"unprotectedCount":11},[118,124,127,130,134,138,141,144,148,152,156],{"type":119,"name":120,"callback":121,"file":122,"line":123},"action","plugins_loaded","closure","agentmark.php",53,{"type":119,"name":125,"callback":121,"file":122,"line":126},"save_post",61,{"type":119,"name":128,"callback":121,"file":122,"line":129},"init",66,{"type":119,"name":131,"callback":132,"file":133,"line":93},"wp_head","inject_alternate_link","includes\u002Fclass-llms-txt.php",{"type":119,"name":135,"callback":136,"file":137,"line":93},"add_meta_boxes","add_meta_box","includes\u002Fclass-meta-box.php",{"type":119,"name":125,"callback":139,"file":137,"line":140},"save_meta_box",11,{"type":119,"name":128,"callback":142,"file":143,"line":93},"add_rewrite_rules","includes\u002Fclass-router.php",{"type":145,"name":146,"callback":147,"file":143,"line":140},"filter","query_vars","add_query_vars",{"type":119,"name":149,"callback":150,"file":143,"line":151},"template_redirect","handle_md_request",12,{"type":119,"name":153,"callback":154,"file":155,"line":151},"admin_menu","add_settings_page","includes\u002Fclass-settings.php",{"type":119,"name":157,"callback":158,"file":155,"line":159},"admin_init","register_settings",13,[],[],[],[],{"dangerousFunctions":165,"sqlUsage":166,"outputEscaping":169,"fileOperations":11,"externalRequests":11,"nonceChecks":172,"capabilityChecks":173,"bundledLibraries":174},[],{"prepared":167,"raw":11,"locations":168},4,[],{"escaped":170,"rawEcho":11,"locations":171},89,[],1,3,[],[176],{"entryPoint":177,"graph":178,"unsanitizedCount":172,"severity":213},"\u003Cclass-router> (includes\u002Fclass-router.php:0)",{"nodes":179,"edges":206},[180,185,190,192,197,200,204],{"id":181,"type":182,"label":183,"file":143,"line":184},"n0","source","$_SERVER",81,{"id":186,"type":187,"label":188,"file":143,"line":107,"wp_function":189},"n1","sink","header() [Header Injection]","header",{"id":191,"type":182,"label":183,"file":143,"line":184},"n2",{"id":193,"type":187,"label":194,"file":143,"line":195,"wp_function":196},"n3","echo() [XSS]",208,"echo",{"id":198,"type":182,"label":183,"file":143,"line":199},"n4",132,{"id":201,"type":202,"label":203,"file":143,"line":199},"n5","transform","→ render_markdown()",{"id":205,"type":187,"label":194,"file":143,"line":195,"wp_function":196},"n6",[207,209,210,212],{"from":181,"to":186,"sanitized":208},true,{"from":191,"to":193,"sanitized":208},{"from":198,"to":201,"sanitized":211},false,{"from":201,"to":205,"sanitized":211},"low",{"summary":215,"deductions":216},"The agentmark plugin v1.0.0 demonstrates strong security practices in its static analysis.  It has a minimal attack surface with no AJAX handlers, REST API routes, shortcodes, or cron events exposed. Crucially, all SQL queries are properly prepared, and all output is correctly escaped, indicating a solid defense against common injection and XSS vulnerabilities. The presence of nonce and capability checks further strengthens its security posture by enforcing proper authorization. The plugin also avoids file operations and external HTTP requests, reducing potential attack vectors.\n\nDespite these positive findings, the taint analysis revealed one flow with an unsanitized path. While this flow was not classified as critical or high severity, it represents a potential area of concern that warrants attention. The plugin's vulnerability history is clean, with no known CVEs, which is a positive indicator of its current security state. However, a lack of historical data makes it difficult to predict future vulnerabilities.\n\nIn conclusion, agentmark v1.0.0 is generally well-secured based on the provided static analysis. Its adherence to secure coding practices like prepared statements and output escaping is commendable. The single unsanitized path in the taint analysis is the primary weakness identified and should be investigated and remediated to maintain a robust security profile. The absence of historical vulnerabilities is a good sign but should be monitored over time.",[217],{"reason":218,"points":219},"Unsanitized path in taint flow",5,"2026-04-16T14:20:03.712Z",{"wat":222,"direct":231},{"assetPaths":223,"generatorPatterns":226,"scriptPaths":227,"versionParams":228},[224,225],"\u002Fwp-content\u002Fplugins\u002Fagentmark\u002Fassets\u002Fcss\u002Fstyle.css","\u002Fwp-content\u002Fplugins\u002Fagentmark\u002Fassets\u002Fjs\u002Fscript.js",[],[225],[229,230],"agentmark\u002Fassets\u002Fcss\u002Fstyle.css?ver=","agentmark\u002Fassets\u002Fjs\u002Fscript.js?ver=",{"cssClasses":232,"htmlComments":234,"htmlAttributes":235,"restEndpoints":237,"jsGlobals":241,"shortcodeOutput":243},[233],"agentmark-settings-page",[],[236],"data-agentmark-post-id",[238,239,240],"\u002Fwp-json\u002Fagentmark\u002Fv1\u002Fposts","\u002Fwp-json\u002Fagentmark\u002Fv1\u002Fpost\u002F","\u002Fwp-json\u002Fagentmark\u002Fv1\u002Fsettings",[242,5],"agentmark_settings",[],{"error":208,"url":245,"statusCode":246,"statusMessage":247,"message":247},"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Fagentmark\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":172,"versions":249},[250],{"version":6,"download_url":24,"svn_tag_url":251,"released_at":26,"has_diff":211,"diff_files_changed":252,"diff_lines":26,"trac_diff_url":26,"vulnerabilities":253,"is_current":208},"https:\u002F\u002Fplugins.svn.wordpress.org\u002Fagentmark\u002Ftags\u002F1.0.0\u002F",[],[]]