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

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

Три подхода: статический файл в static/ (без настройки), конечная точка +server.ts для динамической генерации или генератор на основе content с использованием import.meta.glob.

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

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

- [ Вариант 1: статический файл (рекомендуется) ](#static)
- [ Вариант 2: endpoint +server.ts ](#server)
- [ Вариант 3: генерировать из содержимого ](#dynamic)
- [ Примечания об адаптере ](#adapters)
- [ Проверить ](#verify)              
Примечание

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

Используйте  статический файл  если ваш  llms.txt  меняется редко, код не
требуется. Используйте  endpoint +server.ts  если вы создаёте его из контента во время
сборки или хотите обновлять его без повторного развёртывания.

## Вариант 1: статический файл (рекомендуется)

SvelteKit копирует всё содержимое `static/` каталог непосредственно в результат сборки.
Разместите файл по адресу `static/llms.txt` и он будет доступен по адресу `/llms.txt` для каждого адаптера, изменения конфигурации не требуются.
static/llms.txt, directory structure    Копировать     

```
# SvelteKit, zero-config static approach
#
# Place your file at: static/llms.txt
# SvelteKit copies everything in static/ directly into the build output.
# Your file will be served at /llms.txt on any adapter.
#
# Project structure:
# your-sveltekit-app/
# ├── static/
# │   └── llms.txt   ← add this
# ├── src/
# └── svelte.config.js
#
# No config changes needed. Deploy as normal.

```

Этот подход работает с **adapter-static**,
**adapter-cloudflare**, **adapter-vercel**,
**adapter-node**, и любой другой официальный адаптер. Файл отдаётся с заголовками
статического файла по умолчанию для данного адаптера.

## Вариант 2: конечная точка +server.ts

Создайте серверный маршрут по адресу `src/routes/llms.txt/+server.ts` экспортирует `GET` обработчик. SvelteKit отдаст его по пути `/llms.txt`.
src/routes/llms.txt/+server.ts    Копировать     

```
// src/routes/llms.txt/+server.ts
// SvelteKit server endpoint, dynamic generation
import type { RequestHandler } from './$types';

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

> One-sentence description of what your site is.

## Product

- [Overview](https://yoursite.com/product): core capabilities.
- [Pricing](https://yoursite.com/pricing): plans and limits.

## Documentation

- [Getting started](https://yoursite.com/docs): install, first steps.
- [API reference](https://yoursite.com/api): full endpoint catalog.

## Optional

- [Changelog](https://yoursite.com/changelog): version history.
`;

return new Response(body, {
headers: {
'Content-Type': 'text/plain; charset=utf-8',
'Cache-Control': 'public, max-age=3600, stale-while-revalidate=86400',
},
});
};

```

Установите подходящий `Cache-Control` заголовок, чтобы периферийные CDN кэшировали ответ:
он редко меняется и не требует свежей доставки при каждом запросе.

Пример

Предварительный рендеринг с adapter-static

Если вы используете  adapter-static  для полностью статического сайта добавьте  export const prerender = true;  в верхней части вашего
+server.ts . SvelteKit сгенерирует  llms.txt 
как статический файл во время сборки.
src/routes/llms.txt/+server.ts, with prerender    Копировать     

```
// src/routes/llms.txt/+server.ts
// Add this line to pre-render the endpoint at build time (adapter-static / SSG)
export const prerender = true;

import type { RequestHandler } from './$types';

export const GET: RequestHandler = () => {
const body = `# Your Site\n\n> Summary.\n\n## Docs\n\n- [Guide](https://yoursite.com/docs)`;
return new Response(body, {
headers: { 'Content-Type': 'text/plain; charset=utf-8' },
});
};

```

## Вариант 3: генерация из содержимого

Если вы ведёте документацию или записи блога в `src/content/`, можно сгенерировать `llms.txt` автоматически во время сборки с помощью
`import.meta.glob`. Пример ниже читает все файлы Markdown и строит список ссылок из
их frontmatter.
src/routes/llms.txt/+server.ts, from content    Копировать     

```
// src/routes/llms.txt/+server.ts
// Generate llms.txt from your Markdown content files
import type { RequestHandler } from './$types';

// Import all Markdown files in src/content/docs/
const docs = import.meta.glob('/src/content/docs/**/*.md', { eager: true }) as Record ;

export const prerender = true;

export const GET: RequestHandler = () => {
const lines = Object.values(docs)
.filter((m) => m.metadata?.title && m.metadata?.slug)
.map((m) => `- [${m.metadata!.title}](https://yoursite.com/docs/${m.metadata!.slug}/): ${m.metadata!.summary ?? ''}`);

const body = [
'# Your Site',
'',
'> One-sentence summary.',
'',
'## Documentation',
'',
...lines,
].join('\n');

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

```

Настройте шаблон glob и поля метаданных в соответствии со структурой содержимого проекта.
Запустите [валидатор](/ru/validator/) в CI, чтобы обнаруживать сломанные результаты после
миграции содержимого.

## Примечания к адаптеру

- **adapter-cloudflare**, статические файлы в `static/`
обслуживаются непосредственно глобальной CDN Cloudflare Pages с автоматическим кэшированием. Серверные
маршруты становятся функциями Cloudflare Pages. См. [Руководство по Cloudflare Pages](/ru/llms-txt-cloudflare/) для рекомендаций по заголовкам кэша и команд очистки. 
- **adapter-vercel**, статические файлы обслуживаются из Edge Network Vercel.
Серверные маршруты выполняются как Vercel Functions (или Edge Functions с `export const config = { runtime: 'edge' }`). См. [Руководство Vercel](/ru/llms-txt-vercel/) для `vercel.json`
варианты rewrite. 
- **adapter-static**, все маршруты должны поддерживать предварительный рендеринг.
Добавьте `export const prerender = true;` в ваш
`+server.ts`, либо используйте вместо этого подход со статическим файлом. 
- **adapter-node**, маршруты сервера работают как HTTP-сервер Node.js. `+server.ts` подход идеален; добавьте агрессивное
`Cache-Control` заголовки, чтобы обратный прокси-сервер (nginx, Caddy) мог кэшировать
ответ.   
## Проверить

После развёртывания убедитесь, что файл обслуживается корректно:
Verification    Копировать     

```
curl -I https://yoursite.com/llms.txt
# Expected:
# HTTP/2 200
# content-type: text/plain; charset=utf-8

curl https://yoursite.com/llms.txt | head -5
# Should print the first lines of your file
```

Затем вставьте URL в [валидатор](/ru/validator/) для полной проверки соответствия спецификации.

## Связанные руководства

- [Как создать llms.txt](/ru/how-to-create/), шаблоны и контрольный список. 
- [Руководство по Cloudflare Pages](/ru/llms-txt-cloudflare/), SvelteKit +
adapter-cloudflare особенности. 
- [Руководство Vercel](/ru/llms-txt-vercel/), особенности SvelteKit + adapter-vercel. 
- [Лучшие практики](/ru/best-practices/), что включать и что исключать. 
- [Валидатор](/ru/validator/) · [Генератор](/ru/generator/).        
## Источники

- [ llmstxt.org, предложение сообщества ](https://llmstxt.org/)
- [ Документация SvelteKit, маршрутизация ](https://svelte.dev/docs/kit/routing)
- [ Документация SvelteKit, маршруты сервера ](https://svelte.dev/docs/kit/routing#server)
