CI-তে JSON-LD ডেটা অডিটিং করে আমি যা শিখলাম
JSON-LD স্ট্রাকচার্ড ডেটা আপনার সাইট থেকে দৃশ্যমান কোনো কিছু নষ্ট না করেই অদৃশ্য হয়ে যেতে পারে। আপনার বিল্ড সফল হয়। আপনার ডিপ্লয় সম্পন্ন হয়। ব্রাউজারে আপনার পেজগুলো ঠিকঠাক দেখায়।
কিন্তু Googlebot আপনার রিচ রেজাল্ট (rich results) নির্ধারণ করার জন্য স্ক্রিপ্ট ট্যাগগুলো পড়ে। যদি ডেটা অনুপস্থিত বা ত্রুটিপূর্ণ হয়, তবে Search Console কয়েক সপ্তাহ পরে এটি চিহ্নিত না করা পর্যন্ত আপনি তা জানতে পারবেন না।
আমি আমার CI পাইপলাইনে একটি post-deploy অডিট ধাপ যুক্ত করেছি। এটি ৬০ সেকেন্ডের কম সময়ে এই ত্রুটিগুলো খুঁজে বের করে।
এটি যেভাবে কাজ করে:
আমি Astro দিয়ে তৈরি এবং Cloudflare Pages-এর মাধ্যমে ডিপ্লয় করা তিনটি স্ট্যাটিক সাইট চালাই। এই সাইটগুলো SoftwareApplication, VideoGame এবং ItemList-এর মতো স্কিমা ব্যবহার করে। যেহেতু এগুলো স্ট্যাটিক, তাই একটি টেমপ্লেট পরিবর্তন কোনো বিল্ড এরর ছাড়াই হাজার হাজার পেজ থেকে স্কিমা সরিয়ে ফেলতে পারে।
অডিট স্ক্রিপ্টটি যা করে:
• লাইভ হোমপেজ এবং স্যাম্পল ডিটেইল পেজগুলো ফেচ (fetch) করে। • আসল URL খুঁজে পেতে লাইভ সাইটম্যাপ পড়ে। • regex ব্যবহার করে সমস্ত JSON-LD ব্লক এক্সট্র্যাক্ট করে। • নেস্টেড আইটেম খুঁজে পেতে @graph unwrapping চেক করে। • প্রাপ্ত @type ভ্যালুগুলোকে আমার প্রত্যাশিত তালিকার সাথে তুলনা করে।
আমি এটি বিল্ড আর্টিফ্যাক্টের পরিবর্তে লাইভ ডিপ্লয় করা পেজগুলোর ওপর চালাই। এটি CDN caching বা edge delivery-র সমস্যাগুলো ধরতে পারে।
প্রথমবার চালানোর সময় স্ক্রিপ্টটি তিনটি সমস্যা খুঁজে পেয়েছে:
- ossfind.com: নির্দিষ্ট কিছু পেজে ItemList অনুপস্থিত। এটি একটি অস্পষ্ট ধারণা থেকে একটি সুনির্দিষ্ট কাজে পরিণত হয়েছে।
- findindiegame.com: WebSite @id-তে একটি ভুল http:// প্রোটোকল। এটি ছিল একটি কপি-পেস্ট ভুল যা মানুষের কাছে ঠিক মনে হলেও Google-এর জন্য অসামঞ্জস্যপূর্ণ ছিল।
- aiappdex.com: SoftwareApplication স্কিমাতে মানুষের পাঠযোগ্য নামের পরিবর্তে সরাসরি ডাটাবেস ID ব্যবহার করা হচ্ছে।
এগুলো ছিল আসল বাগ (bug)। বিল্ড লগ বা ব্রাউজার রিভিউতে এর কোনটিই দেখা যায়নি।
আমি CI ধাপটিকে non-fatal হিসেবে সেট করেছি। যদি অডিটে কোনো সমস্যা পাওয়া যায়, তবে ডিপ্লয়মেন্ট তবুও সম্পন্ন হয়, কিন্তু ত্রুটিটি লগে দেখা যায়। এটি আমাকে চেকটিকে পাইপলাইন ব্লক করার সিদ্ধান্ত নেওয়ার আগে বাস্তব জগতের আচরণ পর্যবেক্ষণ করার সুযোগ দেয়।
এটি একটি smoke test, কোনো পূর্ণাঙ্গ ভ্যালিডেশন স্যুট নয়। এটি প্রতি সাইটে দুটি স্যাম্পল চেক করে। এটি প্রতিটি edge case ধরতে পারবে না, তবে বড় ভুলগুলো প্রোডাকশনে এক মাস ধরে থাকার আগেই তা ধরে ফেলে।