Viết xong một bài SEO, phần dễ bỏ sót nhất không nằm ở nội dung mà ở mấy phút cuối trước khi bấm Đăng. Mình gom lại thành 10 dòng, mỗi dòng là một câu hỏi trả lời được bằng "có" hoặc "không". Dòng nào ra "không" thì sửa xong mới đăng.

Danh sách này là phần rà cuối, không thay cho brief hay dàn ý. Nếu bạn cần cả khung từ đầu (brief, heading, ví dụ đã điền), mình đang dùng template bài viết SEO của Mạnh Digital rồi mới chạy 10 dòng này ở cuối.

10 dòng rà trước khi đăng

[ ] 1. Intent: nói được nhiệm vụ của URL này trong một câu [ ] 2. Trả lời trước: 100–150 từ đầu cho người đọc kết luận dùng được [ ] 3. Title + H1: đúng chủ đề, không hứa nhiều hơn nội dung có [ ] 4. Meta description: có lợi ích và điểm khác biệt, không lặp title [ ] 5. Heading: viết theo câu hỏi, không nhồi keyword vào mọi H2 [ ] 6. Nguồn: claim cụ thể (số liệu, chính sách Google) có link tài liệu gốc [ ] 7. Internal link: có pillar, bài liên quan, anchor mô tả đúng trang đích [ ] 8. Ảnh + mobile: ảnh có alt, bảng cuộn ngang được, chữ quan trọng không chỉ nằm trong ảnh [ ] 9. Technical: trả về 200, canonical trỏ chính nó, indexable, nội dung chính có trong HTML ban đầu [ ] 10. Đo lường: đã ghi ngày check index và query cần theo dõi 

Có thể dán khối này vào phần mô tả task, checklist của pull request nếu blog chạy bằng Git, hoặc một ô ghi chú trong CMS.

Ba dòng kiểm bằng terminal cho nhanh

Dòng 9 là dòng hay bị bỏ qua nhất, vì nhìn trên trình duyệt thì bài vẫn hiện bình thường. Ba lệnh dưới đây kiểm phần lớn của nó trong vài giây (thay URL bằng link bài):

# 1) Mã phản hồi cuối cùng, phải là 200 curl -s -o /dev/null -w "%{http_code}\n" -L URL # 2) Canonical và meta robots có trong HTML trả về không curl -sL URL | grep -oiE '<link[^>]+rel="canonical"[^>]*>|<meta[^>]+name="robots"[^>]*>' # 3) Một câu trong đoạn mở bài có nằm sẵn trong HTML ban đầu không curl -sL URL | grep -c "một cụm chữ trong đoạn mở bài" 

Lệnh 3 ra 0 mà trên trình duyệt vẫn thấy chữ thì nhiều khả năng nội dung được JavaScript dựng sau khi tải trang. Không phải lúc nào cũng hỏng, nhưng đáng hỏi lại người làm web trước khi đăng hàng loạt bài cùng kiểu.

Vì sao là "có/không" chứ không chấm điểm

Chấm mỗi mục trên thang 1–5 rất dễ ra kiểu bài nào cũng 3–4 điểm, nhìn thì ổn mà không biết phải sửa gì. Có/không thì mỗi lần ra "không" là có một việc cụ thể phải làm, ví dụ "thêm link nguồn cho con số ở đoạn 2", nên dễ chốt hơn.

Những chỗ hay ra "không"

  • Dòng 2: mở bài kể bối cảnh ba đoạn rồi mới vào câu trả lời.
  • Dòng 6: dẫn một con số "theo nghiên cứu" nhưng không có link.
  • Dòng 7: bài mới đăng không có link nào trỏ vào, kể cả từ bài cùng cụm.
  • Dòng 10: đăng xong là quên, không ai nhớ ngày nào cần xem lại index.

Đọc thêm

Nếu muốn tự động hoá phần kiểm tra template thay vì tick tay, mình có viết cách biến template bài viết chuẩn SEO thành YAML và script Python kiểm tra. Còn bản dàn ý markdown để copy dùng ngay thì ở note HackMD outline bài SEO.

Bạn có dòng nào hay rà mà danh sách này chưa có không? Mình đang muốn thêm một dòng cho phần schema mà chưa chốt được cách hỏi ngắn gọn.