How I Built A Three-Tier Content Quality Ladder
Skalowanie stron programatycznych jest trudne. Jeśli polegasz wyłącznie na AI w kwestii tworzenia treści, Twoja strona przestanie działać, gdy API padnie.
Uruchomiłem trzy strony z katalogami: Top AI Tools, Find Games Like oraz Open Alternative To. Stosuję trójstopniową drabinę treści, aby zapewnić, że zawsze wyświetlają one informacje, nawet bez aktywnego połączenia z AI.
System wykorzystuje pojedynczą kolumnę w bazie danych o nazwie model_used. Śledzi ona trzy poziomy jakości:
- seeded-from-json: Podstawowe dane z pliku. Są ustrukturyzowane, ale mało rozbudowane.
- fallback-template: Standardowy szablon używany w przypadku awarii AI lub braku klucza API. Jest poprawny technicznie, ale pozbawiony charakteru.
- claude-haiku-4-5: Stan docelowy. Zapewnia wysokiej jakości redakcyjne podsumowania i niuansowe szczegóły.
Do zarządzania aktualizacjami używam konkretnego zapytania SQL. Skrypt szuka dwóch rzeczy:
- Nowych wpisów, które nie mają jeszcze treści.
- Istniejących wpisów, które posiadają jedynie niskiej jakości treści typu seeded lub fallback.
Skrypt sortuje je według popularności. W pierwszej kolejności aktualizuje najczęściej odwiedzane strony. Dzięki temu strony o największym ruchu natychmiast otrzymują najlepszą treść.
Proces jest w pełni zautomatyzowany i idempotentny. Stosuję wzorzec upsert. Jeśli aktualizacja się powiedzie, baza danych nadpisuje starą treść typu fallback nową treścią wygenerowaną przez AI. Kolumna model_used aktualizuje się automatycznie.
Korzystam również z mechanizmu prompt caching od Anthropic. Pozwala to zaoszczędzić mnóstwo pieniędzy i tokenów. Ponieważ moje systemowe prompty są takie same dla każdego wpisu, pierwsze wywołanie przygotowuje cache. Kolejne 99 wywołań w partii odczytuje dane z tego cache przy niższym koszcie.
Kluczowe wybory architektoniczne:
- Obsługa błędów: Jeśli Claude zawiedzie, system nie ulega awarii. Po prostu zapisuje szablon fallback i przechodzi do kolejnego elementu.
- Bezpieczeństwo SEO: Jeśli strona nie posiada żadnych przydatnych treści, używam tagu
noindex. Zapobiega to indeksowaniu pustych stron przez Google. - Statyczne buildy: Eksportuję bazę danych do plików JSON dla Astro. Oznacza to, że moja strona pozostaje online, nawet jeśli baza danych lub API AI ulegnie awarii.
Taka konfiguracja pozwala mi budować szybko, nie ryzykując stabilności strony.
