Trong thời đại số hoá, việc quảng bá khoá học trực tuyến không chỉ dừng lại ở việc tạo nội dung chất lượng mà còn phụ thuộc vào cách Google hiểu và hiển thị thông tin khoá học của bạn. Dữ liệu có cấu trúc về thông tin khoá học là một công cụ mạnh mẽ, giúp Google hiểu rõ hơn về nội dung khoá học của bạn, từ đó nâng cao khả năng xuất hiện của nó trong kết quả tìm kiếm. Bài viết này sẽ hướng dẫn bạn cách triển khai dữ liệu có cấu trúc để tối ưu hoá nội dung khoá học, từ đó thu hút nhiều học viên tiềm năng hơn.
Bạn có thể tối ưu hóa khả năng hiển thị của nội dung khoá học trên Google bằng cách triển khai dữ liệu có cấu trúc theo chuẩn thông tin khoá học. Khi bạn cung cấp các thông tin chi tiết về khoá học như xếp hạng của người dùng, giá cả, và mô tả chi tiết về khoá học, Google sẽ hiểu rõ hơn về nội dung của bạn. Điều này giúp cải thiện trải nghiệm người dùng và tăng cường khả năng xuất hiện của khoá học trong kết quả tìm kiếm dạng rich results.
Có hai loại rich results mà bạn có thể kích hoạt cho khoá học bằng cách sử dụng mã đánh dấu Course từ schema.org. Nếu trang web của bạn chứa thông tin về các khoá học, bạn có thể đủ điều kiện để sử dụng cả hai tính năng này bằng cách tuân thủ hướng dẫn triển khai:
- Danh sách khoá học: Đây là dạng rich result liệt kê các khoá học khác nhau thuộc cùng một trang web, giúp người dùng dễ dàng so sánh và chọn lựa.
- Thông tin khoá học: Đây là dạng băng chuyền hiển thị chi tiết các khoá học từ nhiều trang web khác nhau, cung cấp cho người dùng cái nhìn toàn diện về các lựa chọn học tập.
Phạm vi cung cấp tính năng
Rich results cho thông tin khoá học hiện tại chỉ được hỗ trợ bằng tiếng Anh ở tất cả các khu vực mà Google Tìm kiếm hoạt động. Trong tương lai, chúng tôi kỳ vọng sẽ mở rộng hỗ trợ này cho các ngôn ngữ khác ngoài tiếng Anh.
Cách triển khai dữ liệu có cấu trúc
Dữ liệu có cấu trúc là một tiêu chuẩn định dạng giúp trình bày thông tin về một trang web và phân loại nội dung trên trang. Nếu bạn mới bắt đầu với dữ liệu có cấu trúc, bạn có thể tìm hiểu thêm về nguyên tắc hoạt động và cách thức triển khai dữ liệu này.
Dưới đây là tổng quan về các bước cần thực hiện để xây dựng, kiểm tra và phát hành dữ liệu có cấu trúc. Để có hướng dẫn chi tiết về cách thêm dữ liệu có cấu trúc vào trang web, bạn nên tham khảo các khóa học lập trình liên quan đến dữ liệu có cấu trúc.
Các bước triển khai:
- Thêm các thuộc tính bắt buộc: Tùy thuộc vào định dạng mà bạn đang sử dụng, hãy xác định vị trí thích hợp để chèn mã dữ liệu có cấu trúc trên trang của bạn.
- Nếu bạn đang sử dụng CMS, hãy cân nhắc việc sử dụng các plugin có sẵn để tích hợp dữ liệu có cấu trúc dễ dàng hơn.
- Nếu trang của bạn sử dụng JavaScript, bạn nên tìm hiểu cách triển khai dữ liệu có cấu trúc thông qua mã JavaScript.
- Tuân thủ các nguyên tắc: Hãy chắc chắn rằng bạn tuân thủ các nguyên tắc của Google để dữ liệu có cấu trúc của bạn đủ điều kiện hiển thị dưới dạng rich results.
- Xác thực mã: Sử dụng công cụ kiểm tra rich results của Google để xác thực mã và sửa các lỗi nghiêm trọng. Mặc dù việc sửa các lỗi nhỏ không phải là bắt buộc, nhưng nó có thể cải thiện chất lượng dữ liệu có cấu trúc của bạn.
- Triển khai và kiểm tra: Sau khi thêm dữ liệu có cấu trúc vào một số trang, hãy sử dụng công cụ kiểm tra URL để xem Google nhận diện trang của bạn như thế nào. Đảm bảo rằng Google có thể truy cập trang của bạn và không bị chặn bởi robots.txt, thẻ noindex hoặc yêu cầu đăng nhập. Nếu trang không gặp vấn đề, bạn có thể yêu cầu Google thu thập lại dữ liệu các URL đó.
Lưu ý quan trọng: Hãy kiên nhẫn chờ đợi trong quá trình Google thu thập lại dữ liệu và lập chỉ mục các trang mới. Quá trình này có thể mất vài ngày sau khi bạn xuất bản trang. - Gửi hồ sơ trang web: Để thông báo cho Google về các thay đổi trên trang, hãy gửi sơ đồ trang web (sitemap). Bạn có thể tự động hóa việc này thông qua Search Console Sitemap API để đảm bảo Google luôn cập nhật nội dung mới nhất trên trang web của bạn.
Ví dụ
Dưới đây là một ví dụ về cách triển khai dữ liệu có cấu trúc cho một trang web cung cấp thông tin chi tiết về một khoá học cụ thể.
<html>
<head>
<title>Introduction to Computer Science and Programming</title>
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@id": "https://www.example.com/advancedCpp",
"@type": "Course",
"name": "Learn Advanced C++ Topics",
"description": "Improve your C++ skills by learning advanced topics.",
"publisher": {
"@type": "Organization",
"name": "CourseWebsite",
"url": "www.examplecoursewebsite.com"
},
"provider": {
"@type": "Organization",
"name": "Example University",
"url": "www.example.com"
},
"image": [
"https://example.com/photos/1x1/photo.jpg",
"https://example.com/photos/4x3/photo.jpg",
"https://example.com/photos/16x9/photo.jpg"
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4,
"ratingCount": 1234,
"reviewCount": 450
},
"offers": [{
"@type": "Offer",
"category": "Paid",
"priceCurrency": "EUR",
"price": 10.99
}],
"totalHistoricalEnrollment": 12345,
"datePublished": "2024-03-21",
"educationalLevel": "Advanced",
"about": ["C++ Coding", "Backend Engineering"],
"teaches": ["Practice and apply systems thinking to plan for change",
"Understand how memory allocation works."],
"financialAidEligible": "Scholarship Available",
"inLanguage": "en",
"availableLanguage": ["fr", "es"],
"syllabusSections": [
{
"@type": "Syllabus",
"name": "Memory Allocation",
"description": "Learn how memory is allocated when creating C++ variables.",
"timeRequired": "PT6H"
},
{
"@type": "Syllabus",
"name": "C++ Pointers",
"description": "Learn what a C++ pointer is and when they are used.",
"timeRequired": "PT11H"
}
],
"review": [
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "Lou S."
},
"datePublished": "2024-08-31",
"reviewRating": {
"@type": "Rating",
"bestRating": 10,
"ratingValue": 6
}
}],
"coursePrerequisites": [
"Basic understanding of C++ up to arrays and functions.",
"https://www.example.com/beginnerCpp"
],
"educationalCredentialAwarded": [{
"@type": "EducationalOccupationalCredential",
"name": "CourseProvider Certificate",
"url": "www.example.com",
"credentialCategory": "Certificate",
"offers": [{
"@type": "Offer",
"category": "Paid",
"price": 5,
"priceCurrency": "USD"
}]
}],
"video": {
"@type": "VideoObject",
"name": "Video name",
"description": "A video previewing this course.",
"uploadDate": "2024-03-28T08:00:00+08:00",
"contentUrl": "www.example.come/mp4",
"thumbnailUrl": "www.example.com/thumbnailurl.jpg"
},
"hasCourseInstance": [
{
"@type": "CourseInstance",
"courseMode": "Blended",
"location": "Example University",
"courseSchedule": {
"@type": "Schedule",
"duration": "PT3H",
"repeatFrequency": "Daily",
"repeatCount": 31,
"startDate": "2024-07-01",
"endDate": "2024-07-31"
},
"instructor": [{
"@type": "Person",
"name": "Ira D.",
"description": "Professor at X-University",
"image": "http://example.com/person.jpg"
}]
},
{
"@type": "CourseInstance",
"courseMode": "Online",
"courseWorkload": "P2D"
}],
"hasPart": [{
"@type": "Course",
"name": "C++ Algorithms",
"url": "https://www.example.com/cpp-algorithms",
"description": "Learn how to code base algorithms in c++.",
"provider": {
"@type": "Organization",
"name": "Example University",
"url": "www.example.com"
}
}, {
"@type": "Course",
"name": "C++ Data Structures",
"url": "https://www.example.com/cpp-data-structures",
"description": "Learn about core c++ data structures.",
"provider": {
"@type": "Organization",
"name": "Example University",
"url": "www.example.com"
}
}]
}
</script>
</head>
<body>
</body>
</html>Nguyên tắc
Để đảm bảo khoá học của bạn đủ điều kiện hiển thị dưới dạng rich results về thông tin khoá học trên Google Tìm kiếm, bạn cần tuân thủ các nguyên tắc sau đây.
- Nguyên tắc về nội dung
- Yêu cầu cơ bản của Tìm kiếm
- Nguyên tắc chung về dữ liệu có cấu trúc
Cảnh báo: Nếu trang web của bạn vi phạm một trong những nguyên tắc này, Google có thể áp dụng hình phạt thủ công, điều này sẽ ảnh hưởng tiêu cực đến khả năng hiển thị của trang trên kết quả tìm kiếm. Sau khi khắc phục sự cố, bạn có thể yêu cầu Google xem xét lại trang web của mình.
Nguyên tắc về nội dung
Chỉ các nội dung giáo dục phù hợp với định nghĩa cụ thể về khoá học mới đủ điều kiện xuất hiện dưới dạng rich results. Theo đó, một khoá học phải là một chương trình học hoặc chuỗi chương trình học có chứa các bài giảng, bài học hoặc học phần về một môn học hoặc chủ đề cụ thể.
Mã đánh dấu Course phải được sử dụng trên trang web cung cấp một khoá học hoặc chương trình học đầy đủ. Các loại trang sau đây không đủ điều kiện để xuất hiện dưới dạng rich results cho thông tin khoá học:
- Trang tóm tắt bằng cấp học thuật
- Trang kiểm tra độc lập
- Sự kiện công khai như “Ngày thiên văn học”
- Video ngắn về các chủ đề không liên quan như “Cách làm bánh mì”
Lưu ý rằng các trang web tổng hợp khoá học của bên thứ ba, chỉ liên kết đến các khoá học khác, cũng không đủ điều kiện để xuất hiện dưới dạng rich results về thông tin khoá học.
Định nghĩa các loại dữ liệu có cấu trúc
Để nội dung của bạn đủ điều kiện xuất hiện dưới dạng rich results, bạn phải thêm các thuộc tính bắt buộc như Course và CourseInstance vào dữ liệu có cấu trúc của mình. Ngoài ra, bạn cũng nên thêm các thuộc tính khuyến nghị để cung cấp thêm thông tin chi tiết, từ đó cải thiện trải nghiệm người dùng và tăng khả năng hiển thị trong kết quả tìm kiếm.
Course
Một khóa học là một học phần độc lập có thể được học riêng lẻ hoặc là một phần của chương trình học lớn hơn. Định nghĩa đầy đủ về khóa học có thể tham khảo tại schema.org/Course.
Thuộc tính bắt buộc
- name (Text):
Tiêu đề đầy đủ của khóa học.Ví dụ:"name": "Intro to Statistics" - description (Text):
Mô tả chi tiết về nội dung khóa học. Độ dài khuyến nghị: 240 ký tự, tối đa: 500 ký tự.Ví dụ:"description": "This course teaches the basics of statistical thinking." - provider (Organization):
Thông tin về tổ chức cung cấp nội dung khóa học.Ví dụ:"provider": {
"@type": "Organization",
"name": "Example University",
"url": "www.exampleuniversity.com"
}
- provider.name (Text):
Tên của nhà cung cấp khóa học. - offers (Offer, có thể lặp lại):
Cung cấp thông tin về chi phí tổng thể để hoàn thành khóa học, bao gồm tất cả các phí dịch vụ. Lưu ý không đăng mức giá chỉ dành cho một số người dùng cụ thể (ví dụ: giảm giá 20% cho người dùng mới).Ví dụ:"offers": [{
"@type": "Offer",
"category": "Paid",
"priceCurrency": "EUR",
"price": 10.99
}]
- offers.category (Text):
Phân loại giá của khóa học. Các giá trị có thể sử dụng gồm:- Free: Mọi nội dung của khóa học (bài giảng, bài tập, bài kiểm tra) đều miễn phí cho tất cả người dùng.
- Partially Free: Người dùng có thể hoàn thành hơn một nửa khóa học miễn phí (ví dụ: các bài giảng miễn phí, nhưng bài tập có phí).
- Subscription: Người dùng phải đăng ký hoặc là thành viên trả phí để hoàn thành toàn bộ khóa học.
- Paid: Người dùng phải trả phí để hoàn thành khóa học.
- hasCourseInstance (CourseInstance, có thể lặp lại):
Mỗi khóa học phải có ít nhất một thực thể khóa học kèm theo thông tin chi tiết về những gì khóa học cung cấp. Hãy chú ý các thuộc tính bắt buộc và khuyến nghị trong phần CourseInstance.Ví dụ:"hasCourseInstance": [{
"@type": "CourseInstance",
"courseMode": "Onsite",
"location": "Example University",
"courseSchedule": {
"@type": "Schedule",
"duration": "PT5H",
"repeatCount": 4,
"repeatFrequency": "Weekly",
"startDate": "2023-08-01",
"endDate": "2023-08-31"
},
"instructor": [{
"@type": "Person",
"name": "Kai S.",
"description": "Professor at X-University",
"image": "http://examplePerson.jpg"
}]
}]
Thuộc tính nên có
- about
Text có thể lặp lại
Mô tả những kỹ năng mà người dùng sẽ phát triển sau khi tham gia khóa học (nếu có).
"about": ["Quantitative analysis", "Critical thinking"]
- aggregateRating
AggregateRating
Thông tin về điểm xếp hạng trung bình của khóa học, dựa trên điểm xếp hạng của người dùng đã tham gia khóa học (nếu có). Hãy tuân thủ các nguyên tắc về đoạn trích thông tin đánh giá và danh sách thuộc tính AggregateRating bắt buộc và nên có.
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.8,
"ratingCount": 255,
"reviewCount": 189
} - availableLanguage
Text có thể lặp lại
Phụ đề hoặc các ngôn ngữ khác của khóa học (nếu có). Sử dụng mã gồm hai chữ cái theo danh sách mã ISO 639-1 alpha-2."availableLanguage": ["fr", "es", "de"]
- coursePrerequisites
Text có thể lặp lại
Mọi kiến thức trước đó cần thiết cho khóa học (nếu có). Thông tin này có thể được thể hiện bằng cách mô tả kiến thức trước đó hoặc liên kết đến một khóa học khác (hoặc cả hai).
"coursePrerequisites": ["Understanding of algebra concepts like variables and functions",
"https://www.coursewebsite.abc/algebra"] - datePublished
Date
Ngày xuất bản khóa học lần đầu (nếu có). Hãy sử dụng định dạng ngày 8601 (YYYY-MM-DD)."datePublished": "2019-03-21"
- educationalCredentialAwarded
EducationalOccupationalCredential có thể lặp lại
Thông tin về chứng chỉ hoặc giấy chứng nhận mà người dùng có thể nhận được khi hoàn thành khóa học (nếu có). Nếu phải mất thêm chi phí mới được chứng nhận, hãy chỉ ra chi phí bổ sung đó."educationalCredentialAwarded": [{
"@type": "EducationalOccupationalCredential",
"name": "CourseProvider certificate",
"url": "www.examplecertificate.com",
"credentialCategory": "Certificate",
"offers": [{
"@type": "Offer",
"category": "Paid",
"priceCurrency": "USD",
"price": 5
}]
}]
- educationalCredentialAwarded.credentialCategory
Text
Loại chứng nhận mà người dùng sẽ nhận được (nếu có). Hãy dùng một trong những giá trị sau:- Certificate: Bằng chứng xác minh việc người dùng đã hoàn thành khóa học hoặc chương trình.
- Certification: Giấy chứng nhận chính thức yêu cầu phải vượt qua bài kiểm tra hoặc chứng thực rằng người dùng đã đạt được năng lực tương ứng.
- educationalCredentialAwarded.name
Text
Tên chứng nhận (nếu có). - educationalCredentialAwarded.offers.category
Text
Kiểu định giá cho chứng nhận (nếu có). Sử dụng một trong các danh mục sau:- Free: Chứng nhận miễn phí.
- Subscription: Người dùng phải là người đăng ký hoặc thành viên trả phí thì mới được chứng nhận.
- Paid: Người dùng phải trả phí để được chứng nhận.
- educationalCredentialAwarded.offers.price
Number
Thuộc tính này chỉ bắt buộc đối với hình thức chứng nhận có tính phí. Giá dạng số của việc chứng nhận (nếu có). - educationalCredentialAwarded.offers.priceCurrency
Text
Thuộc tính này chỉ bắt buộc đối với hình thức chứng nhận có tính phí. Đơn vị tiền tệ của phí chứng nhận, theo định dạng đơn vị tiền tệ ISO 4217 (mã 3 chữ cái), nếu có. - educationalCredentialAwarded.url
URL
Đường liên kết đến trang chứng nhận (nếu có). - educationalLevel
Text
Trình độ học vấn mục tiêu cho khóa học, nếu có. Chọn một trong các giá trị sau:- Beginner: Không cần kiến thức cơ bản để hiểu nội dung.
- Intermediate: Có thể cần một số kiến thức nền để hiểu nội dung.
- Advanced: Nội dung này dành cho những người học nâng cao có kiến thức cơ bản về chủ đề này.
"educationalLevel": "Beginner"
financialAidEligible
Text
Bất kỳ học bổng, gói thanh toán đặc biệt hoặc cơ hội hỗ trợ tài chính nào khác cho những người dùng muốn tham gia khóa học (nếu có).
"financialAidEligible": "Scholarships available for eligible users."- image
URL có thể lặp lại
URL đến một hình ảnh đại diện cho khóa học (nếu có). Hãy dùng hình ảnh có liên quan đến khóa học, thay vì biểu trưng hoặc chú thích.
Nguyên tắc bổ sung về hình ảnh:- Mỗi trang phải chứa ít nhất một hình ảnh (cho dù bạn có đánh dấu hình ảnh đó hay không). Google sẽ chọn hình ảnh tốt nhất để hiển thị trong kết quả tìm kiếm trên Google dựa trên tỷ lệ khung hình và độ phân giải.
- URL của hình ảnh phải cho phép Google thu thập dữ liệu và lập chỉ mục. Để kiểm tra xem Google truy cập được URL của bạn hay không, hãy dùng Công cụ kiểm tra URL.
- Hình ảnh phải mang tính đại diện cho nội dung được đánh dấu.
- Tệp hình ảnh phải thuộc một định dạng mà Google Hình ảnh hỗ trợ.
- Để có kết quả tốt nhất, bạn nên cung cấp nhiều hình ảnh có độ phân giải cao (tối thiểu 50.000 pixel khi nhân chiều rộng với chiều cao) và theo tỷ lệ khung hình 16×9, 4×3 hoặc 1×1.
Ví dụ:"image": [
"https://example.com/photos/1x1/photo.jpg",
"https://example.com/photos/4x3/photo.jpg",
"https://example.com/photos/16x9/photo.jpg"
]
- inLanguage
Text
Ngôn ngữ chính sử dụng trong khóa học (nếu có). Sử dụng mã gồm hai chữ cái theo danh sách mã ISO 639-1 alpha-2."inLanguage": "en"
- offers.price
Number
Thuộc tính này chỉ bắt buộc đối với các khóa học có tính phí. Giá bằng số của khóa học (nếu có). Đừng đưa thông tin khác vào trường này, chẳng hạn như ký hiệu tiền tệ. - offers.priceCurrency
Text
Thuộc tính này chỉ bắt buộc đối với các khóa học có tính phí. Đơn vị tiền tệ của giá khóa học, ở định dạng đơn vị tiền tệ ISO 4217 (mã gồm 3 chữ cái), nếu có. - provider.url
URL
URL liên kết đến trang chủ của nhà cung cấp khóa học (nếu có). - publisher
Organization
Thông tin về tổ chức xuất bản và trình bày khóa học (nếu có)."publisher": {
"@type": "Organization",
"name": "Course Website",
"url": "www.example.com"
}
- publisher.name
Text
Tên của nhà xuất bản khóa học (nếu có). - publisher.url
URL
URL liên kết đến trang chủ của nhà xuất bản khóa học (nếu có). - review
Review có thể lặp lại
Danh sách bài đánh giá của người dùng về khóa học (nếu có). Tham khảo nguyên tắc đối với đoạn trích thông tin đánh giá để biết thêm thông tin."review": [{
"@type": "Review",
"author": {
"@type": "Person",
"name": "Sasha J."
},
"datePublished": "2021-09-22",
"reviewRating": {
"@type": "Rating",
"ratingValue": 4
}
}]
- syllabusSections
Syllabus có thể lặp lại
Thông tin về các học phần có trong khóa học (nếu có)."syllabusSections": [{
"@type": "Syllabus",
"name": "Algebra review",
"description": "Review prerequisite algebra concepts.",
"timeRequired": "PT2H30M"
}, {
"@type": "Syllabus",
"name": "Statistics terms",
"description": "Learn the definitions of basic statistics terms.",
"timeRequired": "PT5H"
}]
- syllabusSections.description
Text
Nội dung mô tả nội dung của học phần đó (nếu có). - syllabusSections.name
Text
Tên của học phần khóa học (nếu có). - syllabusSections.timeRequired
Duration
Sử dụng định dạng thời lượng 8601 (nếu có). Ví dụ: PT2H30M có nghĩa là mô-đun này sẽ cần đến 2 giờ 30 phút để hoàn tất. - teaches
Text có thể lặp lại
Kết quả học tập hoặc kiến thức cụ thể mà người dùng sẽ học được khi tham gia khóa học (nếu có)."teaches": ["How to use visualization tools and graphs", "Why stats is important"]
- totalHistoricalEnrollment
Integer
Tổng số người dùng đã đăng ký khóa học từ trước đến nay (nếu có)."totalHistoricalEnrollment": 80032
- video
VideoObject
Một video xem trước hoặc đoạn giới thiệu về khóa học (nếu có). Tham khảo nguyên tắc đối với VideoObject để biết thêm thông tin."video": {
"@type": "VideoObject",
"name": "Video name",
"description": "A video previewing this course.",
"uploadDate": "2022-03-28T08:00:00+08:00",
"contentUrl": "www.videourl.mp4",
"thumbnailUrl": "www.thumbnailurl.jpg"
}
CourseInstance
Định nghĩa đầy đủ về CourseInstance có tại schema.org/CourseInstance. Mỗi khóa học cần có ít nhất một CourseInstance với các thuộc tính bắt buộc đã được điền đầy đủ.
Thuộc tính bắt buộc
courseMode
Text
Phương thức phân phối khóa học. Sử dụng một trong những giá trị sau:
- Online: Toàn bộ bài giảng, bài tập và kiểm tra trong khóa học có thể hoàn thành trực tuyến.
- Onsite: Khóa học được giảng dạy trực tiếp tại một địa điểm thực tế.
- Blended: Khóa học kết hợp giữa phần trực tuyến và phần trực tiếp.
Nếu khóa học là Onsite hoặc Blended, hãy thêm thuộc tính location.
"courseMode": "Online"
courseSchedule
Schedule
Bạn chỉ cần một trong hai thuộc tính courseSchedule hoặc courseWorkload. Nên sử dụng courseSchedule nếu muốn làm nổi bật tốc độ hoàn thành (ví dụ: 4 giờ mỗi tuần) hoặc thời gian bắt đầu và kết thúc. Nếu không, thường chỉ cần sử dụng courseWorkload là đủ.
Thông tin về thời gian trung bình để hoàn thành khóa học, dựa trên tốc độ đề xuất. Hãy thêm ngày bắt đầu và ngày kết thúc cho các khóa học có lịch trình cố định.
Ví dụ về một khóa học có thể bắt đầu bất cứ lúc nào:
"courseSchedule": {
"@type": "Schedule",
"repeatCount": 6,
"repeatFrequency": "Weekly"
}
Ví dụ về một khóa học có thời gian cụ thể:
"courseSchedule": {
"@type": "Schedule",
"duration": "PT1H",
"repeatCount": 31,
"repeatFrequency": "Daily",
"startDate": "2023-07-01",
"endDate": "2023-07-31"
}
courseSchedule.repeatCount
Integer
Giá trị số thể hiện thời lượng của khóa học, tính theo đơn vị repeatFrequency. Ví dụ: nếu repeatFrequency là hàng tháng và repeatCount là 4, thì khóa học kéo dài 4 tháng.
courseSchedule.repeatFrequency
Text
Các thuộc tính duration và repeatCount phụ thuộc vào trường này. Sử dụng một trong các giá trị sau:
- Daily: Khóa học diễn ra hàng ngày.
- Weekly: Khóa học diễn ra hàng tuần.
- Monthly: Khóa học diễn ra hàng tháng.
- Yearly: Khóa học diễn ra hàng năm.
courseWorkload
Text
Bạn chỉ cần một trong hai thuộc tính courseSchedule hoặc courseWorkload. Nên sử dụng courseSchedule nếu muốn làm nổi bật tốc độ hoàn thành (ví dụ: 4 giờ mỗi tuần) hoặc thời gian bắt đầu và kết thúc. Nếu không, thường chỉ cần sử dụng courseWorkload là đủ.
Trường này thể hiện tổng thời gian xem tất cả video, hoàn thành tất cả bài tập và kiểm tra trong khóa học. Sử dụng định dạng thời lượng 8601.
"courseWorkload": "PT22H"
Thuộc tính nên có
courseSchedule.duration
Duration
Tốc độ đề xuất cho thời lượng mà người dùng trung bình cần dành ra, theo đơn vị repeatFrequency và định dạng thời lượng 8601 (nếu có). Ví dụ: nếu repeatFrequency là hàng tháng và duration là PT5H, thì người dùng dự kiến cần dành ra 5 giờ mỗi tháng.
Lưu ý: không chỉ định toàn bộ thời lượng khóa học bằng thuộc tính này. Thay vào đó, hãy sử dụng thuộc tính courseWorkload.
courseSchedule.endDate
Date
Ngày kết thúc khóa học, theo định dạng ngày 8601 (YYYY-MM-DD) (nếu có).
courseSchedule.startDate
Date
Ngày bắt đầu khóa học, theo định dạng ngày 8601 (YYYY-MM-DD) (nếu có).
image
URL
URL liên kết đến hình ảnh của người hướng dẫn (nếu có).
Nguyên tắc bổ sung về hình ảnh:
- Mỗi trang phải chứa ít nhất một hình ảnh (cho dù bạn có đánh dấu hình ảnh đó hay không). Google sẽ chọn hình ảnh tốt nhất để hiển thị trong kết quả tìm kiếm dựa trên tỷ lệ khung hình và độ phân giải.
- URL của hình ảnh phải cho phép Google thu thập dữ liệu và lập chỉ mục. Để kiểm tra xem Google có thể truy cập URL của bạn không, hãy sử dụng công cụ kiểm tra URL.
- Hình ảnh phải mang tính đại diện cho nội dung được đánh dấu.
- Tệp hình ảnh phải thuộc một định dạng mà Google Hình ảnh hỗ trợ.
- Để có kết quả tốt nhất, bạn nên cung cấp nhiều hình ảnh có độ phân giải cao (tối thiểu 50.000 pixel khi nhân chiều rộng với chiều cao) và theo tỷ lệ khung hình 16×9, 4×3 hoặc 1×1.
Ví dụ:
"image": [
"https://example.com/photos/1x1/photo.jpg",
"https://example.com/photos/4x3/photo.jpg",
"https://example.com/photos/16x9/photo.jpg"
]
instructor
Person có thể lặp lại
Thông tin về người hướng dẫn của khóa học (nếu có).
"instructor": [{
"@type": "Person",
"name": "Dana A.",
"description": "Professor at X-University",
"image": "http://examplePerson.jpg"
}]
instructor.description
Text
Mô tả người hướng dẫn và thông tin xác thực về người đó (nếu có).
instructor.name
Text
Tên của người hướng dẫn (nếu có).
location
Text
Thuộc tính này chỉ bắt buộc đối với khóa học Onsite hoặc Blended.
Tên hoặc địa chỉ (hoặc cả hai) của địa điểm thực tế nơi giảng dạy khóa học (nếu có).
"courseMode": "Blended",
"location": "Example High School"Chương trình khóa học
Chương trình khóa học là một tập hợp các khóa học con. Mỗi khóa học con phải là một khóa học độc lập có URL và trang đích riêng biệt.
Nếu trang web của bạn là một chương trình khóa học, hãy thêm các thuộc tính bắt buộc sau đây (ngoài các thuộc tính bắt buộc khác được liệt kê trong các mục Course và CourseInstance).
Thuộc tính bắt buộc
hasPart
Course có thể lặp lại
Danh sách các khóa học con trong chương trình này.
"@context": "https://schema.org/",
"@type": "Course",
"name": "Learning pathway: Knitting",
"url": "www.example.com/knitprogram",
// Điền các thuộc tính bắt buộc khác của Course và CourseInstance
"hasPart": [{
"@type": "Course",
"name": "Intro to knitting",
"url": "www.example.com/knitbasics",
"description": "Learn the basics of how to knit."
}, {
"@type": "Course",
"name": "Knit a sweater",
"url": "www.example.com/knitsweater",
"description": "Learn to knit an entire sweater."
}]
hasPart.name
Text
Tên đầy đủ của khóa học con.
hasPart.url
URL
URL liên kết đến trang đích của khóa học con.
Thuộc tính nên có
hasPart.description
Text
Mô tả ngắn gọn về nội dung của khóa học con (nếu có).
- Độ dài đề xuất: 240 ký tự.
- Chiều dài tối đa: 500 ký tự.
Theo dõi kết quả nhiều định dạng bằng Search Console
Search Console là công cụ quan trọng giúp bạn theo dõi hiệu suất hoạt động của các trang web trên Google Tìm kiếm. Mặc dù không bắt buộc phải đăng ký sử dụng Search Console để trang web của bạn được đưa vào Google Tìm kiếm, việc sử dụng công cụ này sẽ giúp bạn hiểu rõ hơn và cải thiện cách Google nhìn nhận trang web của bạn. Bạn nên kiểm tra Search Console trong những trường hợp sau:
- Sau khi triển khai dữ liệu có cấu trúc lần đầu tiên
- Sau khi phát hành mẫu mới hoặc cập nhật mã nguồn
- Phân tích lưu lượng truy cập định kỳ
Sau khi triển khai dữ liệu có cấu trúc lần đầu tiên
Khi Google đã lập chỉ mục các trang của bạn, hãy sử dụng Báo cáo trạng thái kết quả nhiều định dạng để phát hiện các vấn đề. Lý tưởng nhất là số lượng mục hợp lệ sẽ tăng lên, trong khi số mục không hợp lệ không tăng. Nếu phát hiện vấn đề trong dữ liệu có cấu trúc:
- Sửa các mục không hợp lệ.
- Kiểm tra URL đang hoạt động để xác minh xem vấn đề có còn tồn tại không.
- Yêu cầu xác thực bằng cách sử dụng báo cáo trạng thái.
Sau khi phát hành các mẫu mới hoặc cập nhật mã nguồn
Khi bạn thực hiện các thay đổi đáng kể trên trang web của mình, hãy theo dõi xem số lượng mục dữ liệu có cấu trúc không hợp lệ có tăng lên hay không.
- Nếu số mục không hợp lệ tăng, có thể bạn đã triển khai một mẫu mới không hoạt động đúng cách hoặc trang web của bạn tương tác không hợp lệ với mẫu hiện có.
- Nếu số mục hợp lệ giảm (nhưng số mục không hợp lệ không tăng), có thể bạn đã ngừng nhúng dữ liệu có cấu trúc trên các trang của mình. Hãy sử dụng Công cụ kiểm tra URL để tìm hiểu nguyên nhân gây ra vấn đề.
Lưu ý: Đừng sử dụng các liên kết lưu trong bộ nhớ đệm để gỡ lỗi trên các trang. Thay vào đó, hãy sử dụng Công cụ kiểm tra URL vì công cụ này cung cấp phiên bản mới nhất của các trang.
Phân tích lưu lượng truy cập định kỳ
Sử dụng Báo cáo hiệu suất trong Search Console để phân tích lưu lượng truy cập từ Google Tìm kiếm. Báo cáo sẽ cung cấp thông tin về tần suất trang web của bạn xuất hiện dưới dạng kết quả nhiều định dạng trong Tìm kiếm, tần suất người dùng nhấp vào trang và vị trí trung bình của trang trong kết quả tìm kiếm. Bạn cũng có thể tự động lấy các kết quả này thông qua Search Console API.
Khắc phục sự cố
Nếu gặp sự cố khi triển khai hoặc gỡ lỗi dữ liệu có cấu trúc, bạn có thể tham khảo một số tài nguyên hỗ trợ sau:
- Nếu bạn đang sử dụng hệ thống quản lý nội dung (CMS) hoặc có ai đó quản lý trang web của bạn, hãy yêu cầu họ trợ giúp. Đừng quên chuyển tiếp mọi thông báo trong Search Console để làm rõ vấn đề cho họ.
- Google không đảm bảo rằng các tính năng sử dụng dữ liệu có cấu trúc sẽ xuất hiện trong kết quả tìm kiếm. Để xem danh sách các lý do phổ biến khiến Google không thể hiển thị nội dung của bạn trong kết quả nhiều định dạng, hãy xem nguyên tắc chung về dữ liệu có cấu trúc.
- Có thể có lỗi trong dữ liệu có cấu trúc của bạn. Hãy xem danh sách các lỗi liên quan đến dữ liệu có cấu trúc.
- Nếu bị áp dụng biện pháp thủ công, dữ liệu có cấu trúc trên trang sẽ bị bỏ qua (mặc dù trang vẫn có thể xuất hiện trong các kết quả tìm kiếm của Google). Để khắc phục các vấn đề về dữ liệu có cấu trúc, hãy sử dụng báo cáo biện pháp thủ công.
- Xem lại các nguyên tắc để xác định xem nội dung của bạn có tuân thủ đúng yêu cầu không. Nguyên nhân gây lỗi có thể là do bạn sử dụng nội dung không hợp lệ hoặc thẻ đánh dấu không hợp lệ. Tuy nhiên, vấn đề có thể không phải là lỗi cú pháp, và do đó, công cụ kiểm tra kết quả nhiều định dạng sẽ không thể xác định được những vấn đề này.
- Khắc phục sự cố thiếu kết quả nhiều định dạng hoặc giảm tổng số kết quả nhiều định dạng
- Hãy dành thời gian để Google thu thập dữ liệu và lập chỉ mục lại trang. Xin lưu ý rằng có thể mất vài ngày sau khi bạn xuất bản một trang để Google tìm thấy và thu thập dữ liệu trên trang đó. Đối với các câu hỏi chung về hoạt động thu thập dữ liệu và lập chỉ mục, hãy tham khảo nội dung câu hỏi thường gặp về việc thu thập dữ liệu và lập chỉ mục trên Google Tìm kiếm.
- Đăng câu hỏi trong diễn đàn của Trung tâm Google Tìm kiếm.
Dữ liệu có cấu trúc là một công cụ không thể thiếu trong việc tối ưu hoá thông tin khoá học trên Google Tìm kiếm. Bằng cách cung cấp các thông tin chi tiết và rõ ràng, bạn không chỉ giúp Google hiểu rõ hơn về khoá học của mình mà còn tăng khả năng thu hút người dùng tiềm năng. Hãy bắt đầu triển khai dữ liệu có cấu trúc ngay hôm nay để khoá học của bạn nổi bật hơn trên kết quả tìm kiếm.
