Version 2.0.1
October 5, 2026
Fixed
- Fixed an error at the end of
craft updatewhen updating from 1.x, after the update had already succeeded. (#35)
Version 2.0.0
October 3, 2026
This release contains breaking changes. Please review breaking changes in the upgrade guide.
Added
- Add the
cacheDurationplugin setting (default86400seconds), the longest time a page's markdown stays cached.0keeps it until it gets invalidated. Set it inconfig/llmify.php. - Add an
LLMify markdownoption to Utilities > Clear Caches, also available asphp craft clear-caches/llmify. - Pages whose markdown could not be rendered are now listed on the dashboard, and the element sidebar shows the reason (e.g. a template error, no
{% llmify %}blocks, empty markdown, or a failed front end request in headless mode).
Changed
- Markdown is now rendered on demand and kept in Craft's data cache, instead of being generated by queue jobs and stored in the database. The cache uses Craft's element cache tags, so a page's markdown is invalidated as soon as the page or anything it shows (related entries, assets, globals) changes, no matter where it is saved from. Previews are never cached.
- In headless mode, the front end is fetched on the first request of a page and the result is cached for
cacheDuration. - Saving the plugin, site or content settings now clears all markdown caches.
php craft llmify/markdown/generatenow warms the cache by caching every page that is not cached yet, e.g. nightly on sites under heavy load.php craft llmify/markdown/clearclears it.- The utility shows per site how many pages are cached and since when. Its actions are now
Warm CacheandClear Cache, and the permissions are now calledWarm Markdown CacheandClear Markdown Cache. - The dashboard shows how many pages are cached, the average tokens per page and the oldest cache entry. Its markdown score now counts the pages without failures.
- The element sidebar shows whether a page is cached, since when and its size in tokens.
Refreshrenders the page again,Clearremoves it from the cache.
Removed
- Remove
llms-full.txt, theEnable llms-full.txtsite setting, theInclude Front Matter in llms-full.txtplugin setting and thellms-full-txtAPI endpoint. The file is not part of the llms.txt spec, large sites easily outgrow any context window with it, and AI crawlers barely request it. Agents find every page's markdown throughllms.txtand the.mdURLs instead. - Remove the
llmify_pagesdatabase table. Stored markdown is dropped on update and rendered again on the next request. - Remove
RefreshService(Llmify::getInstance()->refresh), theRefreshMarkdownJobqueue job and theX-Llmify-Refresh-Requestheader. UseLlmify::getInstance()->markdown->getPageMarkdown()to get a page's markdown.
Fixed
- Markdown no longer depends on the visitor who requests a page first: the template renders without their query string, cookies,
User-AgentandAccept-Language, and cookies it sets do not end up in the markdown response. - Markdown served through content negotiation now sends
Cache-Control: private, no-store, so CDNs that ignoreVary(e.g. Cloudflare) do not serve it to browsers. - Resolving
seomatic:values no longer leaves SEOmatic in its preview state for the rest of the request.
Version 1.12.1
October 2, 2026
Changed
- Refresh the bundled AI bot list.
Fixed
- Links in generated markdown no longer carry a
siteTokenparameter on live sites. (#32)
Version 1.12.0
September 23, 2026
Added
- Add
rel="describedby"discovery for the llms.txt spec v2: the discovery tag now also injects<link rel="describedby" href="/llms.txt">, and.mdresponses (direct and content-negotiated) send aLinkheader pointing tollms.txt(rel="describedby") and, for negotiated responses, to the.mdURL (rel="alternate"; type="text/markdown"). - Show a warning on the dashboard while a
Markdown URL Prefixis set, since the spec expects markdown at the original URL with.mdappended.
Changed
- The homepage markdown is now served at
/index.mdinstead of/__home__.md, as the spec requires for URLs without a file name. Generated links, the discovery tag andllms.txtuse the new URL;__home__.mdkeeps working. Markdown URL Prefixnow defaults to an empty string for new installs, so.mdURLs match the spec. Existing installs that never saved the setting keeprawvia a migration.
Version 1.11.0
September 7, 2026
Added
- Add
Basic Auth UsernameandBasic Auth Passwordsettings so markdown generation also works on sites protected with HTTP Basic Auth (e.g. staging). The credentials are sent with the plugin's internal page requests. - Show a warning on all LLMify control panel pages and in the LLMify Settings field while the plugin is disabled, so editors can see that no markdown is being generated or served.
Fixed
- The plugin settings are now shown read-only when
allowAdminChangesis disabled, instead of an empty settings page. The Settings link in the LLMify navigation is also available in that case. - Markdown generation now works on offline sites (
isSystemLive: false). The plugin's internal page requests carry a Craft site token, which Craft accepts while the system is offline. - Internal page requests that do not return a 200 are now logged as warnings instead of being skipped silently.
Version 1.10.0
August 31, 2026
Added
- Add
Enable llms.txtandEnable llms-full.txtsite settings to disable the aggregated files per site while keeping the markdown pages available. (#24) - Add an
Include Social Linkssite setting with an editableSocial Linkstable that adds a## Socialsection tollms.txtandllms-full.txt. The table follows SEOmatic's "Same As URLs" until changes are saved that differ from it; social links can also be maintained without SEOmatic. (#24)
Changed
- Markdown page lookups now resolve through an indexed
uricolumn instead of an unindexed JSON expression, speeding up.mdURL serving on sites with many pages.
Version 1.9.0
July 18, 2026
Added
- Add WebMCP support: the new
enableWebMcpsetting exposes your enabled content to in-browser AI agents (e.g. Gemini in Chrome) via the experimental WebMCP standard. A script served at/webmcp.jsregisters read-onlysearch_content,get_page,list_sections, andnavigate_totools backed by the same content gating as the public markdown routes. - Add
WebMcpService::EVENT_REGISTER_TOOLSso modules and plugins can register custom WebMCP tools or modify and remove the built-in ones. - Add
mdUrl(),chatGptUrl(), andclaudeUrl()Twig functions that return the markdown URL of an element and prompt links for opening it in ChatGPT or Claude.
Changed
enableBotDetectionnow defaults tofalsefor new installs. Serving markdown based on the user agent is an explicit opt-in.
Version 1.8.0
June 13, 2026
Added
- Add a "Copy settings from" menu to the Site and Content settings pages to load another site's settings into the form.
Version 1.7.0
June 9, 2026
Added
- Add
Headless Modesetting for sites where Craft does not render the front end. Markdown is generated by fetching your front-end URLs (the site's Base URL) instead of relying on Twig rendering. - Add
API Tokensetting to secure rest APIs against unauthorized parties. - Add headless API endpoints
GET /actions/llmify/api/llms-txtandGET /actions/llmify/api/llms-full-txt(with asiteparameter) so a headless front end can pull and re-serve the generated files. - Add
GET /actions/llmify/api/page?uri=<uri>returning a single page's stored markdown (including front matter) for a given site. - Add
POST /actions/llmify/api/convertto convert a front-end URL to markdown on demand. - Add
RequestService::fetchAndConvert()andMarkdownService::convertHtml().
Version 1.6.0
May 16, 2026
Added
- Add
EVENT_LLM_REQUESTto allow Insights to collect data. - Add
getMarkdownPath()helper - Add
LlmRequestTypeenum
Improved
- Change description db columns from string to text
- Change field description of bot settings to be more descriptive
Version 1.5.0
May 14, 2026
Added
- Sections can now have a custom order in the llms.txt and llms-full.txt via Content Settings.
- Add template support for all plain text fields in site, content and llm field settings.
Improved
- Improve AI bot detection by using https://raw.githubusercontent.com/ai-robots-txt/ai.robots.txt/main/robots.json.
- Removes prerequirements in AI skill.
Fixed
- Sections with no URLs won't show up anymore in the content settings and dashboard.
- Fix 500 error if LLMify tries to generate markdown for an element without a URL.
- Disable "Add a field" button when override front matter is false.
Version 1.4.0
April 11, 2026
Added
- Add dashboard with site setup scores and section-level content statistics.
- Add AI crawler detection to auto-serve markdown to known bots (GPTBot, ClaudeBot, ChatGPT-User, and more) based on user agent.
- Add
<link rel="alternate" type="text/markdown">discovery tag injection with configurable toggle. - Add
/.well-known/llms.txtroute for RFC 8615 compliant discovery. - Add per-entry exclude toggle via the LlmifySettingsField to individually exclude entries from markdown generation and all LLM outputs.
- Add SEOmatic field support for automatic front matter population.
- Add
Vary: Acceptheader to all markdown endpoints andVary: Accept, User-Agentto auto-serve responses. - Add
X-Robots-Tag: noindex, nofollowheader to auto-serve responses. - Add custom bot user agent configuration for extending the built-in bot list.
- Add markdown preview targets for entries and products.
- Add direct links to content and site settings from the entry sidebar and settings field.
Improved
- Reorganize plugin settings into a tabbed UI (General, Advanced) integrated into the plugin subnav.
- Enable content negotiation (
autoServeMarkdown) and AI crawler detection (enableBotDetection) by default for fresh installs. - Make
markdownUrlPrefixoptional, leave it empty to use${url}.mdURLs directly. - Refactor field discovery into dedicated
FieldDiscoveryService. - Improve sidebar panel UX: show informative messages when LLMify is disabled at the site, section, or entry level instead of hiding the panel. Respect generate and clear permissions for sidebar buttons.
- Enhance markdown generation for images inside links.
Fixed
- Fix breadcrumbs in all plugin pages.
- Fix bug in field discovery service with field layout overwrites.
- Fix UI issue with front matter inheritance in the settings field.
- Fix issue with cached SEOmatic field values in llms.txt.
Version 1.3.1
March 16, 2026
Fixed
- Add icon to llmify settings field.
Version 1.3.0
March 4, 2026
Added
- Add Craft Commerce product support as an optional soft dependency.
- Add
X-Robots-Tag: noindex, nofollowheader to all markdown endpoints. - Add
Link: rel="canonical"header to individual markdown pages pointing to the original HTML page.
Improved
- Expand default
remove_nodesto strip non-content elements (form,button,input,select,option,svg,script,nav,noscript). - Remove empty markdown links left behind after image/node removal.
- Decode HTML entities in generated markdown output.
Changed
- Generalize database schema from entry-specific to element-generic (
entryId→elementId,sectionId→groupId,entryMeta→elementMeta). - Generalize all services to work with
ElementInterfaceinstead ofEntry.
Version 1.2.0
March 1, 2026
- Add auto serve markdown mode if the
text/markdownheader is present. - Add auto serve markdown setting.
- Add blitz support for auto serve markdown mode.
- Add link to generated markdown in entry sidebar.
- Add auto try to generate markdown files before showing a 404 for requests with
text/markdownandraw/${uri}.mdroutes.
Version 1.1.0
February 1, 2026
- Add front matter support with hierarchical inheritance (Site → Section → Entry)
- Add Content Block text fields support with dot notation
- Add entry-level override settings for title, description and front matter
- Add link to section settings in entry field UI
Version 1.0.2
December 8, 2025
- Fix request context issues in
EVENT_AFTER_RENDER_TEMPLATE. #1
Version 1.0.1
August 20, 2025
- Remove punctuation mark at the end of the llms.txt description and filter out links without title or url.
Version 1.0.0
August 20, 2025
- Initial release