<!-- Generated from ru/how-to-create/index.html. The canonical document is the HTML page. -->

- [ Главная ](/ru/) 
/
- Как создать            
# Как создать файл `llms.txt`

Три шаблона, контрольный список и инструкции по развёртыванию методом копирования и вставки для любого распространённого стека.

Последнее обновление: 12 августа 2026 г.

На этой странице

- [ 1. Спланируйте, что включить ](#plan)
- [ 2. Минимальный шаблон ](#minimal)
- [ 3. Рекомендуемый шаблон ](#recommended)
- [ 4. Расширенный шаблон ](#advanced)
- [ 5. Проверка ](#validate)
- [ 6. Разверните в своём стеке ](#deploy)
- [ 7. Автоматическая генерация во время сборки ](#auto)
- [ Контрольный список ](#checklist)            
## 1. Спланируйте, что включить

Прежде чем что-либо писать, перечислите **от 5 до 20 страниц** на вашем сайте, которые
LLM потребовалась бы для ответов на вопросы о вашем проекте. Считайте это тщательно отобранным списком
для чтения, а не картой сайта.

Полезные стартовые категории:

- **Продукт**, обзор, варианты использования, цены. 
- **Документация**, начало работы, справочник API и основные руководства. 
- **Интеграции**, партнёров и SDK, по одной строке на каждый элемент. 
- **Справочная информация**, журнал изменений, страница статуса, политика
безопасности. 
- **Необязательно**, бренд-материалы, пресса, архивы.   
Если страница не поможет LLM ответить на реальные вопросы пользователей, не включайте её. Самая
большая ошибка — включать всё: это размывает сигнал.

## 2. Минимальный шаблон

Заголовок H1 — единственный обязательный элемент. Приведённый ниже шаблон добавляет краткое
описание и ссылки, чтобы файл был полезен.
llms.txt, minimal    Копировать     

```
# {Site name}

> {One-sentence description of what your site is about.}

## Pages

- [{Page title}]({absolute URL}): {short note}

```

## 3. Рекомендуемый шаблон

Для большинства сайтов этот шаблон — правильная отправная точка: краткое описание в цитате,
абзац контекста и от трёх до четырёх разделов.
llms.txt, recommended    Копировать     

```
# {Site name}

> {One- or two-sentence overview. Factual, no marketing claims.}

{Optional 1–3 sentences of context: what this site covers, who it's for, and how the file below is curated.}

## Product

- [Product overview]({URL}): high-level capabilities.
- [Pricing]({URL}): plans and limits.

## Documentation

- [Getting started]({URL}): install, first call, hello world.
- [API reference]({URL}): full endpoint catalog.
- [Guides]({URL}): tutorials and how-tos.

## Optional

- [Changelog]({URL}): version history.
- [Brand assets]({URL}): logos and color palette.

```

## 4. Расширенный шаблон

Более крупной SaaS-платформе или платформе для разработчиков обычно нужна более глубокая
структура с отдельным `Optional` раздел. Используйте это как отправную точку и безжалостно
сокращайте.
llms.txt, advanced    Копировать     

```
# Acme

> Acme is a hosted analytics platform for product teams. The pages below cover product, pricing, the API, and integration guides.

The map here is curated for assistants, it is not exhaustive. Use it to answer questions about product capabilities, pricing tiers, integrations, SDKs, and migration from other tools. For the full corpus, see /llms-full.txt.

## Product

- [Product overview](https://acme.example/product): high-level capabilities.
- [Use cases](https://acme.example/use-cases): scenarios for product, marketing, and support teams.
- [Changelog](https://acme.example/changelog): monthly product updates.

## Pricing

- [Pricing tiers](https://acme.example/pricing): plans, limits, overage rules.
- [Billing FAQ](https://acme.example/billing-faq): invoices, taxes, refunds.

## Developers

- [REST API reference](https://docs.acme.example/api): full endpoint catalog.
- [Webhooks](https://docs.acme.example/webhooks): events, signatures, retries.
- [SDK, JavaScript](https://docs.acme.example/sdk/js): install, init, track events.
- [SDK, Python](https://docs.acme.example/sdk/python): install, init, track events.

## Integrations

- [Segment](https://docs.acme.example/integrations/segment): two-way sync.
- [Snowflake](https://docs.acme.example/integrations/snowflake): nightly export.
- [HubSpot](https://docs.acme.example/integrations/hubspot): contacts and events.

## Optional

- [Brand assets](https://acme.example/brand): logos, color palette.
- [Press releases](https://acme.example/press): historical announcements.
- [Status page](https://status.acme.example): real-time service health.

```

Пример

Использовать генератор

Не хотите начинать с шаблона? Используйте
генератор : заполните форму и скачайте чистый файл.

## 5. Проверьте

Вставьте файл в [валидатор](/ru/validator/) чтобы подтвердить соответствие спецификации.
Типичные проблемы, которые он выявляет: отсутствующий H1, неверный синтаксис ссылок (`- [name](url)`), относительные URL, содержимое вне раздела, случайный второй H1, слишком большие файлы.

## 6. Развёртывание в вашем стеке

### Cloudflare Pages
Cloudflare Pages    Копировать     

```
# Cloudflare Pages
# Place llms.txt in the public/ root of your project. It will be served at /llms.txt.

# Verify after deploy:
curl -I https://your-domain.com/llms.txt

```

→ [Полное руководство по Cloudflare Pages](/ru/llms-txt-cloudflare/)

### Vercel

Разместите `llms.txt` в вашем проекте&rsquo;s `public/` каталог. Vercel обслуживает
его без изменений по адресу `/llms.txt`.

→ [Полное руководство по Vercel](/ru/llms-txt-vercel/)

### Netlify

Тот же подход: поместите файл в статический каталог (`public/`
для Next.js или Astro, `static/` для SvelteKit и Hugo). Netlify отдаёт его по адресу `/llms.txt`.

→ [Полное руководство по Netlify](/ru/llms-txt-netlify/)

### Next.js
Next.js    Копировать     

```
// Next.js (App Router), public/llms.txt is served as-is.
// 1. Place the file at: public/llms.txt
// 2. No code change needed, it's served at https://yoursite.com/llms.txt

// If you prefer to generate it dynamically:
// app/llms.txt/route.ts
import { NextResponse } from 'next/server';

export async function GET() {
const body = `# Acme

> One-line summary.

## Docs

- [Getting started](https://acme.example/docs/getting-started)
`;

return new NextResponse(body, {
headers: { 'Content-Type': 'text/plain; charset=utf-8' },
});
}

```

→ [Полное руководство по Next.js](/ru/llms-txt-nextjs/)

### Astro
Astro    Копировать     

```
// Astro, public/llms.txt is served as-is.
// Drop the file at: public/llms.txt
// Astro will copy it to dist/llms.txt during `astro build`.

// To generate it from your content collections, create:
// src/pages/llms.txt.ts
import type { APIRoute } from 'astro';
import { getCollection } from 'astro:content';

export const GET: APIRoute = async () => {
const docs = await getCollection('docs');
const body = [
'# Acme',
'',
'> Hosted analytics for product teams.',
'',
'## Documentation',
'',
...docs.map((d) => `- [${d.data.title}](https://acme.example/${d.slug}/): ${d.data.summary}`),
].join('\\n');

return new Response(body, { headers: { 'Content-Type': 'text/plain; charset=utf-8' } });
};

```

→ [Полное руководство по Astro](/ru/llms-txt-astro/)

### SvelteKit
SvelteKit    Копировать     

```
// SvelteKit, static/llms.txt is served as-is.
// Drop the file at: static/llms.txt
// SvelteKit copies it to build/llms.txt during build.

// To generate it dynamically, create:
// src/routes/llms.txt/+server.ts
import type { RequestHandler } from './$types';

export const GET: RequestHandler = () => {
const body = `# Acme

> One-line summary.

## Docs

- [Getting started](https://acme.example/docs/getting-started)
`;

return new Response(body, {
headers: { 'Content-Type': 'text/plain; charset=utf-8' },
});
};

```

→ [Полное руководство по SvelteKit](/ru/llms-txt-sveltekit/)

### Hugo
Hugo    Копировать     

```
# Hugo, place llms.txt in the static/ folder.
# It will be copied to public/llms.txt during hugo build.

# To generate it from content, create a custom output format.
# config.toml:
[outputs]
home = ["HTML", "RSS", "LLMSTXT"]

[outputFormats.LLMSTXT]
name = "LLMSTXT"
mediaType = "text/plain"
baseName = "llms"
isPlainText = true
notAlternative = true

# layouts/index.llmstxt:
# {{ "# " }}{{ .Site.Title }}
#
# > {{ .Site.Params.description }}
#
# ## Pages
#
# {{ range .Site.RegularPages }}- [{{ .Title }}]({{ .Permalink }}): {{ .Params.summary }}
# {{ end }}

```

→ [Полное руководство по Hugo](/ru/llms-txt-hugo/)

### WordPress
WordPress    Копировать     

```
# WordPress, three options
#
# 1. Easiest: upload llms.txt to your hosting (FTP/SFTP) at the web root.
#    Verify: https://yoursite.com/llms.txt
#
# 2. Plugin: any "static file uploader" plugin works. Place file at root.
#
# 3. Programmatic: add a small handler to your theme's functions.php
#    that intercepts the request and returns the file contents.
add_action('init', function () {
if (\$_SERVER['REQUEST_URI'] === '/llms.txt') {
header('Content-Type: text/plain; charset=utf-8');
echo file_get_contents(get_template_directory() . '/llms.txt');
exit;
}
});

```

→ [Полное руководство по WordPress](/ru/llms-txt-wordpress/)

### Express
Express    Копировать     

```
// Express, serve llms.txt as a static file or dynamic route.

// Option 1: static file in public/
app.use(express.static('public')); // serves public/llms.txt at /llms.txt

// Option 2: dynamic route
app.get('/llms.txt', (req, res) => {
res.type('text/plain');
res.send(`# Acme

> One-line summary.

## Docs

- [Getting started](https://acme.example/docs/getting-started)
`);
});

```

→ [Полное руководство по Express](/ru/llms-txt-express/)

### Laravel
Laravel    Копировать     

```
One-line summary.

## Docs

- [Getting started](https://acme.example/docs/getting-started)
EOT;

return response($content, 200)
->header('Content-Type', 'text/plain; charset=utf-8');
});

// Or use a controller:
// php artisan make:controller LlmsTxtController
// Then: Route::get('/llms.txt', [LlmsTxtController::class, 'show']);

```

→ [Полное руководство по Laravel](/ru/llms-txt-laravel/)

### CMS (Contentful, Sanity, Strapi, Prismic)
CMS build script    Копировать     

```
# CMS-driven llms.txt (Contentful, Sanity, Strapi, Prismic…)
#
# Pattern: fetch curated entries at build time, write llms.txt.
#
# Node.js example (runs in CI or as a build script):

import { createClient } from 'contentful';
import fs from 'fs/promises';

const client = createClient({
space: process.env.CONTENTFUL_SPACE_ID,
accessToken: process.env.CONTENTFUL_ACCESS_TOKEN,
});

const entries = await client.getEntries({ content_type: 'doc', 'fields.featured': true });

const lines = [
'# Acme',
'',
'> Hosted analytics for product teams.',
'',
'## Documentation',
'',
...entries.items.map(
(e) => `- [${e.fields.title}](https://acme.example/${e.fields.slug}/): ${e.fields.summary}`
),
];

await fs.writeFile('public/llms.txt', lines.join('\n'));
console.log(`Wrote ${entries.items.length} entries to llms.txt`);

```

→ [Полное руководство по CMS](/ru/llms-txt-cms/)

### Другие руководства по платформам

Пошаговые руководства для других распространённых стеков и конструкторов:

- [Angular](/ru/llms-txt-angular/), [Vue (Vite)](/ru/llms-txt-vue/), [Nuxt](/ru/llms-txt-nuxt/), [Remix](/ru/llms-txt-remix/), [Gatsby](/ru/llms-txt-gatsby/) 
- [Docusaurus](/ru/llms-txt-docusaurus/), [MkDocs](/ru/llms-txt-mkdocs/), [Jekyll](/ru/llms-txt-jekyll/), [Eleventy](/ru/llms-txt-eleventy/), [GitHub Pages](/ru/llms-txt-github-pages/) 
- [Ruby on Rails](/ru/llms-txt-rails/), [Django](/ru/llms-txt-django/), [Laravel](/ru/llms-txt-laravel/), [Express](/ru/llms-txt-express/) 
- Без кода: [Framer](/ru/llms-txt-framer/), [Webflow](/ru/llms-txt-webflow/), [Wix](/ru/llms-txt-wix/), [Squarespace](/ru/llms-txt-squarespace/), [Ghost](/ru/llms-txt-ghost/), [Shopify](/ru/llms-txt-shopify/)   
### Другие стеки

Для статического `nginx`, скопируйте файл в корень веб-сайта. Правило универсально:
отдавайте файл по каноническому пути `/llms.txt`
с помощью `Content-Type: text/plain; charset=utf-8`.

## 7. Автоматическая генерация во время сборки

Вести файл вручную для небольшого сайта вполне можно, но такой подход быстро перестаёт работать.
Два распространённых шаблона:

- **Скрипт сборки**, переберите коллекцию содержимого (Markdown, MDX, CMS) и
запишите `llms.txt` в `dist/`. Примеры для Astro и CMS приведены выше. 
- **Маршрут сервера**, отображайте файл по запросу из базы данных или CMS. Примеры
для Next.js, SvelteKit, Express и Laravel приведены выше.   
Какой бы вариант вы ни выбрали, запустите [валидатор](/ru/validator/) в CI: он обнаружит
незаметно сломанные файлы (например, пустой раздел после миграции содержимого).

## Проверка перед публикацией

- Файл отдан по адресу `/llms.txt` с помощью `200 OK`. 
- `Content-Type: text/plain; charset=utf-8`. 
- Ровно один H1. 
- Краткое описание в виде обычного языка, без маркетинговой шелухи. 
- Все URL имеют **абсолютный** (`https://...`). 
- Каждый раздел содержит хотя бы один пункт. 
- В списке нет частного URL или URL, доступного только после авторизации. 
- Валидатор не возвращает ошибок. 
- Если у вас есть корпус для публикации, также отдавайте [`/llms-full.txt`](/ru/llms-full-txt/). 
- `robots.txt` по-прежнему разрешает сканирование файла (не `Disallow: /llms.txt`).   
## Далее

- [Лучшие практики](/ru/best-practices/), что продолжать делать и чего избегать. 
- [llms.txt и SEO](/ru/llms-txt-seo/), цитаты ИИ, сигналы GEO, позиция в рейтинге. 
- [llms-full.txt](/ru/llms-full-txt/), раскройте весь корпус содержимого. 
- [Примеры из реального мира](/ru/examples/), скопируйте то, что работает. 
- [Валидатор](/ru/validator/) · [Генератор](/ru/generator/).        
## Источники

- [ llmstxt.org, предложение сообщества ](https://llmstxt.org/)
- [ Mintlify: упрощение документации с помощью llms.txt ](https://www.mintlify.com/blog/simplifying-docs-with-llms-txt)
