3단계 콘텐츠 품질 사다리를 구축한 방법
프로그래매틱(programmatic) 웹사이트를 확장하는 것은 어렵습니다. 콘텐츠 작성을 AI에만 의존한다면, API가 중단되었을 때 사이트가 망가질 수 있습니다.
저는 Top AI Tools, Find Games Like, Open Alternative To라는 세 개의 디렉토리 사이트를 출시했습니다. 저는 AI 연결이 활성화되지 않은 상태에서도 항상 정보를 표시할 수 있도록 3단계 콘텐츠 사다리를 사용합니다.
이 시스템은 데이터베이스의 model_used라는 단일 컬럼을 사용합니다. 이는 세 가지 품질 수준을 추적합니다:
seeded-from-json: 파일에서 가져온 기본 데이터입니다. 구조화되어 있지만 내용이 빈약합니다.fallback-template: AI가 실패하거나 API 키가 누락된 경우 사용하는 표준 템플릿입니다. 기술적으로는 정확하지만 개성이 부족합니다.claude-haiku-4-5: 목표 상태입니다. 고품질의 편집 요약과 미묘한 디테일을 제공합니다.
저는 업그레이드를 관리하기 위해 특정 SQL 쿼리를 사용합니다. 스크립트는 다음 두 가지를 찾습니다:
- 아직 콘텐츠가 없는 새로운 항목.
- 저품질의
seeded또는fallback콘텐츠만 있는 기존 항목.
스크립트는 이를 인기순으로 정렬합니다. 방문 횟수가 가장 많은 페이지를 먼저 업그레이드합니다. 이를 통해 트래픽이 가장 높은 페이지에 즉시 최상의 콘텐츠를 제공할 수 있습니다.
이 프로세스는 완전히 자동화되어 있으며 멱등성(idempotent)을 보장합니다. 저는 upsert 패턴을 사용합니다. 업그레이드에 성공하면 데이터베이스는 기존의 fallback 콘텐츠를 새로운 AI 콘텐츠로 덮어씁니다. model_used 컬럼도 자동으로 업데이트됩니다.
또한 Anthropic의 prompt caching을 사용합니다. 이는 비용과 토큰을 크게 절약해 줍니다. 모든 항목에 대해 시스템 프롬프트가 동일하기 때문에, 첫 번째 호출이 캐시를 준비(prime)합니다. 이후 배치 내의 나머지 99번의 호출은 해당 캐시를 읽어와 더 낮은 비용으로 처리됩니다.
주요 아키텍처 선택 사항:
- 에러 핸들링: Claude가 실패하더라도 시스템은 중단되지 않습니다. 단순히 fallback 템플릿을 작성하고 다음 항목으로 넘어갑니다.
- SEO 안전성: 페이지에 유용한 콘텐츠가 전혀 없는 경우
noindex태그를 사용합니다. 이를 통해 Google이 빈 페이지를 인덱싱하는 것을 방지합니다. - 정적 빌드: 데이터베이스를 Astro용 JSON 파일로 내보냅니다. 이는 데이터베이스나 AI API에 장애가 발생하더라도 사이트가 계속 온라인 상태를 유지할 수 있음을 의미합니다.
이 설정을 통해 사이트 안정성을 해치지 않으면서 빠르게 구축할 수 있습니다.
