ローカルビジネス(Local Businesses)の構造化データをマークアップする方法

ローカルビジネス(Local Businesses)の構造化データをマークアップする方法

Photo by Rob Bye via Unsplash

ローカルビジネス(Local Businesses)の構造化データをマークアップする方法を紹介します。

Googleは検索結果のナレッジグラフにカフェやレストラン、物販店や病院など、店舗を持っているローカルビジネスに関する情報を表示することがあります。

ローカルビジネスのナレッジグラフ

ローカルビジネス(Local Businesses)のナレッジグラフは、構造化データをマークアップしていなくても表示されますが、構造化データをマークアップすることで、Googleにより正確に情報を伝えることができます。

ローカルビジネスをマークアップする

ローカルビジネス(Local Businesses)の構造化データをJSON-LDでマークアップする方法です。JSON-LDはページのどこに記述しても問題ありませんが、通常は<head>タグ内に記述します。

<script type="application/ld+json">
{
  "@context": "http://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"
   ],
  "@id": "http://davessteakhouse.example.com",
  "name": "Dave's Steak House",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "148 W 51st St",
    "addressLocality": "New York",
    "addressRegion": "NY",
    "postalCode": "10019",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 40.761293,
    "longitude": -73.982294
  },
  "url": "http://www.example.com/restaurant-locations/manhattan",
  "telephone": "+12122459600",
  "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": "http://www.example.com/menu",
  "acceptsReservations": "True"
}
</script>

ローカルビジネスの属性

ローカルビジネス(Local Businesses)の構造化データの属性は次のようになります。

属性 必須 説明
@context 必須 "http://schema.org"を指定
@type 必須 ビジネスの種類を指定
指定可能なビジネスの種類はこのページの下部にリストアップしています。
@id 必須 ローカルビジネスごとのURL形式のID
ユニークで、不変なものを使用する
このURLはあくまでIDとして使用するものなので、ページが実在する必要はない
複数の店舗がある場合、@idは店舗ごとにユニークなものを使用する
acceptsReservations 推奨 予約の可否をtrue, falseで指定
飲食店の場合のみ
trueの場合は、potentialActionも指定する
address 必須 住所に関する情報
address.addressCountry 必須 国コード
JP、USなど
address.addressLocality 必須 都市
address.addressRegion 必須 都道府県
address.postalCode 必須 郵便番号
address.streetAddress 必須 番地
geo 推奨 緯度経度に関する情報
geo.latitude 推奨 緯度
geo.longitude 推奨 軽度
menu 推奨 メニューページのURL
飲食店のみ
name 必須 店舗名
telephone 推奨 電話番号
URL 推奨 店舗ページのURL
@idのURLは実在しないURLでも問題ないが、このURLは実在するURLを指定する必要がある

@typeで指定可能なビジネスの種類

@typeで指定可能なビジネスの種類です。次のようなものがあります。最新版はschema.orgで確認できます。ページの下部にある「More specific Types」にリストアップされています。

  • AnimalShelter
  • AutomotiveBusiness
    • AutoBodyShop
    • AutoDealer
    • AutoPartsStore
    • AutoRental
    • AutoRepair
    • AutoWash
    • GasStation
    • MotorcycleDealer
    • MotorcycleRepair
  • ChildCare
  • Dentist
  • DryCleaningOrLaundry
  • EmergencyService
  • EmploymentAgency
  • EntertainmentBusiness
    • AdultEntertainment
    • AmusementPark
    • ArtGallery
    • Casino
    • ComedyClub
    • MovieTheater
    • NightClub
  • FinancialService
    • AccountingService
    • AutomatedTeller
    • BankOrCreditUnion
    • InsuranceAgency
  • FoodEstablishment
    • Bakery
    • BarOrPub
    • Brewery
    • CafeOrCoffeeShop
    • FastFoodRestaurant
    • IceCreamShop
    • Restaurant
    • Winery
  • GovernmentOffice
    • PostOffice
  • HealthAndBeautyBusiness
    • BeautySalon
    • DaySpa
    • HairSalon
    • HealthClub
    • NailSalon
    • TattooParlor
  • HomeAndConstructionBusiness
    • Electrician
    • GeneralContractor
    • HVACBusiness
    • HousePainter
    • Locksmith
    • MovingCompany
    • Plumber
    • RoofingContractor
  • InternetCafe
  • LegalService
    • Attorney
    • Notary
  • Library
  • LodgingBusiness
  • ProfessionalService
  • RadioStation
  • RealEstateAgent
  • RecyclingCenter
  • SelfStorage
  • ShoppingCenter
  • SportsActivityLocation
    • BowlingAlley
    • ExerciseGym
    • GolfCourse
    • HealthClub
    • PublicSwimmingPool
    • SkiResort
    • SportsClub
    • StadiumOrArena
    • TennisComplex
  • Store
    • AutoPartsStore
    • BikeStore
    • BookStore
    • ClothingStore
    • ComputerStore
    • ConvenienceStore
    • DepartmentStore
    • ElectronicsStore
    • Florist
    • FurnitureStore
    • GardenStore
    • GroceryStore
    • HardwareStore
    • HobbyShop
    • HomeGoodsStore
    • JewelryStore
    • LiquorStore
    • MensClothingStore
    • MobilePhoneStore
    • MovieRentalStore
    • MusicStore
    • OfficeEquipmentStore
    • OutletStore
    • PawnShop
    • PetStore
    • ShoeStore
    • SportingGoodsStore
    • TireShop
    • ToyStore
    • WholesaleStore
  • TelevisionStation
  • TouristInformationCenter
  • TravelAgency

営業時間をマークアップする

様々なタイプの営業時間をマークアップできます。

通常の営業時間

validFrom(閉店期間の開始日)とvalidThrough(閉店期間の終了日)を指定しないことで、年間を通して通常営業をしていることを提示できます。下記のサンプルは、平日9時から21時、週末10時から23時の営業であることを表しています。

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

深夜の営業時間

深夜の営業時間を提示します。下記のサンプルは、土曜日の18時から日曜日の3時の営業であることを表します。

"openingHoursSpecification": {
  "@type": "OpeningHoursSpecification",
  "dayOfWeek": "Saturday",
  "opens": "18:00",
  "closes": "03:00"
}

24時間営業、定休日

24時間営業を表現するには、openに “00:00” を指定、closesに “23:59” を指定します。定休日を表現するには、openclosesの両方に “00:00″を指定します。下記の例は土曜日は24時間営業、日曜日は終日休みであることを表します。

"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": "Saturday",
    "opens": "00:00",
    "closes": "23:59"
  },
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": "Sunday",
    "opens": "00:00",
    "closes": "00:00"
  }
]

休業日

年末年始などの休業日を表現します。validFrom(閉店期間の開始日)とvalidThrough(閉店期間の終了日)を使用します。下記のサンプルは2015年12月23日から2016年1月5日まで休みであることを表します。

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

営業時間の属性

営業時間の構造化データの属性は次のようになります。

属性 必須 説明
openingHoursSpecification 推奨 営業時間に関する情報
openingHoursSpecification
@type
推奨 "openingHoursSpecification"を指定
openingHoursSpecification
.dayOfWeek
推奨 営業している曜日

  • Monday
  • Tuesday
  • Wednesday
  • Thursday
  • Friday
  • Saturday
  • Sunday
openingHoursSpecification
.closes
推奨 営業終了時刻
hh:mm:ss
openingHoursSpecification
.opens
推奨 営業開始時刻
hh:mm:ss
openingHoursSpecification
.validFrom
推奨 休業期間の開始日
openingHoursSpecification
.validThrough
推奨 休業期間の終了日

店舗内の小規模店舗や売り場をマークアップする

たとえば、スーパーの中に薬局がある場合など、店舗内に別の諸規模店舗や売り場がある場合は、departmentを使って定義します。

{
  "@context": "http://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"
   ],
  "@id": "http://davesdeptstore.example.com",
  "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": "http://www.example.com/store-locator/sl/San-Jose-Westgate-Store/1427",
  "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",
      "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"
        }
      ]
    }
  ]
}

店舗内の小規模店舗や売り場をマークアップの属性

店舗内の小規模店舗や売り場の構造化データの属性は次のようになります。

属性 必須 説明
department 推奨 店舗内の店舗内の小規模店舗や売り場に関する情報
たとえば、スーパー内にある薬局など

レストランのリストをマークアップする

「東京のおすすめレストラン」のように、特定のレストランをリストアップしたコンテンツの場合、検索結果でそのページのカルーセル枠にリストアップしたレストランを表示することが可能です。

レストランのリスト

リストページでレストランのリストをItemListでマークアップし、さらに個別のページで各レストランをマークアップします。

リストページのマークアップ

ItemListで各レストランの個別ページのURLをリストアップします。

<script type="application/ld+json">
{
  "@context":"http://schema.org",
  "@type":"ItemList",
  "itemListElement":[
    {
      "@type":"ListItem",
      "position":1,
      "url":"http://example.com/restaurants-nyc/public-kitchen"
    },
    {
      "@type":"ListItem",
      "position":2,
      "url":"http://example.com/restaurants-nyc/emily-west-village"
    },
    {
      "@type":"ListItem",
      "position":3,
      "url":"http://example.com/restaurants-nyc/atla"
    }
  ]
}
</script>

アイテムリスト(ItemList)の属性

アイテムリスト(ItemList)の構造化データの属性は次のようになります。

属性 必須 説明
itemListElement 必須 この中にリストのアイテムを記載
ItemList.position 必須 リストアイテムの順番
ItemList.url 必須 リストアイテムのURL
すべてのアイテムに固有のURLが必要

各レストランページのマークアップ

通常のローカルビジネス("@type": "Restaurant")として必要な情報をマークアップします。下記のサンプルは簡易版です。

<script type="application/ld+json">
{
  "@context": "http://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"
  ],
  "servesCuisine": "Italian"
}
</script>

各レストランページの属性

リストアップされた各レストランページには以下の属性を使います。

属性 必須 説明
image 必須 画像(複数指定可能)
複数の画像からGoogleが最適な画像を選択して検索結果に表示する
複数の高解像度画像を複数の縦横比で提供することが望ましい
name 必須 店舗名
servesCuisine 必須 ジャンル(イタリアン、和食など)

注文や予約などのアクションをマークアップする

注文や予約などのアクションをローカルビジネスのマークアップに含めることで、ユーザーはナレッジパネルから席の予約やデリバリーの注文といったアクションを実行できるようになります。

注文や予約などのアクション

アクションのマークアップは、potentialActionを使い、注文にはOrderAction、予約にReserveActionを指定します。

料理の注文

アクションとして料理の注文を定義するサンプルです。

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Restaurant",
  "@id": "http://davescafe.example.com/",
  "name": "Dave's Cafe",
  "image": [
    "https://example.com/photos/1x1/photo.jpg",
    "https://example.com/photos/4x3/photo.jpg",
    "https://example.com/photos/16x9/photo.jpg"
   ],
  "address" :{
    "@type": "PostalAddress",
    "streetAddress": "123 William St",
    "addressLocality": "New York",
    "addressRegion": "NY",
    "postalCode": "10038",
    "addressCountry": "US"
  },
  "geo":{
    "@type": "GeoCoordinates",
    "latitude": 40.709312,
    "longitude": -74.007136
  },
  "telephone": "+19172423826",
  "potentialAction": {
    "@type": "OrderAction",
    "target": {
      "@type": "EntryPoint",
      "urlTemplate": "https://www.example.com/daves-cafe-new-york",
      "inLanguage": "en-US",
      "actionPlatform": [
        "http://schema.org/DesktopWebPlatform",
        "http://schema.org/IOSPlatform",
        "http://schema.org/AndroidPlatform"
      ]
    },
    "deliveryMethod": [
      "http://purl.org/goodrelations/v1#DeliveryModePickUp",
      "http://purl.org/goodrelations/v1#DeliveryModeOwnFleet"
    ],
    "priceSpecification": {
      "@type": "DeliveryChargeSpecification",
      "appliesToDeliveryMethod": "http://purl.org/goodrelations/v1#DeliveryModeOwnFleet",
      "priceCurrency": "USD",
      "price": 0.0,
      "eligibleTransactionVolume": {
        "@type": "PriceSpecification",
        "priceCurrency": "USD",
        "price": 12.00
      }
    }
  }
}
</script>

フィットネスクラスの予約

アクションとしてフィットネスクラスの予約を定義するサンプルです。

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "HealthClub",
  "@id": "http://daveshouseofyoga.example.com/",
  "name": "Dave's House of Yoga",
  "image": [
    "https://example.com/photos/1x1/photo.jpg",
    "https://example.com/photos/4x3/photo.jpg",
    "https://example.com/photos/16x9/photo.jpg"
   ],
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "3986 Rivermark Pkwy",
    "addressLocality": "Santa Clara",
    "addressRegion": "CA",
    "postalCode": "95054",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 37.3952149,
    "longitude": -121.9474023
  },
  "telephone": "+14085551135",
  "potentialAction": {
    "@type": "ReserveAction",
    "target": {
      "@type": "EntryPoint",
      "urlTemplate": "https://www.example.com/reserve?merchantId=20373",
      "inLanguage": "en-US",
      "actionPlatform": [
        "http://schema.org/DesktopWebPlatform",
        "http://schema.org/IOSPlatform",
        "http://schema.org/AndroidPlatform"
      ]
    },
    "result": {
      "@type": "Reservation",
      "name": "Book a class"
    }
  }
}
</script>

レストランの予約

アクションとしてレストランの予約を定義するサンプルです。

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Restaurant",
  "@id": "http://davescafe.example.com/",
  "name": "Dave's Cafe",
  "image": [
    "https://example.com/photos/1x1/photo.jpg",
    "https://example.com/photos/4x3/photo.jpg",
    "https://example.com/photos/16x9/photo.jpg"
   ],
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 William St",
    "addressLocality": "New York",
    "addressRegion": "NY",
    "postalCode": "10038",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 40.709312,
    "longitude": -74.007136
  },
  "telephone": "+19172423826",
  "potentialAction": {
    "@type": "ReserveAction",
    "target": {
      "@type": "EntryPoint",
      "urlTemplate": "https://www.example.com/reserve?merchantId=20373",
      "inLanguage": "en-US",
      "actionPlatform": [
        "http://schema.org/DesktopWebPlatform",
        "http://schema.org/IOSPlatform",
        "http://schema.org/AndroidPlatform"
      ]
    },
    "result": {
      "@type": "FoodEstablishmentReservation",
      "name": "Reserve table"
    }
  }
}
</script>

アクションの属性

アクションに関する属性は次のようになります。

属性 必須 説明
potentialAction 必須 アクションに関する情報
potentialAction@type 必須 OrderAction(注文)、または、ReserveAction(予約)を指定
potentialAction
.target
必須 アクションページ(注文ページ、予約ページ)に関する情報
potentialAction
.target
.urlTemplate
必須 アクションページのURL
potentialAction
.target
.inLanguage
必須 アクションページの言語
potentialAction
.target
.actionPlatform
必須 アクションページを利用可能なプラットフォーム
http://schema.org/DesktopWebPlatform: デスクトップのWebブラウザ用
http://schema.org/MobileWebPlatform: モバイルのWebブラウザ用
http://schema.org/AndroidPlatform: Androidアプリ用
http://schema.org/IOSPlatform:
iOSアプリ用

注文アクションの属性

注文に関するアクションの属性は次のようになります。

属性 必須 説明
deliveryMethod 推奨 受け取り方法
以下のいずれかを指定

  • http://purl.org/goodrelations/v1#DeliveryModePickUp(店舗受け取り)
  • http://purl.org/goodrelations/v1#DeliveryModeOwnFleet(デリバリー)
priceSpecification 推奨 デリバリーの価格に関する情報
priceSpecification
.appliesToDeliveryMethod
推奨 価格が発生するデリバリーの方法
以下を指定

  • http://purl.org/goodrelations/v1#DeliveryModeOwnFleet
priceSpecification
.price
推奨 デリバリーの費用(配送料)
priceSpecification
.priceCurrency
推奨 デリバリーの費用の通貨コード
JPY, USDなど
priceSpecification
.eligibleTransactionVolume
推奨 デリバリーの最低注文価格に関する情報
priceSpecification
.eligibleTransactionVolume
.price
推奨 デリバリーの最低注文価格
priceSpecification
.eligibleTransactionVolume
.priceCurrency
推奨 デリバリーの最低注文価格の通貨コード
JPY, USDなど

予約アクションの属性

予約に関するアクションの属性は次のようになります。

属性 必須 説明
result 必須 予約に関する情報
result
.name
必須 予約の対象
result
.provider
推奨 顧客を担当する専任者に関する情報
result
.provider
.name
推奨 担当者の名前

参考