
About
AI assistants like ChatGPT, Perplexity, or Claude crawl websites to index content — but they have to sift through navigation menus, cookie banners, sidebars, and other page elements to get to the actual text. The result: incomplete or poorly structured answers.
The netzSINN Markdown Plugin solves this by making your Joomla content available in clean, structured Markdown format — at the exact same URLs, without any extra effort on your part. Human visitors continue to see the normal website. AI agents and crawlers receive a clean, distraction-free version of your content.
No duplicate content, no extra pages, no separate maintenance.
Key Features
Works without any changes to your content
Keeps human visitors completely unaffected
Delivers structured metadata automatically
Works with all major Joomla templates and page builders
/llms.txt — a map of your content for AI crawlers
RAG Export: export all articles as files (Pro Version Only)
How AI agents access your content
| Method | How it works |
|---|---|
.md URL suffix | Any visitor (or bot) can add .md to an article URL |
?output=markdown | Works as a query parameter on any article or category page |
Accept: text/markdown header | Standard HTTP content negotiation for API clients |
User-Agent detection (optional, off by default) | Automatically serves Markdown to known AI crawlers like GPTBot, ClaudeBot, PerplexityBot |
<link rel="alternate"> in the page source | The plugin adds a small tag to every article page — crawlers that read the HTML source see immediately that a Markdown version is available |
HTTP Link header (optional, off by default) | An extra line in the server response tells tools that read HTTP headers — without having to open the page at all |
/llms.txt | A plain-text list of all your articles at yoursite.com/llms.txt — crawlers can discover your entire content at once |
Installation
- Download the ZIP file
- In Joomla: System → Extensions → Install → Upload Package File
- Enable the plugin: System → Plugins → System – netzSINN Markdown
- Done — the plugin works immediately with no further setup required
To check that everything is working, add .md to any article URL on your site and open it in a browser.
Settings
Basic tab
| Parameter | Default | Description |
|---|---|---|
Show alternate link | Yes | Adds an <link rel="alternate" type="text/markdown">-Tag to the HTML Header section with the .md URL |
Send HTTP Link header | No | Sends a Link: HTTP header so API clients that don't parse HTML also find the Markdown URL |
Enable /llms.txt | Yes | Serves a plain-text article index at /llms.txt for AI crawlers |
Show category | Yes | Includes the article category in the metadata header |
Show tags | Yes | Include tags |
Show author | Yes | Includes the author name |
Show date | Yes | Includes the publication date |
Show description | Yes | Includes the meta description |
Show images | Yes | Includes intro and fulltext image URLs |
Show custom fields | No | Adds published Joomla custom fields as an extra section at the bottom |
Category article limit | 0 (no limit) | Limits the number of articles shown on category overview pages |
Filtering tab
| Settings | Options |
|---|---|
Page assignment | All pages / Selected pages only / All pages except selected |
Menu items | Choose specific menu items |
Categories | Choose specific content categories |
Example: Set Page assignment to "Selected pages only" and pick your Blog category — Markdown will only be delivered for those articles.
The same filter also applies to the batch exporter. Articles that are excluded will not be written to the export folder.
Export / RAG tab (Pro Feature)
| Setting | Default | What it does |
|---|---|---|
License Key | — | Key to activate pro features |
Enable export | No | Activates the batch export endpoint |
Secret token | — | Password that protects the export URL from unauthorised access |
Export directory | images/rag-export | Server folder where .md files are written |
Batch size | 20 | Number of articles processed per export run |
Request delay | 200 ms | Pause between internal requests to avoid overloading the server |
Open export page | — | Button that opens the export overview page directly (visible once a token is set) |
Start Export (Browser):/?output=markdown-export&secret=YOUR-TOKEN&format=html
Cron-Endpoint (JSON):/?output=markdown-export&secret=YOUR-TOKEN
Settings tab
| Parameter | Default | Description |
|---|---|---|
User-Agent detection | No | Automatically detects known AI crawlers and serves Markdown without requiring a .md UR |
Rewrite internal links | Yes | Converts internal links in Markdown output to .md URLs so crawlers can follow them |
Content selector | — | For non-standard templates: enter a custom selector to tell the plugin where your content is |
Debug mode | No | Shows a full diagnostic report at ?output=markdown&debug=1. Lists all active settings, which detection method was used, and whether the page
filter allows this article. Useful for troubleshooting. Disable again after use — the report is publicly visible. |
System Requirements
-
Joomla 5.3+ or Joomla 6.x
-
PHP 8.1+
-
No additional PHP extensions, Composer packages, or external services required.
Changelog
-
v1.5.0
- New option to send an HTTP `Link` header, helping crawlers find the Markdown version of a page.
- Automatically adds a `Vary: Accept` header to improve caching and ensure correct content delivery (HTML vs. Markdown).
- New `/llms.txt` endpoint provides a plain-text list of all articles for AI crawlers.
- The debug report now provides more detailed information for easier troubleshooting.
- The alternate link to the Markdown version is now correctly added to every HTML page.
- A potential 404 error when accessing the new `/llms.txt` endpoint has been resolved.
- Added helpful explanations in the plugin settings for the "User-agent detection" and "Debug mode" features.
- Internal code improvements for better stability and easier maintenance.
-
v1.4.2
- Fix: Improvements on RAG-Export Rotuine
-
v1.4.1
- Fix: Improvements on RAG Export Routine
-
v1.4.0
- Fix: Article filters work correctly in all situations
- Fix: Export process more stable and reliable
- New: Export page shows better progress and statistics
- New: Back to homepage button added
- Change: Export page redesigned for clarity
- Language: Export page now fully translatable
-
v1.3.3
- Fix: Removed an outdated entry from the plugin file
- Fix: Added missing GPL notices to some files
- Fix: Added LICENSE.txt so the GPL notice is complete for Joomla Directory checks
- Fix: Export now reads URL values the Joomla-safe way
- mprovement: License data decoding is now clearer to avoid review warnings
-
v1.3.2
- New: "Developer" license type – a single key unlocks all netzSINN plugins at once
- Improvement: Pro license keys are now verified to belong specifically to this plugin, preventing keys from other plugins being used here
-
v1.3.1
- refactor: package cleanup
-
v1.3.0
- Pro licence required for the Export / RAG endpoint — verified offline, no external API call needed
- Licences remain valid for all Pro features after the support period ends; only updates and support are time-limited
- Admin notice shown in the Joomla backend when the support period has expired, with a link to netzsinn.de
- New licence key field in the "Export / RAG" settings tab
-
v1.2.0
- Export now saves individual files to the server instead of streaming — easier to use with AI tools
- Only changed or new pages are re-exported; run the export repeatedly until everything is done
- New browser page shows export progress (exported, skipped, errors) with action buttons
- Configurable delay between requests prevents server overload during large exports
- Export activity is now written to a log file for troubleshooting
- Quick-link button in the plugin settings opens the export page directly — no manual URL needed
- Secret token field is now shown as plain text to avoid saving issues in some Joomla setups
-
v1.1.4
- Licence notice added to all plugin files — required for Joomla Extension Directory listing
-
v1.1.3
- Plugin settings now take effect immediately for all visitors — previously cached pages with old settings could persist until cache expiry
-
v1.1.2
- Fixed: cache was not cleared when saving plugin settings in the admin — changes now reliably take effect
-
v1.1.1
- Fixed: Markdown cache is now cleared automatically when plugin settings are saved
-
v1.1.0
- New advanced setting to define a custom content area selector — useful for non-standard templates
- Custom fields of type URL, rich text (editor), and date are now included in Markdown output
- New setting to limit the number of articles shown on category pages
- Fixed: corrupted compressed page responses no longer cause errors
-
v1.0.4
- Fixed: special characters (e.g. German umlauts) now display correctly in all cases
-
v1.0.3
- Fixed: German umlauts and other special characters were displayed as garbled text
- Fixed: headings containing links are now correctly detected and handled
- Fixed: Joomla custom fields list no longer appears as an unwanted bullet list in the output
-
v1.0.2
- Fixed: full page content (intro texts, section headings, custom field displays) is now included in Markdown output
- Fixed: duplicate headings are no longer removed if they appear as legitimate section headings
- Fixed: category pages now also get a proper top-level heading
-
v1.0.1
- Fixed: .md URLs no longer trigger a Joomla 404 error
- Fixed: top-level heading is now always present in the Markdown output
- Internal links are rewritten to .md URLs so AI crawlers can follow them
-
v1.0.0
- First official release
- Three always-active detection methods: `.md` URL suffix, `?output=markdown`, `Accept: text/markdown`
- Optional User-Agent detection (off by default): GPTBot, ClaudeBot, PerplexityBot, YouBot, cohere-ai, Applebot-Extended, Meta-ExternalAgent, Bytespider
- YAML frontmatter: `title`, `url`, `date`, `description`, `author`, `categories`, `tags`, `intro_image`, `fulltext_image`
- Semantic DOM extraction: `<main>` → `<article>` → `<body>`
- H1 downgrade when body heading matches frontmatter title
- Custom Fields rendered as `## Custom Fields` body section
- Category listing in Markdown
- `<link rel="alternate" type="text/markdown">` in HTML head
- Joomla Cache API integration (guests only)
- Homepage support: article ID resolved from active menu item when `id=0`
- Debug mode: `?output=markdown&debug=1`
- Built-in DOMDocument HTML-to-Markdown converter — no Composer dependency
- Full template compatibility: Cassiopeia, YOOtheme Pro, T4, Helix, Astroid, SP Page Builder, Quix
- Unit-tested converter logic: 31 tests, 62 assertions (PHPUnit 11, PHP 8.4)
License
GNU general public license
Download
Please, support this extension and review on Joomla Extension Directory JED!