{"id":241394,"date":"2025-08-04T08:53:06","date_gmt":"2025-08-04T08:53:06","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/llm-content-generator\/"},"modified":"2026-01-21T10:23:17","modified_gmt":"2026-01-21T10:23:17","slug":"meerkat-markdown-for-ai-visibility","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/meerkat-markdown-for-ai-visibility\/","author":23325258,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"3.0","stable_tag":"3.0","tested":"6.9.4","requires":"5.0","requires_php":"7.2","requires_plugins":null,"header_name":"Meerkat Markdown for AI Visibility","header_author":"Andy Brin","header_description":"Creates llms.txt in the root directory and optionally serves dynamic .html.md files to help AI-based systems better understand the website\u2019s content.","assets_banners_color":"3d654d","last_updated":"2026-01-21 10:23:17","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/curnaglias.com","rating":5,"author_block_rating":0,"active_installs":60,"downloads":625,"num_ratings":3,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.55":{"tag":"1.55","author":"andybrin","date":"2025-08-05 07:39:49"},"2.0":{"tag":"2.0","author":"andybrin","date":"2025-09-08 15:00:31"},"3.0":{"tag":"3.0","author":"andybrin","date":"2026-01-21 10:23:17"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":3},"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3339084,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3443950,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.55","2.0","3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3338990,"resolution":"1","location":"assets","locale":""}},"screenshots":{"1":"Settings page with Generate and Save Changes buttons plus cron frequency selection."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2209,226124,4608,1557],"plugin_category":[55],"plugin_contributors":[254392],"plugin_business_model":[],"class_list":["post-241394","plugin","type-plugin","status-publish","hentry","plugin_tags-generator","plugin_tags-llm","plugin_tags-markdown","plugin_tags-sitemap","plugin_category-seo-and-marketing","plugin_contributors-andybrin","plugin_committers-andybrin"],"banners":{"banner":"https:\/\/ps.w.org\/meerkat-markdown-for-ai-visibility\/assets\/banner-772x250.png?rev=3443950","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/meerkat-markdown-for-ai-visibility\/assets\/icon-256x256.png?rev=3339084","icon_2x":"https:\/\/ps.w.org\/meerkat-markdown-for-ai-visibility\/assets\/icon-256x256.png?rev=3339084","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/meerkat-markdown-for-ai-visibility\/assets\/screenshot-1.png?rev=3338990","caption":"Settings page with Generate and Save Changes buttons plus cron frequency selection."}],"raw_content":"<!--section=description-->\n<p>Meerkat Markdown for AI Visibility collects URLs using WordPress queries and generates an llms.txt file (short for \u201cLarge Language Models\u201d) in the website\u2019s root directory \u2014 optionally providing dynamic .md files \u2014 to help AI-based systems better understand and make use of the site\u2019s 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.<\/p>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li>Gathers URLs with WordPress queries; the <code>wp-sitemap.xml<\/code> URL is only added to <code>llms.txt<\/code> as metadata.<\/li>\n<li>Creates <code>llms.txt<\/code> with <code>[Title \u2022 host\/path](URL): content<\/code> entries.<\/li>\n<li>Add a custom site description to the file header.<\/li>\n<li>Limit export to 100 entries or process all URLs.<\/li>\n<li>Posts or pages with fewer than 15 words are skipped: they do not count toward\nthe 100-entry limit and are omitted from <code>llms.txt<\/code>.<\/li>\n<li>Choose 30, 50, 100 words or the full text per entry.<\/li>\n<li>Exclude categories and tags.<\/li>\n<li>Sort <code>llms.txt<\/code> entries by popularity or most recent first.<\/li>\n<li>Optionally serve dynamic <code>.md<\/code> files for each page and for author, category and tag archives (adds a robots.txt rule and sitemap link).<\/li>\n<li>Manual generation via the <strong>Generate Files Now<\/strong> button.<\/li>\n<li>Automatic WP-Cron schedule (hourly, daily, weekly, monthly or disabled) with configurable run time.<\/li>\n<li>Save settings with the <strong>Save Changes<\/strong> button.<\/li>\n<\/ul>\n\n<h3>License<\/h3>\n\n<p>This plugin is open source software licensed under the GPLv2 (or later). See LICENSE for the full license text.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>meerkat-markdown-for-ai-visibility<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu.<\/li>\n<li>Visit <strong>Settings \u2192 Markdown for AI<\/strong> and click <strong>Generate Files Now<\/strong> to create the first file.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20is%20%60llms.txt%60%20stored%3F\"><h3>Where is `llms.txt` stored?<\/h3><\/dt>\n<dd><p>It is written to the site root directory (same level as the top-level <code>index.php<\/code>).<\/p><\/dd>\n<dt id=\"how%20can%20i%20regenerate%20it%3F\"><h3>How can I regenerate it?<\/h3><\/dt>\n<dd><p>Use the <strong>Generate Files Now<\/strong> button or wait for the scheduled cron run.<\/p><\/dd>\n<dt id=\"how%20do%20i%20change%20the%20schedule%3F\"><h3>How do I change the schedule?<\/h3><\/dt>\n<dd><p>Select a new frequency and click <strong>Save Changes<\/strong> on the settings page.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20uninstall%20the%20plugin%3F\"><h3>What happens when I uninstall the plugin?<\/h3><\/dt>\n<dd><p>All plugin options and the <code>llms.txt<\/code> file are removed automatically.<\/p><\/dd>\n<dt id=\"how%20do%20i%20enable%20the%20dynamic%20sitemap%3F\"><h3>How do I enable the dynamic sitemap?<\/h3><\/dt>\n<dd><p>Add the following snippet to your theme's <code>functions.php<\/code> or a small helper plugin:<\/p>\n\n<pre><code>add_filter( 'mrmrkdofa_enable_dynamic_sitemap', '__return_true' );\n<\/code><\/pre>\n\n<p>Afterwards visit <strong>Settings \u2192 Permalinks<\/strong> and save changes once so WordPress refreshes the rewrite rules.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.0<\/h4>\n\n<p>Release date: 2026-01-21\nTested up to WordPress 6.9 and improved PHP 8 compatibility and robustness (no user-facing changes).<\/p>\n\n<h4>2.0<\/h4>\n\n<p>Release date: 2025-09-08\nFundamental revision and improvement of the integration of page builders: Elementor, Divi, and Avada.<\/p>\n\n<h4>1.57<\/h4>\n\n<p>Strips remaining shortcodes (e.g. Divi modules) before adding entries to <code>llms.txt<\/code>.<\/p>\n\n<h4>1.56<\/h4>\n\n<p>Renders Divi shortcodes as HTML before adding entries to <code>llms.txt<\/code> when Divi builder is detected. Renders Divi shortcodes when detection functions are missing to avoid raw markup in <code>llms.txt<\/code>.<\/p>\n\n<h4>1.55<\/h4>\n\n<p>Adds filter <code>mrmrkdofa_http_timeout<\/code> to adjust HTTP request timeout (default 15 seconds).<\/p>\n\n<h4>1.54<\/h4>\n\n<p>Dynamic sitemap is disabled by default. Add\n    add_filter( 'mrmrkdofa_enable_dynamic_sitemap', '__return_true' );\nto re-enable it.<\/p>\n\n<h4>1.53<\/h4>\n\n<p>Adds filter <code>mrmrkdofa_enable_dynamic_sitemap<\/code> to disable dynamic sitemap output while keeping Markdown pages.<\/p>\n\n<h4>1.50<\/h4>\n\n<p>Adds a fallback for trailing slash settings to improve Markdown output for category, tag and author archives.<\/p>\n\n<h4>1.49<\/h4>\n\n<p>Regenerates <code>llms.txt<\/code> and <code>html-md-sitemap.xml<\/code> when posts or pages are saved or deleted.<\/p>\n\n<h4>1.48<\/h4>\n\n<p>Improves namespace detection for <code>html-md-sitemap.xml<\/code> to fix validation errors.<\/p>\n\n<h4>1.47<\/h4>\n\n<p>Fixes missing XML namespace declarations in <code>html-md-sitemap.xml<\/code>.<\/p>\n\n<h4>1.46<\/h4>\n\n<p>Adds dynamic <code>.html.md<\/code> support for author, category and tag archives.<\/p>\n\n<h4>1.45<\/h4>\n\n<p>Generates a static <code>html-md-sitemap.xml<\/code> in the uploads directory when dynamic Markdown is enabled.<\/p>\n\n<h4>1.44<\/h4>\n\n<p>Adds link to the .html.md sitemap in the success notice.<\/p>\n\n<h4>1.43<\/h4>\n\n<p>Adds option to include only posts or only pages in <code>llms.txt<\/code>.<\/p>\n\n<h4>1.42<\/h4>\n\n<p>Adds the page or post title as the first H1 heading in generated <code>.html.md<\/code> files.<\/p>\n\n<h4>1.41<\/h4>\n\n<p>Removes legacy <code>htmlmd-sitemap_index.xml<\/code> support. Use <code>html-md-sitemap-index.xml<\/code>.<\/p>\n\n<h4>1.40<\/h4>\n\n<p>Adds backward compatibility for the former <code>htmlmd-sitemap_index.xml<\/code> URL.<\/p>\n\n<h4>1.39<\/h4>\n\n<p>Adds <code>html-md-sitemap-index.xml<\/code> entry in robots.txt when dynamic Markdown is enabled.<\/p>\n\n<h4>1.38<\/h4>\n\n<p>Adds <code>html-md-sitemap-index.xml<\/code> entry in <code>llms.txt<\/code> when dynamic Markdown is enabled.<\/p>\n\n<h4>1.37<\/h4>\n\n<p>Fixes broken htmlmd sitemap links when Yoast SEO is active.<\/p>\n\n<h4>1.36<\/h4>\n\n<p>Adds <code>htmlmd-sitemap.xml<\/code> mirroring the default sitemap when dynamic Markdown is enabled.<\/p>\n\n<h4>1.35<\/h4>\n\n<p>Generates <code>llms.txt<\/code> in batches to reduce memory usage on large sites.<\/p>\n\n<h4>1.33<\/h4>\n\n<p>Adds canonical and noindex headers for dynamic Markdown pages.<\/p>\n\n<h4>1.32<\/h4>\n\n<p>Adds .md URLs to the core sitemap and sets caching headers for Markdown output.<\/p>\n\n<h4>1.31<\/h4>\n\n<p>Switches to dynamic <code>.html.md<\/code> generation.<\/p>\n\n<h4>1.30<\/h4>\n\n<p>Adds an option to exclude posts or pages by ID.<\/p>\n\n<h4>1.29<\/h4>\n\n<p>Adds an option to sort <code>llms.txt<\/code> entries by popularity or by the most recent posts. All plugin settings are now deleted on uninstall.<\/p>\n\n<h4>1.28<\/h4>\n\n<p>Adds a success message confirming creation of <code>.html.md<\/code> files.<\/p>\n\n<h4>1.27<\/h4>\n\n<p>Minor improvements and bug fixes.<\/p>\n\n<h4>1.26<\/h4>\n\n<p>Switches JavaScript localization to wp_add_inline_script.<\/p>\n\n<h4>1.25<\/h4>\n\n<p>Moves inline styles in the settings page to CSS for improved maintainability.<\/p>\n\n<h4>1.23<\/h4>\n\n<p>Removes generated <code>.html.md<\/code> files and <code>llms.txt<\/code> when the plugin is uninstalled.<\/p>\n\n<h4>1.22<\/h4>\n\n<p>Adds a 'Disallow' entry to robots.txt when .html.md generation is enabled to exclude these files from search engines.<\/p>\n\n<h4>1.21<\/h4>\n\n<p>Corrects the placement of <code>.html.md<\/code> files: they are now generated in the site root with hyphenated file names.<\/p>\n\n<h4>1.20<\/h4>\n\n<p>Creates a separate Markdown file with the page content for each page.<\/p>\n\n<h4>1.19<\/h4>\n\n<p>New option to exclude tags from <code>llms.txt<\/code>.<\/p>\n\n<h4>1.18<\/h4>\n\n<p>New option to exclude categories from <code>llms.txt<\/code>.<\/p>\n\n<h4>1.17<\/h4>\n\n<h4>1.16<\/h4>\n\n<p>Exclude Elementor library templates from <code>llms.txt<\/code>.<\/p>\n\n<h4>1.13<\/h4>\n\n<p>Allow limiting the number of words per entry.<\/p>\n\n<h4>1.12<\/h4>\n\n<p>Use full post content instead of excerpt in <code>llms.txt<\/code>.<\/p>\n\n<h4>1.11<\/h4>\n\n<p>Reduce HTTP requests by using internal WordPress functions and streaming file output.<\/p>\n\n<h4>1.10<\/h4>\n\n<p>Option to limit Sitemap processing to first 100 entries.<\/p>\n\n<h4>1.9<\/h4>\n\n<p>Add monthly schedule option for WP-Cron.<\/p>\n\n<h4>1.8<\/h4>\n\n<p>Initial release.<\/p>","raw_excerpt":"Generate a Markdown list of your URLs to help AI-driven tools understand your website.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/241394","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=241394"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/andybrin"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=241394"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=241394"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=241394"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=241394"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=241394"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=241394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}