Каждый день все больше и больше людей используют ChatGPT, Perplexity и другие инструменты искусственного интеллекта для поиска и обобщения контента. Как обсуждалось в одном из моих предыдущих постов об SEO в SAO, это лишь вопрос времени, когда большинство посещений веб-сайтов и блогов будет осуществляться агентами искусственного интеллекта.
Когда дело доходит до того, чтобы сделать ваш контент доступным для языковых моделей, есть более простой способ, чем сложные решения для сканирования — особенно для статически генерируемых сайтов, созданных с помощью Astro. В этом посте я проведу вас через создание файла llms.txt, который предоставляет ваш контент блога LLM в чистом, структурированном формате.
Что такое llms.txt?
Файл llms.txt концептуально похож на robots.txt, но разработан специально для языковых моделей. Он предоставляет структурированное текстовое представление вашего контента, которое легко анализировать и понимать LLM.
LLM не очень хорошо умеют перемещаться по нескольким страницам по ссылкам. Вместо этого LLM очень хорошо извлекают контент с одной страницы и сохраняют его в своей памяти. Именно здесь llms.txt становится бесценным.
Почему инструменты сканирования, такие как Crawl4AI, могут быть излишними
Такие инструменты, как Crawl4AI, предлагают мощные возможности сканирования веб-сайтов для LLM. Хотя они идеально подходят для создания LLMs.txt для динамических сайтов, они могут быть излишними для статических сайтов.
В частности, для сайтов Astro, где контент обычно хранится в виде файлов Markdown с внешним содержимым, у вас уже есть идеально структурированный контент, готовый к непосредственному предоставлению.
Реализация конечной точки llms.txt в Astro
Вот как можно сгенерировать файлы LLMs.txt для вашего сайта Astro.
Создайте файл по адресу src/pages/llms.txt.ts (или src/pages/api/llms.txt.ts в зависимости от вашей конфигурации Astro) и добавьте следующий код:
import { getCollection } from "astro:content";
import type { APIRoute } from "astro";
export const GET: APIRoute = async () => {
try {
// Fetch all content collections
const [blogs, features, transcriptions, alternatives, help] = await Promise.all([
getCollection("blog"),
getCollection("features"),
getCollection("transcription"),
getCollection("alternatives"),
getCollection("help")
]);
// Sort blogs by date (newest first)
const sortedBlogs = blogs
.filter(post => !post.data.draft)
.sort((a, b) => new Date(b.data.date).getTime() - new Date(a.data.date).getTime());
// Filter non-draft content
const activeFeatures = features.filter(item => !item.data.draft);
const activeTranscriptions = transcriptions.filter(item => !item.data.draft);
const activeAlternatives = alternatives.filter(item => !item.data.draft);
const content = `# Your Website Name - Complete Content Guide
This document contains the complete content from your website.
Website: https://yourwebsite.com
Last Updated: ${new Date().toISOString().split('T')[0]}
Содержимое блога
${sortedBlogs .map((post) => `#
${post.data.title}
URL: https://yourwebsite.com/blog/${post.data.slug || post.id} Опубликовано: ${post.data.date} Категория: ${post.data.category} Автор: ${post.data.author} Описание: ${post.data.description}
${post.body}
---`).join(‘\n\n’)}
Дополнительные разделы контента
${activeFeatures .map((feature) => `#
${feature.data.title}
URL: https://yourwebsite.com/${feature.data.slug} Категория: ${feature.data.category} ${feature.data.description}
${feature.body}
---`).join(‘\n\n’)}
Этот контент предоставляется для того, чтобы помочь AI-помощникам понять предложения вашего веб-сайта и предоставить точную информацию.`;
return new Response(content, {
headers: {
"Content-Type": "text/plain; charset=utf-8",
"Cache-Control": "public, max-age=3600" // Cache for 1 hour
},
});
} catch (error) {
console.error('Error generating llms.txt:', error);
return new Response('Error generating llms.txt', { status: 500 });
}
};
## Как работает этот код
Этот код создает конечную точку API, которая:
1. **Извлекает все записи** из ваших коллекций контента с помощью `getCollection()`
2. **Фильтрует черновой контент**, чтобы включить только опубликованные статьи
3. **Сортирует контент по дате**, чтобы сначала показать самый последний контент
4. **Создает структурированный текстовый файл**, начиная с заголовка вашего сайта
5. **Включает для каждой записи:**
- Заголовок записи в качестве заголовка
- Прямую ссылку на запись
- Метаданные (дата, категория, автор, описание)
- Полное содержимое записи
6. **Обрабатывает ошибки корректно** с надлежащим протоколированием ошибок
7. **Устанавливает соответствующие заголовки**, включая кэширование для повышения производительности
## Настройка для структуры вашего контента
#
## Настройка имен коллекций
В приведенном выше примере используются несколько коллекций. Если у вас есть только коллекция блогов, упростите ее:
```typescript
export const GET: APIRoute = async () => {
const posts = await getCollection("blog"); // Adjust to your collection name
const publishedPosts = posts
.filter(post => !post.data.draft)
.sort((a, b) => new Date(b.data.date).getTime() - new Date(a.data.date).getTime());
const content = `# Your Blog Name
${publishedPosts
.map((post) => `# ${post.data.title}
https://yourwebsite.com/blog/${post.data.slug || post.id}
${post.data.description}
${post.body}
`).join('\n\n')}`;
return new Response(content, {
headers: { "Content-Type": "text/plain; charset=utf-8" },
});
};
Добавление фильтрации контента
Возможно, вы захотите исключить определенные категории или включить только избранный контент:
// Only include featured posts
const featuredPosts = posts.filter(post => post.data.featured && !post.data.draft);
// Exclude specific categories
const filteredPosts = posts.filter(post =>
!post.data.draft && !['internal', 'private'].includes(post.data.category)
);
Преимущества использования llms.txt
1. Улучшенная обнаруживаемость AI
Инструменты AI могут быстро понять всю вашу библиотеку контента без сканирования нескольких страниц.
2. Более качественный контекст для ответов AI
Когда пользователи задают вопросы, связанные с вашим контентом, AI-модели имеют доступ к полной, структурированной информации.
3. SEO для эры AI
Поскольку поиск развивается в сторону результатов на основе AI, наличие структурированного контента для потребления AI становится решающим.
4. Преимущества производительности
Статическая генерация означает, что ваш файл llms.txt создается во время сборки, обеспечивая быстрое время ответа.
Тестирование вашей реализации llms.txt
После реализации конечной точки протестируйте ее, выполнив следующие действия:
- Посетите конечную точку напрямую:
https://yoursite.com/llms.txt - Проверьте структуру контента, чтобы убедиться, что включены все записи
- Убедитесь, что форматирование чистое и удобочитаемое
- Протестируйте с помощью инструментов AI, попросив их проанализировать ваш контент llms.txt
Рекомендации для llms.txt
Сохраняйте контент свежим
Регулярно обновляйте свой llms.txt, перестраивая свой сайт, когда публикуете новый контент.
Включите соответствующие метаданные
Добавьте даты публикации, категории и описания, чтобы помочь AI понять контекст.
Четко структурируйте контент
Используйте согласованные форматы заголовков и четкие разделители между разделами.
Мониторинг размера файла
Для сайтов с сотнями записей рассмотрите возможность разбивки на страницы или фильтрации контента, чтобы файл оставался управляемым.
Заключение
Создание файла llms.txt для вашего веб-сайта Astro — это простой способ сделать ваш контент доступным для AI-языковых моделей. Этот подход использует коллекции контента Astro для создания структурированного, всестороннего представления контента вашего сайта.
Поскольку AI становится все более важным для обнаружения контента, внедрение llms.txt обеспечивает вашему веб-сайту лучшую видимость в среде поиска на основе AI. Реализация проста, эффективна и ее легко поддерживать как часть процесса сборки Astro.
Начните внедрять llms.txt сегодня, чтобы ваш контент был готов к будущему поиска и обнаружения на основе AI.
Часто задаваемые вопросы
В чем разница между llms.txt и sitemap.xml?
В то время как sitemap.xml перечисляет ваши страницы для поисковых роботов, llms.txt предоставляет фактический контент в формате, оптимизированном для понимания и обработки языковыми моделями.
Как часто следует обновлять мой файл llms.txt?
Ваш файл llms.txt обновляется автоматически при перестройке вашего сайта Astro, поэтому он остается актуальным в соответствии с вашим графиком публикации контента.
Могу ли я включать изображения и мультимедиа в llms.txt?
llms.txt основан на тексте, поэтому включайте описания изображений и мультимедиа, а не сами файлы. Сосредоточьтесь на текстовом контенте, который AI может эффективно обрабатывать.
Повлияет ли llms.txt на мой SEO?
Нет, llms.txt не повлияет негативно на традиционное SEO. Он разработан для дополнения вашей существующей стратегии SEO, делая контент доступным для инструментов AI.
Каким должен быть размер моего файла llms.txt?
Нет строгого ограничения, но он должен быть разумным. Для сайтов с сотнями записей рассмотрите возможность фильтрации, чтобы включить только ваш самый важный или последний контент.