ما تعلمته من تدقيق بيانات JSON-LD في الـ CI

يمكن للبيانات المنظمة من نوع JSON-LD أن تختفي من موقعك دون أن يتسبب ذلك في أي خلل مرئي. عملية البناء (build) تنجح، وعملية النشر (deploy) تكتمل، وتبدو صفحاتك طبيعية تماماً في المتصفح.

لكن Googlebot يقرأ وسوم الـ script لتحديد النتائج الغنية (rich results) الخاصة بك. إذا كانت البيانات مفقودة أو تالفة، فلن تدرك ذلك حتى يقوم Search Console بالتنبيه إليها بعد أسابيع.

لقد أضفت خطوة تدقيق بعد النشر (post-deploy audit) إلى مسار الـ CI الخاص بي. وهي تكتشف هذه الأخطاء في أقل من 60 ثانية.

كيف يعمل الأمر:

أقوم بتشغيل ثلاثة مواقع ثابتة (static sites) مبنية باستخدام Astro ومنشورة عبر Cloudflare Pages. تستخدم هذه المواقع مخططات (schema) مثل SoftwareApplication وVideoGame وItemList. ولأنها مواقع ثابتة، فإن أي تغيير في القالب قد يؤدي إلى فقدان الـ schema من آلاف الصفحات دون التسبب في خطأ أثناء عملية البناء.

يقوم نص التدقيق (audit script) بما يلي:

• يجلب الصفحة الرئيسية المباشرة ونماذج من صفحات التفاصيل. • يقرأ خريطة الموقع (sitemap) المباشرة للعثور على روابط URL حقيقية. • يستخرج جميع كتل JSON-LD باستخدام regex. • يتحقق من فك تغليف @graph للعثور على العناصر المتداخلة. • يقارن قيم @type التي تم العثور عليها بالقائمة المتوقعة لدي.

أقوم بتشغيل هذا التدقيق على الصفحات المنشورة فعلياً بدلاً من مخرجات البناء (build artifacts). هذا يساعد في اكتشاف المشكلات المتعلقة بتخزين الـ CDN المؤقت (caching) أو التوصيل عبر الحافة (edge delivery).

اكتشف النص ثلاث مشكلات في المرة الأولى:

  • ossfind.com: فقدان ItemList في صفحات معينة. حول هذا الأمر فكرة غامضة إلى مهمة ملموسة.
  • findindiegame.com: بروتوكول http:// غير صحيح في الـ WebSite @id. كان هذا خطأ ناتجاً عن النسخ واللصق، بدا طبيعياً للبشر ولكنه كان غير متسق بالنسبة لـ Google.
  • aiappdex.com: استخدام معرفات قاعدة البيانات الخام (raw database IDs) بدلاً من الأسماء المقروءة بشرياً في مخطط SoftwareApplication.

كانت هذه أخطاء برمجية حقيقية. لم يظهر أي منها في سجلات البناء (build logs) أو عند مراجعة الصفحات في المتصفح.

لقد ضبطت خطوة الـ CI لتكون غير قاتلة (non-fatal). إذا وجد التدقيق مشكلة، تكتمل عملية النشر، ولكن يظهر الخطأ في السجلات. يتيح لي ذلك مراقبة السلوك في العالم الحقيقي قبل أن أجعل هذا الفحص يوقف مسار العمل (pipeline).

إنه مجرد اختبار دخان (smoke test)، وليس مجموعة أدوات تحقق كاملة. فهو يفحص عينتين لكل موقع. لن يكتشف كل الحالات الحدية (edge cases)، ولكنه يكتشف الأخطاء الكبيرة قبل أن تظل في بيئة الإنتاج (production) لمدة شهر.

المصدر: https://dev.to/morinaga/what-i-learned-wiring-json-ld-structured-data-audits-into-a-post-deploy-ci-step-5jc