Dữ liệu có cấu trúc loại Doanh nghiệp địa phương (LocalBusiness)

Khi người dùng tìm kiếm các doanh nghiệp trên Google Tìm kiếm hoặc Maps, trang kết quả của Tìm kiếm có thể xuất hiện nổi bật bảng tri thức của Google chứa thông tin về một doanh nghiệp phù hợp với cụm từ tìm kiếm đó. Khi người dùng tìm kiếm một loại doanh nghiệp (ví dụ: "nhà hàng tốt nhất Đà Nẵng"), họ có thể thấy một băng chuyền về những doanh nghiệp liên quan đến cụm từ tìm kiếm đó. Với dữ liệu có cấu trúc Doanh nghiệp địa phương, bạn có thể cho Google biết về giờ làm việc, các phòng ban của một doanh nghiệp, các bài đánh giá (nếu trang web của bạn có bài đánh giá về các doanh nghiệp khác) và nhiều thông tin khác. Nếu muốn giúp người dùng đặt chỗ hoặc đặt hàng ngay trong kết quả Tìm kiếm, thì bạn có thể sử dụng Maps Booking API để cho phép đặt chỗ, thanh toán và thực hiện các thao tác khác.

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ụ

Trang thông tin đơn giản của doanh nghiệp địa phương

Sau đây là ví dụ về trang thông tin đơn giản của một doanh nghiệp địa phương bằng JSON-LD.

Trang thông tin của doanh nghiệp địa phương trên Google Tìm kiếm


<html>
  <head>
    <title>Dave's Steak House</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Restaurant",
      "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
       ],
      "name": "Dave's Steak House",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "148 W 51st St",
        "addressLocality": "New York",
        "addressRegion": "NY",
        "postalCode": "10019",
        "addressCountry": "US"
      },
      "review": {
        "@type": "Review",
        "reviewRating": {
          "@type": "Rating",
          "ratingValue": "4",
          "bestRating": "5"
        },
        "author": {
          "@type": "Person",
          "name": "Lillian Ruiz"
        }
      },
      "geo": {
        "@type": "GeoCoordinates",
        "latitude": 40.761293,
        "longitude": -73.982294
      },
      "url": "https://www.example.com/restaurant-locations/manhattan",
      "telephone": "+12122459600",
      "servesCuisine": "American",
      "priceRange": "$$$",
      "openingHoursSpecification": [
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": [
            "Monday",
            "Tuesday"
          ],
          "opens": "11:30",
          "closes": "22:00"
        },
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": [
            "Wednesday",
            "Thursday",
            "Friday"
          ],
          "opens": "11:30",
          "closes": "23:00"
        },
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": "Saturday",
          "opens": "16:00",
          "closes": "23:00"
        },
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": "Sunday",
          "opens": "16:00",
          "closes": "22:00"
        }
      ],
      "menu": "https://www.example.com/menu"
    }
    </script>
  </head>
  <body>
  </body>
</html>

Dưới đây là ví dụ về một nhà hàng đáp ứng các yêu cầu đối với một trang chi tiết (giả sử còn có một trang tóm tắt có mã đánh dấu Băng chuyền). Hiện chúng tôi chỉ cung cấp tính năng Băng chuyền nhà hàng cho một nhóm nhỏ nhà cung cấp nhà hàng. Nếu bạn muốn sử dụng tính năng này, hãy đăng ký tham gia qua biểu mẫu của chúng tôi.

<html>
  <head>
    <title>Trattoria Luigi</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org/",
      "@type": "Restaurant",
      "name": "Trattoria Luigi",
      "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
       ],
       "priceRange": "$$$",
       "servesCuisine": "Italian",
       "address": {
         "@type": "PostalAddress",
         "streetAddress": "148 W 51st St",
         "addressLocality": "New York",
         "addressRegion": "NY",
         "postalCode": "10019",
         "addressCountry": "US"
       }
    }
    </script>
  </head>
  <body>
  </body>
</html>

Giờ hoạt động

Những ví dụ sau đây minh họa cách đánh dấu các loại giờ hoạt động khác nhau.

Giờ thông thường

Nếu không có thuộc tính validFromvalidThrough, thì tức là giờ mở cửa này áp dụng quanh năm. Trong ví dụ này: doanh nghiệp mở cửa từ 9 giờ sáng đến 9 giờ tối các ngày thường trong tuần, và từ 10 giờ sáng đến 11 giờ tối vào cuối tuần.

"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "Monday",
      "Tuesday",
      "Wednesday",
      "Thursday",
      "Friday"
    ],
    "opens": "09:00",
    "closes": "21:00"
  },
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "Saturday",
      "Sunday"
    ],
    "opens": "10:00",
    "closes": "23:00"
  }
]
Giờ khuya

Nếu mở cửa qua nửa đêm, hãy xác định giờ mở và đóng cửa bằng một thuộc tính OpeningHoursSpecification. Ví dụ này xác định giờ mở cửa từ 6 giờ tối ngày thứ Bảy đến 3 giờ sáng ngày Chủ Nhật.

"openingHoursSpecification": {
  "@type": "OpeningHoursSpecification",
  "dayOfWeek": "Saturday",
  "opens": "18:00",
  "closes": "03:00"
}
Giờ cả ngày

Để cho biết một doanh nghiệp mở cửa 24 giờ mỗi ngày, hãy đặt thuộc tính open thành "00:00" và thuộc tính closes thành "23:59". Để cho biết một doanh nghiệp đóng cửa cả ngày, hãy đặt cả hai thuộc tính openscloses thành "00:00". Ví dụ sau cho biết một doanh nghiệp mở cửa cả ngày thứ Bảy và đóng cửa cả ngày Chủ Nhật.

"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": "Saturday",
    "opens": "00:00",
    "closes": "23:59"
  },
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": "Sunday",
    "opens": "00:00",
    "closes": "00:00"
  }
]
Giờ theo mùa

Sử dụng cả hai thuộc tính validFromvalidThrough để xác định giờ theo mùa. Ví dụ sau cho biết một doanh nghiệp đóng cửa trong kỳ nghỉ mùa đông.

"openingHoursSpecification": {
  "@type": "OpeningHoursSpecification",
  "opens": "00:00",
  "closes": "00:00",
  "validFrom": "2015-12-23",
  "validThrough": "2016-01-05"
}

Nhiều bộ phận

Đối với một doanh nghiệp có nhiều bộ phận, mỗi bộ phận có các thuộc tính riêng như giờ mở cửa hoặc số điện thoại, bạn có thể đánh dấu thuộc tính department bằng một phần tử cho mỗi bộ phận. Hãy xác định từng thuộc tính khác với cửa hàng chính trong mỗi phần tử tương ứng cho bộ phận đó.

<html>
  <head>
    <title>Dave's Department Store</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Store",
      "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
       ],
      "name": "Dave's Department Store",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "1600 Saratoga Ave",
        "addressLocality": "San Jose",
        "addressRegion": "CA",
        "postalCode": "95129",
        "addressCountry": "US"
      },
      "geo": {
        "@type": "GeoCoordinates",
        "latitude": 37.293058,
        "longitude": -121.988331
      },
      "url": "https://www.example.com/store-locator/sl/San-Jose-Westgate-Store/1427",
      "priceRange": "$$$",
      "telephone": "+14088717984",
      "openingHoursSpecification": [
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday"
          ],
          "opens": "08:00",
          "closes": "23:59"
        },
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": "Sunday",
          "opens": "08:00",
          "closes": "23:00"
        }
      ],
      "department": [
        {
          "@type": "Pharmacy",
          "image": [
        "https://example.com/photos/1x1/photo.jpg",
        "https://example.com/photos/4x3/photo.jpg",
        "https://example.com/photos/16x9/photo.jpg"
       ],
          "name": "Dave's Pharmacy",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "1600 Saratoga Ave",
            "addressLocality": "San Jose",
            "addressRegion": "CA",
            "postalCode": "95129",
            "addressCountry": "US"
          },
          "priceRange": "$",
          "telephone": "+14088719385",
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "09:00",
              "closes": "19:00"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": "Saturday",
              "opens": "09:00",
              "closes": "17:00"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": "Sunday",
              "opens": "11:00",
              "closes": "17:00"
            }
          ]
        }
      ]
    }
    </script>
  </head>
  <body>
  </body>
</html>

Nguyên tắc

Bạn phải tuân theo các nguyên tắc này để đủ điều kiện xuất hiện trong kết quả nhiều định dạng loại Doanh nghiệp địa phương.

Định nghĩa các kiểu dữ liệu có cấu trúc

Các bảng sau liệt kê các thuộc tính và cách sử dụng các loại hành động với doanh nghiệp và doanh nghiệp địa phương, dựa trên định nghĩa đầy đủ tại schema.org/LocalBusiness.

Bạn phải bao gồm các thuộc tính bắt buộc để nội dung của mình đủ điều kiện hiển thị dưới dạng kết quả nhiều định dạng. Bạn cũng có thể sử dụng các thuộc tính mà chúng tôi khuyên dùng để cung cấp thêm thông tin về nội dung của bạn, qua đó mang lại trải nghiệm tốt hơn cho người dùng.

Bạn có thể thêm dữ liệu có cấu trúc LocalBusiness vào bất cứ trang nào trên trang web của bạn. Tuy nhiên, nên đặt dữ liệu này trên trang có chứa thông tin về doanh nghiệp của bạn.

LocalBusiness

Bạn có thể xem định nghĩa đầy đủ cho LocalBusiness tại schema.org/LocalBusiness. Hãy xác định mỗi địa điểm doanh nghiệp địa phương là một loại LocalBusiness. Sử dụng loại phụ LocalBusiness cụ thể nhất có thể, ví dụ: Restaurant, DaySpa, HealthClub, v.v.

Nếu doanh nghiệp của bạn gồm nhiều loại, hãy chỉ định chúng dưới dạng một mảng (không hỗ trợ additionalType). Ví dụ: nếu doanh nghiệp của bạn cung cấp nhiều dịch vụ:

{
  "@context": "https://schema.org",
  "@type": ["Electrician", "Plumber", "Locksmith"],
  ....
}

Sau đây là các thuộc tính được Google hỗ trợ:

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

PostalAddress

Vị trí thực của doanh nghiệp. Hãy cung cấp nhiều thuộc tính nhất có thể. Bạn cung cấp càng nhiều thuộc tính thì kết quả càng có chất lượng cao cho người dùng. Ví dụ:

"address": {
  "@type": "PostalAddress",
  "streetAddress": "148 W 51st St Suit 42 Unit 7",
  "addressLocality": "New York",
  "addressRegion": "NY",
  "postalCode": "10019",
  "addressCountry": "US"
}
name

Text

Tên của doanh nghiệp.

Thuộc tính nên có
aggregateRating

AggregateRating

Bạn chỉ nên cung cấp thuộc tính này cho những trang web thu thập các bài đánh giá về các doanh nghiệp địa phương khác: Điểm xếp hạng trung bình của doanh nghiệp địa phương dựa trên nhiều điểm xếp hạng hoặc bài đánh giá. Hãy tuân theo các nguyên tắc về đoạn trích thông tin đánh giá và danh sách thuộc tính bắt buộc và nên có của điểm xếp hạng tổng hợp.

department

LocalBusiness

Một mục lồng ghép (nested) cho một bộ phận riêng. Bạn có thể xác định bất kỳ thuộc tính nào trong bảng này cho một bộ phận.

Nguyên tắc bổ sung:

  • Bao gồm tên cửa hàng với tên bộ phận ở định dạng sau: {store name} {department name}. Ví dụ: gMartgMart Pharmacy.
  • Nếu tên bộ phận có thương hiệu rõ ràng, hãy ghi rõ tên bộ phận. Ví dụ: Best BuyGeek Squad.
geo

GeoCoordinates

Tọa độ địa lý của doanh nghiệp.

geo.latitude

Number

Vĩ độ của địa điểm doanh nghiệp. Giá trị này phải có ít nhất 5 chữ số thập phân.

geo.longitude

Number

Kinh độ của địa điểm doanh nghiệp. Giá trị này phải có ít nhất 5 chữ số thập phân.

menu

URL

Dành cho các doanh nghiệp thực phẩm. Giá trị này là URL đủ điều kiện của thực đơn.

openingHoursSpecification

Mảng (array) hoặc một đối tượng OpeningHoursSpecification đơn lẻ (cả hai đều được hỗ trợ)

Giờ mở cửa của địa điểm doanh nghiệp.

openingHoursSpecification.closes

Time

Thời gian mà địa điểm doanh nghiệp đóng cửa, ở định dạng hh:mm:ss.

openingHoursSpecification.dayOfWeek

DayOfWeek

Một hoặc nhiều trong số những giá trị sau:

  • https://schema.org/Monday: Ngày được gọi là thứ Hai.
  • https://schema.org/Tuesday: Ngày được gọi là thứ Ba.
  • https://schema.org/Wednesday: Ngày được gọi là thứ Tư.
  • https://schema.org/Thursday: Ngày được gọi là thứ Năm.
  • https://schema.org/Friday: Ngày được gọi là thứ Sáu.
  • https://schema.org/Saturday: Ngày được gọi là thứ Bảy.
  • https://schema.org/Sunday: Ngày được gọi là Chủ nhật.
openingHoursSpecification.opens

Time

Thời gian mà địa điểm doanh nghiệp mở cửa, ở định dạng hh:mm:ss.

openingHoursSpecification.validFrom

Date

Ngày bắt đầu mở cửa của một doanh nghiệp theo mùa, ở định dạng YYYY-MM-DD.

openingHoursSpecification.validThrough

Date

Ngày bắt đầu đóng cửa của một doanh nghiệp theo mùa, ở định dạng YYYY-MM-DD.

priceRange

Text

Khoảng giá tương đối của một doanh nghiệp, thường được chỉ định bằng một khoảng dạng số (ví dụ: "10-15 USD") hoặc ký hiệu đơn vị tiền tệ theo tiêu chuẩn (ví dụ: "$$$").

Thông tin trong trường này phải ít hơn 100 ký tự. Nếu thông tin này nhiều hơn 100 ký tự, Google sẽ không hiển thị khoảng giá cho doanh nghiệp.

review

Bài đánh giá

Bạn chỉ nên cung cấp thuộc tính này cho những trang web thu thập các bài đánh giá về các doanh nghiệp địa phương khác: Bài đánh giá về doanh nghiệp địa phương. Hãy tuân theo các nguyên tắc về đoạn trích thông tin đánh giá và danh sách thuộc tính đánh giá bắt buộc và nên có.

servesCuisine

servesCuisine

Các loại món ăn nhà hàng phục vụ.

telephone

Text

Số điện thoại doanh nghiệp là phương thức liên hệ chính cho khách hàng. Hãy đảm bảo số điện thoại bao gồm mã quốc gia và mã vùng.

url

URL

URL đủ điều kiện của một địa điểm doanh nghiệp cụ thể. URL này phải là một đường liên kết đang hoạt động.

Nếu bạn có nhiều nhà hàng trên trang web của mình và bạn muốn các nhà hàng này đủ điều kiện cho băng chuyền chính, hãy thêm đối tượng Băng chuyền. Ngoài các thuộc tính Băng chuyền tiêu chuẩn, hãy xác định các thuộc tính sau trong đối tượng Băng chuyền của bạn. Mặc dù các thuộc tính băng chuyền là không bắt buộc, nhưng bạn phải thêm các thuộc tính sau nếu bạn muốn danh sách nhà hàng của mình đủ điều kiện cho băng chuyền chính.

Sau đây là các thuộc tính được Google hỗ trợ:

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

URL hoặc ImageObject trùng lặp

Một hoặc nhiều hình ảnh của nhà hàng.

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"
]
name

Text

Tên nhà hàng

Thuộc tính nên có
address

PostalAddress

Vị trí thực của doanh nghiệp. Hãy cung cấp nhiều thuộc tính nhất có thể. Bạn cung cấp càng nhiều thuộc tính thì kết quả càng có chất lượng cao cho người dùng. Ví dụ:

"address": {
  "@type": "PostalAddress",
  "streetAddress": "148 W 51st St",
  "addressLocality": "New York",
  "addressRegion": "NY",
  "postalCode": "10019",
  "addressCountry": "US"
}
servesCuisine

servesCuisine

Các loại món ăn nhà hàng phục vụ.

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.