وبلاگ

درس‌های سئو از اصلاح سایت خودمان

چند روز سایت خودمان را همان‌طور خواندیم که یک موتور جستجو می‌خواند، و شش مورد پیدا کردیم که ارزش رفع داشتند. هر صفحه دو بلوک FAQ را اعلام می‌کرد، گوگل جلوه‌ی تزئینی پس‌زمینه‌ی صفحه‌ی اصلی را به‌جای تصویر کارت اشتراک‌گذاری ما نشان می‌داد، مجموعه‌ای از صفحات قالب برای جست‌وجوهایی رتبه می‌گرفتند که به آن‌ها پاسخ نمی‌دادند، و بخش تازه‌ای از سایت روی staging توسط خود لبه‌ی شبکه‌مان مسدود شده بود. هیچ‌کدام دراماتیک نبودند. ولی همه بی‌سروصدا دیده‌شدن ما را کم می‌کردند.

سایت در یک پاراگراف

mythex.ai یک اپ تک‌صفحه‌ای است که در زمان ساخت آن را prerender می‌کنیم: اسکریپتی همه‌ی مسیرها را پیمایش می‌کند، برای هرکدام یک فایل HTML استاتیک می‌نویسد و عنوان، توضیحات و داده‌ی ساخت‌یافته‌ی صفحه را به آن تزریق می‌کند (بلوک JSON-LD که به موتور جستجو می‌گوید صفحه چیست؛ ببینید داده‌ی ساخت‌یافته چیست). بیشتر آنچه در ادامه می‌آید در همان مرحله‌ی prerender است، چون HTML همان چیزی است که یک خزنده واقعاً می‌خواند.

۱. هر صفحه ادعا می‌کرد صفحه‌ی FAQ است

علامت. قالب HTML ما در داده‌ی ساخت‌یافته‌اش یک بلوک FAQPage برای کل سایت داشت که URL آن به /faq اشاره می‌کرد. سپس prerender، برای هر صفحه، FAQPage مخصوص خودش را هم روی آن اضافه می‌کرد. پس هر صفحه‌ی سایت دو تا تحویل می‌داد — و صفحه‌ی سیاست حریم خصوصی ما به گوگل می‌گفت که صفحه‌ی FAQ است.

چرا مهم است. گوگل انتظار دارد حداکثر یک FAQPage در هر صفحه باشد. یک مورد دوم که به جای دیگری اشاره می‌کند، از آن نوع چیزهایی است که باعث می‌شود نشانه‌گذاری صفحه بی‌اعتبار شود، نه اینکه فقط نادیده گرفته شود.

رفع. بلوک سراسری حذف شد. حالا نشانه‌گذاری FAQ هر صفحه از یک جا می‌آید، از جمله خود /faq که آن را از فهرست کامل پرسش‌ها می‌سازد. صفحاتی که FAQ ندارند، هیچ‌کدام را اعلام نمی‌کنند، که پاسخ صادقانه‌ای است. و اگر در آینده هر صفحه‌ای بیش از یک FAQPage داشته باشد، prerender ساخت را شکست می‌دهد. قاعده‌ای که فقط در حافظه‌ی کسی زندگی کند شکسته می‌شود؛ قاعده‌ای که build آن را اجرا کند، شکسته نمی‌شود.

۲. گوگل برای ما تصویر اشتباهی به کار برد

علامت. در نتایج جست‌وجو، تصویر کوچک Mythex آن جلوه‌ی نرم و تپنده‌ی پشت بخش اصلی صفحه‌ی خانه بود — یک تصویر تزئینی پس‌زمینه — و نه کارت اشتراک‌گذاری ما.

چرا پیش آمد. هرگز به گوگل نگفته بودیم کدام تصویر نماینده‌ی هر صفحه است، پس خودش یکی را که پیدا کرد انتخاب کرد.

رفع. دو طرف یک مشکل:

  • بگویید کدام تصویر متعلق به صفحه است. صفحه‌ی خانه حالا یک گره WebPage دارد که primaryImageOfPage آن به کارت اشتراک‌گذاری اشاره می‌کند، و داده‌ی ساخت‌یافته‌ی هر صفحه‌ی prerender شده تصویر خودش را دارد (تصویر اشتراک‌گذاری همان صفحه، یا تصویر پیش‌فرض).
  • تزئین را پنهان کنید. تصاویر پس‌زمینه حالا در robots.txt مجاز نیستند و با هدر noindex, noimageindex ارائه می‌شوند، تا از جست‌وجوی تصویر و تصاویر کوچک بیرون بمانند.

۳. موتورهای جست‌وجو فقط لوگوی ما را می‌شناختند

علامت‌گذاری Organization ما یک نام، یک لوگو و چند لینک شبکه‌ی اجتماعی داشت — برندینگ، و بس. موتورهای جست‌وجو کارت دانش شرکت‌ها را از حقایق شبیه ثبت رسمی می‌سازند، پس ما آن‌هایی را که از مجوز کسب‌وکارمان برمی‌آمد اضافه کردیم: نام قانونی، تاریخ تأسیس، بنیان‌گذار و نشانی ثبت‌شده. شماره تلفن را عمداً نگذاشتیم.

۴. صفحات قالب به سؤال اشتباهی جواب می‌دادند

علامت. Search Console نشان می‌داد سه صفحه‌ی قالب نمایش‌ها را جمع می‌کنند و هیچ کلیکی نمی‌گیرند. یکی برای «content strategist portfolio» و تغییراتش رتبه داشت، یکی برای «best italian restaurant website design»، و یکی برای خوشه‌ای حول «agile board» — و نیمی از این جست‌وجوها کلمه‌ی «free» را داشتند. جایگاه‌ها از میانه‌ی دهه‌ی بیست تا دهه‌ی پنجاه بودند.

چرا. هر صفحه سؤالی متفاوت از آنچه پرسیده می‌شد را جواب می‌داد. کسی که می‌خواست ببیند طراحی خوب سایت یک رستوران ایتالیایی چه شکلی است، روی صفحه‌ای فرود می‌آمد که یک سازنده‌ی سایت را به او می‌فروخت.

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

همان commit یک مشکل آرام‌تر را هم رفع کرد. بلوک «قالب‌های مرتبط» چهار قالب اول یک دسته را برمی‌داشت، پس هر قالب پرتفولیو به همان چهار پرتفولیو اشاره می‌کرد و بقیه‌ی آن دسته اصلاً لینک داخلی نداشتند. آن را با یک حلقه جایگزین کردیم که بر اساس زیردسته مرتب است: حالا هر صفحه‌ی قالب دقیقاً چهار لینک ورودی و چهار لینک خروجی دارد. HTML پیش‌رندرشده هم حالا این لینک‌ها را چاپ می‌کند — پیش‌تر فقط بعد از اجرای JavaScript وجود داشتند، و ممکن است یک خزنده هرگز آن را اجرا نکند.

۵. به Bing فوراً خبر دادن درباره‌ی صفحات تازه، لحظه‌ای که منتشر می‌شوند

گوگل IndexNow را نادیده می‌گیرد، پروتکلی برای اطلاع دادن به موتورهای جست‌وجو وقتی یک URL تغییر می‌کند. Bing، Yandex و Seznam از آن استفاده می‌کنند — و ایندکس Bing همان چیزی است که جست‌وجوی ChatGPT می‌خواند. یک سازنده‌ی اپ با هوش مصنوعی که دستیارهای هوش مصنوعی نتوانند پیدایش کنند، نوع خاصی از شکست است.

روش بدیهی، یعنی ارسال کل نقشه‌ی سایت در هر استقرار، همان چیزی است که باعث می‌شود کلید محدود شود، و بیشتر استقرارها چیزی را تغییر نمی‌دهند که موتور جست‌وجو اهمیت بدهد. پس یک اسکریپت نقشه‌ی سایتی را که الان سرو می‌شود با نقشه‌ای که همین حالا ساخته شده مقایسه می‌کند و فقط تفاوت را ارسال می‌کند.

دو جزئیات باعث شد کار کند:

  • قبل از استقرار عکس بگیرید. خط مبنا باید پیش از اینکه build جدید زنده شود ثبت شود. بعد از آن، نقشه‌ی سایت «زنده» همان نقشه‌ی جدید است و هر مقایسه‌ای خالی برمی‌گردد.
  • فعلاً فقط صفحات جدید. نقشه‌ی سایت ما تاریخ lastmod ندارد، پس اسکریپت صفحات تازه را اعلام می‌کند، اما بازنویسی‌ها را نه. اگر به هر URL تاریخ ساخت را می‌زدیم، کل سایت در هر استقرار تغییرکرده نشان داده می‌شد — دقیقاً همان اسپمی که داشتیم از آن دوری می‌کردیم.

فقط روی استقرارهای production اجرا می‌شود و هرگز build را شکست نمی‌دهد: وقتی اجرا می‌شود سایت از قبل زنده است، و یک پینگ به موتور جست‌وجو ارزش یک استقرار قرمز را ندارد.

۶. لبه‌ی خودمان می‌گفت «پیدا نشد»

وقتی صفحات /ai را راه انداختیم (بیشتر درباره‌ی آن‌ها در یک صفحه‌ی فرود برای هر نوع کسب‌وکار)، staging برای همه‌ی آن‌ها «Not found» نشان می‌داد، در حالی که میزبان استاتیک آن‌ها را درست سرو می‌کرد.

سرویسی که جلوی میزبان‌های بازاریابی ما قرار دارد فقط فهرست مجازی از مسیرها را عبور می‌دهد؛ هر چیز دیگری یک 404 سخت می‌گیرد. /ai تازه بود و در آن فهرست نبود. /ai و /ai/* را اضافه کردیم، با یک تست که تأیید می‌کند از آن‌ها عبور می‌شود. باگی کوچک، اما دقیقاً از نوعی که یک بخش تازه را بی‌آنکه کسی متوجه شود برای خزنده‌ها نامرئی می‌کند.

آنچه از آن برداشتیم

  • HTML‌ای را بخوانید که یک خزنده می‌خواند. بیشتر این‌ها در مرورگر نامرئی بودند و در فایل prerender شده کاملاً آشکار.
  • قواعد سئو را به بررسی‌های build تبدیل کنید. «یک FAQPage در هر صفحه» حالا اجرا می‌شود، نه اینکه به خاطر سپرده شود.
  • به موتورهای جست‌وجو بگویید منظورتان چیست. اگر نگویید کدام تصویر یا کدام حقایق نماینده‌ی شما هستند، حدس می‌زنند.
  • Search Console می‌گوید مردم کدام سؤال را پرسیده‌اند. نمایش بدون کلیک معمولاً یعنی صفحه به سؤال دیگری جواب داده.
  • تفاوت‌ها را ارسال کنید، نه همه‌چیز را. فقط ارسال تغییرات شما را در سمت درست محدودیت‌های نرخ نگه می‌دارد.

اگر همین کار را برای سایتی که خودتان ساخته‌اید انجام می‌دهید، راهنماهای ما درباره‌ی سئو برای سایت‌های ساخته‌شده با هوش مصنوعی و راه‌اندازی Google Search Console مبانی را پوشش می‌دهند.

Mythex · Pricing · با هوش مصنوعی هر چیزی بسازید · قالب‌های وب‌سایت و اپلیکیشن · مقایسه‌ی Mythex · واژه‌نامه‌ی ساخت اپلیکیشن با هوش مصنوعی · ابزارهای رایگان ساخت اپلیکیشن با هوش مصنوعی · 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 简体中文 繁體中文(香港) 繁體中文(台灣)