0

Gửi sitemap 691 URL mà Google index 0 trang: mình đã dọn site do AI agent sinh ra thế nào (3.744 → 863 trang)

Mình là lập trình viên, mấy tuần nay một mình làm một trang thông tin tiếng Hàn (cuộc thi, trợ cấp, máy tính lương, công thức nấu ăn) cùng với một AI coding agent (Claude Code): agent lên kế hoạch, viết code, deploy và debug cùng mình. Site là static, build lại mỗi giờ, chạy trên GitHub Pages và gói miễn phí của Cloudflare Workers/D1.

Bài này ghi lại một lỗi mà agent tạo ra mà mình không hề yêu cầu: sinh quá nhiều trang mỏng, và cách mình sửa để Google bắt đầu chú ý tới site.

Tình huống

  • Sau 2 ngày, repo có 3.744 file HTML.
  • Mình gửi sitemap 691 URL lên Google Search Console. Kết quả: 0 trang được index.
  • Nguyên nhân chính:
    • Trang dịch máy từ dự án cũ còn sót lại (tiếng Anh, Nhật, Trung), 810 trang mỗi ngôn ngữ.
    • Mỗi thông báo hay từ khóa đều thành một trang riêng, nhưng gần như không có nội dung riêng.

Mình đã đổi gì (số liệu đếm lại từ commit)

Bước Trước Sau
Xóa trang đa ngôn ngữ cũ và trang redirect cũ 3.744 file 1.311
Trang chi tiết có dưới 200 ký tự nội dung riêng → noindex, bỏ khỏi sitemap sitemap 1.329 URL 615
Không sinh file cho các trang noindex nữa; một màn hình đọc dữ liệu hiển thị cùng nội dung 1.446 file 863

Cách đo "trang mỏng"

Sau khi build, với mỗi trang chi tiết: bỏ header, footer, menu dùng chung, rồi đếm số ký tự còn lại. Dưới 200 thì tự động gắn noindex. Ví dụ rút gọn:

def do_dai_noi_dung_rieng(html, phan_chung):
    text = lay_noi_dung_chinh(html)  # bỏ header/footer
    dong = [d for d in text.splitlines() if d.strip() and d.strip() not in phan_chung]
    return sum(len(d) for d in dong)

if do_dai_noi_dung_rieng(html, PHAN_CHUNG) < 200:
    gan_noindex(duong_dan)
    sitemap.discard(url)

Ngưỡng 200 không phải chuẩn chính thức, mình chọn sau khi xem phân bố độ dài các trang của chính site.

lastmod phải trung thực

Vì build mỗi giờ, nếu lấy thời điểm build làm lastmod thì trang nào cũng "vừa cập nhật". Giờ lastmod chỉ đổi khi hash của nội dung chính thay đổi.

Bài học khi giao việc cho AI agent

  1. Đếm trước khi xóa. Không chấp nhận câu trả lời "đã giảm nhiều trang", mà yêu cầu đếm số file theo từng commit.
  2. Quy tắc phải là code. Thay vì "xóa trang yếu", yêu cầu một tiêu chí chạy lại lúc nào cũng cho cùng kết quả.
  3. Redirect trước, xóa sau. URL bị xóa sẽ thành 404 với những ai đã link tới.

Bản gốc có số liệu theo từng commit (tiếng Hàn, dùng dịch của trình duyệt là đọc được): https://sungprofile.cloud/dev/search-index-cleanup/?utm_source=viblo&utm_medium=referral&utm_campaign=ai_2610


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí