Repository navigation
Releases: generoi/gds-llms
Release list
v0.4.2
v0.4.1
v0.4.0
Breaking: markdown URLs are extensionless. /about/ → /about/md/ (front page /md/, /sv/om-oss/md/, /blog/page/2/md/; /about/md on sites without trailing slashes). The index.html.md and .md forms are gone.
Edge caches treat URLs with a file extension as static files; on Kinsta the edge cache skips them whatever the content type, so .md markdown was never edge-cached. Extensionless, it is cached like a page. (#16)
- llms.txt tells readers about the
md/suffix; frontmattertranslationsand the alternate link use the new URLs. - A page whose own slug is
mdis shadowed by its parent's markdown. - On Kinsta only
txtneeds excluding from the CDN now (for llms.txt).
v0.3.1
- llms.txt and markdown responses send
Cache-Control: public, max-age=0, s-maxage=3600(Kinsta's own policy for HTML pages) unless one is already set, and never for logged-in users or previews, so Kinsta's edge caches them like pages. Change withgds/llms/cache_control. (#15) - README: on Kinsta, exclude
txtandmdfrom the CDN, which otherwise caches both for a year by extension.
v0.3.0
Breaking: now a regular plugin. Composer type wordpress-plugin instead of wordpress-muplugin: it installs into plugins/ and must be activated after updating (wp plugin activate gds-llms). Until then llms.txt and the markdown pages are off.
- Boots on
plugins_loaded(priority 0), still ahead of Polylang reading the request URL. - Translations load through
load_plugin_textdomain(); a site's ownlanguages/plugins/file still takes precedence. - Installed into
plugins/, the bundled generated translation files no longer trip sites' pint pre-commit hooks. (#14)
v0.2.0
Markdown
- Archives and listings in content mode: blog, categories, tags, post type archives and shops get markdown built from their query (title, introduction, result count, each post with its description and price, page links). Up to 100 results per page for archives, FacetWP listings and paged Query Loops (
gds/llms/markdown_per_page). (#8) - FacetWP facets become links to the filtered listings, with a result count. (#7)
- Pages whose template renders a listing declare it with the new
gds/llms/markdown_listingfilter; sage-archive-pages answers it for mapped pages. Replaces the built-in sage-archive-pages integration. (#12) - Frontmatter
translations: each other language's markdown URL, from Polylang. (#10) - Anything that is not an HTML page (PDF/SVG permalinks) gets no markdown URL. (#11)
- Empty list items left by removed controls are dropped. (#6)
Translations
- Finnish and Swedish bundled; core strings reused where they exist; each llms.txt built in its own language's locale. (#9)
Upgrading: sites using sage-archive-pages need it at 0a0dee5 or later for mapped pages to keep their listing in markdown.
v0.1.0
First release.
/llms.txtbuilt from the site's own menus, per Polylang language, with the top of the product catalogue and a sitemap link. Cached per language and flushed on content, menu and option changes; replaces Yoast's file-based llms.txt and stands down when Rank Math's module is on.- Markdown version of every page at
/page/index.html.md(or.md), advertised with<link rel="alternate">and aLinkheader.contentmode (default) converts the post content;pagemode converts the rendered page's<main>. Conversion follows screen-reader semantics, and output uses Cloudflare's Markdown for Agents layout (YAML frontmatter, trailing JSON-LD,X-Markdown-Tokens). - robots.txt AI policy in Content Signals and IETF aipref vocabularies, with
Disallowgroups for crawlers of a declined use. - Surrogate keys via sage-cachetags when installed.
Filters and rollout notes: see the README.