VirtualLocation Schema
Schema mô tả vị trí ảo (ví dụ: phòng họp trực tuyến, sự kiện trực tuyến), dùng thay cho Place Schema trong ngữ cảnh kỹ thuật số.
VirtualLocation Schema là gì?
VirtualLocation Schema là một loại schema.org markup dùng để mô tả vị trí ảo — tức là nơi không tồn tại về mặt vật lý, mà chỉ hiện diện trong môi trường kỹ thuật số. Ví dụ điển hình gồm: phòng họp trực tuyến (Zoom, Google Meet), lớp học ảo, sự kiện livestream, hội thảo trên nền tảng Webex hoặc Microsoft Teams.
Schema này thuộc nhóm Place trong hệ thống schema.org, nhưng được thiết kế riêng để thay thế Place hoặc Organization khi thực tế không có địa chỉ thực. Nó không phải là schema do Google tự tạo — mà là phần mở rộng chính thức của schema.org từ phiên bản v14.0 (tháng 5/2023), và đã được hỗ trợ bởi các công cụ tìm kiếm lớn như Google, Bing và Yandex.
Tại sao quan trọng trong SEO?
VirtualLocation Schema giúp công cụ tìm kiếm hiểu đúng ngữ cảnh kỹ thuật số của nội dung — đặc biệt với các trang sự kiện, lịch trình đào tạo, đăng ký hội thảo hay trang sản phẩm dịch vụ trực tuyến. Khi đánh dấu đúng, trang có thể xuất hiện trong các kết quả nâng cao như Rich Results (kết quả phong phú), hiển thị thời gian, liên kết tham gia, nền tảng sử dụng — tăng tỷ lệ nhấp (CTR) lên đến 30% so với kết quả chuẩn (theo báo cáo Ahrefs 2024, dựa trên mẫu 12.700 trang sự kiện).
Nó còn hỗ trợ khả năng lập chỉ mục cho nội dung phi địa lý — điều mà Place truyền thống không làm được. Nếu bạn dùng Place cho một buổi họp Zoom với địa chỉ 'Online', Google sẽ bỏ qua hoặc cảnh báo lỗi vì thiếu thuộc tính bắt buộc như address hoặc geo. VirtualLocation giải quyết vấn đề này một cách hợp lệ.
Cách hoạt động
VirtualLocation hoạt động như một lớp con của Place, thừa kế tất cả thuộc tính cha (như name, description, url) và bổ sung các thuộc tính riêng để mô tả môi trường ảo:
eventAttendanceMode: giá trị bắt buộc, luôn làhttps://schema.org/OnlineEventAttendanceModevideo: liên kết trực tiếp tới video livestream hoặc bản ghiaccessModevàaccessModeSufficient: mô tả cách người dùng truy cập (ví dụ: 'textual', 'auditory')service: tham chiếu tớiServicehoặcWebAPInếu có tích hợp nền tảng bên ngoài
Google không yêu cầu tất cả thuộc tính — nhưng ít nhất phải có @type, name, eventAttendanceMode và url để đạt trạng thái hợp lệ trong Structured Data Testing Tool.
Hướng dẫn thực hiện
- Xác định ngữ cảnh phù hợp: Chỉ dùng khi sự kiện/khóa học/phòng họp hoàn toàn không có địa điểm vật lý. Nếu có cả offline và online, nên dùng
Eventvới hailocation(mộtPlace, mộtVirtualLocation). - Chọn định dạng markup: JSON-LD là lựa chọn ưu tiên (hỗ trợ đầy đủ, dễ kiểm tra, không can thiệp DOM). Tránh Microdata hoặc RDFa trừ khi bắt buộc theo hệ thống CMS.
- Điền thuộc tính bắt buộc:
@context: "https://schema.org"@type: "VirtualLocation"name: tên phòng họp / sự kiện (vd: "Phòng họp Ban Giám đốc – Zoom")eventAttendanceMode: "https://schema.org/OnlineEventAttendanceMode"url: liên kết trực tiếp tới phòng họp hoặc trang đăng ký
- Bổ sung thuộc tính khuyến nghị:
description: mô tả ngắn (tối đa 500 ký tự)video: URL video MP4 hoặc embed (nếu có)accessMode: "textual" hoặc "auditory" (tùy hình thức tương tác)sameAs: URL profile nền tảng (vd: link phòng họp trên Zoom.us)
- Kiểm tra và triển khai: Dùng URL Inspection Tool trong Google Search Console hoặc Schema Markup Validator. Đợi 3–7 ngày để dữ liệu xuất hiện trong báo cáo Rich Results.
Lỗi thường gặp
| Lỗi | Nguyên nhân | Cách khắc phục |
|---|---|---|
| Missing mandatory property "eventAttendanceMode" | Quên khai báo hoặc gõ sai giá trị (vd: viết "Online" thay vì URI chuẩn) | Dán đúng giá trị: "https://schema.org/OnlineEventAttendanceMode" |
| Invalid type: "VirtualLocation" not recognized | Dùng phiên bản schema cũ (< v14.0) hoặc sai cú pháp JSON (thiếu dấu phẩy, ngoặc) | Kiểm tra lại @context; đảm bảo không có lỗi cú pháp bằng trình validator |
| url is not a valid URL | Liên kết thiếu http:// hoặc https://, hoặc chứa ký tự đặc biệt chưa được encode | Dùng hàm encodeURIComponent() cho tham số URL; kiểm tra bằng công cụ kiểm tra URL |
| Conflicting location types in Event | Dùng đồng thời VirtualLocation và Place trong cùng một Event mà không phân biệt rõ vai trò |
Sử dụng mảng location với hai phần tử riêng biệt, mỗi phần tử có @type rõ ràng |
Ví dụ thực tế
Dưới đây là đoạn JSON-LD chuẩn cho một buổi tư vấn nghề nghiệp trực tuyến:
{ "@context": "https://schema.org", "@type": "VirtualLocation", "name": "Buổi tư vấn nghề nghiệp – Phòng 3A", "description": "Tư vấn 1-1 với chuyên gia phát triển sự nghiệp qua Google Meet.", "url": "https://meet.google.com/abc-defg-hij", "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode", "video": "https://example.com/recording-20240515.mp4", "accessMode": "auditory", "accessModeSufficient": "textual", "sameAs": "https://zoom.us/j/987654321" }
Đoạn mã này được chèn trong thẻ <head> hoặc trước thẻ </body>. Khi Google lập chỉ mục, nó có thể hiển thị thêm nút "Tham gia ngay" trong kết quả tìm kiếm nếu trang đủ độ tin cậy và nội dung phù hợp.
Câu hỏi thường gặp
VirtualLocation Schema có thay thế hoàn toàn Place Schema không?
Không. VirtualLocation chỉ dùng khi không có vị trí vật lý. Nếu sự kiện vừa tổ chức tại văn phòng vừa phát trực tuyến, bạn nên khai báo cả hai loại location trong một Event — không dùng VirtualLocation làm thay thế chung.
Google có hiển thị Rich Result cho VirtualLocation không?
Có — nhưng chỉ trong bối cảnh Event hoặc Course. Hiện tại Google chưa hỗ trợ Rich Result riêng cho VirtualLocation khi đứng độc lập. Kết quả nâng cao xuất hiện khi VirtualLocation là giá trị của thuộc tính location trong một Event hợp lệ.
Có cần xác minh VirtualLocation trong Google Search Console không?
Không. Không có quy trình xác minh riêng. Việc đánh dấu chỉ cần đúng định dạng và được Google phát hiện qua crawl. Tuy nhiên, bạn nên theo dõi báo cáo Enhancements > Events trong Search Console để kiểm tra tình trạng lập chỉ mục.