Schema & Structured Data

LiveBlogPosting Schema

Schema cho blog trực tiếp cập nhật sự kiện theo thời gian thực, hỗ trợ đánh dấu các bản cập nhật liên tục.

4 lượt xem Cập nhật: 29/05/2026

LiveBlogPosting Schema là gì?

LiveBlogPosting Schema là một loại markup cấu trúc (structured data) do Schema.org định nghĩa, dùng để đánh dấu các bài blog trực tiếp — tức là nội dung được cập nhật liên tục theo thời gian thực trong suốt một sự kiện đang diễn ra (ví dụ: hội nghị công nghệ, trận đấu thể thao, bầu cử, thảm họa thiên nhiên). Đây không phải là bài viết tĩnh mà là một luồng thông tin sống, với nhiều bản cập nhật (live updates) được thêm vào theo thứ tự thời gian.

Schema này thuộc nhóm BlogPosting, nhưng có đặc điểm riêng: yêu cầu bắt buộc phải có thuộc tính liveBlogUpdate (danh sách các bản cập nhật), và phải chỉ rõ thời điểm bắt đầu (startDate) và kết thúc (endDate) của sự kiện — dù endDate có thể để trống nếu sự kiện chưa kết thúc.

Tại sao quan trọng trong SEO?

LiveBlogPosting Schema giúp công cụ tìm kiếm (đặc biệt là Google) hiểu đúng bản chất nội dung: đây là một luồng thông tin động, không phải bài viết thường. Nhờ đó, Google có thể hiển thị kết quả dưới dạng Live Blog Rich Result — một khối mở rộng trên trang kết quả tìm kiếm (SERP) với thanh tiến trình thời gian, nút “Xem cập nhật mới nhất”, và biểu tượng đồng hồ nhấp nháy — tăng khả năng thu hút click và cải thiện CTR.

Theo tài liệu chính thức từ Google (cập nhật tháng 3/2024), Live Blog Rich Result chỉ xuất hiện khi:

  • Trang đáp ứng đủ điều kiện kỹ thuật (schema hợp lệ + cấu trúc HTML rõ ràng)
  • Sự kiện còn đang diễn ra hoặc vừa kết thúc trong vòng 7 ngày
  • Trang có ít nhất 3 bản cập nhật cách nhau tối thiểu 15 phút
  • Không vi phạm chính sách nội dung của Google (spam, nội dung sai lệch…)

Live Blog Rich Result không ảnh hưởng trực tiếp đến thứ hạng, nhưng giúp tăng độ nổi bật, giữ chân người dùng lâu hơn trên trang, và hỗ trợ trải nghiệm tìm kiếm tốt hơn — yếu tố gián tiếp củng cố tín nhiệm với thuật toán.

Cách hoạt động

LiveBlogPosting Schema hoạt động bằng cách gắn dữ liệu có cấu trúc vào mã nguồn trang (thường ở dạng JSON-LD trong thẻ <head>). Khi Googlebot thu thập trang, nó đọc schema để xác định:

  • Đây là một blog trực tiếp (không phải bài viết đơn lẻ)
  • Sự kiện nào đang được tường thuật (tên, địa điểm, thời gian)
  • Các bản cập nhật đã đăng (mỗi bản có tiêu đề, mô tả, thời gian đăng, URL riêng)
  • Trạng thái hiện tại của sự kiện (đang diễn ra / đã kết thúc)

Google sau đó tổng hợp thông tin này để xây dựng Rich Result — tự động cập nhật khối hiển thị SERP mỗi khi phát hiện bản cập nhật mới (thông qua kiểm tra lại trang hoặc thông báo qua Google Search Console).

Hướng dẫn thực hiện

Dưới đây là các bước triển khai chuẩn, tương thích với yêu cầu của Google:

  1. Chuẩn bị nội dung: Đảm bảo trang có cấu trúc rõ ràng — tiêu đề sự kiện, phần giới thiệu ngắn, danh sách các bản cập nhật theo thứ tự thời gian (mỗi bản có tiêu đề, đoạn tóm tắt, thời gian đăng).
  2. Thêm JSON-LD vào <head>: Không dùng Microdata hay RDFa — Google ưu tiên JSON-LD cho schema loại này.
  3. Khai báo đầy đủ thuộc tính bắt buộc: @context, @type, headline, description, startDate, url, liveBlogUpdate (mảng các bản cập nhật).
  4. Mỗi bản cập nhật phải có: @type = "BlogPosting", headline, datePublished, url, và articleBody (hoặc description nếu không có phần thân riêng).
  5. Xác minh bằng công cụ: Dùng Google Search Console → Báo cáo Hiển thị nâng cao → Kiểm tra lỗi schema. Cũng nên kiểm tra bằng Rich Results Test (công cụ chính thức).

Lỗi thường gặp

Dưới đây là những lỗi phổ biến khiến Live Blog Rich Result không xuất hiện — kèm cách khắc phục:

Lỗi Nguyên nhân Cách khắc phục
Thiếu startDate Thuộc tính bắt buộc nhưng bị bỏ trống hoặc định dạng sai (ví dụ: "2024-05-20" thiếu giờ/phút/giây) Dùng định dạng ISO 8601 đầy đủ: "2024-05-20T09:00:00+07:00". Kiểm tra múi giờ (GMT+7 cho Việt Nam).
Chỉ có 1–2 bản cập nhật Google yêu cầu tối thiểu 3 bản cập nhật, cách nhau ≥15 phút Đăng ít nhất 3 bản, đảm bảo chênh lệch thời gian giữa các datePublished ≥900 giây.
URL bản cập nhật không trỏ tới trang con riêng Một số site dùng cập nhật nội suy (AJAX) trên cùng URL → schema trỏ cùng URL cho mọi bản Mỗi bản cập nhật phải có url riêng (có thể là anchor như #update-1 nếu dùng single-page, nhưng Google khuyến khích URL độc lập).
Thiếu mainEntityOfPage Không bắt buộc nhưng thiếu sẽ làm giảm độ tin cậy của schema Thêm "mainEntityOfPage": {"@id": "[URL-trang-chính]"} vào phần gốc của schema.

Ví dụ thực tế

Dưới đây là đoạn JSON-LD mẫu cho một trang tường thuật trực tiếp Hội nghị Google I/O 2024 (viết tắt, chỉ 2 bản cập nhật để minh họa):

{ "@context": "https://schema.org", "@type": "LiveBlogPosting", "headline": "Tường thuật trực tiếp Google I/O 2024", "description": "Cập nhật nhanh các thông báo mới nhất từ hội nghị nhà phát triển lớn nhất năm.", "url": "https://example.com/io2024-liveblog", "startDate": "2024-05-14T20:00:00+07:00", "endDate": "2024-05-15T02:00:00+07:00", "mainEntityOfPage": { "@id": "https://example.com/io2024-liveblog" }, "liveBlogUpdate": [ { "@type": "BlogPosting", "headline": "Google ra mắt Gemini 2.0", "datePublished": "2024-05-14T20:15:00+07:00", "url": "https://example.com/io2024-liveblog#update-1", "description": "Mô hình AI mới hỗ trợ đa ngôn ngữ và xử lý video thời gian thực." }, { "@type": "BlogPosting", "headline": "Android 15 beta công bố tính năng bảo mật mới", "datePublished": "2024-05-14T20:32:00+07:00", "url": "https://example.com/io2024-liveblog#update-2", "description": "Tính năng Private Space được mở rộng sang thiết bị Android tablet." } ] }

Lưu ý: Trong thực tế, cần ít nhất 3 bản cập nhật và endDate có thể để trống nếu sự kiện chưa kết thúc.

Câu hỏi thường gặp

LiveBlogPosting Schema có hỗ trợ tiếng Việt không?

Có. Google hỗ trợ đầy đủ ngôn ngữ tiếng Việt — miễn là nội dung và schema đều dùng tiếng Việt, định dạng thời gian đúng múi giờ Việt Nam (+07:00), và không vi phạm chính sách nội dung. Không cần phiên bản schema riêng.

Có thể dùng LiveBlogPosting cho sự kiện đã qua không?

Có thể, nhưng Rich Result chỉ hiển thị trong vòng 7 ngày kể từ startDate. Sau khoảng thời gian này, Google vẫn đọc schema nhưng không kích hoạt Rich Result. Nội dung vẫn được lập chỉ mục bình thường.

Cần phải có trang con riêng cho từng bản cập nhật không?

Không bắt buộc, nhưng được khuyến khích. Nếu dùng anchor (#update-1), cần đảm bảo JavaScript tải nội dung đúng vị trí và schema trỏ đúng URL đầy đủ (bao gồm anchor). Tùy trường hợp — một số site thành công với single-page + AJAX, nhưng tỷ lệ hiển thị Rich Result thấp hơn.