كيف بنيت سلماً ثلاثي المستويات لجودة المحتوى
توسيع نطاق المواقع البرمجية (programmatic websites) أمر صعب. إذا كنت تعتمد فقط على الذكاء الاصطناعي لكتابة محتواك، فسيتعطل موقعك عندما تتوقف واجهة برمجة التطبيقات (API) عن العمل.
أطلقت ثلاثة مواقع أدلة: Top AI Tools، وFind Games Like، وOpen Alternative To. أستخدم سلماً ثلاثياً للمحتوى لضمان عرض المعلومات دائماً، حتى بدون اتصال نشط بالذكاء الاصطناعي.
يستخدم النظام عموداً واحداً في قاعدة البيانات يسمى model_used. وهو يتتبع ثلاثة مستويات من الجودة:
- seeded-from-json: بيانات أساسية من ملف. هي بيانات منظمة ولكنها ضحلة.
- fallback-template: قالب قياسي يُستخدم في حال فشل الذكاء الاصطناعي أو فقدان مفتاح الـ API. هو صحيح تقنياً ولكنه يفتقر إلى اللمسة الشخصية.
- claude-haiku-4-5: الحالة المستهدفة. توفر هذه الحالة ملخصات تحريرية عالية الجودة وتفاصيل دقيقة.
أستخدم استعلام SQL محدداً لإدارة عمليات الترقية. يبحث السكربت عن شيئين:
- المدخلات الجديدة التي ليس لها محتوى بعد.
- المدخلات الموجودة التي تحتوي فقط على محتوى "seeded" أو "fallback" منخفض الجودة.
يقوم السكربت بترتيب هذه المدخلات حسب شعبيتها، حيث يقوم بترقية الصفحات الأكثر زيارة أولاً. يضمن ذلك حصول صفحاتك ذات الزيارات الأعلى على أفضل محتوى على الفور.
العملية مؤتمتة بالكامل وتتميز بخاصية idempotent. أستخدم نمط upsert. إذا نجحت الترقية، تقوم قاعدة البيانات باستبدال محتوى الـ fallback القديم بمحتوى الذكاء الاصطناعي الجديد، ويقوم عمود model_used بتحديث نفسه.
أستخدم أيضاً تقنية Anthropic prompt caching. هذا يوفر الكثير من المال والرموز (tokens). بما أن مطالبات النظام (system prompts) هي نفسها لكل مدخل، فإن الاستدعاء الأول يقوم بتهيئة ذاكرة التخزين المؤقت (cache). أما الـ 99 استدعاءً التالية في الدفعة الواحدة، فتقرأ من تلك الذاكرة بتكلفة أقل.
خيارات معمارية رئيسية:
- معالجة الأخطاء (Error handling): إذا فشل Claude، لا يتوقف النظام عن العمل، بل يكتفي بكتابة قالب الـ fallback وينتقل إلى العنصر التالي.
- سلامة الـ SEO: إذا كانت الصفحة لا تحتوي على أي محتوى مفيد على الإطلاق، أستخدم وسم
noindex. هذا يمنع Google من فهرسة الصفحات الفارغة. - البناء الثابت (Static builds): أقوم بتصدير قاعدة البيانات إلى ملفات JSON لاستخدامها مع Astro. وهذا يعني أن موقعي يظل متاحاً حتى لو حدث انقطاع في قاعدة البيانات أو في واجهة برمجة تطبيقات الذكاء الاصطناعي.
يتيح لي هذا الإعداد البناء بسرعة دون المخاطرة باستقرار الموقع.
