Meerkat Markdown for AI Visibility

Description

Meerkat Markdown for AI Visibility collects URLs using WordPress queries and generates an llms.txt file (short for “Large Language Models”) in the website’s root directory — optionally providing dynamic .md files — to help AI-based systems better understand and make use of the site’s content. The llms.txt is stored in the root directory. You can configure the number of URLs, set a minimum word count, and exclude specific categories or tags. File generation can be triggered manually or scheduled to run automatically.

Features

  • Gathers URLs with WordPress queries; the wp-sitemap.xml URL is only added to llms.txt as metadata.
  • Creates llms.txt with [Title • host/path](URL): content entries.
  • Add a custom site description to the file header.
  • Limit export to 100 entries or process all URLs.
  • Posts or pages with fewer than 15 words are skipped: they do not count toward
    the 100-entry limit and are omitted from llms.txt.
  • Choose 30, 50, 100 words or the full text per entry.
  • Exclude categories and tags.
  • Sort llms.txt entries by popularity or most recent first.
  • Optionally serve dynamic .md files for published posts, pages and public custom post types. Responses include canonical, noindex and MIME-sniffing protection headers.
  • Generates a valid XML sitemap for Markdown URLs without declaring llms.txt as a sitemap or blocking it in robots.txt.
  • Manual generation via the Generate Files Now button.
  • Timezone-aware WP-Cron schedule (hourly, daily, weekly, monthly or disabled) with configurable local run time and daylight-saving-safe rescheduling.
  • Save settings with the Save Changes button.

License

This plugin is open source software licensed under the GPLv2 (or later). See LICENSE.txt for license information.

Screenshots

Installation

  1. Upload the meerkat-plugin folder to /wp-content/plugins/.
  2. Activate the plugin through the Plugins menu.
  3. Visit Settings Markdown for AI and click Generate Files Now to create the first file.

FAQ

Where is `llms.txt` stored?

It is written to the site root directory (same level as the top-level index.php).

How can I regenerate it?

Use the Generate Files Now button or wait for the scheduled cron run.

How do I change the schedule?

Select a new frequency and click Save Changes on the settings page.

What happens when I uninstall the plugin?

All plugin options and generated sitemap files are removed automatically. The plugin deletes llms.txt only when the file can be identified as plugin-generated. Existing files created manually or by another plugin are preserved.

How do I enable the dynamic sitemap?

Add the following snippet to your theme’s functions.php or a small helper plugin:

add_filter( 'mrmrkdofa_enable_dynamic_sitemap', '__return_true' );

Afterwards visit Settings Permalinks and save changes once so WordPress refreshes the rewrite rules.

Do exclusions protect every Markdown endpoint?

Yes. IDs, categories and tags are excluded from llms.txt, home Markdown, direct Markdown URLs and Markdown sitemaps. The post/page selection and the 15-word minimum still control llms.txt only.

How is cached output refreshed?

Dynamic output checks publication status before serving a cached body. Relevant content, metadata, taxonomy and setting changes invalidate the cache. Authenticated requests and requests with cookies or additional query parameters are not shared through the Markdown cache. Browser responses revalidate by default.

What are the generation limits?

Each HTTP response is limited to 10 MiB by default (filter: mrmrkdofa_http_response_size). A static Markdown sitemap is limited to 50,000 URLs and 50 MiB. Oversized or incomplete exports return an error and retain the previous generated files. The sitemap processing count is bounded by mrmrkdofa_max_sitemaps (default 1,000).

Are membership restrictions automatically supported?

Core publication/password rules and configured exclusions are enforced. Membership plugins may apply additional rules; use the mrmrkdofa_is_exportable_post filter to deny restricted posts. Verify custom shortcodes and membership content before publishing an export.

When do existing static files change?

llms.txt and the static XML sitemap are public snapshots. Edits and relevant setting changes queue regeneration through WP-Cron. They update when that job runs or when Generate Files Now is used. Use a reliable system cron if WP-Cron is disabled.

Reviews

10. Oktober 2026
Thanks, running super solid. Everything that was good stayed, and performance is even better.
21. August 2025
Thanks for this plugin. I've worked with llms plugins before, but this combination of llms.txt and .md is great. Just like the settings options.
Read all 2 reviews

Contributors & Developers

“Meerkat Markdown for AI Visibility” is open source software. The following people have contributed to this plugin.

Contributors

“Meerkat Markdown for AI Visibility” has been translated into 1 locale. Thank you to the translators for their contributions.

Translate “Meerkat Markdown for AI Visibility” into your language.

Interested in development?

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

Changelog

5.0

  • Corrects the release package for Plugin Check: excludes development configuration and documents testing with WordPress 7.1.3.
  • Filters excluded post IDs after cached batch queries; home Markdown fills its configured entry limit from subsequent batches.
  • Documents the narrow coding-standard exception required to restore existing WordPress core globals.
  • Uses an isolated guest identity and correct post context for public exports; restores the original request state afterwards.
  • Applies ID, category and tag exclusions to llms.txt, direct Markdown URLs, home output and Markdown sitemaps.
  • Protects HTTP Basic credentials across scheme, host, port and redirect changes; rejects oversized responses.
  • Rejects sitemap DTD/entity declarations, validates child XML, restores libxml settings and prevents recursive dynamic sitemap fetches.
  • Adds a database generation lock, ownership-aware lock release and a visible last-run status.
  • Adds authenticated POST-only JSON settings saves with nonce validation before manual generation.
  • Uses versioned, locale-aware caches; invalidates on content, metadata, taxonomy and relevant setting changes.
  • Supports HEAD and conditional GET; avoids sharing authenticated, cookie-dependent or extra-query responses.
  • Queries complete post batches, primes metadata/terms and uses deterministic ordering; parses child sitemaps once.
  • Preserves existing files on child-sitemap failures and refuses invalid oversized single-sitemap exports.
  • Reschedules cron after initial saves and timezone changes; schedules the next run before rendering.
  • Fixes unknown query endpoints, HTML-suffix permalinks, XML query escaping, inline-code fences and uninstall cache cleanup.
  • Synchronizes plugin, asset and translation versions to 5.0; retains every existing named function and method.

4.2

  • Protects existing llms.txt files: files not owned by this plugin are neither overwritten nor removed during uninstall.
  • Manages only a clearly marked plugin block in robots.txt and preserves all unrelated directives.
  • Supports dynamic Markdown URLs with plain WordPress permalinks through query-based endpoints.
  • Propagates failed write, delete, permission and directory operations instead of reporting false success.
  • Removes dynamic Markdown rewrite rules reliably when the feature or plugin is disabled.
  • Corrects the settings description for canonical and X-Robots-Tag headers.
  • Updates repository metadata and moves older release notes to changelog.txt.
  • Regenerates the translation template from the current source.
  • Renames plugin classes and methods to WordPress-compatible naming conventions and normalizes formatting.
  • Prevents shortcodes from being executed twice during llms.txt generation.
  • Validates sitemap XML before accepting a fallback endpoint.
  • Stages and rolls back generated files so failed sitemap generation does not partially update llms.txt.

4.1

  • Adds a defensive DOMNode guard clause to the HTML-to-Markdown parser.
  • Prevents PHP warnings when an unexpected or null node is passed to the recursive node processor.

4.0

Major improvements

Security

  • Limits dynamic Markdown output to published, publicly accessible and non-password-protected content.
  • Drafts, private posts and password-protected content are no longer exposed through .md URLs.
  • Unknown Markdown URLs return a real HTTP 404 response instead of homepage content.
  • Uses safe remote requests, validates AJAX permissions and adds canonical, noindex and MIME-sniffing protection headers.

Generation, sitemaps and scheduling

  • Supports public custom post types and Elementor, Divi and Avada content.
  • Generates a valid Markdown XML sitemap and removes obsolete robots.txt directives.
  • Processes large sites in batches and validates root, upload and filter values.
  • Uses timezone-aware calendar scheduling for hourly, daily, weekly and monthly runs.
  • Cleans generated data, options, cron events and legacy robots.txt entries on uninstall.

Earlier release notes are included in changelog.txt.