angeo / module-llms-txt

angeo/module-llms-txt

Magento 2 module for AI Engine Optimization (AEO). Generates spec-compliant llms.txt and llms-full.txt per llmstxt.org standard, plus streaming JSONL for vector indexing. Multi-store, multi-website, CLI, cron, async admin UI, Page Builder-aware sanitization, customer-group pricing, atomic writes, ETag/Cache-Control, .md mirrors.

magento2-module 2.4.6-2.4.9 Compatible Based on composer requirements only QA: failed MIT
Viewing version 2.0.0. Latest version is 3.0.5. Switch to latest

Angeo LLMs.txt — Magento 2

Packagist
License
PHP

Generates spec-compliant llms.txt and JSONL files for ChatGPT, Claude, Gemini, and Perplexity AI visibility.


What's new in v2.0.0

  • 4 critical bugs fixed — see Bug fixes section below
  • Spec-compliant format — output now follows llmstxt.org with H1 title, ## sections, and markdown links
  • bin/magento angeo:llms:generate — CLI command (was missing in v1)
  • Files in var/ — moved from pub/media/ (publicly browsable) to pub/media/angeo/llms/ (served via PHP controller)
  • AbstractGenerator — eliminates 95% duplicate code between LlmsGenerator and JsonlGenerator
  • Single ProviderInterface — replaces two identical interfaces from v1
  • Per-store exception safety — one failing store doesn't block others; errors logged
  • Admin config — enable/disable per store, product limit, toggle JSONL generation

Bug fixes (v1 → v2)

Bug Impact Fix
JSONL providers: json_encode() after foreach Only the last category/product/page was encoded — all others silently dropped Moved json_encode() inside loop; lines collected into array
Cron namespace triple-nested (LlmsTxt\LlmsTxt\LlmsTxt\Cron) PHP fatal error on every cron run — cron never executed Fixed to Angeo\LlmsTxt\Cron
$output initialized before store loop Store N's file contained content from stores 1…N merged Moved $output = '' inside the store loop
Jsonl\CategoryProvider missing root category filter Returned system categories (ID 1, 2) and categories from all store views Added path LIKE 1/{rootId}/% filter (same as Llms version)

Installation

composer require angeo/module-llms-txt
bin/magento setup:upgrade
bin/magento cache:flush

Usage

CLI (recommended for CI/CD and first-time generation)

# Generate for all active stores
bin/magento angeo:llms:generate

# Generate for a specific store
bin/magento angeo:llms:generate --store=en_us

# Skip JSONL (llms.txt only)
bin/magento angeo:llms:generate --no-jsonl

# Skip llms.txt (JSONL only)
bin/magento angeo:llms:generate --no-llms

Admin UI

Navigate to Stores → Configuration → Angeo → LLMs.txt and click Generate Now.

Cron

Runs automatically every day at 02:00 server time. Verify your Magento cron is active:

bin/magento cron:run --group=default

Generated files

Files are written to pub/media/angeo/llms/ and served via a PHP controller:

URL File Description
yourstore.com/llms.txt pub/media/angeo/llms/llms_default.txt Spec-compliant llms.txt for AI crawlers
yourstore.com/llms.jsonl pub/media/angeo/llms/llms_default.jsonl JSONL for vector indexing pipelines

For multi-store: each store gets its own file (llms_en_us.txt, llms_de.txt, etc.) served at the store's base URL.


llms.txt format (llmstxt.org spec)

# EN

> Store URL: https://angeo.test
> Currency: USD
> Locale: en

## Categories

- [All products](https://angeo.test/all-products.html)
- [Sale](https://angeo.test/sale.html)

## Products

- [test](https://angeo.test/test1.html): 100.00 USD
- [test2](https://angeo.test/test2.html): 20.00 USD
- [test3](https://angeo.test/test3.html): 30.00 USD

## Pages

- [Home page](https://angeo.test/home): CMS homepage content goes here.

Configuration

Stores → Configuration → Angeo → LLMs.txt

Setting Description Default
Enabled Enable/disable module Yes
Include Products Add ## Products section Yes
Include Categories Add ## Categories section Yes
Include CMS Pages Add ## Pages section Yes
Generate JSONL Also generate .jsonl file Yes
Product limit Max products to include (0 = unlimited) 5000

Extending with custom providers

Register additional content sections via di.xml:

<type name="Angeo\LlmsTxt\Model\LlmsGenerator">
    <arguments>
        <argument name="providers" xsi:type="array">
            <item name="my_custom" xsi:type="object">Vendor\Module\Model\Llms\Providers\MyProvider</item>
        </argument>
    </arguments>
</type>

Your provider implements Angeo\LlmsTxt\Api\ProviderInterface:

public function provide(StoreInterface $store): string
{
    return "## My Section\n\n- [Item](url): description\n\n";
}

Testing

vendor/bin/phpunit -c app/code/Angeo/LlmsTxt/phpunit.xml

The Angeo AI Suite

Module Purpose
angeo/module-aeo-audit AEO audit — 8 signals scored
angeo/module-llms-txt This module — llms.txt generator
angeo/module-openai-product-feed CSV product feed
angeo/module-openai-product-feed-api ACP REST API

License

MIT — see LICENSE

No changelog yet

The vendor hasn't published a changelog. Tagged releases appear in the Versions tab.

Versions
Version Stability QA Status Released
3.0.5 stable Fail 2026-06-04 19:39:51
3.0.4 stable Not tested 2026-06-03 18:23:19
3.0.3 stable Not tested 2026-06-03 18:04:49
3.0.2 stable Not tested 2026-06-03 17:46:25
3.0.1 stable Not tested 2026-06-03 16:17:59
3.0.0 stable Not tested 2026-05-29 20:31:58
2.1.4 stable Not tested 2026-05-06 04:36:21
2.1.3 stable Not tested 2026-04-30 07:41:35
2.1.2 stable Not tested 2026-04-30 05:05:25
2.1.1 stable Not tested 2026-04-29 20:38:27
2.1.0 stable Not tested 2026-04-29 20:07:40
2.0.0 stable Not tested 2026-04-16 18:52:27
1.1.2 stable Not tested 2026-03-20 18:38:35
1.1.1 stable Not tested 2026-03-18 18:33:44

Requires 12

Package Constraint
ext-json *
ext-mbstring *
magento/framework >=102.0
magento/module-backend >=102.0
magento/module-catalog >=104.0
magento/module-catalog-inventory >=100.4
magento/module-catalog-url-rewrite >=100.4
magento/module-cms >=104.0
magento/module-config >=101.2
magento/module-store >=101.0
magento/module-url-rewrite >=102.0
php ~8.1.0||~8.2.0||~8.3.0||~8.4.0||~8.5.0

Requires-dev 3

Package Constraint
magento/magento-coding-standard ^32.0
phpstan/phpstan ^1.10
phpunit/phpunit ^10.5

No QA results yet

QA pipelines haven't run for this version. Status appears here once the vendor publishes a tagged release that gets ingested.

License
MIT
Homepage
https://angeo.dev/
Authors
Make it pay

Turn an existing module into recurring revenue.

If you already maintain a Magento 2 module on GitHub or GitLab, listing it on Packagento takes about five minutes. We mirror your tags, handle distribution signing, and route paid licenses through Stripe Connect, so you can keep shipping the way you already do.