گوگل دیگر فقط به «وجود محتوا» نگاه نمیکند؛ بلکه به کیفیت و پایداری تجربهای که کراولر در لحظه اول میبیند اهمیت میدهد. هر تکنیکی که باعث شود کراولر محتوای گمراهکننده، ناقص یا placeholder ببیند، حتی اگر بعداً با جاوااسکریپت نمایش داده شود، ریسک بالایی برای ایندکس، رتبهبندی و دیدهشدن در نتایج جستجو (از جمله AI Overviews) دارد.
جان مولر، تحلیلگر ارشد جستجوی گوگل، اخیرا در پاسخ به تاپیکی با عنوان «Google Might Think Your Website Is Down»، این مهم را با یک هشدار بسیار صریح و فنی یادآوری کرد:
“محتوای اولیهای که گوگلبات در کراول اولیه میبیند، باید تا حد ممکن با آنچه کاربر نهایی پس از اجرای کامل جاوااسکریپت مشاهده میکند، همخوانی داشته باشد.”
مشکل اصلی سایت مورد بحث این بود: در HTML اولیه فقط یک پیام ساده «not available» یا «در دسترس نیست» وجود داشت و محتوای واقعی تنها پس از اجرای جاوااسکریپت (معمولاً از طریق fetch یا hydration در فریمورکهایی مثل React/Vue) جایگزین میشد. این تکنیک که در SPAها، infinite scroll و lazy-loading بخشهای سنگین رایج است، از دید کاربر نهایی اغلب بینقص به نظر میرسد و برای گوگلبات هم بسیار پرریسک است.
چرا گوگل صفحه را غیرموجود تلقی میکند؟
گوگلبات در رندر اولیه فقط HTML خام (بدون اجرای JS) را پردازش میکند. اگر این HTML اولیه حاوی محتوای معنادار نباشد و فقط placeholder گمراهکنندهای مثل «not available»، «loading…»، «content not ready» یا حتی div خالی داشته باشد، گوگل آن را به عنوان ماهیت اصلی در نظر میگیرد. در این کیس حتی اگر صفحه بعداً رندر شود، این رفتار میتواند چالش های زیر را به همراه داشته باشد:
- طبقهبندی صفحه به عنوان thin content یا soft 404
- عدم ورود به ایندکس یا de-index شدن تدریجی
- نمایش هشدار «This site may be down» یا «Page not available» در نتایج جستجو
- کاهش شدید crawl rate و crawl budget در کراولهای بعدی
گوگل تأکید می کند که کراولر (بر پایه نسخه بهروز کروم) از رندرینگ جاوااسکریپت Evergreen پشتیبانی میکند، اما همیشه تضمینشده نیست. در شرایط ذکر شده، رندرینگ در صف انتظار (rendering queue) قرار میگیرد و ممکن است چند ثانیه تا چند دقیقه (یا حتی بیشتر در سایتهای با crawl budget محدود) طول بکشد.
اگر محتوای اولیه گمراهکننده باشد، گوگل اغلب رندرینگ را به تعویق میاندازد یا کلاً کنار میگذارد. همچنین هیچ تضمینی برای اجرای JS در همه کراولها (مخصوصاً موبایل، lightweight crawl یا کراولهای آزمایشی) وجود ندارد.
مقایسه با شیوه قدیمی noindex → index با JS
جان مولر این مسئله را مستقیماً با یکی از قدیمیترین هشدارهای گوگل مقایسه کرد: تغییر تگ <meta name=”robots” content=”noindex”> به index با جاوااسکریپت.
گوگل تأکید میکند که تغییرات داینامیک با js عموما توصیه نمیشود، زیرا در لحظه اول کراول، فقط noindex دیده میشود و صفحه ایندکس نمیشود. حتی اگر رندرینگ دوم انجام شود، اولویت بسیار پایینتری دارد و ممکن است مدت ها طول بکشد.
در مورد placeholder «not available» هم دقیقاً همین مکانیزم اعمال میشود: محتوای اولیه به عنوان معیار اصلی کیفیت صفحه تلقی میشود.
راهحلهای فنی پیشنهادی گوگل
گوگل دو رویکرد اصلی را پیشنهاد می کند:
- لود کامل محتوا از طریق جاوااسکریپت (توصیه اصلی) HTML اولیه فقط شامل یک container خالی باشد (مثلاً <div id=”content”></div>) و تمام محتوای معنادار با JS لود شود. این روش تضمین میکند که محتوای اولیه هیچ پیام گمراهکنندهای ندارد.
- Server-Side Rendering (SSR) یا Dynamic Rendering برای user-agent گوگلبات محتوای کامل HTML را سرو کنید (با ابزارهایی مثل Next.js SSR، Nuxt، Remix، Gatsby SSR یا سرویسهای Prerender.io و Prerender service گوگل). این روش هم تجربه کاربری سریع را حفظ میکند و هم کراولر را راضی نگه میدارد.
دیگر فقط «وجود محتوا» کافی نیست
هشدار جان مولر بار دیگر این واقعیت را یادآوری کرد که گوگل دیگر فقط به «وجود محتوا» نگاه نمیکند؛ بلکه کیفیت و پایداری محتوای اولیهای که کراولر میبیند، نقش تعیینکنندهای در ایندکس، رتبهبندی و حتی نمایش در AI Overviews دارد.
هر تکنیکی که باعث شود کراولر محتوای موقت، گمراهکننده یا ناقص ببیند، حتی اگر بعداً با JS درست شود، ریسک بالایی برای دیدهشدن سایت به همراه دارد.
در سئو یک اصل مهم وجود دارد و آن هم این است که آنچه کراولر در لحظه اول میبیند، باید همان چیزی باشد که کاربر نهایی تجربه میکند؛ بدون فریب و بدون محتوای placeholder گمراهکننده.