Mục lục bài viết
Video là định dạng nội dung đang được AI search ưu tiên hơn bao giờ hết. Perplexity trích dẫn video trong câu trả lời, ChatGPT với search dẫn đến YouTube, Google AI Overviews nhúng video clips. Nhưng để AI "thấy" và "hiểu" video của bạn — cần VideoObject schema.
Đây là hướng dẫn đầy đủ để khai báo VideoObject schema đúng cách, từ các trường cơ bản đến Key Moments nâng cao.
Tại sao VideoObject Schema quan trọng với AEO
Khi AI đọc trang web của bạn, nó thấy hai loại thông tin về video:
| Không có Schema | Có VideoObject Schema | |
|---|---|---|
| AI nhận biết video | Phải đoán từ HTML | Rõ ràng, chính xác |
| Tiêu đề video | Lấy từ h1 hoặc title tag | Từ name — chính xác |
| Thời lượng | Không biết | ISO 8601 duration |
| Ngày upload | Không chắc | uploadDate — xác định |
| Nội dung video | Đoán từ text xung quanh | description — đầy đủ |
| Key moments | Không có | Clips có timestamp |
| Google rich results | Ít khả năng | Đủ điều kiện Video Carousel |
VideoObject schema không chỉ tốt cho SEO — nó là ngôn ngữ để AI parse video content một cách có cấu trúc.
Tất cả trường VideoObject — mức độ ưu tiên
| Trường | Loại | Ưu tiên | Ghi chú |
|---|---|---|---|
name | Text | Bắt buộc | Tiêu đề video |
description | Text | Bắt buộc | 150-300 từ, mô tả nội dung |
thumbnailUrl | URL | Bắt buộc | ≥1280×720, JPG/PNG |
uploadDate | Date (ISO 8601) | Bắt buộc | YYYY-MM-DD |
duration | Duration (ISO 8601) | Bắt buộc | PT5M30S |
contentUrl | URL | Rất cao | URL trực tiếp file video |
embedUrl | URL | Rất cao | URL iframe nhúng |
author | Person/Organization | Cao | Ai tạo video |
publisher | Organization | Cao | Ai xuất bản |
dateModified | Date | Cao | Ngày cập nhật gần nhất |
inLanguage | Language | Trung bình | vi, en, zh |
regionsAllowed | Text | Khi cần | Nếu giới hạn vùng |
hasPart | Clip[] | Nâng cao | Key moments/chapters |
interactionStatistic | InteractionCounter | Thấp | Lượt xem |
keywords | Text | Thấp | Từ khóa liên quan |
JSON-LD VideoObject đầy đủ
{
"@context": "https://schema.org",
"@type": "VideoObject",
"@id": "https://example.vn/blog/aeo-la-gi#video",
"name": "AEO là gì? Tối ưu cho AI Search trong 10 phút",
"description": "Video hướng dẫn đầy đủ về Answer Engine Optimization (AEO): định nghĩa, tại sao quan trọng với doanh nghiệp Việt Nam năm 2026, và 3 bước đầu tiên để bắt đầu tối ưu cho ChatGPT, Perplexity và Google AI Overviews.",
"thumbnailUrl": "https://example.vn/images/aeo-la-gi-thumb.jpg",
"uploadDate": "2026-08-10",
"duration": "PT10M45S",
"contentUrl": "https://example.vn/videos/aeo-la-gi.mp4",
"embedUrl": "https://www.youtube.com/embed/dQw4w9WgXcQ",
"author": {
"@type": "Person",
"@id": "https://example.vn/tac-gia/tran-minh-duc",
"name": "Trần Minh Đức"
},
"publisher": {
"@type": "Organization",
"@id": "https://example.vn",
"name": "AEO Saigon",
"logo": {
"@type": "ImageObject",
"url": "https://example.vn/icon.svg"
}
},
"dateModified": "2026-08-10",
"inLanguage": "vi",
"hasPart": [
{
"@type": "Clip",
"name": "AEO là gì?",
"startOffset": 0,
"endOffset": 90,
"url": "https://www.youtube.com/embed/dQw4w9WgXcQ?start=0"
},
{
"@type": "Clip",
"name": "Tại sao AI search quan trọng năm 2026",
"startOffset": 91,
"endOffset": 240,
"url": "https://www.youtube.com/embed/dQw4w9WgXcQ?start=91"
},
{
"@type": "Clip",
"name": "3 bước tối ưu AEO đầu tiên",
"startOffset": 241,
"endOffset": 480,
"url": "https://www.youtube.com/embed/dQw4w9WgXcQ?start=241"
},
{
"@type": "Clip",
"name": "Công cụ đo lường AI visibility",
"startOffset": 481,
"endOffset": 645,
"url": "https://www.youtube.com/embed/dQw4w9WgXcQ?start=481"
}
],
"interactionStatistic": {
"@type": "InteractionCounter",
"interactionType": "https://schema.org/WatchAction",
"userInteractionCount": 1500
}
}
Định dạng ISO 8601 cho duration
Đây là trường hay bị sai nhất:
| Thời lượng thực | Định dạng đúng | Lỗi thường gặp |
|---|---|---|
| 30 giây | PT30S | P0DT0H0M30S |
| 5 phút | PT5M | PT5M0S (không sai, nhưng dư) |
| 5 phút 30 giây | PT5M30S | PT5:30 |
| 1 giờ | PT1H | PT60M |
| 1 giờ 15 phút | PT1H15M | PT75M |
| 2 giờ 3 phút 45 giây | PT2H3M45S | P2H3M45S (thiếu T) |
Quy tắc: P bắt đầu, T ngăn cách ngày và giờ/phút/giây. Nếu không có ngày — PT rồi đến giờ (H), phút (M), giây (S).
Thumbnail tối ưu cho Video rich results
Google có yêu cầu nghiêm ngặt về thumbnail hơn bạn nghĩ:
Kích thước tối thiểu:
- Khuyến nghị: 1280×720 (16:9)
- Tối thiểu: 640×360
- Tỷ lệ khác (4:3, 1:1) được chấp nhận nhưng sẽ bị crop
Nội dung thumbnail:
- Phải là frame thực từ video (không phải banner quảng cáo)
- Không được có overlay văn bản che quá 30% diện tích
- Phải match nội dung video — Google kiểm tra điều này
- Tránh thumbnail clickbait (mặt ngạc nhiên giả tạo, mũi tên chỉ ngẫu nhiên)
Kỹ thuật:
- Host ảnh trên cùng domain với website (không dùng CDN bên thứ 3 nếu có thể)
- URL ổn định — đừng thay đổi URL thumbnail sau khi index
- Khai báo
widthvàheighttrong ImageObject nếu dùng object thay vì URL string
Triển khai trong Next.js App Router
// app/[lang]/blog/[slug]/page.tsx
import { type VideoObject, type WithContext } from "schema-dts";
function generateVideoSchema(video: VideoData): WithContext<VideoObject> {
return {
"@context": "https://schema.org",
"@type": "VideoObject",
"@id": `${siteUrl}/blog/${video.slug}#video`,
name: video.title,
description: video.description,
thumbnailUrl: video.thumbnailUrl,
uploadDate: video.uploadDate,
duration: video.duration, // ISO 8601
embedUrl: video.youtubeEmbedUrl,
author: {
"@type": "Person",
"@id": `${siteUrl}/tac-gia/${video.authorSlug}`,
name: video.authorName,
},
publisher: {
"@type": "Organization",
"@id": siteUrl,
name: "AEO Saigon",
},
dateModified: video.dateModified,
inLanguage: lang,
...(video.clips && {
hasPart: video.clips.map((clip) => ({
"@type": "Clip" as const,
name: clip.name,
startOffset: clip.start,
endOffset: clip.end,
url: `${video.youtubeEmbedUrl}?start=${clip.start}`,
})),
}),
};
}
Kiểm tra VideoObject schema
Công cụ bắt buộc:
-
Rich Results Test — kiểm tra video có đủ điều kiện rich results không, hiển thị lỗi/warning cụ thể
-
Schema Markup Validator — validate syntax JSON-LD, phát hiện lỗi format
-
Google Search Console — mục "Video" trong Enhancement reports, hiển thị video nào đã được index và có issues
Lỗi phổ biến:
| Lỗi | Nguyên nhân | Cách fix |
|---|---|---|
| "Thumbnail not accessible" | URL thumbnail bị chặn bởi robots.txt hoặc yêu cầu auth | Cho phép Googlebot crawl thumbnail |
| "Duration format invalid" | Sai format ISO 8601 | Kiểm tra lại theo bảng trên |
| "Upload date in future" | uploadDate sai múi giờ | Dùng UTC hoặc ghi rõ timezone |
| "Video not prominent" | Video nhúng quá nhỏ hoặc ở cuối trang | Đặt video trong viewport đầu tiên |
| "Thumbnail doesn't match video" | Thumbnail không liên quan đến nội dung | Dùng frame thực từ video |
Video trên Landing Page vs Blog
VideoObject schema hoạt động tốt nhất khi:
Landing page (1 video chính):
- Video giải thích sản phẩm/dịch vụ → VideoObject riêng lẻ
- Kết hợp với Product hoặc Service schema qua
subjectOf - Thumbnail = frame ấn tượng nhất, không phải logo
Blog post có video đính kèm:
- Bài viết = Article schema, video = VideoObject schema
- Kết nối qua: Article
video→ VideoObject - Video nên là bổ sung cho bài viết, không chỉ nhúng YouTube cho có
Trang FAQ có video trả lời:
- FAQPage schema + VideoObject trong từng Answer
- Đây là format AI search đặc biệt ưa thích — câu hỏi + video trả lời
Nội dung video càng rõ ràng về cấu trúc (chapters, timestamps, transcript), AI càng dễ trích dẫn và hiển thị. VideoObject schema là bước đầu tiên — sau đó là chất lượng nội dung thực sự trong video.
Câu hỏi thường gặp
VideoObject schema có bắt buộc để video xuất hiện trên Google không?
Không bắt buộc — Google có thể phát hiện video mà không cần schema. Nhưng VideoObject schema tăng đáng kể cơ hội xuất hiện trong Video rich results (thumbnail + tiêu đề + thời lượng ngay trên trang kết quả), và là yêu cầu bắt buộc để đủ điều kiện Video Carousel. Với AI search: Perplexity và ChatGPT ưu tiên trích dẫn video có schema vì dễ parse hơn.
YouTube video có cần thêm VideoObject schema không?
YouTube tự động khai báo VideoObject schema cho video của bạn — bạn không cần và không thể thêm schema vào trang YouTube. Nhưng nếu bạn nhúng video YouTube trên website riêng của mình, bạn NÊN thêm VideoObject schema cho trang đó. Điều này giúp Google và AI hiểu rằng trang web của bạn là nguồn thông tin chính về video đó.
Trường nào trong VideoObject schema quan trọng nhất?
Theo thứ tự ưu tiên: (1) name — tiêu đề chính xác; (2) thumbnailUrl — ảnh thumbnail chất lượng cao (ít nhất 1280×720); (3) uploadDate — ngày upload theo ISO 8601; (4) description — mô tả 150-300 từ; (5) duration — theo định dạng ISO 8601 (PT5M30S = 5 phút 30 giây). Thiếu bất kỳ trường nào trong 5 trường này có thể khiến video không đủ điều kiện Video rich results.
Clip schema và SeekToAction là gì và có cần thiết không?
Clip schema và SeekToAction cho phép Google hiển thị 'Key moments' (các mốc thời gian quan trọng) trong video ngay trên trang kết quả — người dùng có thể nhảy thẳng đến phần họ cần. Đây là tính năng nâng cao, không bắt buộc, nhưng rất hiệu quả cho video dài trên 5 phút. Key moments tăng CTR đáng kể (đặc biệt trên mobile) và giúp AI hiểu cấu trúc nội dung video.
Một trang có nhiều video thì khai báo schema như thế nào?
Nếu trang có 1 video chính — đặt VideoObject trong ItemList hoặc độc lập. Nếu trang là gallery nhiều video — dùng ItemList chứa nhiều VideoObject. Lưu ý: Google thường chỉ index video xuất hiện nổi bật (prominent) trên trang, không phải video nhúng nhỏ ở cuối. Đảm bảo video chính hiển thị trong viewport đầu tiên.
AEO Saigon
Agency Answer Engine Optimization tại TP. Hồ Chí Minh — giúp website doanh nghiệp được AI trích dẫn. Về AEO Saigon →
Muốn website của bạn được AI trích dẫn như vậy?
Audit miễn phí