پرش به محتوای اصلی
وب، سئو و فرانت‌اند
۶ دقیقه مطالعه

اولین منبع ترافیک فروشگاه: نه گوگل، بلکه ChatGPT

بعد از راه‌اندازی آنالیتیکس اختصاصی دیدیم بیشترین ورودی فروشگاه از ChatGPT است؛ و ربات‌های هوش مصنوعی پشت فایروال CDN بسته بودند.

برنامه‌نویس فول‌استک

چند روز بعد از اینکه آنالیتیکس اختصاصی (first-party) فروشگاه را راه انداختیم، اولین گزارش یک چیز غیرمنتظره نشان داد: بزرگ‌ترین منبع ورودی نه گوگل بود و نه ورودی مستقیم، بلکه ChatGPT. در همان حال فهمیدیم مدتی است ربات‌های هوش مصنوعی در فایروال CDN بسته شده‌اند. این یادداشت ماجرای همین دو کشف و چیزی است که از آن‌ها درباره سئو یاد گرفتیم.

چه دیدیم

تا قبل از این، آمار فروشگاه به ابزارهای شخص ثالث و حدس‌های کلی تکیه داشت. بعد از راه‌اندازی آنالیتیکس اختصاصی روی فروشگاه اینترنتی عینک‌سازی، در ۱۱ روز اول حدود ۵۸٪ جلسه‌ها از ChatGPT آمده بود. این عدد از ورودی مستقیم و گوگل بیشتر بود.

نکته دوم کیفیت این بازدیدکننده‌ها بود: در همین بازه صفحات بیشتری می‌دیدند. با یک بازه ۱۱ روزه نمی‌شود نتیجه قطعی گرفت و ما هم از آن «روند پایدار» یا «فروش بیشتر» نتیجه نگرفتیم. چیزی که از آن مطمئن شدیم این بود که کانالی وجود دارد که تا آن روز اصلاً اندازه‌گیری‌اش نمی‌کردیم.

همزمان، هنگام بررسی تنظیمات CDN متوجه شدیم مدتی است خزنده‌های هوش مصنوعی در فایروال آن بسته بوده‌اند. یعنی سایتی که از ChatGPT ترافیک می‌گرفت، بخشی از مسیر دسترسی همین سیستم‌ها را خودش بسته بود.

نکات کلیدی

  • حدود ۵۸٪ جلسه‌های ۱۱ روز اول از ChatGPT بود
  • بازدیدکننده‌های این منبع صفحات بیشتری می‌دیدند
  • ربات‌های هوش مصنوعی مدتی در فایروال CDN بسته بودند

ردگیری علت: اول به خود عدد شک کردیم

واکنش اول ما اعتماد نبود، شک بود. عددی که این‌قدر با انتظار فاصله دارد معمولاً یا خطای اندازه‌گیری است یا ترافیک رباتی. سه فرضیه را بررسی کردیم.

فرضیه اول: شاید کد ردیابی ما اشتباه منبع را ثبت می‌کند. اگر ثبت اشتباه بود، باید منابع دیگر هم به‌هم‌ریخته دیده می‌شدند، ولی گوگل و ورودی مستقیم الگوی عادی داشتند.

فرضیه دوم: شاید این جلسه‌ها ربات باشند و نه آدم. اما رفتار جلسه‌ها، از جمله دیدن چند صفحه پشت‌سر‌هم، شبیه کاربر واقعی بود.

فرضیه سوم، که در نهایت درست از آب درآمد: اینکه آنالیتیکس قبلی ما این کانال را اصلاً به‌عنوان یک منبع جدا نشان نمی‌داد. وقتی منبع در گزارش‌ها جدا نباشد، یا به «مستقیم» می‌رود یا در «سایر» گم می‌شود. پس مسئله کم‌بودن ترافیک ChatGPT نبود؛ ما تا آن روز آن را نمی‌دیدیم.

برای بخش فایروال هم همین‌طور: کسی عمداً تصمیم نگرفته بود جلوی خزنده‌های هوش مصنوعی را بگیرد. این بخشی از قوانین حفاظتی CDN بود که روی ربات‌ها اعمال می‌شد و ما آن را با ترافیک اسکرپر و ربات‌های ناخواسته یکی گرفته بودیم.

علت اصلی: «ربات هوش مصنوعی» یک چیز واحد نیست

(این بخش توضیح فنی عمومی است و درباره پیکربندی خاص ما نیست.)

شرکت OpenAI در مستندات رسمی خود سه عامل (user agent) با نقش‌های متفاوت معرفی می‌کند. GPTBot محتوایی را جمع می‌کند که ممکن است برای آموزش مدل‌ها استفاده شود. OAI-SearchBot صفحات را برای نمایش در قابلیت جست‌وجوی ChatGPT پیدا می‌کند و در پاسخ‌ها به آن‌ها ارجاع می‌دهد. ChatGPT-User وقتی فعال می‌شود که کاربر در ChatGPT یا در GPTهای سفارشی کاری را آغاز کند؛ طبق همان مستندات، چون این بازدید را کاربر آغاز می‌کند، قوانین robots.txt ممکن است درباره‌اش اعمال نشود.

مستندات می‌گویند تنظیمات GPTBot و OAI-SearchBot مستقل از هم‌اند. یعنی می‌توان مدل را اجازه نداد از محتوا آموزش ببیند، ولی همچنان در جست‌وجوی ChatGPT دیده شد. مستندات برای دیده‌شدن در نتایج جست‌وجو توصیه می‌کنند OAI-SearchBot در robots.txt مجاز باشد و بازه‌های IP منتشرشده‌اش هم مسدود نشوند. همچنین تغییر robots.txt ممکن است حدود ۲۴ ساعت طول بکشد تا اثر کند.

دو لایه را نباید با هم قاطی کرد. robots.txt طبق RFC 9309 قواعدی است که خزنده‌ها «درخواست می‌شود» رعایت کنند و خود RFC تصریح می‌کند این قواعد شکلی از احراز دسترسی نیستند. اما فایروال CDN لایه‌ای دیگر و قهری است: درخواست را پیش از رسیدن به سایت رد می‌کند. بنابراین حتی اگر robots.txt کاملاً باز باشد، یک قانون فایروال می‌تواند خزنده را بیرون نگه دارد و در robots.txt هیچ ردی از آن پیدا نمی‌شود. مشکل ما از همین نوع بود: اجازه در یک لایه و مسدودی در لایه‌ای دیگر.

نکته آخر درباره اندازه‌گیری: ترافیک ChatGPT معمولاً با ارجاع‌دهنده (referrer) از یک دامنه مشخص می‌رسد. اگر ابزار آنالیتیکس این دامنه را به‌عنوان کانال جدا تعریف نکند، همین کاربران در دسته‌های دیگر ادغام می‌شوند.

راه‌حل

سه کار انجام دادیم.

اول، دسترسی خزنده‌های هوش مصنوعی را در فایروال CDN باز کردیم و مطمئن شدیم robots.txt هم با آن هم‌خوان است. نمونه عمومی یک robots.txt که جست‌وجو را مجاز می‌گذارد و آموزش را بسته نگه می‌دارد (این نمونه فقط مثال است و تصمیم درباره آموزش مدل‌ها با خود هر سایت است):

دوم، محتوایی ساختیم که «قابل پاسخ‌دادن» باشد: راهنمای انتخاب، مقایسه‌ها و پرسش‌های متداول با پاسخ‌های کوتاه و صریح در متن صفحه. مدل زبانی وقتی می‌تواند از صفحه‌ای نقل کند که جواب سؤال در خود متن، قابل‌خواندن و بدون پیچیدگی رندر باشد. جزئیات مربوط به خزش و رندر در سئوی فنی فروشگاه با Next.js آمده است.

سوم، در آنالیتیکس منبع «دستیار هوش مصنوعی» را جدا تعریف کردیم تا از «مستقیم» و «سایر» تفکیک شود. نمونه ساده طبقه‌بندی بر اساس hostname ارجاع‌دهنده:

text
# robots.txt (نمونه عمومی)
User-agent: OAI-SearchBot
Allow: /

User-agent: GPTBot
Disallow: /

User-agent: *
Allow: /

// classifyReferrer.js (نمونه عمومی)
const AI_HOSTS = ['chatgpt.com', 'chat.openai.com'];

export function classifyReferrer(referrer) {
  if (!referrer) return 'direct';
  const host = new URL(referrer).hostname.replace(/^www\./, '');
  if (AI_HOSTS.includes(host)) return 'ai-assistant';
  if (host.includes('google.')) return 'google';
  return 'other';
}

نکات کلیدی

  • فایروال CDN و robots.txt دو لایه جدا هستند و هر دو باید هم‌جهت باشند
  • منبع «دستیار هوش مصنوعی» جداگانه پایش شود
  • محتوای راهنما، مقایسه و پرسش‌های متداول با پاسخ صریح در متن صفحه

درس‌ها و چک‌لیست

درس اصلی این بود که سئو دیگر فقط «رتبه در گوگل» نیست. صفحه‌ای که برای مدل‌های زبانی قابل‌دسترسی و قابل‌پاسخ‌دادن نباشد، در این کانال دیده نمی‌شود. البته این جایگزین سئوی کلاسیک نیست؛ ایندکس‌شدن در گوگل همچنان پایه است و ما این دو را مکمل می‌دانیم. اگر می‌خواهید این زیرساخت فنی را روی فروشگاه خودتان بررسی کنید، خدمت سئوی فنی و سرعت سایت همین موضوع‌ها را پوشش می‌دهد.

چک‌لیستی که حالا برای هر فروشگاه استفاده می‌کنیم:

۱. فایروال CDN را برای قوانین ضد ربات مرور کن و ببین کدام خزنده‌های مشروع را هم می‌بندد.

۲. robots.txt را برای هر عامل جداگانه بنویس، نه یک قانون کلی برای همه «ربات‌ها».

۳. بعد از تغییر، لاگ سرور یا CDN را نگاه کن و مطمئن شو درخواست‌های این عامل‌ها واقعاً رد نمی‌شوند.

۴. در آنالیتیکس، منبع «دستیار هوش مصنوعی» را جدا تعریف کن.

۵. برای پرسش‌های پرتکرار مشتری صفحه‌ای با پاسخ صریح بساز.

۶. عدد کوتاه‌مدت را نتیجه نهایی نگیر؛ روند چند هفته‌ای را دنبال کن.

جمع‌بندی

ما به‌دنبال یک اتفاق بد نبودیم؛ آنالیتیکس اختصاصی صرفاً چیزی را نشان داد که قبلاً دیده نمی‌شد: بخش بزرگی از ورودی اولیه فروشگاه از ChatGPT می‌آمد، در حالی که بخشی از زیرساخت خودمان مسیر دسترسی همین سیستم‌ها را می‌بست. اندازه‌گیری جداگانه، باز بودن دسترسی در هر دو لایه و محتوایی که بتوان مستقیم از آن نقل کرد، سه کاری است که از این تجربه نگه داشتیم.

منابع

  1. Overview of OpenAI Crawlersdevelopers.openai.com
  2. RFC 9309: Robots Exclusion Protocoldatatracker.ietf.org
وب، سئو و فرانت‌اند
۷ دقیقه مطالعه

عکسی که عوض شد ولی هیچ‌کس عکس جدید را ندید

تصویر محصول را با همان نام فایل عوض کردیم، اما کش یک‌ساله و immutable عکس قدیمی را نگه داشت. علت، قرارداد immutable و راه‌حل نام‌گذاری با hash.

مطالعه مقاله#Cache-Control
وب، سئو و فرانت‌اند
۵ دقیقه مطالعه

چرا صفحات سایت در گوگل ایندکس نمی‌شوند؟ Discovered و Crawled currently not indexed

معنی دو وضعیت رایج Search Console یعنی Discovered - currently not indexed و Crawled - currently not indexed، چه کارهایی واقعاً به ایندکس شدن کمک می‌کند و چه کارهایی وقت تلف کردن است؛ از تجربه راه‌اندازی همین سایت.

مطالعه مقاله#سئو