ব্লগ

নিজেদের সাইট ঠিক করে শেখা SEO-র পাঠ

কয়েক দিন ধরে আমরা নিজেদের সাইটটি একটি সার্চ ইঞ্জিন যেভাবে পড়ে, সেভাবে পড়েছি, আর ঠিক করার মতো ছয়টি বিষয় পেয়েছি। প্রতিটি পেজ দুটি FAQ ব্লক ঘোষণা করছিল, Google একটি সাজানো ব্যাকগ্রাউন্ড গ্লোকে আমাদের থাম্বনেইল হিসেবে ব্যবহার করছিল, কয়েকটি টেমপ্লেট পেজ এমন সার্চে র‍্যাঙ্ক করছিল যার উত্তর সেগুলো দিচ্ছিল না, আর সাইটের একটি নতুন অংশ আমাদের নিজেদের এজ স্টেজিংয়ে আটকে রেখেছিল। কোনোটিই নাটকীয় ছিল না। প্রতিটিই নিঃশব্দে দৃশ্যমানতার ক্ষতি করছিল।

সাইটটি এক অনুচ্ছেদে

mythex.ai একটি সিঙ্গেল-পেজ অ্যাপ, যা আমরা বিল্ড সময়ে প্রিরেন্ডার করি: একটি স্ক্রিপ্ট প্রতিটি রুট ঘুরে দেখে, প্রতিটির জন্য একটি স্ট্যাটিক HTML ফাইল লেখে, এবং পেজের টাইটেল, বিবরণ ও স্ট্রাকচার্ড ডেটা (JSON-LD ব্লক, যা সার্চ ইঞ্জিনকে বলে একটি পেজ আসলে কী — দেখুন স্ট্রাকচার্ড ডেটা কী) ইনজেক্ট করে। নিচের বেশির ভাগ বিষয় সেই প্রিরেন্ডার ধাপেই আছে, কারণ একটি ক্রলার আসলে যে HTML পড়ে, সেটি সেখান থেকেই আসে।

1. প্রতিটি পেজ নিজেকে FAQ পেজ বলছিল

লক্ষণ। আমাদের HTML টেমপ্লেটে সাইটজুড়ে একটি FAQPage ব্লক ছিল, যার URL ছিল /faq-এর দিকে। প্রিরেন্ডার প্রতিটি পেজের নিজস্ব FAQPage তার উপরে যোগ করত। ফলে প্রতিটি পেজে দুটি করে থাকত — এবং আমাদের প্রাইভেসি পলিসি Google-কে বলছিল যে এটি FAQ পেজ।

কেন এটি গুরুত্বপূর্ণ। Google প্রতি পেজে সর্বোচ্চ একটি FAQPage আশা করে। যে অন্য পেজের দিকে নির্দেশ করে এমন দ্বিতীয়টি থাকলে, পেজের মার্কআপের মূল্য কমে যেতে পারে — শুধু উপেক্ষিত হওয়া নয়।

সমাধান। গ্লোবাল ব্লকটি সরানো হয়েছে। প্রতিটি পেজের FAQ মার্কআপ এখন একটি জায়গা থেকে আসে, /faq নিজেও সহ — সেটি প্রশ্নের পূর্ণ তালিকা থেকে তা তৈরি করে। যে পেজে কোনো FAQ নেই, সেখানে এখন কোনো FAQ ঘোষণা নেই, যা সৎ উত্তর। আর কোনো পেজে আবার একাধিক FAQPage এলে প্রিরেন্ডার বিল্ড ব্যর্থ করে। যে নিয়ম শুধু কারো মনে থাকে, তা ভাঙা হয়; বিল্ড যে নিয়ম বলবৎ করে, তা ভাঙে না।

2. Google আমাদের জন্য ভুল ছবি বেছে নিচ্ছিল

লক্ষণ। সার্চ ফলাফলে Mythex-এর থাম্বনেইল ছিল হোমপেজের হিরো অংশের পেছনের নরম, স্পন্দিত গ্লো — একটি সাজানো ব্যাকগ্রাউন্ড ছবি — আমাদের শেয়ার কার্ডের বদলে।

কেন এটি ঘটেছিল। আমরা Google-কে বলিনি কোন ছবিটি একটি পেজের প্রতিনিধিত্ব করে, তাই সে যা পেয়েছে তা-ই বেছে নিয়েছে।

সমাধান। একই সমস্যার দুটি দিক:

  • বলে দিন কোন ছবিটি পেজের। হোমপেজে এখন একটি WebPage নোড আছে, যার primaryImageOfPage আমাদের শেয়ার কার্ডের দিকে নির্দেশ করে, আর প্রতিটি প্রিরেন্ডার করা পেজের স্ট্রাকচার্ড ডেটায় তার নিজের ছবি আছে (পেজের শেয়ার ছবি, বা ডিফল্ট ছবি)।
  • সাজানো অংশ লুকান। ব্যাকগ্রাউন্ড ছবিগুলো এখন robots.txt-এ নিষিদ্ধ, আর noindex, noimageindex হেডারসহ পরিবেশন হয়, যাতে সেগুলো ইমেজ সার্চ ও থাম্বনেইলের বাইরে থাকে।

3. সার্চ ইঞ্জিন শুধু আমাদের লোগো জানত

আমাদের Organization মার্কআপে একটি নাম, একটি লোগো আর কিছু সোশ্যাল লিংক ছিল — শুধু ব্র্যান্ডিং, আর কিছু না। সার্চ ইঞ্জিন একটি কোম্পানির নলেজ প্যানেল তৈরি করে রেজিস্ট্রি-ধাঁচের তথ্য থেকে, তাই আমরা আমাদের ট্রেড লাইসেন্স থেকে নেওয়া তথ্যগুলো যোগ করেছি: আইনি নাম, প্রতিষ্ঠার তারিখ, প্রতিষ্ঠাতা ও নিবন্ধিত ঠিকানা। ফোন নম্বরটি ইচ্ছা করেই বাদ দিয়েছি।

4. টেমপ্লেট পেজ ভুল প্রশ্নের উত্তর দিচ্ছিল

লক্ষণ। Search Console-এ তিনটি টেমপ্লেট পেজ ইমপ্রেশন পাচ্ছিল, কিন্তু ক্লিক ছিল না। একটি “content strategist portfolio” ও তার ভেরিয়েন্টে, একটি “best italian restaurant website design”-এ, আর একটি “agile board”-এর একটি গুচ্ছে র‍্যাঙ্ক করছিল — সেই সার্চগুলোর অর্ধেকে “free” শব্দটি ছিল। পজিশন ছিল মাঝামাঝি ২০-এর ঘর থেকে ৫০-এর ঘর পর্যন্ত।

কেন। প্রতিটি পেজ জিজ্ঞাসিত প্রশ্নের বদলে অন্য একটি প্রশ্নের উত্তর দিচ্ছিল। যে ব্যক্তি জানতে চেয়েছিল ভালো ইতালিয়ান রেস্তোরাঁর ডিজাইন কেমন দেখায়, তিনি এমন একটি পেজে গিয়ে পড়তেন যা তাকে একটি বিল্ডার বিক্রি করছে।

সমাধান। তিনটির প্রতিটিতে এখন এমন একটি অংশ আছে যা পণ্যের জন্য নয়, সার্চের জন্য লেখা; মানুষ যে শব্দে টাইপ করে সেই শব্দে একটি টাইটেল ও বিবরণ; আর এমন FAQ যা তাদের আগে থেকে দেওয়া মার্কআপের যোগ্য।

একই কমিটে আরেকটি নীরব সমস্যাও ঠিক হয়েছে। “related templates” ব্লক একটি ক্যাটাগরির প্রথম চারটি টেমপ্লেট নিত, তাই প্রতিটি portfolio টেমপ্লেট একই চারটি portfolio-র দিকে নির্দেশ করত, আর সেই ক্যাটাগরির বাকিগুলোর কোনো অভ্যন্তরীণ লিংক ছিল না। আমরা সেটি সাব-ক্যাটাগরি অনুযায়ী সাজানো একটি রিং দিয়ে বদলেছি: প্রতিটি টেমপ্লেট পেজ এখন ঠিক চারটি ভেতরের ও চারটি বাইরের লিংক পায়। প্রিরেন্ডার করা HTML-এ এই লিংকগুলো এখন ছাপা হয় — আগে সেগুলো শুধু JavaScript চলার পরে থাকত, যা একটি ক্রলার কখনো চালাতেও পারে না।

5. নতুন পেজ প্রকাশের মুহূর্তেই Bing-কে জানানো

Google IndexNow উপেক্ষা করে — এটি একটি প্রোটোকল, যা URL বদলালে সার্চ ইঞ্জিনকে জানায়। Bing, Yandex ও Seznam এটি ব্যবহার করে, আর Bing-এর ইন্ডেক্সই ChatGPT সার্চ পড়ে। একটি AI অ্যাপ বিল্ডার, যা AI সহকারীরা খুঁজে পায় না, তা এক ধরনের বিশেষ ব্যর্থতা।

স্বাভাবিক উপায় — প্রতিটি ডিপ্লয়ে পুরো সাইটম্যাপ জমা দেওয়া — রেট-লিমিট হওয়ার পথ, আর বেশির ভাগ ডিপ্লয় সার্চ ইঞ্জিনের কাছে গুরুত্বপূর্ণ কিছু বদলায় না। তাই একটি স্ক্রিপ্ট এখন সার্ভ করা বর্তমান সাইটম্যাপের সঙ্গে সদ্য তৈরি সাইটম্যাপের তুলনা করে এবং শুধু পার্থক্যটুকু জমা দেয়।

এটি কাজ করার পেছনে দুটি বিষয় ছিল:

  • ডিপ্লয়ের আগে স্ন্যাপশট নিন। নতুন বিল্ড লাইভ হওয়ার আগেই বেসলাইনটি ধরতে হবে। পরে “লাইভ” সাইটম্যাপটি ইতিমধ্যে নতুনটি হয়ে যায়, আর প্রতিটি পার্থক্য খালি আসে।
  • আপাতত শুধু নতুন পেজ। আমাদের সাইটম্যাপে lastmod তারিখ নেই, তাই স্ক্রিপ্ট নতুন পেজের কথা জানায়, পুনর্লিখনের কথা নয়। প্রতিটি URL-এ বিল্ডের তারিখ বসালে প্রতিটি ডিপ্লয়ে পুরো সাইট বদলে গেছে বলে ধরা হতো — ঠিক যে স্প্যাম আমরা এড়াতে চেয়েছিলাম।

এটি শুধু প্রোডাকশন ডিপ্লয়ে চলে, আর কখনো বিল্ড ব্যর্থ করে না: যখন এটি চলে, সাইট ইতিমধ্যে লাইভ, আর একটি সার্চ ইঞ্জিন পিং একটি লাল ডিপ্লয়ের যোগ্য নয়।

6. আমাদের নিজেদের এজ “not found” বলছিল

যখন আমরা একটি ব্যবসার প্রতিটি ধরনের জন্য একটি ল্যান্ডিং পেজ নিয়ে লেখা /ai পেজগুলো চালু করি, স্টেজিংয়ে সেগুলোর সবগুলো “Not found” দেখাচ্ছিল, যদিও স্ট্যাটিক হোস্ট সেগুলো ঠিকভাবে পরিবেশন করছিল।

আমাদের মার্কেটিং হোস্টের সামনের সার্ভিসটি শুধু একটি অনুমোদিত পথের তালিকা ফরওয়ার্ড করে; বাকি সবকিছু একটি কঠোর 404 পায়। /ai নতুন ছিল এবং সেই তালিকায় ছিল না। আমরা /ai ও /ai/* যোগ করেছি, সঙ্গে একটি টেস্ট যা নিশ্চিত করে যে সেগুলো পাস করে। ছোট একটি বাগ, কিন্তু ঠিক সেই ধরনের বাগ যা কাউকে টের না পাইয়ে একটি নতুন অংশকে ক্রলারদের কাছে অদৃশ্য করে দেয়।

আমরা যা শিখলাম

  • একটি ক্রলার যে HTML পড়ে, সেটি পড়ুন। এগুলোর বেশির ভাগ ব্রাউজারে অদৃশ্য ছিল, কিন্তু প্রিরেন্ডার করা ফাইলে স্পষ্ট ছিল।
  • SEO-র নিয়মগুলো বিল্ড চেকে পরিণত করুন। “প্রতি পেজে একটি FAQPage” এখন বলবৎ করা হয়, শুধু মনে রাখা হয় না।
  • সার্চ ইঞ্জিনকে স্পষ্ট করে বলুন আপনি কী বোঝাচ্ছেন। কোন ছবি বা কোন তথ্য আপনাকে প্রতিনিধিত্ব করে তা না বললে তারা অনুমান করবে।
  • Search Console বলে দেয় মানুষ কোন প্রশ্ন করেছিল। ক্লিক ছাড়া ইমপ্রেশন সাধারণত মানে পেজটি অন্য একটি প্রশ্নের উত্তর দিয়েছে।
  • সবকিছু নয়, পার্থক্যটুকু জমা দিন। যা বদলেছে শুধু সেটুকু পিং করলে রেট-লিমিটের সঠিক দিকে থাকা যায়।

আপনি যদি নিজে বানানো কোনো সাইটের জন্য একই কাজ করেন, তাহলে AI-বানানো ওয়েবসাইটের SEO এবং Google Search Console সেটআপ গাইড দুটি মূল বিষয়গুলো ঢেকেছে।

Mythex · Pricing · AI দিয়ে যা খুশি বানান · ওয়েবসাইট ও অ্যাপের টেমপ্লেট · Mythex-এর তুলনা · AI অ্যাপ তৈরির শব্দকোষ · AI অ্যাপ তৈরির বিনামূল্যের টুল · English

English አማርኛ العربية Български Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)