[Schema] Tạo sự kiện (Event) hiển thị sitelink trên Google search

Bài viết nằm thứ 6 trong 7 phần của series Structured Data & Rich Results

Phải là lâu lắm rồi mới viết tiếp series Schema này. Cơ bản là không thực sự nhiều người cần hiểu mà đa số chỉ cần làm được thôi. Thế nên cũng chả muốn giải thích nhiều về cách hoạt động của nó nữa. Cứ hiểu cách làm là được. Về Schema Event thì nó hiện tại khá dễ dàng hiển thị rồi, không như trước mãi mà chẳng xong. Ta có thể copy & paste code mà không cần hiểu quá sâu. Tuy nhiên, với mỗi Schema mình vẫn khuyên viết thêm 1 vài dòng tạo Event thật thật 1 chút cho đỡ bị phạt nha. Ak quên, vẫn như Schema Course, chúng ta sẽ có tối đa 3 dòng link cho Event. Evergreen cũng được hiển thị rồi, mình sẽ lấy luôn bài này làm VD nha. Bắt đầu thôi!

Xem hướng dẫn tạo Schema cho WordPress tại: Cách chèn Schema vào WordPress

Công cụ kiểm tra dữ liệu có cấu trúc: https://search.google.com/structured-data/testing-tool/

Xem trước kết quả tìm kiếm nhiều định dạng trên Mobile hoặc PC: https://search.google.com/test/rich-results

I. Schema Event (sự kiện) là gì?

Theo schema.org, một Event (sự kiện) được miêu tả dưới dạng schema cần có thời gian và địa điểm cụ thể như buổi hòa nhạc, bài giảng hay lễ hội,… Thông tin về việc bán vé có thể thêm thông qua trường offers. Những sự kiện có tính lặp lại có thể tách ra như nhiều sự kiện riêng biệt.

Tất cả các loại Event Schema:

  • BusinessEvent (Sự kiện kinh doanh): https://schema.org/BusinessEvent
  • ChildrensEvent (Sự kiện dành cho trẻ em): https://schema.org/ChildrensEvent
  • ComedyEvent (Sự kiện hài kịch): https://schema.org/ComedyEvent
  • CourseInstance (Sự kiện khóa học): https://schema.org/CourseInstance
  • DanceEvent (Sự kiện nhảy mà mọi người thoải mái tham gia, tìm hiểu Social dane): https://schema.org/DanceEvent
  • DeliveryEvent (Sự kiện liên quan đến việc giao 1 thứ gì đó): https://schema.org/DeliveryEvent
  • EducationEvent (Sự kiện giáo dục): https://schema.org/EducationEvent
  • EventSeries (Chuỗi sự kiện): https://schema.org/EventSeries
  • ExhibitionEvent (Sự kiện triển lãm): https://schema.org/ExhibitionEvent
  • Festival (Lễ hội): https://schema.org/Festival
  • FoodEvent (Sự kiện ăn uống): https://schema.org/FoodEvent
  • LiteraryEvent (Sự kiện văn học): https://schema.org/LiteraryEvent
  • MusicEvent (Sự kiện âm nhạc): https://schema.org/MusicEvent
  • PublicationEvent (Sự kiện xuất bản ấn phẩm): https://schema.org/PublicationEvent
  • SaleEvent (Sự kiện bán hàng): https://schema.org/SaleEvent
  • ScreeningEvent (Một buổi công chiếu bộ phim hay video): https://schema.org/ScreeningEvent
  • SocialEvent (Sự kiện xã hội): https://schema.org/SocialEvent
  • SportsEvent (Sự kiện thể thao): https://schema.org/SportsEvent
  • TheaterEvent (Một buổi biểu diễn tại nhà hát): https://schema.org/TheaterEvent
  • VisualArtsEvent (Sự kiện nghệ thuật thị giác, tìm hiểu Visual arts): https://schema.org/VisualArtsEvent

Lưu ý

  • Đây là bản update 22/08/2019. Trước kia, Schema Event chưa được phân loại rõ ràng như thế này đâu. Thế nên, nhiều trường phía dưới chưa đầy đủ nhưng ko có vấn đề gì cả. Chỉ là từ giờ, bạn có thể chọn chính xác loại Event chứ không chỉ chọn type event chung chung nữa. Đọc bài Schema Local Business để hiểu rõ hơn.
  • CourseInstance là 1 phiên bản khác của Schema Course trong những trường hợp đặc biệt như là được cung cấp ở 1 địa điểm hay thời điểm khác thông qua phương tiện hay phương thức học tập khác hoặc dành cho 1 bộ phận học viên cụ thể. VD 1 khóa học MOOC / trực tuyến miễn phí, 1 khóa học từ xa tự học (không có sự kiện), 1 khóa học cao đẳng được cung cấp ở 1 vài địa điểm,… Trước mà có Schema này sớm thì đã không khó khăn khi tạo khóa học + sự kiện cùng lúc rồi. Mình sẽ cập nhật tại Schema Khóa Học khi có thời gian.
  • EventSeries hiện tại vẫn chưa được chính thức công nhận dù đã loại bỏ dòng pending phía trước. Thằng này khá là đáng mong chờ đấy. Khi nào nó được công nhận mình sẽ viết thêm 1 mục riêng về nó. Khá phù hợp cho việc tạo chuỗi event hay lặp lại đấy.
  • PublicationEvent là sự kiện xuất bản cho bất kỳ ấn phẩm cho CreativeWork thuộc bất kỳ loại nào như 1 buổi phát sóng, sự kiện theo yêu cầu, buổi ra mắt 1 cuốn sách hay tạp chí thông qua nhiều phương tiện truyền thông. Bạn có thể chọn 1 trong 2 loại nhỏ hơn là BroadcastEvent (Sự kiện phát sóng) và OnDemandEvent (Sự kiện theo yêu cầu)

Cũng như Course, bạn nên cung cấp thông tin của Event dưới dạng bảng. Vì sao ư? Đọc lại cách hiển thị trên Google tại đây

Tên event ND Giới thiệu (description) ND
Thời gian khai mạc (startDate) ND Danh mục (category) ND
Thời gian bế mạc (endDate) ND Độ tuổi (Minimum age) ND
Số lượng người tham gia (maximumAttendeeCapacity) ND Giá vé (Price) ND
Địa điểm (location) ND Thời gian bán vé (validFrom) ND
Thời lượng (duration) ND Diễn giả, ca sĩ, diễn viên (performer, actor) ND
Đơn vị tổ chức (organizer) ND Ngôn ngữ (inLanguage) ND
Tóm lược ND (Summary) ND Xếp hạng ND

II. Cấu trúc Event (sự kiện)

Để tạo được 1 event với đầy đủ thông tin, chúng ta cần cung cấp những nội dung sau trên website:

  • Tên sự kiện (name)
  • Miêu tả sự kiện (description)
  • Link sự kiện (url)
  • Hình ảnh sự kiện (image)
  • Thời gian khai mạc (startDate)
  • Thời gian bế mạc (endDate)
  • Địa điểm tổ chức (location)
  • Giá vé (price)
  • Đơn vị tổ chức (organizer) bao gồm tên (name) và url trang web (url)

Ngoài ra, bạn nên cung cấp thêm những thông tin về:

  • Thời lượng (duration)
  • Số lượng người tham gia (maximumAttendeeCapacity)
  • Diễn giả (perfomer)
  • Diễn viên (actor)
  • Khách mời (attendee)
  • Ngôn ngữ (inLanguage)

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

Nguyên tắc của Google nên mình copy nguyên xi:

  • Mỗi sự kiện phải mô tả chính xác tên sự kiện, ngày bắt đầu và địa điểm.
  • Tránh đánh dấu các mục không phải sự kiện là sự kiện:
    • Không quảng bá các sản phẩm hoặc dịch vụ không phải sự kiện, chẳng hạn như “Tour trọn gói: San Diego/LA, 7 đêm”, dưới dạng sự kiện.
    • Không thêm ưu đãi giảm giá hoặc cơ hội mua hàng ngắn hạn, chẳng hạn như: “Show diễn – hãy mua vé ngay” hoặc “Show diễn – giảm 50% cho đến thứ Bảy”.
    • Không đánh dấu giờ làm việc là các sự kiện, chẳng hạn như: “Công viên phiêu lưu mở cửa từ 8 giờ sáng đến 5 giờ chiều.”
    • Không đánh dấu phiếu giảm giá hoặc phiếu thưởng dưới dạng sự kiện, chẳng hạn như: “Giảm 5% cho đơn hàng đầu tiên của bạn.”
  • Đánh dấu các sự kiện kéo dài trong nhiều ngày một cách chính xác:
    • Nếu thông tin về sự kiện hoặc vé của bạn là về một sự kiện diễn ra trong vài ngày, hãy chỉ định cả ngày bắt đầu và ngày kết thúc của sự kiện đó.
    • Nếu có một vài buổi biểu diễn khác nhau diễn ra vào các ngày khác nhau và mỗi ngày có vé riêng, hãy thêm một phần tử Event riêng cho mỗi buổi biểu diễn.

III. Schema Event

Schema Event được Google chấp nhận nên bạn có thể sử dụng tiếng Việt, ngoại trừ cấu trúc mặc định của Schema bằng tiếng Anh.

1. JSON-LD Event

Dưới đây là JSON-LD của type “Event”.

Schema Event

Lưu ý:

  • Đây là mã để điền vào page event chứ ko phải page muốn hiện sitelink
  • Để có thể hiển thị sitelink event trên Google, bạn cần phải chờ một thời gian kha khá. Tuy nhiên, khi được cập nhật rồi, chỉ cần submit link là nó hiện liền sau vài phút à.

Location

Thuộc tính “name” nên đặt là tên địa điểm chứ không phải địa chỉ, thường là tên trên Google Maps đó. Bỏ qua trường “name” nếu không biết tên địa điểm này.

eventAttendanceMode

Lỗi trong Google Search Console: Trường “eventAttendanceMode” bị thiếu

Chú ý: Từ 17/03/2020, Google đã update thêm 2 trường eventAttendanceMode và eventStatus. Thêm vào để tránh lỗi thôi. Xem tại: https://webmasters.googleblog.com/2020/03/new-properties-virtual-or-canceled-events.html

 

Loại sự kiện có thể diễn ra online, offline hoặc kết hợp cả 2 loại:

  • Offline: https://schema.org/OfflineEventAttendanceMode
  • Online: https://schema.org/OnlineEventAttendanceMode

eventStatus

Lỗi trong Google Search Console: Trường “eventStatus” bị thiếu

Trạng thái của sự kiện. Đặc biệt hữu ích khi sự kiện bị hủy bỏ hoặc lùi lại thời gian thực hiện. Có các loại thuộc tính sau của eventStatus:

  • Sự kiện đã bị hủy bỏ: https://schema.org/EventCancelled (StartDate hoặc previousStartDate có thể được sử dụng để xác định (các) ngày đã hủy của sự kiện). Khi thêm thuộc tính EventCancelled vào trường eventStatus, giữ nguyên startDate để xác định ngày hủy sự kiện.
  • Sự kiện đã chuyển sang trực tuyến: https://schema.org/EventMovedOnline (toàn bộ hoặc 1 phần sự kiện). Khi thêm thuộc tính EventMovedOnline vào trường eventStatus thì chả cần làm gì nữa.
  • Sự kiện tạm hoãn và chưa có lịch lại: https://schema.org/EventPostponed (sử dụng previousStartDate để thiết lập). Khi thêm thuộc tính EventPostponed vào trường eventStatus, giữ nguyên startDate cho đến khi cập nhật thời điểm cụ thể sự kiện diễn ra (startDate giúp xác định tính duy nhất của sự kiện). Khi đó, hãy chuyển eventStatus thành EventScheduled và cập nhật startDate và endDate (Hiểu đơn giản là có lịch sự kiện rồi thì thêm như hướng dẫn ở trên thôi)
  • Sự kiện đã được dời lại (lên lịch lại): https://schema.org/EventRescheduled (previousStartDate nên được đặt ngày cũ và startDate nên được đặt ngày mới của sự kiện. Nếu sự kiện đã được dời nhiều lần, thuộc tính previousStartDate có thể được lặp lại). Khi thêm thuộc tính EventRescheduled vào trường eventStatus, Hãy cập nhật lại startDate và endDate, thêm trường previousStartDate là startDate cũ.
  • Sự kiện đang hoặc sắp diễn ra theo startDate như dự kiến: https://schema.org/EventScheduled (mặc định sử dụng thuộc tính này)

eventScheduled

Được sử dụng để gộp lịch trình sự kiện vào 1. Tách riêng ra như VD cũng được.

location

Hiện tại, trường location có thể sử dụng type VirtualLocation, Place. Xem them tại: https://developers.google.com/search/docs/data-types/event#virtual-location

VirtualLocation là địa điểm online hay ảo. Chủ yếu dùng để thêm link sự kiện. VD bạn dùng Zoom , Skype, Google meeting,… để làm sự kiện thì thêm link buổi event vào thôi. Hay bạn phát qua Youtube chẳng hạn, nhớ chèn link stream Youtube.

Offers

Có 3 loại thuộc tính “availability” là:

  • Còn hàng (trong kho): https://schema.org/InStock
  • Đã bán hết: https://schema.org/SoldOut
  • Đặt trước: https://schema.org/PreOrder

typicalAgeRange

Độ tuổi tham dự sự kiện: “typicalAgeRange” : “18+”

2. Hiển thị 3 sitelink của schema event

Mã trên để chèn vô url của event cần tạo. Nhưng bạn muốn hiển thị sitelink event ở page khác thì sao? Dưới đây sẽ là mẫu code:

3 sitelinks của schema events trên Google Search (Chụp ngay khi submit 27/07/2019)

Lưu ý:

  • Nếu bạn chèn ở page không phải event thì chỉ cần điền những trường cơ bản thôi, không cần điền tất cả ND của event đâu.
  • Khi hiển thị trên Google, sẽ có 3 cột là (time | Tên + link event | địa điểm tổ chức). Nếu bạn muốn hiện cả 3 thì nên viết ngắn tên event lại. Còn không, cứ căn sao cho tên event dài vừa đủ là đẹp nhất

IV. Những điều cần nhớ

Cũng như những loại Schema mà Google sử dụng cho Rich Snippets, Event có thể fake được. Tuy nhiên, mình vẫn khuyên là nên tạo sự kiện ảo (có thực, tồn tại trên 1 url) chứ đừng tạo sự kiện ma (người dùng không thể đọc nội dung, chỉ tồn tại với Google). Dân SEO có lắm chiêu trò lách luật lắm. Mình cũng biết nhưng cái gì tốt thì học, đừng học cái xấu nha!

Ngoài ra, không riêng Event, bạn có thể kiểm tra Dữ liệu có cấu trúc (Structured Data) trong Google Search Console. Bất cứ khi nào có thêm hay lỗi đều có thông báo tại đây. Hãy truy cập “Tính năng nâng cao” để có thêm thông tin:

Dữ liệu có cấu trúc trong Google Search Console

Nội dung bài viết thì khá đơn giản thôi nhưng để hiện được kết quả trên tìm kiếm Google cũng khá là gian nan đấy. Nếu gặp vấn đề trong quá trình triển khai Schema Events hãy comment phái dưới để được mình hỗ trợ sớm nhất. Bình luận Facebook không có thông báo nên dùng bình luận của web ấy nha!

Xem bài tiếp theo trong Series

<< [Schema] Xác định thực thể doanh nghiệp địa phương với LocalBusiness và Person [Schema] FAQ Page (Câu Hỏi Thường Gặp) & QA Page (Giải Đáp) >>

Related Post