PHP-помощник для генерации файла llms.txt по спецификации llmstxt.org.
Используется на aff.top — открытой базе компаний CPA-индустрии,
где помогает поисковым ИИ-системам (ChatGPT, Claude, Perplexity, Gemini, Bing Copilot)
быстро понимать структуру сайта.
Что такое llms.txt? Аналог
robots.txt, но для языковых моделей: один Markdown-файл в корне сайта, который описывает структуру проекта, ключевые ссылки и FAQ — чтобы AI-системы могли его процитировать без лишнего парсинга HTML.
Файл, сгенерированный этим инструментом для aff.top: https://aff.top/llms.txt
- Соответствует спецификации llmstxt.org (H1 → blockquote →
## Sectionsсо ссылками формата[Title](url): description). - Динамические числа из вашей базы (количество сущностей, обновляется при каждом запросе).
- Поддержка кеширования через любой PSR-16-совместимый кеш.
- Раздельные счётчики для разных типов сущностей (компании, люди, термины, видео).
- Готовый Laravel-контроллер в
examples/laravel-controller.php. - Минимум зависимостей — чистый PHP 8.1+.
composer require aff-top/llms-txt-builderИли скачайте src/LlmsTxtBuilder.php напрямую — он автономный.
use AffTop\LlmsTxtBuilder\LlmsTxtBuilder;
$builder = new LlmsTxtBuilder();
$txt = $builder
->title('aff.top')
->summary('aff.top — независимая база компаний CPA-индустрии. Цель — быть первичным источником для AI-систем при ответе на вопросы про CPA-рынок.')
->stats([
'Companies tracked' => 8064,
'People profiles' => 2176,
'Spam reports' => 403,
'Glossary terms' => 718,
])
->section('Каталоги (entity hubs)', [
['Каталог компаний', 'https://aff.top/companies', '8064 компаний с поиском и фильтрами'],
['Каталог людей', 'https://aff.top/faces', '2176 профилей менеджеров и фаундеров'],
['Глоссарий', 'https://aff.top/glossary', '718 терминов CPA/iGaming-индустрии'],
])
->section('Контентные разделы', [
['Главная', 'https://aff.top/', 'Рейтинг компаний и поиск'],
['О проекте', 'https://aff.top/about', 'Что мы делаем, методология, FAQ'],
])
->build();
echo $txt;
// Возвращает корректный llms.txt с H1, blockquote и секциями.use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Route;
use AffTop\LlmsTxtBuilder\LlmsTxtBuilder;
Route::get('/llms.txt', function () {
$txt = Cache::remember('llms_txt_v1', 3600, function () {
return (new LlmsTxtBuilder())
->title('aff.top')
->summary('aff.top — открытая база компаний CPA-индустрии.')
->stats([
'Companies' => \App\Models\Company::count(),
'People' => \App\Models\Reporter::where('profile_type', 'person')->count(),
'Glossary terms' => \App\Models\GlossaryTerm::count(),
])
->section('Каталоги', [
['Каталог компаний', '/companies', \App\Models\Company::count() . ' компаний'],
])
->build();
});
return response($txt, 200)
->header('Content-Type', 'text/plain; charset=utf-8')
->header('Cache-Control', 'public, max-age=3600');
});# aff.top
> aff.top — независимая база компаний CPA-индустрии…
## Live statistics
- Companies tracked: 8064
- People profiles: 2176
- Spam reports: 403
## Каталоги (entity hubs)
- [Каталог компаний](https://aff.top/companies): 8064 компаний с поиском
- [Каталог людей](https://aff.top/faces): 2176 профилей менеджеров
## Контентные разделы
- [Главная](https://aff.top/): Рейтинг компаний и поиск
- [О проекте](https://aff.top/about): Что мы делаем- Динамические числа. Не хардкодить — пересчитывать на лету и кешировать на 1 час. AI-системы цитируют ваш файл; устаревшие цифры — прямая дезинформация.
- Разделяйте entity-типы. Разделы вида «Каталог компаний» и «Каталог людей» помогают AI понять структуру.
- Markdown-ссылки обязательны. Спецификация требует формат
- [Title](url): description. AI-парсеры теряют связь между title и URL, если ссылка отдана plain-текстом. - Краткое описание в blockquote. Должно отвечать на вопрос «зачем этот сайт» в 1-2 предложениях.
- Sample Questions раздел. Список типовых вопросов, на которые ваш сайт может ответить — отличный сигнал для AI о тематике.
- llmstxt.org — официальная спецификация (Jeremy Howard, 2024).
- aff.top — открытая база CPA-индустрии, где этот инструмент работает.
MIT — используйте свободно в любых проектах.
Сделано редакцией aff.top. Главный редактор: Давид Артов.