Cách tôi xây dựng Thang chất lượng nội dung ba tầng

Mở rộng các website programmatic là một việc khó khăn. Nếu bạn chỉ dựa vào AI để viết nội dung, trang web của bạn sẽ gặp sự cố khi API bị ngắt kết nối.

Tôi đã ra mắt ba trang web danh mục: Top AI Tools, Find Games Like, và Open Alternative To. Tôi sử dụng một thang chất lượng nội dung ba tầng để đảm bảo chúng luôn hiển thị thông tin, ngay cả khi không có kết nối AI hoạt động.

Hệ thống sử dụng một cột duy nhất trong cơ sở dữ liệu có tên là model_used. Nó theo dõi ba cấp độ chất lượng:

  • seeded-from-json: Dữ liệu cơ bản từ một tệp. Nó có cấu trúc nhưng nội dung còn mỏng.
  • fallback-template: Một mẫu (template) tiêu chuẩn được sử dụng nếu AI gặp lỗi hoặc thiếu API key. Nó chính xác về mặt kỹ thuật nhưng thiếu cá tính.
  • claude-haiku-4-5: Trạng thái mục tiêu. Trạng thái này cung cấp các bản tóm tắt biên tập chất lượng cao và các chi tiết tinh tế.

Tôi sử dụng một truy vấn SQL cụ thể để quản lý việc nâng cấp. Script này tìm kiếm hai thứ:

  1. Các mục mới chưa có nội dung.
  2. Các mục hiện có chỉ có nội dung seeded hoặc fallback chất lượng thấp.

Script sắp xếp các mục này theo mức độ phổ biến. Nó nâng cấp các trang có lượt truy cập nhiều nhất trước. Điều này đảm bảo các trang có lưu lượng truy cập cao nhất của bạn sẽ nhận được nội dung tốt nhất ngay lập tức.

Quy trình này hoàn toàn tự động và có tính idempotent. Tôi sử dụng mô hình upsert. Nếu việc nâng cấp thành công, cơ sở dữ liệu sẽ ghi đè nội dung fallback cũ bằng nội dung AI mới. Cột model_used sẽ tự cập nhật.

Tôi cũng sử dụng Anthropic prompt caching. Điều này giúp tiết kiệm rất nhiều tiền và token. Vì các system prompt của tôi giống nhau cho mọi mục, lần gọi đầu tiên sẽ khởi tạo cache. 99 lần gọi tiếp theo trong một đợt sẽ đọc từ cache đó với chi phí thấp hơn.

Các lựa chọn kiến trúc chính:

  • Error handling: Nếu Claude thất bại, hệ thống không bị sập. Nó chỉ đơn giản là ghi mẫu fallback và chuyển sang mục tiếp theo.
  • SEO safety: Nếu một trang hoàn toàn không có nội dung hữu ích, tôi sử dụng thẻ noindex. Điều này ngăn Google lập chỉ mục các trang trống.
  • Static builds: Tôi xuất cơ sở dữ liệu sang các tệp JSON cho Astro. Điều này có nghĩa là trang web của tôi vẫn trực tuyến ngay cả khi cơ sở dữ liệu hoặc AI API gặp sự cố.

Thiết lập này cho phép tôi xây dựng nhanh chóng mà không làm ảnh hưởng đến sự ổn định của trang web.

Nguồn: https://dev.to/morinaga/how-i-built-a-three-tier-content-quality-ladder-for-programmatic-directory-etl-483