ผมเปิด Yandex Webmaster แล้วเจอตัวเลขที่มองข้ามได้ยาก: 2,000 หน้าหายจากการค้นหา Yandex ภายในคืนเดียว โปรเจกต์มีทั้งหมดประมาณ 8,000 หน้า เท่ากับว่าราว 25% ไม่ได้แสดงว่าเป็นหน้าที่เข้าร่วมการค้นหาอีกต่อไป
ปฏิกิริยาแรกของผมตรงไปตรงมา: SEO โหดได้จริง แต่บทเรียนที่มีประโยชน์กว่านั้นต้องแม่นยำกว่า การที่จำนวน “pages in search” ลดลงทันทีเป็น observation ไม่ใช่ diagnosis ตัวเลขนั้นจริง แต่สาเหตุยังไม่ได้รับการพิสูจน์
สิ่งที่ผมยืนยันได้จริงในตอนนั้น
ผมมีข้อเท็จจริงอยู่สามอย่าง: Yandex Webmaster แสดงว่าหายไป 2,000 หน้า, โปรเจกต์มีประมาณ 8,000 หน้า และการเปลี่ยนแปลงเกิดขึ้นในคืนเดียว สิ่งที่ผม ไม่มี คือหลักฐานว่า Yandex ลงโทษเว็บไซต์, crawling ล้มเหลว หรือการเปลี่ยนแปลงทางเทคนิคอย่างใดอย่างหนึ่งเป็นสาเหตุโดยตรง
ความแตกต่างนี้สำคัญ เพราะ Yandex แยกหลายสถานะที่เรามักเหมารวมว่าเป็น “indexing” URL อาจถูก crawl แล้วแต่ยังถูก exclude จาก search ได้ Yandex ยังอธิบายด้วยว่าฐานข้อมูลของ robot อาจมีหน้าที่ ณ ตอนนั้นไม่สามารถแสดงในผลการค้นหาได้ ดังนั้นคำถามที่มีประโยชน์ไม่ใช่แค่ “crawler เห็น URL นี้หรือยัง?” แต่คือ “หน้านี้กำลังเข้าร่วม search หรือไม่ และถ้าไม่ status ไหนอธิบายการถูก exclude?”
Yandex อธิบายเรื่องนี้ไว้ในเอกสารทางการเกี่ยวกับ หน้าที่อยู่ใน search และ หน้าที่ถูก exclude
Crawling, การเข้าร่วม search, ranking และ traffic เป็นคนละปัญหา
เหตุการณ์นี้เตือนผมอีกครั้งว่าเราสามารถสับสนสี่ชั้นนี้ได้ง่ายมาก: crawling, การเข้าสู่ระบบค้นหา, การเข้าร่วมผลค้นหา และ ranking หรือ traffic จริง ทั้งหมดเกี่ยวข้องกัน แต่ไม่ใช่สิ่งเดียวกัน
- Crawling: robot ดึง URL มาแล้วหรือไม่
- การเข้าร่วม search: Yandex มองว่าหน้านี้มีสิทธิ์แสดงในผลค้นหาตอนนี้หรือไม่
- Ranking: หน้านี้อยู่ตำแหน่งใดสำหรับ query เฉพาะ
- Traffic: ยังขึ้นกับ demand, snippet, CTR, seasonality และปัจจัยอื่นอีกมาก
ดังนั้นจำนวนหน้าที่เข้าร่วม search ลดลง 25% ไม่ได้หมายความอัตโนมัติ ว่า traffic ลดลง 25% และไม่ได้พิสูจน์ว่ามี crawling problem หรือ algorithmic penalty
ทำไมขนาด 2,000 หน้ายังสำคัญ
2,000 URL มากพอที่จะมองหา pattern แทนที่จะคิดว่าเป็นหน้าสุ่มไม่กี่หน้า ผมจะตรวจว่าหน้าเหล่านั้นมี directory, template, content type, canonical setup, HTTP status, internal-linking pattern หรือช่วงเวลาที่เผยแพร่ร่วมกันหรือไม่
การแบ่งกลุ่มแบบนี้มีประโยชน์กว่าการจ้องตัวเลขรวม ถ้าหน้าส่วนใหญ่ที่ถูก exclude มีลักษณะทางเทคนิคเหมือนกัน ขอบเขตการตรวจสอบจะแคบลง แต่ถ้ากระจายไปตามส่วนที่ไม่เกี่ยวข้องกัน hypothesis ก็ต้องเปลี่ยน อย่างไรก็ตาม นี่คือวิธีตรวจสอบ ไม่ใช่การอ้างว่าสาเหตุจริงในเคสของผมคืออะไร
สิ่งที่ผมจะตรวจ ก่อนโทษ algorithm
- ยืนยัน metric ก่อน ตรวจว่าการเปลี่ยนแปลงเกิดใน “pages in search” จริง แล้วดู excluded pages และวันที่
- ดูเหตุผลการ exclude Yandex Webmaster อาจแสดง low-value/low-demand, non-canonical,
noindex, redirect หรือ error สถานะเหล่านี้คือ evidence ส่วนการเดาจากกราฟไม่ใช่ - จัดกลุ่ม URL ที่ได้รับผลกระทบ เปรียบเทียบ directory, template, page type, ภาษา, ส่วนที่ generate อัตโนมัติ และช่วงเผยแพร่
- ตรวจ technical basics จาก sample HTTP code, robots directives, canonical, redirect, availability และ HTML ที่ robot ได้รับจริง
- แยก index change ออกจาก ranking และ traffic Search participation, impressions, clicks และ analytics sessions ตอบคนละคำถาม
- ค่อยตั้ง causal hypothesis ถ้า config, deployment, template update หรือ content pattern ตรงกับหน้าที่ได้รับผลกระทบ มันเป็น candidate cause แต่ยังไม่ใช่ proof
Yandex แนะนำให้ดูเหตุผลการ exclude ที่เฉพาะเจาะจง และหลังแก้ปัญหาจริงแล้วจึงส่งหน้าเพื่อ recrawl วิธีนี้แข็งแรงกว่าการเห็นตัวเลขใหญ่แล้วค่อยหาเรื่องมาอธิบาย
สิ่งที่ผมจะไม่อ้างจากเหตุการณ์นี้
ผมจะไม่เขียนว่า “Yandex ลงโทษเว็บไซต์” เพราะผมไม่ได้พิสูจน์เรื่องนั้น ผมจะไม่บอกว่า crawler แค่ “เลือกมากขึ้น” เพราะประโยคนี้ซ่อนหลายสถานะทางเทคนิคไว้ ผมจะไม่เรียก 2,000 หน้านี้ว่าสูญหายถาวร และจะไม่สมมติว่าทั้งหมดหายด้วยเหตุผลเดียวกันโดยยังไม่ได้ดู status
บทเรียนที่ผมเก็บไว้
การที่ 2,000 จาก 8,000 หน้าหายจาก search ในคืนเดียวยังรู้สึกโหดอยู่ แต่ข้อสรุปที่มีประโยชน์ไม่ใช่ “SEO เป็นเรื่องสุ่ม” ระบบค้นหามีหลายชั้นของสถานะ และก่อนจะอธิบายว่าทำไม ต้องรู้ก่อนว่าชั้นไหนเปลี่ยน
กฎที่ผมใช้คิดเรื่องนี้ง่ายมาก: บันทึก observation ก่อน ปล่อยให้ cause ยังเปิดอยู่ แล้วค่อยใช้ page-level evidence ลดจำนวน hypothesis ลง ตัวเลขคือ 2,000 ส่วนสาเหตุยังเป็นคำถาม