Dữ liệu có cấu trúc về thông tin khoá học (CourseCourseInstance)

Hình minh hoạ cách thông tin về khoá học có thể xuất hiện trên Google Tìm kiếm

Bạn có thể giúp mọi người tìm thấy nội dung khoá học của mình bằng cách cho Google biết về khoá học của bạn thông qua dữ liệu có cấu trúc về thông tin khoá học. Khi bạn cung cấp thêm thông tin chi tiết về một khoá học, chẳng hạn như điểm xếp hạng của người đánh giá, mức giá và thông tin chi tiết về khoá học, Google có thể hiểu rõ hơn về khoá học của bạn và mang đến trải nghiệm đa dạng thức cho người dùng thông qua kết quả nhiều định dạng về thông tin khoá học.

Có hai tính năng kết quả nhiều định dạng cho khoá học sử dụng cùng một loại mã Course theo schema.org. Nếu trang web của bạn cung cấp thông tin về các khoá học, có thể bạn đủ điều kiện sử dụng cả hai tính năng bằng cách làm theo cả hai hướng dẫn triển khai:

  • Danh sách khoá học: Kết quả nhiều định dạng liệt kê các khoá học thuộc cùng một trang web.
  • Thông tin khoá học: Một băng chuyền cho thấy thông tin chi tiết về khoá học của nhiều trang web.

Phạm vi cung cấp tính năng

Kết quả nhiều định dạng về thông tin khoá học được cung cấp bằng tiếng Anh tại mọi khu vực có hỗ trợ Google Tìm kiếm. Chúng tôi hy vọng sau này sẽ hỗ trợ thêm nhiều khoá học ngoài tiếng Anh.

Cách thêm dữ liệu có cấu trúc

Dữ liệu có cấu trúc là một định dạng chuẩn để cung cấp thông tin về một trang và phân loại nội dung trên trang. Nếu mới làm quen với dữ liệu có cấu trúc, bạn có thể tìm hiểu thêm về cách thức hoạt động của dữ liệu có cấu trúc.

Sau đây là thông tin tổng quan về cách xây dựng, kiểm tra và phát hành dữ liệu có cấu trúc. Để xem hướng dẫn từng bước về cách thêm dữ liệu có cấu trúc vào một trang web, hãy tham khảo lớp học lập trình về dữ liệu có cấu trúc.

  1. Thêm các thuộc tính bắt buộc. Tùy theo định dạng bạn đang sử dụng, hãy tìm hiểu nơi chèn dữ liệu có cấu trúc trên trang.
  2. Tuân theo các nguyên tắc.
  3. Xác thực mã của bạn bằng công cụ Kiểm tra kết quả nhiều định dạng rồi sửa mọi lỗi nghiêm trọng. Bạn cũng nên cân nhắc việc khắc phục mọi vấn đề không nghiêm trọng có thể bị gắn cờ trong công cụ này, vì những vấn đề này có thể giúp cải thiện chất lượng của dữ liệu có cấu trúc của bạn (tuy nhiên, bạn không nhất thiết thực hiện việc này để nội dung đủ điều kiện xuất hiện dưới dạng kết quả nhiều định dạng).
  4. Triển khai một vài trang có chứa dữ liệu có cấu trúc và sử dụng Công cụ kiểm tra URL để kiểm tra xem Google nhìn thấy trang đó như thế nào. Hãy đảm bảo rằng Google có thể truy cập trang của bạn và bạn không chặn trang bằng tệp robots.txt, thẻ noindex hoặc yêu cầu đăng nhập. Nếu có vẻ như trang không gặp vấn đề nào, bạn có thể yêu cầu Google thu thập lại dữ liệu các URL của mình.
  5. Để thông báo cho Google về các thay đổi sau này, bạn nên gửi một sơ đồ trang web. Bạn có thể tự động hoá quy trình này bằng Search Console Sitemap API.

Ví dụ

Sau đây là ví dụ về một trang cung cấp thông tin chi tiết về một khoá học duy nhất.


<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 only needed if the credential costs extra money.
        "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": [
      {
        // Blended, instructor-led course meeting 3 hours per day in July.
        "@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"
        }]
      },
      {
        // Online self-paced course that takes 2 days to complete.
        "@type": "CourseInstance",
        "courseMode": "Online",
        "courseWorkload": "P2D"
      }],
      // Only required for course programs that link to child courses.
      "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

Bạn phải làm theo các nguyên tắc này để khoá học của bạn đủ điều kiện xuất hiện dưới dạng kết quả nhiều định dạng cho thông tin khoá học trên Google Tìm kiếm.

Nguyên tắc về nội dung

Chỉ nội dung giáo dục phù hợp với định nghĩa sau đây về khoá học mới đủ điều kiện xuất hiện dưới dạng kết quả nhiều định dạng về Thông tin khoá học: 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 nằm trên một trang web cung cấp một khoá học hoặc chương trình học đầy đủ. Các ví dụ sau đây không đủ điều kiện xuất hiện dưới dạng kết quả nhiều định dạng cho thông tin khoá học:

  • Một trang tóm tắt bằng cấp học thuật
  • Một trang kiểm tra độc lập
  • Một sự kiện công khai chung chung như "Ngày thiên văn học"
  • Một video dài 2 phút về "Cách làm bánh mì"

Định nghĩa các loại dữ liệu có cấu trúc

Bạn phải thêm các thuộc tính CourseCourseInstance bắt buộc để nội dung của mình đủ điều kiện xuất hiện dưới dạng kết quả nhiều định dạng trên Google Tìm kiếm. Bạn cũng có thể thêm các thuộc tính mà chúng tôi khuyên dùng để bổ sung thông tin về nội dung của bạn và cải thiện trải nghiệm người dùng.

Course

Khoá học là một học phần riêng lẻ có thể đứng độc lập hoặc nằm trong một chương trình.

Định nghĩa đầy đủ về Course có tại schema.org/Course.

Thuộc tính bắt buộc
name

Text

Tiêu đề đầy đủ của khoá học.

"name": "Intro to Statistics"
description

Text

Nội dung mô tả khoá học.

  • Độ dài đề xuất: 240 ký tự
  • Chiều dài tối đa: 500 ký tự
"description": "This course teaches the basics of statistical thinking."
provider

Organization

Thông tin về tổ chức tạo ra nội dung cho khoá học.

"provider": {
   "@type": "Organization",
   "name": "Example University",
   "url": "www.exampleuniversity.com"
}
provider.name Text

Tên của nhà cung cấp khoá học.

offers

Offer có thể lặp lại

Thông tin về tổng chi phí để hoàn thành khoá học, tính cả phí dịch vụ. Đừng đăng mức giá chỉ áp dụng cho một số người dùng cụ thể (ví dụ: giảm 20% cho người dùng lần đầu).

Đừng tính cả phụ phí lấy chứng chỉ trong trường này. Nếu phải trả thêm phí để lấy chứng chỉ, hãy thêm khoản đó vào thuộc tính educationalCredentialAwarded.

"offers": [{
   "@type": "Offer",
   "category": "Paid",
   "priceCurrency": "EUR",
   "price": 10.99
}]
         
offers.category Text

Danh mục giá của khoá học. Hãy dùng một trong những giá trị sau:

  • Free: Tất cả bài giảng, bài tập và bài kiểm tra đều được cung cấp miễn phí cho mọi người dùng. Người dùng có thể hoàn thành toàn bộ khoá học mà không mất phí.
  • Partially Free: Người dùng có thể hoàn thành hơn một nửa khoá học miễn phí (ví dụ: tất cả bài giảng đều miễn phí, nhưng có tính phí cho bài tập).
  • Subscription: Người dùng phải là người đăng ký hoặc thành viên trả phí để hoàn thành toàn bộ khoá học.
  • Paid: Người dùng phải trả phí để hoàn thành khoá học.
hasCourseInstance

CourseInstance có thể lặp lại

Mỗi khoá học phải có ít nhất một thực thể khoá học kèm theo thông tin chi tiết về những gì khoá học cung cấp. Hãy xem các thuộc tính bắt buộc và nên dùng trong phần CourseInstance.

"hasCourseInstance": [{
   // Onsite, instructor-led class meeting weekly in August 2023
   "@type": "CourseInstance",
   "courseMode": "Onsite",
   "location": "Example University",
   "courseSchedule": {
      "@type": "Schedule",
      "duration": "PT5H",
      "repeatCount": 4,
      "repeatFrequency": "Weekly",
      "startDate": "2023-08-01",
      "endDate": "2023-8-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 được sau khi tham gia khoá 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 khoá học, dựa trên điểm xếp hạng của người dùng đã tham gia khoá 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 khoá 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 khoá 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 khoá 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 khoá 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 khoá 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 khoá 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

Giá dạng số của việc chứng nhận (nếu có).

educationalCredentialAwarded.offers.priceCurrency Text

Đơ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 khoá 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 khoá 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 khoá học (nếu có). Hãy dùng hình ảnh có liên quan đến khoá 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 16x9, 4x3 hoặc 1x1.

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 khoá 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

Giá bằng số của khoá 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

Đơn vị tiền tệ của giá khoá 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 khoá học (nếu có).

publisher

Organization

Thông tin về tổ chức xuất bản và trình bày khoá 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 khoá học (nếu có).

publisher.url URL

URL liên kết đến trang chủ củanhà xuất bản khoá 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ề khoá 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 khoá 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 khoá 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 khoá 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ý khoá 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ề khoá 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 khoá học phải có ít nhất một CourseInstance với các thuộc tính bắt buộc đã được điền vào.

Thuộc tính bắt buộc
courseMode

Text

Phương tiện phân phối khoá học. Hãy dùng một trong những giá trị sau:

  • Online: Mọi bài giảng, bài tập và bài kiểm tra trong lớp có thể hoàn thành qua mạng.
  • Onsite: Khoá học được giảng dạy trực tiếp tại một địa điểm thực.
  • Blended: Khoá học có cả phần trực tuyến và phần trực tiếp.

Nếu lớp học đó Onsite hoặc Blended, hãy thêm thuộc tính location.

"courseMode": "Online"

courseSchedule

Schedule

Thông tin về thời gian trung bình để một người dùng hoàn thành khoá 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 khoá học có lịch trình cố định.

Sau đây là ví dụ về một khoá học theo tốc độ mà người dùng có thể bắt đầu bất cứ lúc nào:

// This course takes 6 weeks to complete.
"courseSchedule": {
   "@type": "Schedule",
   "repeatCount": 6
   "repeatFrequency": "Weekly",
}

Sau đây là ví dụ về một khoá học theo tốc độ trong một thời gian nhất định:

// This course expects 1 hour per day during July 2023
"courseSchedule": {
   "@type": "Schedule",
   "duration": "PT1H",
   "repeatCount": 31
   "repeatFrequency": "Daily",
   "startDate": "2023-07-01",
   "endDate": "2023-07-31"
}
courseSchedule.repeatCount Integer

Giá trị bằng số cho biết thời lượng của khoá học, tính bằng đơn vị repeatFrequency. Ví dụ: nếu repeatFrequency là hằng tháng và repeatCount bằng 4, thì tức là khoá học kéo dài 4 tháng.

courseSchedule.repeatFrequency Text

Các thuộc tính durationrepeatCount là tuỳ theo trường này. Hãy dùng một trong những giá trị sau:

  • Daily: Khoá học diễn ra hằng ngày.
  • Weekly: Khoá học diễn ra hằng tuần.
  • Monthly: Khoá học diễn ra hằng tháng.
  • Yearly: Khoá học này diễn ra hằng năm.
courseWorkload Text

Trường này thể hiện tổng thời gian xem tất cả video cũng như hoàn thành tất cả bài tập và bài kiểm tra trong khoá học. Hãy 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ó thể phải dành ra, theo đơn vị repeatFrequencyđịnh dạng thời lượng 8601 (nếu có). Ví dụ: nếu repeatFrequency là hằng tháng và duration bằng PT5H, thì tức là dự kiến người dùng cần dành ra 5 giờ mỗi tháng.

Đừng chỉ định toàn bộ thời lượng khoá học bằng thuộc tính này. Thay vào đó, hãy dùng thuộc tính courseWorkload.

courseSchedule.endDate Date

Ngày kết thúc khoá học, ở định dạng ngày 8601 (YYYY-MM-DD) (nếu có).

courseSchedule.startDate Date

Ngày bắt đầu khoá học, ở đị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 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 16x9, 4x3 hoặc 1x1.

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 khoá học (nếu có).

"instructor": [{
   "@type": "Person",
   "name": "Dana A.",
   "description": "Professor at X-University",
   "image": "http://examplePerson.jpg"
}]
instructor.description Text

Nội dung mô tả người hướng dẫn và thông tin xác thực người đó (nếu có).

instructor.name Text

Tên của người hướng dẫn (nếu có).

location

Text

Tên hoặc địa chỉ (hoặc cả hai) của địa điểm thực nơi giảng dạy khoá học (nếu có).

"courseMode": "Blended",
"location": "Example High School"

Chương trình khoá học

Chương trình khoá học là một tập hợp các khoá học con. Các khoá học con phải là khoá 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 khoá 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 CourseCourseInstance).

Thuộc tính bắt buộc
hasPart

Course có thể lặp lại

Danh sách khoá 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"
// Fill the other required Course and CourseInstance properties
"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 khoá học con.

hasPart.url URL

URL liên kết đến trang đích của khoá 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 khoá 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ụ giúp bạn theo dõi hiệu quả hoạt động của các trang web trong Google Tìm kiếm. Bạn không cần đăng ký sử dụng Search Console để đưa trang web vào Google Tìm kiếm, nhưng việc làm vậy có thể giúp bạn hiểu và cải thiện cách Google nhìn thấy trang web của bạn. Bạn nên kiểm tra Search Console trong những trường hợp sau:

  1. Sau lần đầu triển khai dữ liệu có cấu trúc
  2. Sau khi phát hành mẫu mới hoặc cập nhật mã của bạn
  3. Phân tích lưu lượng truy cập định kỳ

Sau lần đầu triển khai dữ liệu có cấu trúc

Sau khi Google lập chỉ mục các trang của bạn, hãy tìm vấn đề bằng cách sử dụng Báo cáo trạng thái kết quả nhiều định dạng có liên quan. Lý tưởng nhất là số mục hợp lệ tăng lên và số mục không hợp lệ không tăng. Nếu bạn tìm thấy vấn đề trong dữ liệu có cấu trúc:

  1. Sửa các mục không hợp lệ.
  2. Kiểm tra URL đang hoạt động để xem vấn đề còn tồn tại không.
  3. 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ã

Khi bạn thực hiện những 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 bạn thấy số mục không hợp lệ gia tăng, thì có lẽ bạn đã triển khai một mẫu mới không hoạt động được hoặc trang web của bạn tương tác với mẫu hiện có theo cách mới và không hợp lệ.
  • Nếu bạn thấy số mục hợp lệ giảm (nhưng số mục không hợp lệ không tăng), thì có thể bạn không còn nhúng dữ liệu có cấu trúc trên các trang của mình nữa. 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 đề.

Phân tích lưu lượng truy cập định kỳ

Phân tích lưu lượng truy cập bạn nhận được qua Google Tìm kiếm bằng cách sử dụng Báo cáo hiệu suất. Dữ liệu báo cáo sẽ cho bạn biết bạn tần suất trang web 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 bằng 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, thì bạn có thể tham khảo một số tài nguyên trợ giúp sau đây.