Как я построил трехуровневую лестницу качества контента

Масштабировать программные сайты сложно. Если вы полагаетесь только на ИИ для написания контента, ваш сайт перестанет работать, если API упадет.

Я запустил три каталоговых сайта: Top AI Tools, Find Games Like и Open Alternative To. Я использую трехуровневую лестницу контента, чтобы они всегда отображали информацию, даже без активного соединения с ИИ.

Система использует одну колонку в базе данных под названием model_used. Она отслеживает три уровня качества:

  • seeded-from-json: базовые данные из файла. Они структурированы, но скудны.
  • fallback-template: стандартный шаблон, используемый, если ИИ дает сбой или отсутствует API-ключ. Он технически корректен, но лишен индивидуальности.
  • claude-haiku-4-5: целевое состояние. Оно обеспечивает высококачественные редакционные резюме и детализированные нюансы.

Для управления обновлениями я использую специфический SQL-запрос. Скрипт ищет две вещи:

  1. Новые записи, у которых еще нет контента.
  2. Существующие записи, которые содержат только низкокачественный контент типа seeded или fallback.

Скрипт сортирует их по популярности. Сначала обновляются самые посещаемые страницы. Это гарантирует, что страницы с самым высоким трафиком сразу получат лучший контент.

Процесс полностью автоматизирован и идемпотентен. Я использую паттерн upsert. Если обновление проходит успешно, база данных перезаписывает старый контент fallback новым контентом от ИИ. Колонка model_used обновляется автоматически.

Я также использую кэширование промптов Anthropic. Это экономит много денег и токенов. Поскольку системные промпты одинаковы для каждой записи, первый вызов наполняет кэш. Следующие 99 вызовов в пакете считываются из этого кэша по более низкой цене.

Ключевые архитектурные решения:

  • Обработка ошибок: если Claude дает сбой, система не падает. Она просто записывает шаблон fallback и переходит к следующему элементу.
  • SEO-безопасность: если на странице вообще нет полезного контента, я использую тег noindex. Это предотвращает индексацию пустых страниц Google.
  • Статическая сборка: я экспортирую базу данных в JSON-файлы для Astro. Это означает, что мой сайт остается онлайн, даже если в базе данных или API ИИ произойдет сбой.

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

Источник: https://dev.to/morinaga/how-i-built-a-three-tier-content-quality-ladder-for-programmatic-directory-etl-483