Чему я научился, создавая контент с учетом типа пайплайна в Astro
Вы можете создавать специфический контент для разных типов моделей, не вызывая AI API при каждом просмотре страницы.
Я создал каталог AI-инструментов на Astro. Изначально все страницы моделей выглядели одинаково. Описания были уникальными, но разделы с рекомендациями — общими. Страница аудиомодели и страница текстовой модели отображали один и тот же пустой текст-заполнитель.
Это плохо для пользователей. И это также плохо для SEO.
Я решил эту проблему, используя одно поле метаданных из HuggingFace: pipeline_tag.
Вот как работает эта система:
- Хранение данных: Мой ETL-процесс сохраняет
pipeline_tagв базе данных на этапе получения данных (fetch). - Логика во время сборки: Astro загружает этот тег в процессе генерации статического сайта.
- Пути принятия решений: Я использую простой код для проверки тега. Если тег — "text-generation", страница показывает советы по LLM. Если "audio" — советы по работе с речью.
- Нулевые затраты во время выполнения: Вся эта логика срабатывает во время сборки. Пользователь получает обычный HTML. При посещении сайта нет никаких вызовов API или дополнительной обработки.
Я также использовал эти данные для создания более полезных сигналов юзабилити:
• Уровни популярности: Вместо того чтобы просто показывать число, я классифицирую модели как «проверенные» (established), «активно используемые» (actively-used) или «нишевые» (niche). Это дает пользователю понять, сможет ли он найти поддержку сообщества. • Релевантные партнерские ссылки: На страницах LLM отображаются ссылки на аренду GPU. На страницах эмбеддингов (embedding) — другие, более подходящие ссылки. • Управление индексацией: Если у модели плохие данные или отсутствуют теги, я использую тег "noindex". Это предотвращает появление низкокачественных страниц в результатах поиска Google.
Компромиссы:
- Неточные теги: Некоторые авторы помечают модели неправильно. Я решаю это с помощью перехода к общим рекомендациям (fallback).
- Сложность кода: Компонент страницы стал длиннее. Я планирую провести рефакторинг и вынести логику в вспомогательные функции по мере роста проекта.
В результате получился сайт, который кажется персонализированным для пользователя, но при этом не требует огромных затрат на генерацию контента с помощью AI в реальном времени.