Document Outline Algorithm Compliance
Tuân thủ quy tắc tạo dàn ý HTML dựa trên heading và sectioning elements để đảm bảo trình đọc màn hình và crawler hiểu đúng cấu trúc nội dung.
Document Outline Algorithm Compliance là gì?
Document Outline Algorithm Compliance (viết tắt: DOAC) là việc tuân thủ đúng nguyên tắc tạo dàn ý nội dung HTML dựa trên thứ bậc các thẻ heading (h2–h6) và các phần tử phân vùng như <section>, <article>, <nav>, <aside>. Đây không phải tiêu chuẩn bắt buộc của W3C, mà là cách trình duyệt và công cụ hỗ trợ (như trình đọc màn hình) xây dựng bản đồ cấu trúc trang — từ đó xác định mối quan hệ giữa các phần nội dung.
Thuật toán dàn ý (outline algorithm) được mô tả trong tiêu chuẩn HTML5, nhưng hiện tại không có trình duyệt nào thực thi đầy đủ thuật toán này. Tuy nhiên, các công cụ hỗ trợ người khuyết tật (ví dụ: NVDA, JAWS) và một số crawler nâng cao (như Googlebot với chế độ hiểu ngữ nghĩa) vẫn dựa vào cấu trúc heading và sectioning elements để suy luận vai trò, mức độ quan trọng và phạm vi bao phủ của từng khối nội dung.
Tại sao quan trọng trong SEO?
Document Outline Algorithm Compliance ảnh hưởng gián tiếp nhưng rõ rệt đến hiệu quả On-Page SEO qua ba kênh chính:
- Tính truy cập (Accessibility): Trang có dàn ý rõ ràng giúp người dùng khiếm thị điều hướng nhanh hơn — tỷ lệ giữ chân tăng, thời gian ở lại dài hơn — tín hiệu hành vi tích cực gửi về công cụ tìm kiếm.
- Hiểu ngữ nghĩa của crawler: Google khẳng định họ sử dụng thẻ heading để xác định chủ đề phụ, mối liên hệ giữa các phần. Một dàn ý hợp lý giúp bot phân biệt được phần giới thiệu, phần so sánh, phần kết luận — từ đó đánh giá mức độ toàn diện và độ tin cậy của nội dung.
- Tối ưu trải nghiệm người dùng (UX): Dàn ý HTML phản ánh đúng cấu trúc tư duy người viết → người đọc dễ nắm bắt luồng thông tin → giảm tỷ lệ thoát, tăng khả năng chia sẻ và backlink tự nhiên.
Lưu ý: Không có bằng chứng nào cho thấy Google dùng “outline algorithm” như một yếu tố xếp hạng độc lập. Nhưng việc bỏ qua cấu trúc heading và sectioning elements làm mất đi lớp tín hiệu ngữ nghĩa quan trọng — điều mà các đối thủ tuân thủ tốt sẽ tận dụng.
Cách hoạt động
Thuật toán dàn ý hoạt động theo hai nguyên tắc nền tảng:
- Mỗi phần tử sectioning root (
<body>,<section>,<article>,<aside>,<nav>) tạo ra một phạm vi (scope) riêng. Trong phạm vi đó, các thẻ heading xác định cấp độ tiêu đề con — không phụ thuộc vào số thứ tự thẻ (ví dụ:h3trong<article>có thể là tiêu đề cấp 1 của bài viết đó). - Khi không có phần tử phân vùng, trình duyệt hoặc công cụ hỗ trợ sẽ “giả định” cấu trúc dựa trên thứ bậc heading:
h2là cấp cao nhất sauh1,h3là cấp con củah2gần nhất đứng trước nó…
Tuy nhiên, vì không trình duyệt nào hiện nay áp dụng đầy đủ outline algorithm, nên thực tế triển khai chỉ nên dựa vào cách hiểu chung của crawler và công cụ hỗ trợ: heading là cây phân cấp tuyến tính, còn sectioning elements là công cụ bổ sung để làm rõ ngữ cảnh — không thay thế được heading.
Hướng dẫn thực hiện
Dưới đây là 5 bước thiết thực để đạt Document Outline Algorithm Compliance:
- Duy trì thứ bậc heading hợp lý: Không nhảy cấp (ví dụ: từ
h2sangh4mà không cóh3ở giữa), không lặph1(chỉ dùng 1 lần/trang), ưu tiênh2cho tiêu đề phần chính. - Sử dụng sectioning elements có mục đích: Đặt
<article>cho nội dung tự chủ (bài viết, bình luận),<section>cho nhóm nội dung cùng chủ đề,<aside>cho thông tin phụ trợ — không dùng để thay thế CSS class. - Không dùng heading chỉ để định dạng: Nếu cần in đậm/cỡ to nhưng không phải tiêu đề, hãy dùng
<span>+ CSS. Heading luôn phải mang ý nghĩa cấu trúc. - Kiểm tra bằng công cụ hỗ trợ: Dùng trình đọc màn hình (NVDA + Firefox) hoặc extension như HeadingsMap để xem bản đồ heading thực tế — không chỉ dựa vào mã nguồn.
- Tránh lồng ghép quá mức: Không đặt
<section>trong<section>nếu không cần thiết. Mỗi section nên có ít nhất một heading rõ ràng (tùy trường hợp).
Lỗi thường gặp
Dưới đây là những sai lầm phổ biến và cách khắc phục:
| Lỗi | Hệ quả | Cách sửa |
|---|---|---|
Dùng h3 làm tiêu đề chính thay vì h2 |
Crawler có thể hiểu sai mức độ ưu tiên; người dùng khó nhận diện phần quan trọng nhất | Đặt h2 cho tiêu đề phần lớn nhất, dùng h3 cho tiểu mục bên trong |
Thiếu heading trong <section> hoặc <article> |
Phần tử bị coi là “vô danh”, mất ngữ nghĩa, giảm khả năng hiển thị trong kết quả tìm kiếm đặc biệt | Luôn thêm một heading phù hợp (ít nhất h2 hoặc h3) ngay sau mở thẻ section/article |
Dùng <div class="section"> thay vì <section> |
Mất tín hiệu ngữ nghĩa; không hỗ trợ dàn ý, không tương thích với công cụ hỗ trợ | Thay <div class="section"> bằng <section> và bổ sung heading |
Ví dụ thực tế
Dưới đây là đoạn mã HTML đúng chuẩn Document Outline Algorithm Compliance cho một bài viết hướng dẫn SEO:
<main>
<h2>Hướng dẫn tối ưu tiêu đề trang</h2>
<p>Cách viết tiêu đề chuẩn SEO cho trang chủ và trang danh mục...</p>
<section>
<h3>Nguyên tắc cơ bản</h3>
<p>Tiêu đề nên ngắn gọn, chứa từ khóa chính, dưới 60 ký tự...</p>
</section>
<section>
<h3>Cách kiểm tra hiệu quả</h3>
<article>
<h4>Dùng Google Search Console</h4>
<p>Xem tỷ lệ nhấp (CTR) và vị trí trung bình...</p>
</article>
<article>
<h4>Dùng công cụ phân tích SERP</h4>
<p>So sánh với đối thủ cạnh tranh...</p>
</article>
</section>
</main>
Cấu trúc này tạo ra dàn ý rõ ràng: h2 là tiêu đề chính → hai h3 là phần con → hai h4 là phần con của h3 thứ hai. Mỗi <section> và <article> đều có heading — đảm bảo cả crawler và người dùng đều hiểu đúng mối quan hệ.
Câu hỏi thường gặp
Google có sử dụng outline algorithm không?
Không. Google không triển khai thuật toán dàn ý HTML5 đầy đủ. Tuy nhiên, họ phân tích heading và sectioning elements như tín hiệu ngữ nghĩa — đặc biệt trong việc xác định chủ đề phụ và cấu trúc nội dung. Việc tuân thủ DOAC giúp tăng độ chính xác của tín hiệu này.
Có cần dùng hết tất cả sectioning elements không?
Không. Chỉ dùng khi cần biểu đạt rõ ngữ nghĩa: <nav> cho menu điều hướng, <aside> cho thông tin liên quan nhưng không chính, <footer> cho chân trang. Dùng thừa gây nhiễu, không có lợi cho SEO.
Nếu trang không có h2, chỉ dùng h3 trở lên thì sao?
Đây là lỗi phổ biến. Crawler và trình đọc màn hình sẽ thiếu điểm neo khởi đầu cho dàn ý — dẫn đến hiểu sai mức độ quan trọng. Nên luôn bắt đầu phần nội dung chính bằng h2. Trường hợp bất khả kháng (ví dụ: CMS giới hạn), có thể dùng aria-labelledby hoặc role="region" kèm mô tả — nhưng đây là giải pháp thay thế, không phải chuẩn.