<!-- Generated from ru/llms-txt-astro/index.html. The canonical document is the HTML page. -->

- [ Главная ](/ru/) 
/
- [ Как создать ](/ru/how-to-create/) 
/
- Руководство по Astro            
# `llms.txt` с Astro

Два подхода: положить файл в public/ для мгновенного развёртывания или динамически генерировать его из коллекций контента с помощью конечной точки TypeScript.

Последнее обновление: 22 апреля 2026 г.

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

- [ Подход 1: статический файл в public/ ](#approach-1)
- [ Подход 2, конечная точка TypeScript с getCollection() ](#approach-2)
- [ Добавление llms-full.txt ](#llms-full)
- [ Проверьте после сборки ](#verify)
- [ Какой подход выбрать ](#which)              
Пример

Этот сайт работает на Astro

Сам llmtxt.info создан с помощью Astro на Cloudflare Pages. Приведённые ниже подходы — именно
те, которые мы используем для публикации собственного  /llms.txt .

## Подход 1. Статический файл в `public/`

Самый простой вариант. Создайте обычный текстовый файл по адресу `public/llms.txt` в корне
проекта. Astro копирует весь `public/` каталог без изменений в `dist/` во время
`astro build`, поэтому файл доступен по адресу
`/llms.txt` с нулевой конфигурацией.
static approach, public/llms.txt    Копировать     

```
# Place the file at: public/llms.txt
# Astro copies everything in public/ to the output directory as-is.
# Result: served at https://yoursite.com/llms.txt, no code changes needed.

# After deploy, verify:
curl -I https://yoursite.com/llms.txt
# Expected: HTTP/2 200 | Content-Type: text/plain
```

**Когда использовать:** если ваш контент меняется нечасто, вам не нужны накладные расходы
во время сборки или вы обслуживаете файл вручную. Одинаково работает на Cloudflare Pages, Vercel,
Netlify и любом другом хостинге Astro.

## Подход 2, конечная точка TypeScript с `getCollection()`

Astro соответствует двойному расширению `.txt.ts` и рассматривает
`src/pages/llms.txt.ts` в качестве эндпоинта API, отвечающего по адресу
`/llms.txt`. В режиме SSG (по умолчанию) Astro предварительно генерирует его в
статический `dist/llms.txt` во время сборки, без затрат на выполнение.
src/pages/llms.txt.ts    Копировать     

```
// src/pages/llms.txt.ts
// Astro treats src/pages/foo.ext.ts as a route for /foo.ext
// In SSG mode (default), it pre-renders to dist/llms.txt at build time.

import type { APIRoute } from 'astro';
import { getCollection } from 'astro:content';

export const GET: APIRoute = async () => {
// Replace 'docs' with your actual content collection name
const docs = await getCollection('docs');

const lines = [
'# My Site',
'',
'> One-sentence description of what this site is about.',
'',
'## Documentation',
'',
...docs
.filter((d) => !d.data.draft)
.sort((a, b) => (a.data.order ?? 999) - (b.data.order ?? 999))
.map((d) => `- [${d.data.title}](https://yoursite.com/${d.slug}/): ${d.data.summary ?? ''}`.trimEnd()),
'',
'## Optional',
'',
'- [Changelog](https://yoursite.com/changelog/): version history.',
];

return new Response(lines.join('\n'), {
headers: { 'Content-Type': 'text/plain; charset=utf-8' },
});
};

```

Основные моменты:

- Заменить `'docs'` с фактическим названием коллекции из `src/content/config.ts`. 
- Отфильтруйте черновики перед построением карты: `!d.data.draft`. 
- Каждая строка-аннотация (`: short note`) необязателен, но настоятельно
рекомендуется: он даёт большим языковым моделям контекст о каждой странице, не заставляя их
получать её. 
- Всегда устанавливайте `Content-Type: text/plain; charset=utf-8` в ответе.     
Предупреждение

Режим вывода SSR

Если вы используете  output: 'server'  в  astro.config.mjs ,
конечная точка выполняется при каждом запросе. Для развёртываний с высокой посещаемостью
добавьте
export const prerender = true;  в верхней части файла, чтобы принудительно включить статический
пререндеринг даже в серверном режиме.

## Добавление `llms-full.txt`

[llms-full.txt](/ru/llms-full-txt/) сопутствующий файл встраивает полное содержимое каждой
страницы, что удобно для RAG-конвейеров и клиентов LLM, которым нужен весь корпус сразу. Создайте
параллельную конечную точку:
src/pages/llms-full.txt.ts    Копировать     

```
// src/pages/llms-full.txt.ts
// Generates the full-content companion file.
// Each entry gets its full Markdown body inlined, useful for RAG pipelines.

import type { APIRoute } from 'astro';
import { getCollection } from 'astro:content';

export const GET: APIRoute = async () => {
const docs = await getCollection('docs');
const sections: string[] = [];

for (const doc of docs.filter((d) => !d.data.draft)) {
sections.push(
`# ${doc.data.title}`,
'',
`URL: https://yoursite.com/${doc.slug}/`,
'',
doc.body,   // raw Markdown, no HTML, ideal for LLMs (Astro 4+)
'',
'---',
'',
);
}

return new Response(sections.join('\n'), {
headers: { 'Content-Type': 'text/plain; charset=utf-8' },
});
};

```

`doc.body` содержит исходный Markdown (доступен начиная с Astro 4), что идеально для LLM:
никаких HTML-тегов, чистый семантический текст. Для Astro 3 используйте
`render()` вспомогательную функцию и удалите теги простым регулярным выражением.

## Проверка после сборки
verify    Копировать     

```
# Build the project
npx astro build

# Check static output (works for both approaches in SSG mode)
cat dist/llms.txt

# Or start preview server and curl:
npx astro preview &
curl http://localhost:4321/llms.txt
curl http://localhost:4321/llms-full.txt
```

После развёртывания вставьте действующий URL в [валидатор](/ru/validator/)
для проверки соответствия спецификации: ровно один H1, корректный синтаксис ссылок (`- [title](https://...)`), все URL абсолютны, пустых разделов нет.

## Какой подход выбрать

- **Статический `public/llms.txt`**, лучше всего для сайтов, которые
обновляются нечасто. Нулевые накладные расходы, TypeScript не требуется, работает везде. 
- **Конечная точка TypeScript `src/pages/llms.txt.ts`**, лучше всего
подходящий сайтам документации с большим числом автоматически создаваемых страниц. Файл
автоматически синхронизируется при каждой сборке без ручного редактирования.   
&rarr; [Полное руководство по созданию](/ru/how-to-create/) &middot;
[Руководство по Next.js](/ru/llms-txt-nextjs/) &middot;
[Руководство по WordPress](/ru/llms-txt-wordpress/)

## Источники

- [ llmstxt.org, предложение сообщества ](https://llmstxt.org/)
- [ Astro: коллекции контента ](https://docs.astro.build/en/guides/content-collections/)
- [ Astro, конечные точки ](https://docs.astro.build/en/guides/endpoints/)
