CourseInstance Schema
Schema thể hiện một lần tổ chức khóa học cụ thể: thời gian bắt đầu/kết thúc, giảng viên, vị trí, cách thức học.
CourseInstance Schema là gì?
CourseInstance Schema là một loại markup cấu trúc (structured data) thuộc chuẩn schema.org, dùng để mô tả một lần tổ chức cụ thể của một khóa học — không phải khóa học nói chung, mà là phiên bản có thời gian, địa điểm, giảng viên và hình thức học rõ ràng. Ví dụ: ‘Khóa Python nâng cao – Khai giảng ngày 15/09/2024 tại TP.HCM, học trực tiếp và online’.
Schema này mở rộng từ Course, nhưng tập trung vào yếu tố thực thi: khi nào bắt đầu, khi nào kết thúc, ai dạy, ở đâu, học như thế nào. Nó giúp công cụ tìm kiếm hiểu sâu hơn về tính sẵn có và đặc điểm thực tế của khóa học — điều mà chỉ mô tả văn bản thông thường không thể truyền tải đầy đủ.
Tại sao quan trọng trong SEO?
Khi triển khai đúng, CourseInstance Schema hỗ trợ SEO theo ba hướng chính:
- Tăng khả năng xuất hiện trong Rich Results: Google có thể hiển thị kết quả dạng mở rộng với ngày khai giảng, thời lượng, vị trí, nút đăng ký — tăng tỷ lệ nhấp (CTR) lên đến 30% so với kết quả chuẩn (theo dữ liệu kiểm định từ các trang đào tạo lớn tại Việt Nam).
- Cải thiện độ chính xác trong lập chỉ mục: Tránh nhầm lẫn giữa nhiều đợt học cùng tên (ví dụ: ‘IELTS Intensive Tháng 3’ và ‘Tháng 6’) nhờ phân biệt qua
startDate,endDate,location. - Hỗ trợ tích hợp với Google Courses: Từ năm 2023, Google ưu tiên hiển thị các khóa học có schema đầy đủ trong tính năng tìm kiếm chuyên biệt dành cho giáo dục — tuy nhiên yêu cầu bắt buộc phải có
CourseInstance, không chỉCourse.
Lưu ý: Schema không trực tiếp nâng thứ hạng, nhưng gián tiếp cải thiện hiệu suất SEO qua trải nghiệm người dùng và tín hiệu hiểu biết ngữ nghĩa.
Cách hoạt động
CourseInstance Schema hoạt động bằng cách gắn thẻ dữ liệu có cấu trúc vào mã nguồn HTML (hoặc JSON-LD), giúp máy tìm hiểu được mối quan hệ giữa các thành phần: khóa học → lần tổ chức → giảng viên → địa điểm → thời gian. Google đọc và xử lý các thuộc tính bắt buộc như courseCode, startDate, instructor để xác minh tính hợp lệ và xây dựng rich snippet.
Quá trình gồm ba bước: (1) Khai báo lớp cha (Course) để định danh khóa học, (2) Liên kết với CourseInstance để mô tả phiên bản cụ thể, (3) Gắn các thuộc tính thực thi như location, maximumEnrollment, offers. Nếu thiếu bước (2), Google sẽ không nhận diện được đây là một đợt học đang mở đăng ký.
Hướng dẫn thực hiện
Dưới đây là quy trình triển khai chuẩn, áp dụng cho website học trực tuyến hoặc trung tâm đào tạo:
- Xác định khóa học gốc: Đảm bảo đã có
Coursevới@idổn định (ví dụ:https://example.com/course/python-nang-cao). - Chuẩn bị dữ liệu phiên bản: Thu thập đầy đủ thông tin cho từng đợt học: ngày bắt đầu/kết thúc, giảng viên (có thể là
PersonhoặcOrganization), địa điểm (địa chỉ cụ thể hoặcVirtualLocation), hình thức học (OnlineCourse,OfflineCoursehoặc cả hai). - Viết markup JSON-LD: Đặt trong thẻ
<script type=\"application/ld+json\">ở phần<head>hoặc cuối<body>. - Kiểm tra bằng công cụ: Dùng Google Search Console > URL Inspection hoặc Rich Results Test để xác minh không lỗi.
- Theo dõi hiệu quả: Đo lường CTR và số lần hiển thị rich result trong Search Console (tab Enhancements > Course).
Lỗi thường gặp
Dưới đây là những sai sót phổ biến và cách khắc phục:
| Lỗi | Hệ quả | Cách sửa |
|---|---|---|
Thiếu startDate hoặc định dạng sai (ví dụ: 2024-09-15T08:00 thay vì 2024-09-15) |
Google bỏ qua toàn bộ schema | Dùng định dạng ISO 8601 thuần: YYYY-MM-DD cho ngày, không kèm giờ nếu không cần thiết |
Gắn CourseInstance độc lập, không liên kết với Course qua course hoặc sameAs |
Không hiển thị rich result, chỉ được coi là dữ liệu rời rạc | Thêm thuộc tính \"course\": {\"@id\": \"https://example.com/course/python-nang-cao\"} |
Dùng location kiểu chuỗi văn bản (ví dụ: \"TP.HCM\") thay vì Place hoặc VirtualLocation |
Không đạt yêu cầu hiển thị bản đồ hoặc nút ‘Xem trên Google Maps’ | Định nghĩa đầy đủ: \"location\": {\"@type\": \"Place\", \"address\": \"Số 123, Đường ABC, Quận 1, TP.HCM\"} |
Ví dụ thực tế
Dưới đây là đoạn JSON-LD mẫu cho khóa học ‘Lập trình Web Fullstack’ – đợt tháng 10/2024, học tại Hà Nội và online:
{ "@context": "https://schema.org", "@type": "CourseInstance", "course": { "@id": "https://hocvienabc.vn/course/fullstack-web" }, "courseCode": "FS-202410", "startDate": "2024-10-05", "endDate": "2025-01-30", "instructor": { "@type": "Person", "name": "Nguyễn Văn A", "jobTitle": "Senior Developer" }, "location": { "@type": "Place", "address": "Tầng 5, Tòa nhà XYZ, 456 Kim Mã, Ba Đình, Hà Nội" }, "modeOfInstruction": ["BlendedLearning"], "maximumEnrollment": 25, "offers": { "@type": "Offer", "price": "8900000", "priceCurrency": "VND" } }
Lưu ý: Giá trị modeOfInstruction chấp nhận các giá trị chuẩn như BlendedLearning, OnlineOnly, FaceToFace — không được tự đặt tên.
Câu hỏi thường gặp
CourseInstance Schema có bắt buộc phải dùng JSON-LD?
Có — Google chỉ hỗ trợ JSON-LD cho loại schema này. Các định dạng Microdata hay RDFa không được công nhận trong trường hợp CourseInstance.
Một khóa học có thể có nhiều CourseInstance không?
Có — mỗi đợt học riêng biệt (khác ngày, khác địa điểm, khác giảng viên) nên có một CourseInstance riêng. Không gộp nhiều đợt vào một schema.
CourseInstance Schema có hỗ trợ tiếng Việt không?
Có đầy đủ — Google hiểu ngôn ngữ nội dung (title, description) và xử lý schema dựa trên cấu trúc, không phụ thuộc ngôn ngữ. Tuy nhiên, giá trị thuộc tính như address, name nên viết bằng tiếng Việt chuẩn, không dấu thanh sai hoặc ký tự đặc biệt ngoài UTF-8.