Bỏ qua để vào nội dung chính
robots.txt cho AI crawler: chặn train, giữ nguồn trích dẫn

robots.txt cho AI crawler: chặn train, giữ nguồn trích dẫn

Bởi Ryan Patel
10 thg 10, 20264 phút đọc

Chặn GPTBot nhưng giữ trích dẫn: phân biệt bot train và bot search, block robots.txt mẫu copy được, kèm 3 bước kiểm tra lại.

Nếu site của bạn chưa có luật nào cho AI crawler trong robots.txt, nó đang mở cho tất cả. Một hướng dẫn vừa đăng phân loại các bot theo đúng thứ bạn cần quyết định: bot lấy nội dung để train model, và bot lấy nội dung để trả lời và dẫn link về site bạn.

Hai nhóm bot, hai hệ quả khác nhau

Theo bảng phân loại trong bài: GPTBot (OpenAI), ClaudeBot (Anthropic) và CCBot (Common Crawl) thu thập nội dung phục vụ huấn luyện. Ngược lại, OAI-SearchBot, Claude-SearchBot và PerplexityBot index trang để đưa vào câu trả lời kèm trích dẫn. Nhóm thứ ba là các fetcher theo yêu cầu người dùng: ChatGPT-User, Claude-User, Perplexity-User — chỉ fetch khi có người thực sự hỏi.

Đánh đổi được bài viết nêu rất thẳng: "Training crawlers feed future model versions. Blocking them signals that you do not want your content used for future training. It does not remove anything a model has already learned." Còn chặn nhóm search thì "your pages are less likely to be cited when people ask a relevant question. For most sites that want visibility, that is the bigger cost."

Với blog kỹ thuật hoặc site công ty muốn xuất hiện trong câu trả lời AI, lựa chọn mặc định hợp lý là: chặn train, mở search.

Google-Extended không phải là crawler

Đây là chỗ dễ sai nhất. Bài viết nhấn mạnh: "Google-Extended and Applebot-Extended are not separate crawlers. They are opt-out tokens that apply to content already crawled by Googlebot or Applebot. Blocking them does not remove you from Google Search."

Hệ quả thực tế: chặn Google-Extended thì bạn vẫn còn trong Google Search. Nhưng chặn nhầm Googlebot thì bạn biến mất khỏi kết quả tìm kiếm. Hai chuỗi user-agent khác nhau, một chữ cái sai là một tai nạn SEO.

Block mặc định có thể copy

# Training crawlers: opt out
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: CCBot
User-agent: Google-Extended
User-agent: Applebot-Extended
Disallow: /

# Search and answer crawlers: allow
User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: PerplexityBot
User-agent: Perplexity-User
Allow: /

Giữ các luật sẵn có cho Googlebot và * trong group riêng của chúng. Lý do nằm ở cách parser hoạt động, theo bài viết: một crawler chỉ theo group khớp tên nó cụ thể nhất và bỏ qua group *. Nghĩa là nếu GPTBot đã có group riêng, group đó phải chứa đủ mọi luật bạn muốn áp cho GPTBot.

Kiểm tra sau khi sửa

Ba bước xác nhận được bài viết khuyến nghị, làm trong vài phút:

  • Mở https://yoursite.com/robots.txt trên trình duyệt — phải trả 200 và là plain text. Trả 404 nghĩa là không có luật nào, tức mọi thứ đều được phép.
  • Parse thử bằng thư viện chuẩn của Python: RobotFileParser với rp.can_fetch("GPTBot", url) cho từng bot. Bài viết lưu ý parser này không xử lý mọi wildcard giống Google, nên path quan trọng cần test bằng nhiều công cụ.
  • Kiểm tra CDN hoặc WAF. Một luật bot-protection trả 403 sẽ chặn crawler bất kể robots.txt nói gì — kể cả những bot bạn cố tình cho phép.

Và hai giới hạn cần nhớ. Thứ nhất, theo bài viết, robots.txt "is a request, not a lock" — bot đàng hoàng thì tuân thủ, phần còn lại cần chặn ở tầng server hoặc firewall. Thứ hai, chính các vendor cũng lưu ý rằng fetcher kích hoạt bởi người dùng như ChatGPT-User có thể không áp dụng luật robots.txt, nên hãy coi phần đó là best effort.

Việc nên làm tuần này: mở robots.txt của bạn, đếm xem có bao nhiêu trong 11 user-agent ở trên đang được nhắc tên. Nếu con số là 0, bạn chưa đưa ra quyết định nào cả — bạn chỉ đang để mặc định.

Không spam, hủy đăng ký bất kỳ lúc nào.

Bài viết liên quan