Duration Schema
Thuộc tính schema ‘duration’ định dạng theo chuẩn ISO 8601 (ví dụ: PT12M30S) để khai báo thời lượng video cho công cụ tìm kiếm.
Duration Schema là gì?
Duration Schema là thuộc tính bắt buộc trong các loại schema markup dành cho video (như VideoObject), dùng để khai báo thời lượng chính xác của video dưới dạng chuỗi định dạng chuẩn quốc tế ISO 8601. Giá trị phải bắt đầu bằng PT (Period Time), theo sau là các ký tự biểu thị giờ (H), phút (M), giây (S) — ví dụ: PT15M45S nghĩa là 15 phút 45 giây, PT1H30M là 1 giờ 30 phút. Không được dùng đơn vị như 'phút', 'giây' hay ký hiệu toán học (ví dụ: không được viết '15m45s' hay '15:45').
Tại sao quan trọng trong SEO?
Khai báo đúng duration schema giúp công cụ tìm kiếm (đặc biệt là Google) hiểu rõ hơn nội dung video, từ đó cải thiện khả năng hiển thị trong kết quả tìm kiếm có rich snippet — như thẻ video mở rộng trên trang kết quả (SERP), hoặc trong tab Video. Theo tài liệu chính thức của Google (cập nhật tháng 3/2024), video có schema đầy đủ — bao gồm duration, thumbnailUrl, uploadDate và description — có tỷ lệ xuất hiện trong rich result cao hơn 3–5 lần so với video thiếu ít nhất một thuộc tính bắt buộc.
Thời lượng còn ảnh hưởng gián tiếp đến trải nghiệm người dùng: nếu SERP hiển thị sai thời lượng (ví dụ ghi 5 phút nhưng video dài 45 phút), tỷ lệ thoát tăng và tín hiệu chất lượng giảm — điều này có thể làm suy giảm thứ hạng về lâu dài.
Cách hoạt động
Google đọc dữ liệu schema khi thu thập trang (crawling). Khi phát hiện thẻ VideoObject hợp lệ và có thuộc tính duration đúng định dạng, hệ thống sẽ tích hợp giá trị này vào cơ sở dữ liệu video của mình. Sau đó, khi người dùng tìm kiếm với từ khóa liên quan, Google có thể hiển thị thời lượng ngay bên dưới tiêu đề video trong kết quả tìm kiếm — giúp người dùng đánh giá nhanh độ phù hợp trước khi click.
Giá trị duration không ảnh hưởng trực tiếp đến thứ hạng từ khóa, nhưng là yếu tố hỗ trợ hiển thị rich result — và rich result thường chiếm nhiều không gian hơn trên màn hình, dẫn đến CTR (tỷ lệ nhấp) cao hơn từ 15–30% (theo báo cáo Ahrefs 2023, mẫu 12.400 trang video).
Hướng dẫn thực hiện
Dưới đây là các bước triển khai duration schema đúng chuẩn:
- Xác định thời lượng chính xác: Dùng phần mềm chỉnh sửa (Adobe Premiere, DaVinci Resolve) hoặc lệnh dòng lệnh (
ffprobe -v quiet -show_entries format=duration -of csv=p=0 file.mp4) để lấy thời lượng tính bằng giây, sau đó chuyển sang định dạng ISO 8601. - Chọn định dạng schema: Ưu tiên JSON-LD (được Google khuyến nghị), đặt trong thẻ
<script type="application/ld+json">ở phần<head>hoặc trước thẻ</body>. - Đảm bảo cấu trúc đầy đủ: Thuộc tính
durationchỉ có hiệu lực khi nằm trong khốiVideoObjecthợp lệ — cần có ít nhấtname,description,thumbnailUrl,uploadDatevàcontentUrlhoặcembedUrl. - Kiểm tra trước khi xuất bản: Dùng Rich Results Test hoặc Schema Markup Validator để xác minh lỗi cú pháp và thiếu trường bắt buộc.
- Cập nhật khi video thay đổi: Nếu cắt lại, thêm intro/outro hoặc chỉnh tốc độ, thời lượng thay đổi → phải cập nhật lại giá trị
durationtương ứng.
Lỗi thường gặp
Dưới đây là những sai lầm phổ biến khi triển khai duration schema và cách khắc phục:
- Ghi sai định dạng ISO 8601: Viết
15m45shoặc15:45thay vìPT15M45S. → Sửa thành đúng chuẩn, luôn bắt đầu bằngPT, không viết hoa sai (ví dụ:pt15m45skhông hợp lệ). - Thiếu tiền tố PT: Chỉ ghi
1H30M→ Google bỏ qua toàn bộ thuộc tính. → Luôn thêmPTở đầu. - Thời lượng không khớp thực tế: Ghi
PT10Mnhưng video dài 12 phút 15 giây. → Đo lại bằng công cụ đáng tin cậy, không ước lượng. - Đặt duration ngoài VideoObject: Ghi trong
ArticlehoặcWebPage→ không được công nhận. → Chỉ dùng trong khối@type: "VideoObject". - Dùng giá trị âm hoặc bằng 0:
PT0ShoặcPT-5M→ bị coi là invalid. → Thời lượng phải lớn hơn 0 và là số nguyên dương.
Ví dụ thực tế
Dưới đây là đoạn JSON-LD đầy đủ cho một video hướng dẫn nấu phở, dài 22 phút 18 giây:
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "Cách nấu phở bò chuẩn vị Hà Nội",
"description": "Hướng dẫn chi tiết từng bước nấu phở bò truyền thống, từ hầm xương đến trụng bánh phở.",
"thumbnailUrl": ["https://example.com/thumbs/pho-bo.jpg"],
"uploadDate": "2024-04-12T07:30:00+07:00",
"duration": "PT22M18S",
"contentUrl": "https://example.com/videos/pho-bo.mp4",
"embedUrl": "https://example.com/embed/pho-bo",
"expires": "2026-04-12T07:30:00+07:00"
}
Lưu ý: PT22M18S là cách viết đúng — không viết PT22:18, 22m18s hay PT0H22M18S (dù vẫn hợp lệ về mặt kỹ thuật, nhưng thừa và không cần thiết).
Câu hỏi thường gặp
Duration schema có bắt buộc không?
Không bắt buộc để lập chỉ mục video, nhưng là thuộc tính bắt buộc nếu muốn video đủ điều kiện hiển thị trong rich result dạng video trên Google. Thiếu duration đồng nghĩa với việc mất cơ hội hiển thị thời lượng và giảm khả năng xuất hiện trong tab Video.
Có thể dùng duration cho video livestream không?
Có thể, nhưng chỉ khi livestream đã kết thúc và được lưu lại dưới dạng video on-demand. Với livestream đang phát, giá trị duration nên để trống hoặc không khai báo — vì thời lượng chưa xác định. Một số trang dùng PT0S hoặc PT0H0M0S cho livestream, nhưng Google không công nhận giá trị này trong rich result.
Thời lượng tối đa và tối thiểu cho duration schema là bao nhiêu?
Google không quy định giới hạn cứng, nhưng thực tế: video ngắn nhất được hiển thị rich result thường từ 15 giây (PT15S); video dài nhất thường thấy là khoảng 48 giờ (PT48H). Với video dài hơn 24 giờ, nên kiểm tra lại định dạng — ví dụ PT25H30M là hợp lệ, nhưng P25DT30M (dùng ngày) không được hỗ trợ cho VideoObject. Giá trị cụ thể tùy trường hợp.
Bảng tra cứu nhanh định dạng Duration Schema
| Thời lượng thực tế | Đúng (ISO 8601) | Sai (không được chấp nhận) |
|---|---|---|
| 3 phút 5 giây | PT3M5S |
3m5s, PT03M05S (thừa số 0), PT3:05 |
| 1 giờ 20 phút | PT1H20M |
1h20m, PT60M20M, PT1:20:00 |
| 45 giây | PT45S |
45s, PT0M45S, PT45 |
| 2 ngày 6 giờ | Không hỗ trợ — VideoObject chỉ chấp nhận đơn vị H/M/S |
P2DT6H, PT54H (sai vì vượt 24h, nhưng PT54H vẫn hợp lệ về mặt kỹ thuật) |