วิธีบล็อก AI Crawler ใน WordPress (แบบตรงไปตรงมา)
หากต้องการหยุดไม่ให้ GPTBot เข้ามาเก็บข้อมูลเว็บ WordPress ให้เพิ่มบรรทัดเหล่านี้ลงใน robots.txt:
เผยแพร่แล้ว
หากต้องการหยุดไม่ให้ GPTBot เข้ามาเก็บข้อมูลเว็บ WordPress ให้เพิ่มบรรทัดเหล่านี้ลงใน robots.txt:
User-agent: GPTBot
Disallow: /
เท่านี้ก็จบสำหรับ crawler ที่ทำตัวดีมีมารยาท แต่ต้องเข้าใจตรงกันก่อนว่าสิ่งที่คุณเพิ่งทำไปคืออะไร robots.txt เป็นแค่ “คำขอ” ไม่ใช่ “รั้ว” GPTBot ของ OpenAI จะดึงไฟล์นี้ไปอ่านแล้วทำตาม แต่ scraper ที่ไม่เคารพมาตรฐานก็ดึงไฟล์เดียวกันนี้ไปแล้วเมินทุกบรรทัดในนั้นได้เหมือนกัน จำความต่างตรงนี้ไว้ให้ดีก่อนจะเสียเวลาทั้งบ่ายมานั่งปรับแต่งมัน
ถ้าอยากครอบคลุม AI crawler รายใหญ่ ๆ ในทีเดียว token ของ user-agent ที่พบบ่อยคือ:
User-agent: GPTBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: PerplexityBot
Disallow: /
User-agent: Bytespider
Disallow: /
GPTBot คือ crawler สำหรับเทรนโมเดลของ OpenAI, CCBot คือ Common Crawl (ซึ่งหลายโมเดลนำไปใช้เทรนต่อ), ClaudeBot คือของ Anthropic, Google-Extended คือ token สำหรับการเทรน AI ของ Google และ Bytespider คือของ ByteDance ข้อสังเกตคือมีสองตัวในนี้ที่ทำลายกติกา “ขออย่างสุภาพ” ไปแล้ว: Bytespider และ PerplexityBot ต่างมีหลักฐานเปิดเผยว่าเคยเข้าไปเก็บข้อมูลเว็บที่สั่ง disallow มันไว้ การใส่ชื่อพวกมันลงไปยังช่วยกันบอทที่ซื่อสัตย์ได้อยู่ แต่ไม่มีผลอะไรเลยกับพวกที่โกหกเรื่องตัวตนของมันมาตั้งแต่แรก
WordPress ให้บริการ robots.txt จริง ๆ อย่างไร
ตรงนี้แหละที่การแก้ไขของคนส่วนใหญ่ไม่เกิดผลอะไรเลยแบบเงียบ ๆ ถ้า ไม่มี ไฟล์ robots.txt จริงอยู่ใน web root ของคุณ WordPress จะสร้างมันขึ้นมาให้แบบ on the fly โดยคำขอนี้จะถูกจัดการด้วย do_robots() ใน wp-includes/functions.php และผลลัพธ์จะถูกส่งผ่าน filter robots_txt อีกที ส่วนช่องติ๊ก “Discourage search engines from indexing this site” ใต้ Settings → Reading จะไปสลับค่า blog_public ซึ่งเป็นตัวที่ทำให้ไฟล์เสมือนตัวนั้นพ่น Disallow: / ออกมา
ดังนั้นคุณจึงต่อกฎ AI-crawler เข้าไปด้วยโค้ดได้:
add_filter( 'robots_txt', function ( $output, $public ) {
$output .= "User-agent: GPTBot\nDisallow: /\n";
return $output;
}, 10, 2 );
และนี่คือกับดักที่กินเวลาเป็นชั่วโมง: ทันทีที่มีไฟล์ robots.txt แบบ static อยู่ใน web root ของคุณ Apache หรือ nginx จะส่งไฟล์นั้นออกไปตรง ๆ และ WordPress จะไม่ถูกเรียกใช้เลย ทั้ง filter robots_txt, ตัวแก้ robots ของ Yoast/Rank Math, และค่าใน Reading — ถูกข้ามหมด ถ้าคุณแก้ robots.txt ในปลั๊กอิน wordpress แล้วไฟล์จริงไม่เปลี่ยนสักที เกือบทุกครั้งสาเหตุมาจากเรื่องนี้ ลองเปิด https://yoursite.com/robots.txt ในหน้าต่างส่วนตัวแล้วเทียบกับสิ่งที่คุณคิดว่าตั้งไว้ ถ้ามีไฟล์จริงอยู่บนดิสก์ ให้ไปแก้ไฟล์นั้น เพราะ filter ไม่มีความหมายอะไรเลย
แก้ทีละขั้น ตามลำดับ
ขั้นแรก เขียนกฎให้สะอาด จัดรูปแบบ syntax และรายชื่อ crawler ให้ถูก เพื่อไม่ให้เผลอไปบล็อก Googlebot เข้า ตัวสร้าง robots.txt ของเราจะสร้างบล็อก AI-crawler ให้คุณและแสดงไฟล์เป๊ะ ๆ ให้คัดลอกไปวาง ซึ่งช่วยเลี่ยงความสับสนระหว่างไฟล์เสมือนกับไฟล์จริง เพราะสุดท้ายคุณจะได้ไฟล์ที่มีอำนาจตัวเดียวมาไว้ในมือ
ขั้นสอง ยืนยันว่ามันทำงานจริง ดึง URL ตรง ๆ มาดู อย่าไปเชื่อหน้าพรีวิวของปลั๊กอิน
ขั้นสาม ถ้าต้องการ “บังคับ” ไม่ใช่แค่ “ขออย่างสุภาพ” ให้ขยับขึ้นไปในสแตก robots.txt อยู่ที่ชั้นแอปพลิเคชันและต้องพึ่งความสมัครใจของบอท หากอยากปฏิเสธการเชื่อมต่อจริง ๆ ต้องบล็อกตาม user agent ที่ชั้นเซิร์ฟเวอร์ ใน .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (GPTBot|CCBot|ClaudeBot|Bytespider) [NC]
RewriteRule .* - [F,L]
</IfModule>
โค้ดนี้จะคืนค่า 403 ให้กับทุกอย่างที่ส่ง user agent เหล่านั้นมา ตัวสร้าง .htaccess ของเราช่วยประกอบกฎนี้ให้ได้ แต่ต้องเข้าใจข้อจำกัดของมันด้วย: user agent ปลอมแปลงได้ง่ายมาก ดังนั้นวิธีนี้จึงหยุดได้เฉพาะบอทที่ซื่อสัตย์พอจะบอกตัวตนจริง ๆ ซึ่งก็คือบอทกลุ่มเดียวกับที่ทำตาม robots.txt อยู่แล้วนั่นเอง ทางเลือกที่แข็งแรงจริงคือ CDN หรือ WAF ที่บล็อกตามตัวตนของ crawler ที่ผ่านการตรวจสอบแล้ว หรือบล็อกตามช่วง IP กฎแบบจัดการสำเร็จรูป “Block AI Scrapers and Crawlers” กดปุ่มเดียวของ Cloudflare คือเวอร์ชันที่ออกแรงน้อยที่สุดของแนวทางนี้ และทำงานที่ edge ก่อนที่คำขอจะไปถึง WordPress ด้วยซ้ำ
สิ่งที่ไม่ควรทำ
อย่าบล็อก Google-Extended เพราะคิดว่ามันจะกันคุณออกจาก AI Overviews นี่คือความเข้าใจผิดที่ควรแก้ให้ตรง Google-Extended เป็น product token ไม่ใช่ crawler มันควบคุมแค่ว่าเนื้อหาของคุณจะถูกนำไปใช้เทรนและอ้างอิงโมเดล Gemini หรือไม่เท่านั้น ตามเอกสารของ Google เองระบุว่ามัน ไม่มีผลใด ๆ ต่อการที่หน้าเว็บของคุณถูก crawl, index หรือจัดอันดับใน Google Search และ AI Overviews ก็สร้างขึ้นจากดัชนี Search ปกติที่ Googlebot เก็บมา ไม่ได้มาจาก Google-Extended การบล็อก Google-Extended จะไม่เอาคุณออกจาก AI Overviews และจะไม่ทำให้คุณเสียอันดับใน Search แม้แต่ตำแหน่งเดียว วิธีเดียวที่จะอยู่นอก AI Overviews คือบล็อก Googlebot หรือใส่ noindex ให้หน้านั้น ซึ่งก็จะลบคุณออกจาก Search ไปทั้งหมดด้วย นั่นแทบไม่เคยเป็นการแลกที่คุ้มค่าเลย
อย่ามอง robots.txt เป็นมาตรการรักษาความปลอดภัย มันเป็นสาธารณะและเป็นเพียงคำแนะนำ การไปใส่ /wp-admin/ หรือ path ลับ ๆ ลงในนั้นเท่ากับประกาศแผนที่บอกว่าให้ไปมองที่ไหน จงปกป้อง endpoint จริง ๆ ด้วยการยืนยันตัวตน ไม่ใช่ด้วยบรรทัด disallow
อย่าพึ่ง meta tag noai / noimageai พวกมันแค่ถูกเสนอ ไม่ได้เป็นมาตรฐาน และมีเพียงไม่กี่แพลตฟอร์มที่ยอมทำตาม จึงไม่ใช่การป้องกันแบบทั่วไป
อย่าคิดเอาเองว่าปลั๊กอิน wordpress ประเภท “block AI” ทำอะไรมากกว่าการเขียน robots.txt ส่วนใหญ่มันก็เขียนบรรทัดเดียวกับที่คุณเขียนเองด้วยมือได้ และรับข้อจำกัดเดียวกันมาด้วย อ่านให้ชัดว่าปลั๊กอินเปลี่ยนอะไรจริง ๆ ก่อนจะไว้ใจมัน
ยังติดอยู่ใช่ไหม?
ถ้าการแก้ไขของคุณไม่ปรากฏผล คำตอบเกือบทุกครั้งคือมีไฟล์ robots.txt จริงหลงเหลืออยู่ใน web root ที่ไปทับไฟล์เสมือนของ WordPress — ดึง URL ตรง ๆ มาเช็ก ถ้าบอทที่ทำตามกฎหายไปหมดแล้วแต่ scraper ยังถล่มคุณอยู่ แสดงว่าคุณชนเพดานของสิ่งที่ robots.txt ทำได้แล้ว และก้าวต่อไปคือกฎของ WAF หรือ CDN ที่บล็อกตามตัวตนที่ผ่านการตรวจสอบ ไม่ใช่แค่ขออย่างสุภาพ