بعد از یک ماه استفاده از یک پروژه شخصی بهعنوان محیط آزمایش SEO، به ۶۳۲ بازدیدکننده ارگانیک رسیدم. عدد خوبی بود، اما مهمترین درس از عدد دیگری آمد: در ۱۵ اکتبر سایت به رکورد روزانه ۸۳ بازدیدکننده رسید و بخشی از این افزایش شبیه ترافیک انسانی نبود.
آن زمان داشتم برای یک ابتکار بزرگ SEO در محل کار آماده میشدم و تجربه عملی میخواستم، نه یک دور دیگر مطالعه تئوری. پروژه جانبی جایی بود که میتوانستم تغییر بدهم، داده را ببینم و حتی اشتباه کنم بدون اینکه هر مشاهده را فوراً به تصمیم production تبدیل کنم.
این تفاوت خیلی زود مهم شد. یک metric میتواند همزمان با یک تغییر جابهجا شود، اما این همزمانی علت را ثابت نمیکند. جهش ترافیک ممکن است رشد به نظر برسد تا زمانی که منبعها را جدا کنیم. Session replay هم میتواند چیز عجیبی نشان دهد، بدون اینکه بهتنهایی دلیلش را توضیح دهد.
۶۳۲ بازدیدکننده ارگانیک واقعاً چه چیزی به من گفت؟
نتیجهای که میتوانم برای ماه اول تأیید کنم ۶۳۲ بازدیدکننده ارگانیک است. اما این عدد بهتنهایی ثابت نمیکند که فرمول تکرارپذیری برای SEO پیدا کردهام، همه تغییرها رتبه را بهتر کردهاند یا روند حتماً ادامه پیدا میکند.
برای یک پروژه آموزشی، ارزش اصلی این بود که ترافیک واقعی جستوجو به اندازهای وجود داشت که بتوانم چیزی را مشاهده کنم. تغییر میدادم، میدیدم چه متریکی حرکت کرده و بعد سؤال دقیقتری میساختم. این برای من خیلی مفیدتر از نگاه کردن به SEO مثل یک checklist بود که هر “best practice” را معادل افزایش خودکار رتبه فرض میکند.
تغییر اندازه فونت باعث شد درباره علیت محتاطتر باشم
یکی از چیزهایی که غافلگیرم کرد، همبستگی بین تغییرات اندازه فونت و بعضی metricهای performance بود. خیلی راحت میشد آن را به جمله «جزئیات کوچک UX روی رتبه اثر میگذارند» تبدیل کرد. داده من برای چنین ادعای قطعیای کافی نیست.
چیزی که واقعاً دیدم این بود: اندازه فونت را تغییر دادم و بعد بعضی metricها جابهجا شدند. آزمایش کنترلشدهای نداشتم که فونت را از همه تغییرات دیگر جدا کند، و مدرکی هم ندارم که موتور جستوجو دقیقاً به خاطر همان قانون CSS رتبه را عوض کرده باشد. اندازه فونت میتواند line wrapping، layout و جای عناصر را تغییر دهد و در نتیجه بعضی اندازهگیریهای rendering یا UX را جابهجا کند. اما مکانیسم دقیق در مورد من ثابت نشده است.
قاعدهای امنتر برای چنین آزمایشی این است: اول مشاهده را ثبت کن، بعد سراغ توضیح برو. «metric X بعد از تغییر Y حرکت کرد» داده است. «Y باعث X شد» تا وقتی شواهد کافی ندارم یک فرضیه است.
روز ۸۳ بازدیدکننده قبل از باز کردن Webvisor بهتر به نظر میرسید
در ۱۵ اکتبر سایت به بالاترین مجموع روزانه تا آن زمان رسید: ۸۳ بازدیدکننده. این الزاماً به معنی ۸۳ بازدیدکننده ارگانیک نبود؛ این قله ترافیک کل روز بود که داشتم بررسی میکردم. وقتی منبعها را جدا کردم، بخش قابلتوجهی از چین آمده بود و بهعنوان direct traffic طبقهبندی شده بود.
“Direct” خیلی راحت به معنی «کسی URL من را تایپ کرده» برداشت میشود. اما در Yandex Metrica، اگر referrer منتقل نشود، آن session هم میتواند در این دسته قرار بگیرد و موارد دیگری هم وجود دارد. Yandex این موضوع را در مستندات منابع ترافیک توضیح میدهد. پس این برچسب بهتنهایی نمیگوید بازدیدکننده چه کسی بوده یا واقعاً چگونه صفحه را پیدا کرده است.
بعد Yandex Webvisor را باز کردم و sessionهای مشکوک را دیدم. صفحه طوری نمایش داده میشد که انگار با CSS غیرفعال باز شده است. بر اساس الگویی که دیدم، تخمین زدم حدود ۲۰ نفر از آن «کاربران» احتمالاً ربات بودهاند.
CSS غیرفعال یک سرنخ بود، نه اثبات
این عدد هنوز هم تخمین است. دستکم دو توضیح کلی برای چیزی که دیدم وجود دارد.
- درخواستها واقعاً میتوانستند خودکار باشند. یک scraper ممکن است فقط HTML را بگیرد و stylesheet، تصویر یا assetهای غیرضروری را رد کند. صرفهجویی در bandwidth یک دلیل قابلقبول است، اما من تأیید نکردهام که انگیزه واقعاً همین بوده.
- Replay ممکن است session اصلی را کامل بازسازی نکرده باشد. سیستمهای session replay صفحه را از دادههای ثبتشده بازسازی میکنند. Yandex خودش مواردی را مستند کرده که ضبط با چیزی که بازدیدکننده دیده فرق دارد، از جمله مشکلات CSS هنگام replay پس از تغییر stylesheet.
پس «Webvisor صفحه را بدون CSS نشان داد» یک مشاهده است. «بازدیدکننده عمداً CSS را خاموش کرد» یک تفسیر است. «پس ربات بود» یک استنتاج دیگر است. الگو فرضیه ربات را برای من محتمل کرد، اما یک ویژگی replay برای طبقهبندی قطعی کافی نیست.
در logها چه چیزی را بررسی میکنم؟
برای چنین ناهنجاریای به server log بیشتر از replay تصویری اعتماد میکنم. User-Agent، IP یا محدوده شبکه، زمانبندی و تکرار requestها، assetهای درخواستشده، pathها، HTTP statusها و referrerها را مقایسه میکنم. همچنین میبینم client فقط HTML گرفته یا CSS، JavaScript و تصاویر را هم درخواست کرده و آیا همان الگو در dimensionهای analytics مثل browser، پشتیبانی JavaScript، region، session duration و landing page دیده میشود یا نه.
هیچکدام از این سیگنالها بهتنهایی کامل نیستند. کنار هم میتوانند فرضیه ربات را خیلی بهتر از این برداشت ساده که «replay عجیب بود» تقویت یا تضعیف کنند.
درس بزرگتر درباره اندازهگیری بود، نه رتبه
این side project را شروع کردم تا قبل از برنامه بزرگتر SEO در محل کار تجربه عملی داشته باشم. بعد از یک ماه، نتیجه مفید فقط ۶۳۲ بازدیدکننده ارگانیک نبود. مهمتر این بود که ببینم چقدر سریع میشود از داده ناقص یک داستان جذاب ساخت.
میتوانستم قله ۸۳ بازدیدکننده را «رشد» بنامم. میتوانستم تغییر بعد از فونت را «ranking factor» اعلام کنم. میتوانستم هر session بدون CSS را ربات بنامم. هر سه روایت سادهتر بودند. هیچکدام به اندازه کافی اثباتشده نبودند.
برای آزمایشهای بعدی، روند قابلدفاعتر این است که منبعهای ترافیک جدا شوند، changelog نگه داشته شود، قبل و بعد بدون فرض خودکار علیت مقایسه شود، ناهنجاریها در سطح HTTP request بررسی شوند و ابزارهای analytics هم سیستمهای اندازهگیری با محدودیتهای خودشان در نظر گرفته شوند.
برای من این ارزشمندترین بخش آزمایش تا اینجا بوده است. SEO ترافیکی داد که بتوانم مطالعه کنم؛ مهارت سختتر این است که بفهمم داده واقعاً چه چیزی را ثابت میکند.
هنوز logها را بررسی میکنم، مخصوصاً direct traffic از چین. اگر بتوانم یک الگوی request تکرارشونده پیدا کنم، پاسخ خیلی محکمتری به سؤال اولیه خواهم داشت: آیا آن حدود ۲۰ بازدید واقعاً ربات بودند و آیا نگرفتن CSS بخشی از رفتارشان بود یا نه.