不動産 GEO ガイド
ほとんどの物件情報はAI検索エンジンに認識されていません。このガイドではその理由と解決策を、1件でも1万件でも管理する方を対象に解説します。
JSON-LD スキーママークアップ、構造化データ、位置情報エンリッチメントにより、物件情報を ChatGPT、Perplexity、Google AI Overviews で見つけやすくします。
ジオデータなし
AIが見るもの:照合できる情報がない。近隣・周辺クエリに答えられない。
GeoEnrich 使用時
AIが見るもの:「De Pijpのトラム近く2LDK」「駐車場付き40万以下のマンション」「学校に近い静かな通り」など50以上のクエリタイプに照合可能。
GeoEnrichは住所から右列を自動生成します。APIコール1回で完了。
クイックスタート
以下のJSON-LDを物件掲載ページに追加すると、AI検索エンジンが即座に解析・推薦できるようになります:
{
"@context": "https://schema.org",
"@type": "RealEstateListing",
"name": "2-Bedroom Apartment in Amsterdam De Pijp",
"url": "https://www.example-agency.com/listings/ruysdaelkade-21",
"description": "Bright 2-bedroom apartment on the Ruysdaelkade in De Pijp, Amsterdam. 85 square meters, south-facing balcony, open-plan kitchen, renovated bathroom. 200 meters from Albert Cuyp market, 1-minute walk to tram lines 3 and 12.",
"datePosted": "2026-03-15",
"about": {
"@type": "Residence",
"address": {
"@type": "PostalAddress",
"streetAddress": "Ruysdaelkade 21",
"addressLocality": "Amsterdam",
"addressRegion": "North Holland",
"postalCode": "1072 AK",
"addressCountry": "NL"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 52.3534,
"longitude": 4.8965
},
"floorSize": {
"@type": "QuantitativeValue",
"value": 85,
"unitCode": "MTK"
},
"numberOfRooms": 3,
"numberOfBedrooms": 2,
"numberOfBathroomsTotal": 1,
"petsAllowed": false,
"yearBuilt": "1925"
},
"offers": {
"@type": "Offer",
"price": 395000,
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock"
}
}
これで基本はカバーできます。以下のセクションでは、近隣コンテキスト・近隣POI・交通データなどを追加してさらに多くのクエリタイプに対応する方法を説明します。完全な本番対応ファイルは「スキーマ例」タブをご覧ください。
AIを通じた不動産検索の仕組み
AIによる不動産検索はポータルサイトの検索と根本的に異なります。ドロップダウンのフィルターではなく、自然言語で条件を伝えます。このインテントパターンを理解することが不動産GEOの基盤です。
近隣・場所クエリ
最も多い不動産クエリであり、従来の物件情報では最も答えにくいタイプです:
- 「アムステルダム De Pijp、40万以下の2LDK」
- 「バルセロナのインターナショナルスクール近くのファミリー住宅」
- 「ロンドンゾーン2の交通アクセス良好な静かな通り」
- 「リスボンのビーチまで徒歩圏内のマンション」
- 「アムステルダム南部の病院近くの住宅」
これらのクエリにはすべて、構造化位置データ・座標・近隣POIコンテキストが必要です。これらがなければ物件は見えません。
近接クエリ
購入者・賃借人は周辺環境を気にします。AIエンジンが回答するには距離データが必要です:
- 「Vondelpark近くでスーパーまで5分のマンション」
- 「アムステルダムの地下鉄駅500m圏内の住宅」
- 「Jordaan地区のレストランやナイトライフに近い物件」
設備・仕様クエリ
物件属性と場所を組み合わせたもの:
- 「アムステルダム50万以下のバルコニー・駐車場付き3LDK」
- 「ハーグの庭付き1階マンション」
- 「バルセロナEixampleの屋上テラス付きペントハウス」
- 「ロッテルダムの太陽光パネル付き省エネ住宅」
投資クエリ
投資家は異なる質問をします:
- 「アムステルダムで賃貸利回りが高い地区」
- 「リスボンの不動産投資向き新興エリア」
- 「ベルリンMitte対Kreuzbergの1平方メートルあたりの平均価格」
これらの検索結果に表示されるには、AIエンジンが解析できる構造化データが必要です:正確な座標・距離付き近隣POI・構造化フィールドとしての物件仕様・近隣コンテキストシグナル。
物件情報がAI検索で失敗する理由
ほとんどの物件情報はAI検索エンジンに認識されていません。その理由と対策を説明します。
1. 曖昧な場所の説明
「人気エリアに位置する」はAIに何も伝えません。「Ruysdaelkade 21、アムステルダム De Pijp、Albert Cuyp市場まで200m」はすべてを伝えます。曖昧な説明は掲載失敗の最大の原因です。AIは「素晴らしいエリア」がDe Pijpを意味するとも、「店に近い」が市場まで200mを意味するとも推測できません。
2. 座標がない
緯度と経度がなければ、AIは距離を計算できません。すべての近接クエリ(「公園の近く」「地下鉄近く」「学校まで徒歩圏」)は物件とPOI両方の座標が必要です。座標は小数点以下4桁以上の精度が必要です。「52.35, 4.90」は100mの範囲を指し、「52.3534, 4.8965」は特定の建物を指します。
3. 近隣コンテキストがない
住所があっても多くの物件情報がここで失敗します。座標があっても近隣POIデータがなければ、「学校近くのマンション」というクエリに答えられません。AIに照合する学校データがないからです。近くに何があるかを名前と距離で明示する必要があります。
4. 構造化データがない
段落テキストに埋もれた物件詳細はAIが抽出しにくいです。「この素敵な85m²のマンションは寝室2つ、浴室1つ、南向きバルコニー付き」は人間が読むもの。しかし floorSize: 85、numberOfBedrooms: 2、amenityFeature: "South-facing balcony" などの構造化スキーマフィールドは機械が読むもの。AIエンジンは構造化データを強く好みます。
5. 情報が古い
datePosted や dateModified フィールドがない6か月前の掲載は放棄されたように見えます。AIエンジンは古く見えるコンテンツの優先度を下げます。必ず日付を入れ、物件情報が変わったら更新してください。
6. 価格が構造化フィールドにない
テキスト内の価格(「希望価格:395,000ユーロ」)は price: 395000 と priceCurrency: "EUR" を持つ Offer より解析しにくいです。価格は物件クエリで最も一般的なフィルターのひとつであり、構造化された価格がなければそのクエリを完全に逃します。
RealEstateListing スキーママークアップ
Schema.orgの RealEstateListing タイプは物件情報の正しいスキーマです。物件(Residence、Apartment、House)を価格・日付・在庫状況を含む掲載コンテキストでラップします。
コア構造
RealEstateListingには3つの重要な部分があります:
- 掲載情報自体:名前、説明、datePosted、URL
- 物件(
about経由):住所、座標、面積、部屋数、設備 - オファー:価格、通貨、在庫状況
物件タイプ
about 内の物件に最も具体的な @type を使用してください:
Apartment:マンション、コンドミニアム、スタジオ向けHouseまたはSingleFamilyResidence:一戸建て・半戸建て向けResidence:汎用フォールバック
必須フィールド
AIでの発見性のための最低限のフィールドです:
{
"@context": "https://schema.org",
"@type": "RealEstateListing",
"name": "Descriptive title with key features and location",
"description": "150-300 word description with specific details",
"datePosted": "2026-03-15",
"about": {
"@type": "Apartment",
"address": {
"@type": "PostalAddress",
"streetAddress": "Herengracht 100",
"addressLocality": "Amsterdam",
"addressRegion": "North Holland",
"postalCode": "1015 BS",
"addressCountry": "NL"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 52.3728,
"longitude": 4.8882
},
"floorSize": {
"@type": "QuantitativeValue",
"value": 120,
"unitCode": "MTK"
},
"numberOfRooms": 5,
"numberOfBedrooms": 3,
"numberOfBathroomsTotal": 2
},
"offers": {
"@type": "Offer",
"price": 650000,
"priceCurrency": "EUR"
}
}
追加の物件フィールド
これらのフィールドにより、物件情報がマッチするクエリ数が増加します:
yearBuilt:建築年(リノベクエリに重要)petsAllowed:true/false(ペット可検索を絞り込む)amenityFeature:「バルコニー」「駐車場」「庭」「エレベーター」「収納」などの設備配列numberOfFullBathrooms/numberOfPartialBathrooms:合計より具体的floorLevel:物件が何階かpermittedUsage:「住居用」「複合用途」「商業用」
物件情報の地理エンリッチメント
座標だけではAIに物件の場所しか伝わりません。地理エンリッチメントは周辺に何があるかを伝えます。これが5種類のクエリと50種類のクエリの差です。
地理エンリッチメントで追加されるもの
アムステルダムのRuysdaelkade 21の物件の場合、地理エンリッチメントで以下が得られます:
- 学校:De Pijp小学校(350m)、Montessori School Zuid(600m)、インターナショナルスクール(1.2km)
- 交通:トラム3番停留所(80m)、12番(120m)、De Pijp地下鉄駅(500m)、アムステルダム中央駅(3.5km)
- ショッピング:Albert Cuyp市場(200m)、Albert Heijnスーパー(150m)、Ferdinand Bolstraat商店街(300m)
- 公園:Sarphatipark(400m)、Vondelpark(1.2km)
- 医療:OLVG病院(800m)、薬局(250m)、かかりつけ医(300m)
- レストラン:500m以内に23軒
近隣POIの構造化方法
物件の additionalProperty フィールドを使って近隣コンテキストを追加します:
{
"@type": "Apartment",
"address": {
"@type": "PostalAddress",
"streetAddress": "Ruysdaelkade 21",
"addressLocality": "Amsterdam",
"postalCode": "1072 AK",
"addressCountry": "NL"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 52.3534,
"longitude": 4.8965
},
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Nearest School",
"value": "De Pijp Primary School, 350m"
},
{
"@type": "PropertyValue",
"name": "Nearest Supermarket",
"value": "Albert Heijn, 150m"
},
{
"@type": "PropertyValue",
"name": "Nearest Tram Stop",
"value": "Tram 3 (Ruysdaelkade), 80m"
},
{
"@type": "PropertyValue",
"name": "Nearest Park",
"value": "Sarphatipark, 400m"
},
{
"@type": "PropertyValue",
"name": "Nearest Hospital",
"value": "OLVG Hospital, 800m"
},
{
"@type": "PropertyValue",
"name": "Restaurants within 500m",
"value": "23"
}
]
}
なぜ重要か
このデータがなければ、AIはあなたの物件について以下のクエリに答えられません:
- 「De Pijpの学校近くのマンション」(学校POIデータが必要)
- 「アムステルダム南部の公共交通が良い物件」(交通データが必要)
- 「スーパーと公園に近い住宅」(両方のPOIデータが必要)
- 「病院近くのマンション」(医療POIデータが必要)
MapAtlas GeoEnrich API は住所または座標ペアから、これらすべてを生成します。1回のAPIコールで学校・交通・ショッピング・公園・医療・レストランの名前と距離が返ってきて、additionalProperty 値として埋め込めます。
近隣コンテキストシグナル
個々のPOIを超えて、購入者・賃借人は近隣そのものを理解したいと思っています。AIエンジンはエリアのキャラクターと住みやすさを表すシグナルを探します。
ウォーカビリティ・交通スコア
近隣レベルのスコアがあれば、AIはライフスタイルクエリに答えられます:
{
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Walk Score",
"value": "92/100"
},
{
"@type": "PropertyValue",
"name": "Transit Score",
"value": "88/100"
},
{
"@type": "PropertyValue",
"name": "Bike Score",
"value": "95/100"
}
]
}
これらのスコアは「アムステルダムの車なし生活向き歩きやすい地区」や「アムステルダムで自転車通勤に最適なエリア」などのクエリに直接答えます。
通勤時間データ
通勤時間は不動産購入者にとって最重要の判断要素のひとつです。構造化データとして含めます:
{
"@type": "PropertyValue",
"name": "Commute to Amsterdam Centraal",
"value": "12 minutes by tram, 18 minutes by bike"
}
近隣の説明
物件説明には近隣コンテキストを含めましょう。「素晴らしい地区」ではなく、こう書きます:
「De PijpはアムステルダムでAの人気エリアのひとつで、Albert Cuyp街市場、多彩なレストランシーン、並木道の運河で知られています。3番・12番・24番のトラム路線と新開通のMetro 52(南北線)で公共交通が非常に便利です。Sarphatipark緑地まで400m。」
この1段落だけで数十ものAIクエリにマッチします。具体的で検証可能な事実が含まれており、AIが抽出・引用できるからです。
地域施設数
集計数によってAIは密度と利便性を把握できます:
- 「300m以内に14軒のレストラン」
- 「500m以内に3軒のスーパー」
- 「1km以内に5校の学校」
- 「600m以内に2つの公園」
これらの数値は「アムステルダムでレストランが最も多い地区はどこか?」や「学校のカバレッジが最もよいエリア」などの比較クエリを可能にします。
賃貸vs売買物件
賃貸と売買の物件情報は同じ RealEstateListing ラッパーを使いますが、オファー構造と一部フィールドが異なります。
売買物件のオファー
{
"offers": {
"@type": "Offer",
"price": 395000,
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"validFrom": "2026-03-15"
}
}
賃貸物件のオファー
賃貸では価格は月額家賃を表します。priceSpecification で請求期間を明示します:
{
"offers": {
"@type": "Offer",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": 1850,
"priceCurrency": "EUR",
"unitText": "MONTH"
},
"availability": "https://schema.org/InStock"
}
}
賃貸専用フィールド
賃貸物件は売買物件が不要とする追加フィールドで効果が高まります:
leaseLength:最短賃貸期間(例:12か月)petsAllowed:賃貸検索に重要(「アムステルダムのペット可賃貸」)amenityFeature:家具付き/なし、光熱費込み、駐車場- 説明またはadditionalPropertyに敷金額
- 入居可能日(OfferのvalidFromを使用)
バケーションレンタルは別物
短期バケーションレンタル(Airbnb型)は RealEstateListing を使うべきではありません。夜間料金とチェックイン・アウト時間を持つ LodgingBusiness を使います。詳細は下のバケーションレンタルセクションを参照してください。
商業不動産
商業不動産の検索は住宅とは異なるパターンをたどります。オフィス・小売・工業スペースを探す企業は特定の構造化データを必要とする質問をします。
一般的な商業クエリ
- 「アムステルダムZuidas、1平方メートル50ユーロ以下のオフィス賃貸」
- 「バルセロナの高通行量エリア近くの小売スペース」
- 「ロッテルダム港近くのローディングドック付き倉庫」
- 「Centraal駅近くのコワーキング対応オフィス」
- 「Jordaanのテラス許可付きレストランスペース賃貸」
商業物件のスキーマ
できるだけ具体的なタイプを使います:
OfficeBuilding:オフィス向けShoppingCenterまたはStore:小売向けWarehouse:工業/物流向けLocalBusiness:additionalType付きの汎用フォールバック
商業物件は住宅物件が不要とするフィールドが必要です:
{
"@context": "https://schema.org",
"@type": "RealEstateListing",
"name": "350m2 Office Space in Amsterdam Zuidas",
"about": {
"@type": "OfficeBuilding",
"address": {
"@type": "PostalAddress",
"streetAddress": "Barbara Strozzilaan 201",
"addressLocality": "Amsterdam",
"postalCode": "1083 HN",
"addressCountry": "NL"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 52.3361,
"longitude": 4.8756
},
"floorSize": {
"@type": "QuantitativeValue",
"value": 350,
"unitCode": "MTK"
},
"amenityFeature": [
{"@type": "LocationFeatureSpecification", "name": "Fiber Internet"},
{"@type": "LocationFeatureSpecification", "name": "24/7 Access"},
{"@type": "LocationFeatureSpecification", "name": "Meeting Rooms"},
{"@type": "LocationFeatureSpecification", "name": "Parking Garage"},
{"@type": "LocationFeatureSpecification", "name": "Reception Desk"}
],
"additionalProperty": [
{"@type": "PropertyValue", "name": "Floor Level", "value": "8th floor"},
{"@type": "PropertyValue", "name": "Nearest Metro", "value": "Amsterdam Zuid, 200m"},
{"@type": "PropertyValue", "name": "Parking Spaces", "value": "12 included"}
]
},
"offers": {
"@type": "Offer",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": 45,
"priceCurrency": "EUR",
"unitText": "SQM/YEAR"
}
}
}
商業専用エンリッチメント
商業テナントは住宅居住者と異なる近隣コンテキストを求めます:
- 交通ハブ:鉄道駅、高速道路アクセス、空港距離
- ビジネスエコシステム:近隣企業、ビジネスパーク、会議センター
- 従業員向け施設:レストラン、ジム、保育所、駐車場
- 通行量データ:小売スペースに不可欠
GeoEnrich APIはこれらすべてのPOIカテゴリを返すため、商業テナントが検索するコンテキストで商業物件を自動エンリッチできます。
バケーションレンタルのAEO
バケーションレンタル(Airbnb型短期滞在)には全く異なるスキーマアプローチが必要です。これはホスピタリティビジネスであり、不動産の売却や長期賃貸ではありません。
RealEstateListingではなくLodgingBusinessを使う
バケーションレンタルの正しいスキーマタイプは LodgingBusiness(またはサポートされている場合はより具体的な VacationRental)です。これによりAIエンジンは、夜間料金・チェックイン/アウト時間・ホスピタリティ設備を持つ短期ゲストを受け入れる物件だと認識します。
住宅物件との主な違い
- 価格設定:夜間料金(総売却価格や月額賃料ではない)
- 在庫状況:チェックインとチェックアウト時間、最低滞在日数
- 設備:WiFi、キッチン、洗濯機、タオル、寝具
- ゲスト定員:最大収容人数、ベッド数、寝室数
- 口コミ:ゲストレビューからのaggregateRating
- 近隣スポット:観光客は居住者と異なるPOIを重視する
バケーションレンタルのクエリパターン
ホリデーレンタルの検索は非常に具体的です:
- 「バルセロナ旧市街、1泊150以下、4名収容のマンション」
- 「リスボンのビーチ近く、シービューのホリデーレンタル」
- 「アムステルダムの庭・駐車場付きファミリー向けバケーションホーム」
- 「ガルダ湖近くのペット可ホリデーコテージ」
- 「アムステルダムのカップル向けロマンチックな運河沿い貸家」
バケーションレンタルの必須フィールド
{
"@context": "https://schema.org",
"@type": "LodgingBusiness",
"name": "Canal View Apartment in Amsterdam Jordaan",
"description": "Charming 1-bedroom canal house apartment in the heart of Jordaan. Sleeps 2 guests. Original wooden beams, modern kitchen, rain shower. 5-minute walk to Anne Frank House and Westerkerk. Free WiFi, Smart TV, Nespresso machine.",
"address": {
"@type": "PostalAddress",
"streetAddress": "Prinsengracht 263",
"addressLocality": "Amsterdam",
"postalCode": "1016 GV",
"addressCountry": "NL"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 52.3752,
"longitude": 4.8839
},
"checkinTime": "15:00",
"checkoutTime": "11:00",
"numberOfRooms": 1,
"petsAllowed": false,
"amenityFeature": [
{"@type": "LocationFeatureSpecification", "name": "Free WiFi"},
{"@type": "LocationFeatureSpecification", "name": "Kitchen"},
{"@type": "LocationFeatureSpecification", "name": "Washing Machine"},
{"@type": "LocationFeatureSpecification", "name": "Smart TV"},
{"@type": "LocationFeatureSpecification", "name": "Air Conditioning"},
{"@type": "LocationFeatureSpecification", "name": "Canal View"}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.8,
"reviewCount": 127,
"bestRating": 5
},
"offers": {
"@type": "Offer",
"price": 135,
"priceCurrency": "EUR",
"unitText": "NIGHT"
}
}
観光客向け地理エンリッチメント
バケーションレンタルのゲストは長期居住者と異なる近隣POIを気にします:
- 観光スポット:博物館、ランドマーク、歴史的遺産と距離
- レストラン・バー:徒歩圏内の密度と多様性
- 空港・駅へのアクセス:主要交通拠点からの所要時間
- ビーチ・海岸線:海沿い物件の距離
- スーパー:自炊ゲスト向けの最寄り食料品店
GeoEnrich APIを使えば、バケーションレンタル物件ごとに観光客向けのPOIデータを自動生成できます。
実装とテスト
以下のプロセスに従って物件情報ページにスキーママークアップを実装します。
ステップ1:各掲載ページにJSON-LDを追加
<script type="application/ld+json"> タグを各掲載ページの <head> に配置します。数千件の掲載を持つ不動産ポータルでは、掲載データベースからサーバーサイドでスキーマを生成してください。
ステップ2:バリデーション
各スキーマをこれらのツールでテストします:
- JSON Linter:jsonlint.com で構文を検証
- Google Rich Results Test:search.google.com/test/rich-results
- AEO Checker:/ai-seo-checker(座標精度・近隣POIカバレッジ・スキーマ完全性を含むAI専用バリデーション)
ステップ3:AIエンジンでテスト
デプロイ後、AIエンジンに物件について質問します:
- 「アムステルダムのRuysdaelkadeで売り出し中のマンションを教えて」
- 「[あなたの物件住所] の周辺は?」
- 「アムステルダム De Pijpの物件を比較して」
AIが具体的に答えられない場合、スキーマが不完全かクロールされていません。ページがインデックス可能か(noindexタグなし)、JSON-LDがレンダリングされたHTMLにあるか(クライアントサイドJSだけではないか)、サイトマップに掲載ページが含まれているかを確認してください。
ステップ4:チェックリストを活用
このページのチェックリストタブには、完全な物件GEOに必要なすべてのフィールドとシグナルが網羅されています。各セクションを体系的に進めてください。基本スキーマと住所セクションは100%を目指し、その後近隣コンテキストと近隣シグナルを追加して最大のカバレッジを達成します。
GeoEnrich APIによるスケールアップ
すべての掲載に近隣POI・交通データ・近隣コンテキストを手動で追加することは、大規模では現実的ではありません。100件以上の物件を管理する場合は自動化が必要です。
GeoEnrichの仕組み
MapAtlas GeoEnrich API は住所または座標ペアを受け取り、構造化された近隣コンテキストを返します:
- 学校(名前、タイプ、距離)
- 公共交通(停留所、路線、距離)
- ショッピング(スーパー、市場、小売店)
- 公園・緑地
- 医療(病院、薬局、かかりつけ医)
- レストラン・カフェ
- 観光スポット(バケーションレンタル向け)
- ウォーカビリティ・交通・自転車スコア
インテグレーションパターン
不動産ポータルの典型的なワークフロー:
- 住所付きで掲載が作成される
- 住所が座標にジオコーディングされる(MapAtlas Geocoding APIまたは既存プロバイダー)
- 座標がGeoEnrich APIに送信される
- レスポンスが
additionalProperty値に変換される - 完全なエンリッチメント付きJSON-LDスキーマが生成される
- スキーマが掲載ページに埋め込まれる
このプロセスはすべての新規掲載に自動的に実行され、既存在庫のバッチ処理も可能です。
ビフォー・アフター
GeoEnrichなしでは、物件情報は住所と基本仕様(寝室数、価格)に関するクエリにのみマッチします。GeoEnrichあり では、同じ物件情報が学校・交通・ウォーカビリティ・近隣レストラン・公園・病院・通勤時間に関するクエリにもマッチします。これが5種類と50種類以上のクエリタイプの差です。
実装の詳細とAPIドキュメントは GeoEnrich APIページ をご覧ください。
大規模に自動化
スキーマを手動で書くのは1件のリスティングには有効です。数千件ではどうでしょう?
MapAtlas GeoEnrich API は、各リスティングに座標、近くの POI、交通アクセス、地域コンテキスト、スキーマ対応ジオデータを自動的に追加します。リスティングごとに1回の API 呼び出しで、あらゆる規模に対応します。