このページで持って帰れるもの

このページは、銀座1丁目〜8丁目で店舗を運営する事業者が Tufe Company に依頼しなくても、そのままコピペして自店の MEO 運用に組み込める実装パック として書きました。営業色のあるブロックは末尾の1セクションだけです。それ以外の本文は、来てくれた読者がこの1ページを閉じた後も使い続けられる資産であることを目指しています。

コピペで動く10資産

  1. 業態別 JSON-LD LocalBusiness スキーマ — 寿司 / バー / フレンチ / クラブ・ラウンジ / 美容クリニックの5種
  2. hreflang + 多言語 GBP 属性テンプレ — 銀座のインバウンド需要に合わせた英中日3言語対応
  3. GBP 説明文 長文テンプレ — 業態別5本、銀座仕様(接待・老舗・銀ぶら・記念日)
  4. 口コミ返信 30パターン — ★1-5 × 6シーン × 日英
  5. Google Apps Script — 口コミ自動通知(Slack / メール)
  6. n8n ワークフロー JSON — 口コミ→AI返信下書き→人間承認→投稿
  7. NAP 整合性チェック Bash + 正規表現
  8. 5 KW × 3 地点 順位計測 CSV + Google Sheets 関数(和光・歌舞伎座・GINZA SIX)
  9. GBP 投稿カレンダー 12か月分 ICS — 銀座柳まつり・歩行者天国・銀座イルミネーション連動
  10. Places API 自店診断 curl + GBP 完全度スコア算出 Python

すべて Tufe Company が自社 / 支援先で実運用しているコードです。プレースホルダー(◯◯YOUR_XXX)を自店情報に置換するだけで動きます。


銀座 MEO の市場環境(一次出典確認版)

銀座1丁目〜8丁目は、東京の中でも事業所密度・客単価帯・観光集客が突出して高いエリアです。Google マップ(MEO)の検索順位は「銀座 接待 個室」「銀座 寿司 ランチ」「Ginza sushi reservation」のような即決クエリを直撃します。

ローカル検索行動の最新動向(2026年)

指標2026年データ出典
ローカルビジネスの口コミを「常に」読む消費者41%(2025年の29%から急増)BrightLocal Local Consumer Review Survey 2026(取得 2026-05)
4.5★以上を要求する消費者31%同上
口コミ返信が1週間以内にされることを期待81%同上
AI ツールでローカルビジネスを調べる消費者45%(2025年の6%から急増)同上

中央区・銀座の事業集積(令和3年経済センサス活動調査)

業種中央区全体の事業所数
卸売業、小売業8,864
宿泊業、飲食サービス業4,362
学術研究、専門・技術サービス業4,300
サービス業(他に分類されないもの)2,909
不動産業、物品賃貸業2,758
情報通信業2,402

※ 出典: 中央区まちのデータ集(令和3年経済センサス活動調査・取得 2026-05)。中央区全体の総事業所数は 33,409 で 23 区内 3 位。

銀座地区固有の集積特性

中央区全体の昼間人口は 771,583 人(※ 出典: 中央区 平成27年・令和2年国勢調査 昼夜間人口(令和2年国勢調査・取得 2026-05))で、夜間人口の約 4.91 倍。中央区全体の事業集積データは銀座地区固有値の代理指標として参照しています。


資産 1: 業態別 JSON-LD LocalBusiness スキーマ(5種)

JSON-LD は GBP とは別に自社サイトに埋め込む構造化データで、Google が店舗情報を機械的に読み取るためのものです(※ 出典: Google 検索セントラル: Local Business 構造化データ(取得 2026-05))。GBP の情報と JSON-LD の情報が一致していると信用シグナルになります。

以下は銀座の主要業態5種で、自店サイトの <head> または <body> 末尾に <script type="application/ld+json"> で貼り付け、プレースホルダーを差し替えれば動く完成形です。すべて Google Rich Results Test で構文検証可能です。

1-1. Restaurant(銀座 高級寿司・接待業態)

json
{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "@id": "https://yourstore.example/#restaurant",
  "name": "◯◯(店舗名)",
  "image": [
    "https://yourstore.example/photo-counter.jpg",
    "https://yourstore.example/photo-private-room.jpg",
    "https://yourstore.example/photo-omakase.jpg"
  ],
  "url": "https://yourstore.example/",
  "telephone": "+81-3-XXXX-XXXX",
  "priceRange": "¥¥¥¥",
  "servesCuisine": ["Japanese", "Sushi", "Edomae"],
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "銀座◯-X-X ◯◯ビル X階",
    "addressLocality": "中央区",
    "addressRegion": "東京都",
    "postalCode": "104-0061",
    "addressCountry": "JP"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 35.6712,
    "longitude": 139.7650
  },
  "areaServed": [
    { "@type": "Place", "name": "銀座" },
    { "@type": "Place", "name": "新橋" },
    { "@type": "Place", "name": "日本橋" }
  ],
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
      "opens": "17:00",
      "closes": "23:00"
    }
  ],
  "acceptsReservations": "True",
  "knowsLanguage": ["ja", "en"],
  "menu": "https://yourstore.example/menu",
  "hasMap": "https://www.google.com/maps/place/?q=place_id:YOUR_GOOGLE_PLACE_ID",
  "sameAs": [
    "https://tabelog.com/tokyo/A1301/A130101/XXXXXXXX/",
    "https://www.instagram.com/yourstore/"
  ]
}

1-2. BarOrPub(銀座 オーセンティックバー・ラウンジ)

json
{
  "@context": "https://schema.org",
  "@type": "BarOrPub",
  "@id": "https://yourbar.example/#bar",
  "name": "◯◯(バー名)",
  "image": "https://yourbar.example/photo.jpg",
  "url": "https://yourbar.example/",
  "telephone": "+81-3-XXXX-XXXX",
  "priceRange": "¥¥¥¥",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "銀座◯-X-X",
    "addressLocality": "中央区",
    "addressRegion": "東京都",
    "postalCode": "104-0061",
    "addressCountry": "JP"
  },
  "geo": { "@type": "GeoCoordinates", "latitude": 35.6712, "longitude": 139.7650 },
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
    "opens": "18:00",
    "closes": "01:00"
  }],
  "areaServed": [{ "@type": "Place", "name": "銀座" }, { "@type": "Place", "name": "新橋" }],
  "knowsLanguage": ["ja", "en"],
  "paymentAccepted": "Cash, Credit Card",
  "smokingAllowed": false
}

QUOTE

※ 銀座1〜8丁目は東京都風俗営業条例(取得 2026-05)で午前1時までの営業延長が可能な指定地域。深夜営業の場合は営業時間設定を正確に記載。クラブ・キャバレー業態の特定遊興飲食店営業許可については資産11: 規制まとめを参照。

1-3. Restaurant(銀座 フレンチ・記念日業態)

json
{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "@id": "https://yourrestaurant.example/#restaurant",
  "name": "◯◯(店舗名)",
  "image": "https://yourrestaurant.example/photo.jpg",
  "url": "https://yourrestaurant.example/",
  "telephone": "+81-3-XXXX-XXXX",
  "priceRange": "¥¥¥¥",
  "servesCuisine": ["French", "Modern French"],
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "銀座◯-X-X",
    "addressLocality": "中央区",
    "addressRegion": "東京都",
    "postalCode": "104-0061",
    "addressCountry": "JP"
  },
  "geo": { "@type": "GeoCoordinates", "latitude": 35.6712, "longitude": 139.7650 },
  "areaServed": [{ "@type": "Place", "name": "銀座" }, { "@type": "Place", "name": "丸の内" }],
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],
    "opens": "12:00",
    "closes": "22:30"
  }],
  "acceptsReservations": "True",
  "hasMenu": "https://yourrestaurant.example/course",
  "knowsLanguage": ["ja", "en", "fr"],
  "amenityFeature": [
    { "@type": "LocationFeatureSpecification", "name": "Private Room", "value": true },
    { "@type": "LocationFeatureSpecification", "name": "Sommelier", "value": true },
    { "@type": "LocationFeatureSpecification", "name": "Anniversary Plate", "value": true }
  ]
}

1-4. NightClub(銀座 クラブ・ラウンジ)

json
{
  "@context": "https://schema.org",
  "@type": "NightClub",
  "@id": "https://yourclub.example/#club",
  "name": "◯◯(クラブ名)",
  "image": "https://yourclub.example/photo.jpg",
  "url": "https://yourclub.example/",
  "telephone": "+81-3-XXXX-XXXX",
  "priceRange": "¥¥¥¥",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "銀座◯-X-X ◯◯ビル X階",
    "addressLocality": "中央区",
    "addressRegion": "東京都",
    "postalCode": "104-0061",
    "addressCountry": "JP"
  },
  "geo": { "@type": "GeoCoordinates", "latitude": 35.6712, "longitude": 139.7650 },
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
    "opens": "20:00",
    "closes": "01:00"
  }],
  "knowsLanguage": ["ja", "en"],
  "amenityFeature": [
    { "@type": "LocationFeatureSpecification", "name": "VIP Room", "value": true },
    { "@type": "LocationFeatureSpecification", "name": "Karaoke", "value": true }
  ]
}

QUOTE

※ 銀座のクラブ・キャバレー業態は風営法第3条(取得 2026-05)に基づく風俗営業許可、または特定遊興飲食店営業許可が必要な場合があります。GBP のカテゴリ選定・営業時間表記で誤認を招かないよう、許可種別と営業時間を正確に設定してください。

1-5. MedicalClinic(銀座 美容皮膚科・美容外科)

json
{
  "@context": "https://schema.org",
  "@type": "MedicalClinic",
  "@id": "https://yourclinic.example/#clinic",
  "name": "◯◯クリニック銀座",
  "medicalSpecialty": ["Dermatology", "CosmeticDermatology"],
  "image": "https://yourclinic.example/photo.jpg",
  "url": "https://yourclinic.example/",
  "telephone": "+81-3-XXXX-XXXX",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "銀座◯-X-X ◯◯ビル X階",
    "addressLocality": "中央区",
    "addressRegion": "東京都",
    "postalCode": "104-0061",
    "addressCountry": "JP"
  },
  "geo": { "@type": "GeoCoordinates", "latitude": 35.6712, "longitude": 139.7650 },
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
    "opens": "11:00",
    "closes": "20:00"
  }],
  "knowsLanguage": ["ja", "en", "zh"],
  "areaServed": [{ "@type": "Place", "name": "銀座" }, { "@type": "Place", "name": "有楽町" }]
}

QUOTE

※ 美容クリニックの JSON-LD は厚生労働省 医療広告ガイドライン公式ページ(最新版・令和6年3月改訂、第6版)(取得 2026-05)の禁止表現(「日本一」「最高峰」「100%効果がある」等の比較優良広告・絶対的効能表現、患者の体験談)を避けて記述すること。

埋め込み方: 上記 JSON を <script type="application/ld+json">...</script> で囲んで自店サイトの <head> に貼り付け、検証は Google Rich Results Test で URL またはコードを入れると即診断できます。


資産 2: hreflang + 多言語 GBP 属性テンプレ

銀座は東京を訪問した訪日外国人の 51.9% が立ち寄るエリア(※ 出典: 東京都産業労働局 令和6年 国・地域別外国人旅行者行動特性調査(n=14,091、取得 2026-05))です。英語クエリ(Ginza sushi private room Ginza Michelin restaurant)に加え、中国語繁体・簡体での検索も多く、自店サイトの多言語対応を Google に正しく認識させる hreflang タグと、GBP の多言語属性設定テンプレを置きます。

2-1. HTML の hreflang タグ(<head> に貼る)

html
<!-- 日本語ページ(デフォルト) -->
<link rel="alternate" hreflang="ja" href="https://yourstore.example/" />
<!-- 英語ページ -->
<link rel="alternate" hreflang="en" href="https://yourstore.example/en/" />
<!-- 中国語簡体字 -->
<link rel="alternate" hreflang="zh-CN" href="https://yourstore.example/zh-cn/" />
<!-- 中国語繁体字 -->
<link rel="alternate" hreflang="zh-TW" href="https://yourstore.example/zh-tw/" />
<!-- 言語指定なしのフォールバック -->
<link rel="alternate" hreflang="x-default" href="https://yourstore.example/" />

<!-- og:locale (Open Graph) -->
<meta property="og:locale" content="ja_JP" />
<meta property="og:locale:alternate" content="en_US" />
<meta property="og:locale:alternate" content="zh_CN" />
<meta property="og:locale:alternate" content="zh_TW" />

QUOTE

※ hreflang は相互参照が必須。各言語ページの <head> にも同じ link 要素群とセルフ参照を入れる(※ 仕様: Google 検索セントラル — 地域別 URL に hreflang を使用する(取得 2026-05))。

2-2. GBP 多言語属性 設定チェックリスト YAML

GBP の管理画面で設定する英中日項目を YAML 形式で並べました。コピペして自店用に書き換え、Google Business Profile マネージャーで対応項目に貼り付けてください。

yaml
# GBP 多言語設定チェックリスト(銀座店舗向け)
business_name:
  ja: "◯◯(店舗名)"
  en: "◯◯ Ginza"
  zh: "◯◯銀座店"
description:
  ja: |
    銀座◯丁目、銀座駅徒歩◯分の◯◯料理店。
    完全個室(◯〜◯名対応)でご接待・記念日にご利用いただけます。
    英語・中国語メニュー対応、英語対応スタッフ常駐。
  en: |
    Located ◯ min walk from Ginza Station. Authentic ◯◯ cuisine
    with private rooms for ◯-◯ guests. Perfect for business
    entertainment and special occasions. English/Chinese menus
    and English-speaking staff available.
  zh: |
    位於銀座◯丁目,距銀座站步行◯分鐘的◯◯料理店。
    可預訂個人包廂(◯〜◯位用),適合商務接待和紀念日。
    提供英文・中文菜單,會英文的工作人員常駐。
attributes:
  - has_english_menu: true
  - has_chinese_menu: true
  - has_private_room: true
  - accepts_reservations: true
  - serves_alcohol: true
  - good_for_business_meetings: true
  - dress_code: "smart_casual"
  - has_wifi: true
posts_languages: ["ja", "en", "zh-CN"]
review_reply_languages: ["ja", "en", "zh-CN"]

設定先: GBP マネージャー → 情報 → 各項目を編集 → 「言語の追加」で英語版・中国語版を入力。属性は「機能と特長」セクションで設定。


資産 3: GBP 説明文テンプレ(業態別5本、長文版)

GBP の説明文は管理画面で長文を設定できます。Google は説明文をランキングシグナルとして使うことを明示していませんが、ユーザーの来店動機形成と検索クエリのマッチングには強く効きます(一般仕様: Google Business Profile ヘルプ — ビジネス情報のガイドライン(取得 2026-05))。以下は銀座の主要5業態で、◯ を埋めればそのまま管理画面の文字数上限内に収まる完成形です。

3-1. 高級寿司・割烹(接待業態)

code
銀座◯丁目、銀座駅徒歩◯分の場所にある◯◯料理の専門店です。
店主の◯◯が◯◯年間磨いてきた江戸前の技術と、豊洲市場で
毎朝厳選する旬の素材を使い、おまかせコースのみご提供します。

完全個室は最大◯名様まで対応。ご接待・ご会食・記念日のご利用に
お選びいただいています。事前予約のお客様には、お席のご案内を
最優先でお取り計らいします。

英語メニュー・英語対応スタッフ常駐、中国語メニューもご用意して
おります。和光(銀座四丁目交差点)徒歩◯分、GINZA SIX 徒歩◯分の
立地です。

【コース】◯◯コース ¥◯◯,◯◯◯ / ◯◯コース ¥◯◯,◯◯◯
【営業時間】17:00-23:00(L.O. 22:00)
【定休日】◯曜日
【席数】カウンター◯席 / 個室◯室
【ご予約】お電話 03-XXXX-XXXX または公式サイトより

3-2. オーセンティックバー(深夜営業)

code
銀座◯丁目にある、大人のためのオーセンティックバーです。
仕事終わりの一杯から、終電後の二次会まで、静かな空間で
お過ごしいただけます。

ウイスキー◯◯銘柄、カクテル◯◯種類、ワイン◯◯◯銘柄を取り
揃えています。バーテンダー◯名が、お客様の好みに合わせた
一杯をお作りします。

お一人様歓迎、カウンター◯席、テーブル個室◯室。深夜の
お時間でも、安心してお立ち寄りいただけます。英語対応可、
英語メニューあり。

【営業時間】18:00-翌1:00(L.O. 翌0:30)
【定休日】日曜日
【席数】カウンター◯席 / テーブル◯席 / 個室◯室
【チャージ】¥◯,◯◯◯
【ご予約】お電話 03-XXXX-XXXX

3-3. フレンチ・記念日業態

code
銀座◯丁目、銀座駅徒歩◯分の◯◯料理レストランです。
◯◯出身のシェフが、季節ごとに厳選する食材で、コースのみ
ご提供します。

記念日コースには、アニバーサリープレート・メッセージカード
対応・お花のご用意も承ります(要事前予約)。完全個室(◯〜◯名)
も完備、ご接待・記念日・プロポーズなど、特別なシーンにお選び
いただいています。

ドレスコード:スマートカジュアル。英語対応スタッフ常駐、
英語・中国語メニューあり。ソムリエ在籍。銀座四丁目交差点
徒歩◯分。

【コース】ランチ ¥◯,◯◯◯ / ディナー ¥◯◯,◯◯◯
【ワイン】◯◯◯銘柄取り揃え、ソムリエ在籍
【営業時間】ランチ 12:00-14:30 / ディナー 18:00-22:30
【定休日】◯曜日
【ご予約】お電話 03-XXXX-XXXX

3-4. クラブ・ラウンジ(接待・特定遊興)

code
銀座◯丁目で◯◯年営業している会員制クラブです。
ママの◯◯と◯◯名のスタッフが、銀座らしいおもてなしで
ご接待・ご会食のお時間をお過ごしいただきます。

完全個室VIPルームを◯室完備。シャンパン・ワインのご用意は
◯◯◯銘柄。カラオケ完備、メンバー制ですが初回ご来店も
ご紹介状があれば承ります。

【営業時間】20:00-翌1:00(L.O. 翌0:30)
【定休日】日曜日
【席数】カウンター◯席 / VIPルーム◯室
【セット料金】¥◯◯,◯◯◯〜
【ご予約】お電話 03-XXXX-XXXX
【ご利用案内】会員制・初回はご紹介またはお電話にて

QUOTE

※ クラブ・ラウンジは風営法に基づく許可種別(風俗営業 / 特定遊興飲食店)により表現可能な内容が変わります。GBP の説明文・属性・写真で誤認を招かないよう、許可種別と整合させてください。

3-5. 美容皮膚科・美容クリニック

code
銀座◯丁目、銀座駅徒歩◯分の美容皮膚科クリニックです。
形成外科・皮膚科専門医の◯◯が、患者様お一人お一人の肌質と
ご希望に合わせた施術プランをご提案します。

ご相談・カウンセリングは予約制で承ります(初回◯分・無料 or 
カウンセリング料 ¥◯,◯◯◯)。施術内容・料金・リスクは事前に
詳しくご説明します。

英語・中国語対応スタッフ在籍、在日外国人の方の来院も多数。
銀座四丁目交差点徒歩◯分、有楽町駅徒歩◯分。

【主な施術】◯◯ / ◯◯ / ◯◯(詳しくは公式サイトをご確認ください)
【診療時間】11:00-20:00(最終受付 19:30)
【休診日】◯曜日
【ご予約】お電話 03-XXXX-XXXX または公式サイトより

QUOTE

※ 美容クリニックの説明文は医療広告ガイドライン第6版(令和6年3月)に準拠。「日本一」「最高峰」等の比較優良広告、「絶対に効果がある」「必ず治る」等の絶対的効能表現、患者の体験談は禁止対象。違反は行政指導の対象です。


資産 4: 口コミ返信 30パターン(★1-5 × 6シーン × 日英)

BrightLocal 2026 調査では「口コミ返信が1週間以内」を期待する消費者が 81% でした(※ 出典: BrightLocal Local Consumer Review Survey 2026(取得 2026-05))。返信は 24-72 時間以内に行う・★ごとに違うトーンで返す・他の閲覧者が読むことを意識して書く のが基本です。以下は銀座の店舗で実運用しているテンプレで、{name} {item} を埋めればそのまま返信に使えます。

4-1. ★5 — 接待・個室利用への返信

text
[日本語]
{name}様、この度はご接待でのご利用、誠にありがとうございました。
個室をお選びいただき、おもてなしのお時間にお役に立てましたこと、
スタッフ一同大変嬉しく存じます。{item}も気に入っていただけたとの
こと、料理長にも伝えさせていただきます。
銀座でお過ごしいただく機会がございましたら、またお目にかかれます
ことを心よりお待ち申し上げております。

[English]
Dear {name}, thank you for choosing our restaurant for your
business entertainment in Ginza. We are delighted that the
private room served the occasion well, and your kind words
about the {item} have been shared with our head chef. We look
forward to welcoming you again on your next visit to Ginza.

4-2. ★5 — 観光客(インバウンド)への返信

text
[日本語]
{name}様、銀座へのご滞在中に当店をお選びいただきありがとうござい
ました。{item}を楽しんでいただけたこと、大変光栄に存じます。
次回東京・銀座にいらっしゃる機会がございましたら、また違う季節の
お料理をお召し上がりいただけますと幸いです。よい旅をお続けください。

[English]
Dear {name}, thank you for visiting us during your stay in
Tokyo. We are honored that you enjoyed the {item}. The next
time you are in Ginza, we hope you can experience our seasonal
menu in a different time of year. We wish you the best for the
rest of your travels.

4-3. ★4 — 改善要望を含む好意的レビューへの返信

text
[日本語]
{name}様、ご来店ありがとうございました。料理にご満足いただけたとの
こと、嬉しく拝読しました。一方で {improvement_point} につきまして
ご指摘をいただき、現場で改善策を検討しています。次回ご来店の際には、
よりご満足いただけるよう努めます。

[English]
Dear {name}, thank you for visiting. We are glad that the food
was to your liking. Your feedback regarding {improvement_point}
has been taken seriously and we are reviewing our process. We
hope to serve you better on your next visit.

4-4. ★3 — 銀座立地・アクセスへの不満

text
[日本語]
{name}様、貴重なご感想をありがとうございます。{access_issue}
につきまして、ご案内が不十分で申し訳ございませんでした。銀座は
出口の多い駅で、地下通路もわかりにくいことがございます。
公式サイトに、銀座駅・銀座一丁目駅・東銀座駅それぞれからの
詳細経路案内(写真付き)を追加いたしました。次回は迷わずお越し
いただけるよう、お電話でもご案内いたします。

[English]
Dear {name}, thank you for the honest feedback. We apologize
that {access_issue} caused inconvenience. Ginza Station has
many exits and the underground passages can be confusing.
We have updated our website with detailed access routes with
photos from Ginza, Ginza-Itchome, and Higashi-Ginza stations.
For your next visit, we are happy to guide you by phone.

4-5. ★2 — ドレスコード・客層ミスマッチへの返信

text
[日本語]
{name}様、ご不快な思いをおかけし申し訳ございませんでした。
{dress_or_atmosphere_issue} について、当店のドレスコード・
ご利用シーンのご案内が不足していたと反省しております。
公式サイト・GBP プロフィールにて、ご利用シーンとドレスコードを
より明確にいたしました。改めて、ご利用に適したお席をお取り
できますよう、ご相談を承れますと幸いです。

[English]
Dear {name}, we apologize for any discomfort caused. We
recognize that our communication about dress code and dining
context could have been clearer. We have updated our website
and Google Business Profile to better describe the intended
experience. We would welcome the chance to host you again
with a more suitable arrangement.

4-6. ★1 — クレーム・否定的レビューへの返信

text
[日本語]
{name}様、この度は大変ご不快な思いをおかけし、心よりお詫び申し上げ
ます。{issue_summary} につきまして、ご指摘の内容を真摯に受け止めて
おります。
お手数ですが、詳細を伺いたく、{contact_phone} または {contact_email}
までご連絡をいただけますと幸いです。お一人お一人のお客様に誠実に
向き合うことが私どもの責任と考えております。

[English]
Dear {name}, we sincerely apologize for the experience you had.
We take the issue regarding {issue_summary} very seriously. We
would like to address this directly — please contact us at
{contact_phone} or {contact_email} so we can discuss the details.
Serving each guest with sincerity is our fundamental responsibility.

返信30パターンの全体マッピング

6シーン日本語English
★5接待・個室 / 観光客 / 記念日
★4改善要望含む / 一部不満 / 価格言及
★3アクセス迷子 / 期待外れ / 待ち時間
★2ドレスコード不一致 / 客層不一致 / 接客不満
★1強いクレーム / 異物・衛生 / 接客重大

上記の代表 6 パターンを元に、シーンごとに {slot} を埋めて 30 通り展開できます。30 通り全文版は /market/meo-review-booster の納品物に含まれます。


資産 5: Google Apps Script — 口コミ自動通知

Google Places API(New)の Reviews フィールドを定期取得して、新着口コミを Slack または Gmail に通知するスクリプトです。Tufe 内部で運用中のコードを汎用化したものです。

準備:

  1. Google Cloud Console で Places API (New) を有効化、API key を発行
  2. 自店の Place ID を Google Places ID Finder で取得
  3. Slack Incoming Webhook URL を発行(不要なら Gmail 版を使う)
  4. Google Apps Script で新規プロジェクト作成、以下を貼り付け
  5. プロジェクトのプロパティに GOOGLE_API_KEY SLACK_WEBHOOK PLACE_ID を設定
  6. トリガー: notifyNewReviews を毎時実行に設定(※ 仕様: Google Apps Script 公式 — 時間主導型トリガー(取得 2026-05))
javascript
/**
 * Google Apps Script: 新着口コミを Slack/Gmail に通知
 * Tufe Company - 2026-05 実運用版(銀座店舗向けカスタマイズ済)
 */

const PROPS = PropertiesService.getScriptProperties();
const PLACE_ID = PROPS.getProperty("PLACE_ID");
const API_KEY = PROPS.getProperty("GOOGLE_API_KEY");
const SLACK_WEBHOOK = PROPS.getProperty("SLACK_WEBHOOK");
const NOTIFY_EMAIL = PROPS.getProperty("NOTIFY_EMAIL");

const LAST_SEEN_KEY = "lastSeenReviewTime";

function notifyNewReviews() {
  if (!PLACE_ID || !API_KEY) {
    console.error("PLACE_ID and GOOGLE_API_KEY are required");
    return;
  }

  const url = `https://places.googleapis.com/v1/places/${PLACE_ID}`;
  const options = {
    method: "get",
    headers: {
      "X-Goog-Api-Key": API_KEY,
      "X-Goog-FieldMask": "displayName,reviews,rating,userRatingCount",
    },
    muteHttpExceptions: true,
  };

  const res = UrlFetchApp.fetch(url, options);
  if (res.getResponseCode() !== 200) {
    console.error("API error: " + res.getContentText());
    return;
  }

  const data = JSON.parse(res.getContentText());
  const reviews = data.reviews || [];
  const lastSeen = PROPS.getProperty(LAST_SEEN_KEY) || "1970-01-01T00:00:00Z";
  const newReviews = reviews.filter((r) => r.publishTime > lastSeen);

  if (newReviews.length === 0) {
    console.log("No new reviews");
    return;
  }

  const latest = newReviews
    .map((r) => r.publishTime)
    .sort()
    .reverse()[0];
  PROPS.setProperty(LAST_SEEN_KEY, latest);

  newReviews.forEach((r) => {
    const text = formatReview(data.displayName?.text || "店舗", r);
    if (SLACK_WEBHOOK) sendSlack(text);
    if (NOTIFY_EMAIL) sendEmail(text);
  });
}

function formatReview(storeName, r) {
  const stars = "★".repeat(r.rating) + "☆".repeat(5 - r.rating);
  return [
    `📣 新着口コミ: ${storeName}(銀座)`,
    `${stars} (${r.rating}/5)`,
    `投稿者: ${r.authorAttribution?.displayName || "匿名"}`,
    `日時: ${r.publishTime}`,
    "",
    r.text?.text || "(本文なし)",
    "",
    `言語: ${r.text?.languageCode || "?"}`,
  ].join("\n");
}

function sendSlack(text) {
  UrlFetchApp.fetch(SLACK_WEBHOOK, {
    method: "post",
    contentType: "application/json",
    payload: JSON.stringify({ text }),
    muteHttpExceptions: true,
  });
}

function sendEmail(text) {
  MailApp.sendEmail({
    to: NOTIFY_EMAIL,
    subject: "新着口コミ通知(銀座)",
    body: text,
  });
}

トリガー設定: スクリプトエディタの「トリガー」→「トリガーを追加」→ notifyNewReviews を時間ベース・毎時実行に設定。


資産 6: n8n ワークフロー JSON — 口コミ→AI返信下書き→人間承認

n8n は OSS のワークフロー自動化ツールです。以下の JSON を n8n の「Import from File」で読み込めば、Places API で新着口コミ取得 → Claude で返信下書き生成 → Slack に承認カード表示 → 承認後に Gmail で店舗マネージャーに通知 のフローが動きます。

json
{
  "name": "Ginza MEO - Review Response Workflow",
  "nodes": [
    {
      "parameters": {
        "rule": { "interval": [{ "field": "hours", "hoursInterval": 1 }] }
      },
      "name": "Every Hour",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.1,
      "position": [200, 300]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "=https://places.googleapis.com/v1/places/{{$env.PLACE_ID}}",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            { "name": "X-Goog-Api-Key", "value": "={{$env.GOOGLE_API_KEY}}" },
            { "name": "X-Goog-FieldMask", "value": "reviews,displayName" }
          ]
        }
      },
      "name": "Fetch GBP Reviews",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [400, 300]
    },
    {
      "parameters": {
        "functionCode": "const lastSeen = $getWorkflowStaticData('global').lastSeen || '1970-01-01T00:00:00Z';\nconst reviews = ($json.reviews || []).filter(r => r.publishTime > lastSeen);\nif (reviews.length === 0) return [];\nconst latest = reviews.map(r => r.publishTime).sort().reverse()[0];\n$getWorkflowStaticData('global').lastSeen = latest;\nreturn reviews.map(r => ({json: r}));"
      },
      "name": "Filter New Reviews",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [600, 300]
    },
    {
      "parameters": {
        "resource": "chat",
        "model": "claude-opus-4-7",
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "あなたは銀座の高級寿司店のマネージャーです。来店客の口コミに対して、丁寧で誠実な返信を日本語と英語で作成します。★1-3 の場合は具体的な改善アクションを示し、連絡先を案内します。★4-5 の場合は感謝を述べ、料理長への共有を伝えます。銀座の地名・アクセス案内(銀座駅・銀座一丁目駅・東銀座駅)を必要に応じて含めます。出力は JSON で {ja: \"\", en: \"\"} 形式。"
            },
            {
              "role": "user",
              "content": "=口コミ評価: {{$json.rating}}/5\n口コミ本文: {{$json.text.text}}\n投稿言語: {{$json.text.languageCode}}\n投稿者: {{$json.authorAttribution.displayName}}"
            }
          ]
        }
      },
      "name": "Generate Reply Draft (Claude)",
      "type": "n8n-nodes-base.anthropic",
      "typeVersion": 1,
      "position": [800, 300]
    },
    {
      "parameters": {
        "channel": "={{$env.SLACK_CHANNEL}}",
        "text": "=📣 新着口コミの返信下書きが届きました(銀座店)\n\n★{{$node[\"Filter New Reviews\"].json[\"rating\"]}} - {{$node[\"Filter New Reviews\"].json[\"text\"][\"text\"]}}\n\n*提案返信(日本語)*:\n{{$json.ja}}\n\n*Suggested reply (English)*:\n{{$json.en}}\n\n承認: ✅  /  修正: ✏️"
      },
      "name": "Post to Slack for Approval",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.2,
      "position": [1000, 300]
    },
    {
      "parameters": {
        "fromEmail": "={{$env.STORE_EMAIL_FROM}}",
        "toEmail": "={{$env.STORE_MANAGER_EMAIL}}",
        "subject": "=【要対応】新着口コミ ★{{$node[\"Filter New Reviews\"].json[\"rating\"]}}(銀座)",
        "text": "=Slackで承認後、GBP管理画面で投稿してください。\n\n下書き(JP):\n{{$json.ja}}\n\nDraft (EN):\n{{$json.en}}"
      },
      "name": "Email Store Manager",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 2.1,
      "position": [1200, 300]
    }
  ],
  "connections": {
    "Every Hour": { "main": [[{ "node": "Fetch GBP Reviews", "type": "main", "index": 0 }]] },
    "Fetch GBP Reviews": { "main": [[{ "node": "Filter New Reviews", "type": "main", "index": 0 }]] },
    "Filter New Reviews": { "main": [[{ "node": "Generate Reply Draft (Claude)", "type": "main", "index": 0 }]] },
    "Generate Reply Draft (Claude)": { "main": [[{ "node": "Post to Slack for Approval", "type": "main", "index": 0 }]] },
    "Post to Slack for Approval": { "main": [[{ "node": "Email Store Manager", "type": "main", "index": 0 }]] }
  }
}

運用前の環境変数設定:

  • PLACE_ID: 自店の Google Place ID
  • GOOGLE_API_KEY: Places API (New) の API key
  • SLACK_CHANNEL: 承認通知を流す Slack チャンネル ID
  • STORE_EMAIL_FROM / STORE_MANAGER_EMAIL: 通知メールの送信元・送信先

資産 7: NAP 整合性チェック Bash + 正規表現

NAP(Name / Address / Phone)が自社サイト・食べログ・Retty・GBP で表記揺れしていると、Google が「同じ店舗か別店舗か」を判別しづらくなり、ランキング上の評価が分散します。以下は Tufe 内部運用のチェックスクリプトです。

bash
#!/usr/bin/env bash
# Tufe Company - NAP Consistency Checker (Ginza)
# 自社サイト・食べログ・Retty・GBP の NAP 表記ゆれを検出

set -euo pipefail

# ====== 自店情報(編集する箇所)======
STORE_NAME="◯◯料理 ◯◯"
ADDRESS_PATTERN='中央区銀座[0-90-9]+丁目[0-90-9]+[--][0-90-9]+'
PHONE_PATTERN='0[3-9][--‐][0-9]{3,4}[--‐][0-9]{4}'

SITES=(
  "https://yourstore.example/"
  "https://yourstore.example/access"
  "https://tabelog.com/tokyo/A1301/A130101/XXXXXXXX/"
  "https://retty.me/area/PRE13/ARE1/SUB101/XXXXXXXX/"
)
# ====================================

echo "== NAP Consistency Check =="
echo "Store: $STORE_NAME"
echo ""

for url in "${SITES[@]}"; do
  echo "[$url]"
  html=$(curl -sL --max-time 10 -A "Mozilla/5.0" "$url" || echo "")
  if [ -z "$html" ]; then
    echo "  ! Fetch failed"
    continue
  fi
  if echo "$html" | grep -q "$STORE_NAME"; then
    echo "  Name: ✓ found"
  else
    echo "  Name: ✗ NOT found ($STORE_NAME)"
  fi
  addrs=$(echo "$html" | grep -oE "$ADDRESS_PATTERN" | sort -u)
  if [ -n "$addrs" ]; then
    echo "  Address detected:"
    echo "$addrs" | sed 's/^/    - /'
  else
    echo "  Address: ✗ not found"
  fi
  phones=$(echo "$html" | grep -oE "$PHONE_PATTERN" | sort -u)
  if [ -n "$phones" ]; then
    echo "  Phone detected:"
    echo "$phones" | sed 's/^/    - /'
  else
    echo "  Phone: ✗ not found"
  fi
  echo ""
done

echo "== Summary =="
echo "上記の Address / Phone が全サイトで完全一致しているか目視確認してください。"
echo "ハイフン種別(- vs - vs ‐)・半角全角・丁目表記の揺れが検出ポイントです。"

よくある検出パターン:

検出例問題
銀座6-10-1 vs 銀座6丁目10-1 vs 銀座6丁目10番1号住所表記揺れ
03-1234-5678 vs 0312345678 vs 03(1234)5678電話番号フォーマット揺れ
◯◯銀座本店 vs ◯◯銀座店 vs ◯◯ 銀座本店店舗名揺れ(本店 / 銀座店表記)

資産 8: 5 KW × 3 地点 順位計測 CSV + Google Sheets 関数

銀座は地点によって地図パックの表示順位が大きく変動します。以下の 3 地点で 5 KW を月次計測すると、地点ごとの強み弱みが見えます。

銀座の標準計測 3 地点(緯度経度)

地点緯度経度出典
和光本館 (SEIKO HOUSE GINZA / 銀座四丁目交差点)35.6712139.7650SEIKO HOUSE GINZA 公式アクセス(取得 2026-05)
歌舞伎座35.669452139.767762松竹 歌舞伎座 アクセス(取得 2026-05)
GINZA SIX35.669563139.764004GINZA SIX 公式アクセス(取得 2026-05)

8-1. 計測結果記録用 CSV テンプレ

csv
date,keyword,location_label,latitude,longitude,my_rank,competitor_top1,competitor_top2,competitor_top3,notes
2026-05-29,銀座 寿司 接待,和光本館前,35.6712,139.7650,3,A店,B店,C店,
2026-05-29,銀座 寿司 接待,歌舞伎座前,35.669452,139.767762,5,A店,D店,B店,東側で弱い
2026-05-29,銀座 寿司 接待,GINZA SIX前,35.669563,139.764004,4,A店,B店,E店,
2026-05-29,銀座 接待 個室,和光本館前,35.6712,139.7650,2,F店,A店,G店,
2026-05-29,銀座 接待 個室,歌舞伎座前,35.669452,139.767762,3,F店,A店,H店,
2026-05-29,銀座 接待 個室,GINZA SIX前,35.669563,139.764004,2,F店,A店,G店,
2026-05-29,銀座 フレンチ 記念日,和光本館前,35.6712,139.7650,8,I店,J店,K店,要改善
2026-05-29,銀座 フレンチ 記念日,歌舞伎座前,35.669452,139.767762,12,I店,L店,J店,圏外間近
2026-05-29,銀座 フレンチ 記念日,GINZA SIX前,35.669563,139.764004,9,I店,J店,M店,
2026-05-29,Ginza sushi private room,和光本館前,35.6712,139.7650,4,A店,N店,F店,英語クエリ健闘
2026-05-29,Ginza sushi private room,歌舞伎座前,35.669452,139.767762,3,A店,N店,F店,
2026-05-29,Ginza sushi private room,GINZA SIX前,35.669563,139.764004,5,A店,N店,O店,
2026-05-29,銀座 ランチ 個室,和光本館前,35.6712,139.7650,7,P店,Q店,A店,
2026-05-29,銀座 ランチ 個室,歌舞伎座前,35.669452,139.767762,9,P店,Q店,R店,
2026-05-29,銀座 ランチ 個室,GINZA SIX前,35.669563,139.764004,6,P店,A店,Q店,

8-2. Google Sheets 集計関数

text
# シート名: "raw" に CSV を貼り付け、別シート "summary" に以下を入れる

# A1: KW別平均順位
=QUERY(raw!A:I, "SELECT B, AVG(F) WHERE A IS NOT NULL GROUP BY B LABEL AVG(F) '平均順位'", 1)

# D1: 地点別平均順位
=QUERY(raw!A:I, "SELECT C, AVG(F) WHERE A IS NOT NULL GROUP BY C LABEL AVG(F) '平均順位'", 1)

# G1: 月次推移
=QUERY(raw!A:I, "SELECT MONTH(A)+1, AVG(F) WHERE A IS NOT NULL GROUP BY MONTH(A)+1 ORDER BY MONTH(A)+1 LABEL MONTH(A)+1 '月', AVG(F) '平均順位'", 1)

資産 9: GBP 投稿カレンダー 12か月分 ICS

銀座の季節・イベントに連動した GBP 投稿スケジュールを ICS(iCalendar)形式で配布します。Google Calendar / Outlook / Apple Calendar に import すれば、12か月分の投稿リマインダーが自動で立ちます。

text
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Tufe Company//Ginza MEO Calendar 2026//JP
CALSCALE:GREGORIAN
METHOD:PUBLISH

BEGIN:VEVENT
UID:ginza-meo-2026-01@tufecompany.co.jp
DTSTART;VALUE=DATE:20260106
SUMMARY:GBP投稿: 新年会コース + 銀座イルミネーション余韻
DESCRIPTION:1月の新年会需要に向けて、コース料金・個室席数・予約方法をGBP投稿。1月上旬まで延長されるイルミネーション情報も連動。
END:VEVENT

BEGIN:VEVENT
UID:ginza-meo-2026-03@tufecompany.co.jp
DTSTART;VALUE=DATE:20260301
SUMMARY:GBP投稿: 銀座七丁目ライオン「お花見ビヤホール」連動
DESCRIPTION:銀座七丁目ライオンで例年3月上旬〜4月中旬開催される「お花見ビヤホール」と連動。桜気分の銀座ランチ・ディナーをアピール。
END:VEVENT

BEGIN:VEVENT
UID:ginza-meo-2026-04@tufecompany.co.jp
DTSTART;VALUE=DATE:20260401
SUMMARY:GBP投稿: 江戸切子桜祭り(東急プラザ銀座)連動
DESCRIPTION:東急プラザ銀座で例年4月上旬開催される江戸切子桜祭りに連動。伝統工芸×桜のテーマで投稿。
END:VEVENT

BEGIN:VEVENT
UID:ginza-meo-2026-05@tufecompany.co.jp
DTSTART;VALUE=DATE:20260505
SUMMARY:GBP投稿: 銀座柳まつり(5/5こどもの日)
DESCRIPTION:銀座柳まつりは銀座固有最大級の年次祭。西銀座通り1〜8丁目歩行者天国、11:00〜17:00、約2,000人のゴールデンパレード。営業時間・パレード沿道のおすすめ席を訴求。出典: 銀座通連合会公式 https://www.ginza.jp/en/event/11990
END:VEVENT

BEGIN:VEVENT
UID:ginza-meo-2026-07@tufecompany.co.jp
DTSTART;VALUE=DATE:20260715
SUMMARY:GBP投稿: 中央区夏の風物詩「風鈴・短冊展示」連動
DESCRIPTION:7月中旬〜8月上旬、歌舞伎座・松竹スクエア・築地本願寺等 約90箇所に南部鉄器/江戸風鈴 約500個展示。涼を感じる銀座散歩マップを投稿。
END:VEVENT

BEGIN:VEVENT
UID:ginza-meo-2026-08@tufecompany.co.jp
DTSTART;VALUE=DATE:20260801
SUMMARY:GBP投稿: ゆかたで銀ぶら(8月第1土曜)
DESCRIPTION:14:00-19:00、松屋銀座等で金魚すくい・輪投げの縁日。中央通り歩行者天国の延長開催。ゆかた特典メニューを訴求。
END:VEVENT

BEGIN:VEVENT
UID:ginza-meo-2026-10@tufecompany.co.jp
DTSTART;VALUE=DATE:20261001
SUMMARY:GBP投稿: 中央区まるごとミュージアム + 忘年会予約開始
DESCRIPTION:10〜11月の中央区まるごとミュージアム(区内歴史文化施設の公開と無料巡回バス)に連動、忘年会コース予約受付開始も同時告知。
END:VEVENT

BEGIN:VEVENT
UID:ginza-meo-2026-11@tufecompany.co.jp
DTSTART;VALUE=DATE:20261115
SUMMARY:GBP投稿: マロニエゲート銀座 Forest Christmas + 忘年会催促
DESCRIPTION:11月中旬からマロニエゲート銀座のクリスマスイルミネーション開始。忘年会の希少性訴求(残席わずか)と組み合わせ。
END:VEVENT

BEGIN:VEVENT
UID:ginza-meo-2026-12@tufecompany.co.jp
DTSTART;VALUE=DATE:20261201
SUMMARY:GBP投稿: 銀座イルミネーション + 忘年会満席間近
DESCRIPTION:中央通り・並木通り・マロニエ通りの銀座イルミネーション特集。銀座の飲食店にとって最大の繁忙期、忘年会・接待・記念日が集中。
END:VEVENT

BEGIN:VEVENT
UID:ginza-meo-2026-weekly@tufecompany.co.jp
DTSTART;VALUE=DATE:20260104
RRULE:FREQ=WEEKLY;BYDAY=SA,SU
SUMMARY:GBP投稿: 中央通り歩行者天国(土日祝12:00〜)
DESCRIPTION:銀座中央通り歩行者天国は1970年8月開始、約1.1km。最大の集客フック。ホコ天直結の入口・テラス席案内・キャリーバッグ預かりサービスを訴求。
END:VEVENT

END:VCALENDAR

使い方: 上記テキストを ginza-meo-2026.ics として保存 → Google Calendar の「カレンダーをインポート」で読み込み → 12か月分の投稿日が予定として表示されます。


資産 10: Places API 自店診断 curl + GBP 完全度スコア Python

10-1. Places API curl 1行(自店プロフィール取得)

bash
curl -s "https://places.googleapis.com/v1/places/YOUR_PLACE_ID" \
  -H "X-Goog-Api-Key: YOUR_API_KEY" \
  -H "X-Goog-FieldMask: displayName,formattedAddress,internationalPhoneNumber,websiteUri,regularOpeningHours,priceLevel,rating,userRatingCount,photos,reviews,businessStatus,googleMapsUri,types,primaryType,editorialSummary" \
  | jq . > tmp/gbp-audit.json

10-2. GBP 完全度スコア算出 Python(0-100点)

python
"""
Tufe Company - GBP Completeness Scorer
銀座 MEO 上位店舗の共通シグナル6軸を基準に、自店の GBP プロフィールを100点満点で診断
"""

import json
import sys
from datetime import datetime, timezone, timedelta

WEIGHTS = {
    "has_phone": 5,
    "has_website": 5,
    "has_hours": 10,
    "has_photos_10plus": 10,
    "has_reviews_100plus": 15,
    "rating_4_3_plus": 15,
    "recent_reviews_3mo_8plus": 15,
    "multilingual_attrs": 10,
    "price_level": 5,
    "primary_type_specific": 10,
}

def score_gbp(data: dict) -> dict:
    score = 0
    breakdown = {}

    has_phone = bool(data.get("internationalPhoneNumber"))
    breakdown["has_phone"] = WEIGHTS["has_phone"] if has_phone else 0

    has_web = bool(data.get("websiteUri"))
    breakdown["has_website"] = WEIGHTS["has_website"] if has_web else 0

    has_hours = bool(data.get("regularOpeningHours"))
    breakdown["has_hours"] = WEIGHTS["has_hours"] if has_hours else 0

    photo_count = len(data.get("photos", []))
    breakdown["has_photos_10plus"] = WEIGHTS["has_photos_10plus"] if photo_count >= 10 else 0

    # 銀座Map Pack上位の典型値: 食べログ集約で TOP5 が 500-1700件の口コミ
    review_count = data.get("userRatingCount", 0)
    breakdown["has_reviews_100plus"] = WEIGHTS["has_reviews_100plus"] if review_count >= 100 else 0

    rating = data.get("rating", 0)
    breakdown["rating_4_3_plus"] = WEIGHTS["rating_4_3_plus"] if rating >= 4.3 else 0

    reviews = data.get("reviews", [])
    cutoff = (datetime.now(timezone.utc) - timedelta(days=90)).isoformat()
    recent = [r for r in reviews if r.get("publishTime", "") > cutoff]
    breakdown["recent_reviews_3mo_8plus"] = WEIGHTS["recent_reviews_3mo_8plus"] if len(recent) >= 8 else 0

    # 銀座固有: 多言語口コミ(en, zh, ko)対応
    languages = set(
        r.get("text", {}).get("languageCode", "ja")[:2]
        for r in reviews
    )
    multilingual = len(languages & {"en", "zh", "ko"}) >= 1
    breakdown["multilingual_attrs"] = WEIGHTS["multilingual_attrs"] if multilingual else 0

    has_price = bool(data.get("priceLevel"))
    breakdown["price_level"] = WEIGHTS["price_level"] if has_price else 0

    primary = data.get("primaryType", "")
    # 銀座の主要カテゴリ
    specific_categories = [
        "sushi_restaurant", "japanese_restaurant", "french_restaurant",
        "italian_restaurant", "bar", "night_club",
        "beauty_salon", "medical_clinic", "dentist",
    ]
    breakdown["primary_type_specific"] = (
        WEIGHTS["primary_type_specific"] if primary in specific_categories else 0
    )

    score = sum(breakdown.values())
    return {"score": score, "max": sum(WEIGHTS.values()), "breakdown": breakdown}


def main():
    if len(sys.argv) < 2:
        print("Usage: python score.py path/to/gbp-audit.json")
        sys.exit(1)
    with open(sys.argv[1]) as f:
        data = json.load(f)
    result = score_gbp(data)
    print(f"\nGBP 完全度スコア: {result['score']}/{result['max']}")
    print(f"店舗名: {data.get('displayName', {}).get('text', '?')}\n")
    print("項目別スコア:")
    for k, v in result["breakdown"].items():
        max_v = WEIGHTS[k]
        status = "✓" if v == max_v else "✗"
        print(f"  {status} {k}: {v}/{max_v}")


if __name__ == "__main__":
    main()

スコア解釈:

スコア状態
90-100Map Pack 上位の典型値、現状維持+月次微調整
70-89上位射程内、不足項目を3か月で埋めれば上位3位以内に届く可能性
50-69基礎整備の余地が大きい、写真/口コミ件数/多言語属性から着手
0-49GBP の最適化が未着手、まず基礎10項目から

資産 11: 銀座の規制まとめ

銀座で MEO を運用する際、業態によっては以下の規制遵守が必須です。GBP 投稿・写真・属性で違反になる表現を避けるため、店舗オーナーが事前に把握すべき公的ルールを最小限の要点でまとめます。

東京都風俗営業条例(銀座1〜8丁目の営業時間延長指定地域)

銀座1〜8丁目は東京都風俗営業等の規制及び業務の適正化等に関する法律施行条例(取得 2026-05)の指定地域で、風俗営業の営業時間が午前1時まで延長可能。クラブ・キャバレー・ラウンジ等のMEO/GBP運用にあたり、深夜営業店舗の営業時間設定・写真規制(女性従業員の顔出し可否)に直結します。

中央区住宅宿泊事業条例(民泊規制)

中央区住宅宿泊事業条例(取得 2026-05)により、中央区全域で住宅宿泊事業(民泊)は土曜正午〜月曜正午のみ実施可能。銀座でAirbnb等を運用する宿泊事業者の GBP 表記(営業日 / 受入時間帯)は条例に整合させる必要があります。

銀座地区地区計画(高度利用型)

銀座地区地区計画(取得 2026-05)により、銀座1〜8丁目限定でカプセルホテル等の低価格宿泊施設には独自基準(定員3人で20㎡以上、+1人ごとに+5.5㎡)。新規宿泊施設の GBP 登録カテゴリ・写真選定に影響します。

銀座デザインルール / 銀座デザイン協議会

銀座デザインルール(取得 2026-05)により、銀座1〜8丁目全域で屋外広告物・看板・デジタルサイネージのデザイン協議が必須。「ヒューマンスケールを超える動画表示は不可」とのガイドラインがあり、GBP写真として店舗外観・看板を載せる場合の景観整合・出店時の看板事前協議に直結します。

東京都屋外広告物条例(中央区窓口)

中央区 屋外広告物(取得 2026-05)により、銀座地区は景観形成特別地区の対象で、屋外広告物の色彩・面積・形状制限が他エリアより厳格。

医療広告ガイドライン(美容外科・美容皮膚科・歯科)

厚生労働省 医療広告ガイドライン公式ページ(最新版・令和6年3月改訂、第6版)(取得 2026-05)。GBP写真でのビフォーアフター掲載・患者の体験談引用・最上級表現(「日本一」「最高峰」等)・絶対的効能表現(「100%効果」等)は禁止。違反は行政指導の対象。


資産 12: 銀座 MEO の失敗パターン 7件

Tufe Company が銀座の事業者から相談を受けた典型的な MEO 失敗パターンです(※ Tufe Company 内部実測 / 2026-05時点、N=銀座支援先・問い合わせ相談履歴)。

  1. ドレスコード未明示で客層がブレる — 高級フレンチ・寿司・クラブで GBP 説明文・写真にドレスコードを明示せず、観光客が短パンサンダルで来店して双方不快になるケース。説明文に「スマートカジュアル」「ジャケット推奨」を明記、外観写真にもドレスアップした来店客が写るものを選ぶ
  2. 銀座駅出口の案内不足でアクセス★3が増える — 銀座駅は出口9つ(A1-A6, A10, B1-B9, C1-C9)、銀座一丁目駅・東銀座駅も近接。GBP の「店舗の説明」とウェブサイトに「どの出口から徒歩◯分」を業態別に最適化(接待客は地下通路、観光客は地上ルート)
  3. クラブ・ラウンジ業態の GBP カテゴリ混同 — 「Bar」「Lounge」「Night Club」「Hostess Club」のいずれかで Google マップ表示が大きく変わる。風営法上の許可種別と整合したカテゴリ選定が必要
  4. 「銀座◯丁目本店」「銀座店」の表記揺れ — 多店舗展開ブランドが NAP 統一できておらず、Google が別店舗扱いするケース。資産 7 のスクリプトで検出可能
  5. インバウンド向け英語属性が「英語メニューあり」だけで止まる — 銀座は訪日客の半数が立ち寄るエリア(前掲・東京都産業労働局 令和6年調査)。「英語対応スタッフ」「中国語メニュー」「Halal対応」「Vegan対応」などインバウンド客が検索する属性まで設定する
  6. 銀座柳まつり・歩行者天国の交通規制を GBP 投稿しない — 銀座柳まつり(5/5)・歩行者天国(土日祝)で車での来店ができない時間帯がある。GBP 投稿で告知しないと「店まで来られなかった」苦情に直結
  7. 写真の質と客層ミスマッチ — 老舗高級店なのに料理写真がスマホ撮影のまま、カジュアル業態なのに過剰にプロ撮影されていたりすると、来店動機が削がれる

セルフチェック 15項目(銀座の店舗オーナー向け)

契約前にすぐ確認できる、銀座の店舗オーナー向けセルフチェックです。15項目中 8項目以下にチェックが入る場合、Map Pack 上位3位以内を不動にするための余地があります。

A. GBP 基礎設定(5項目)

  • 1. GBP のメインカテゴリが業態と完全一致(「居酒屋」ではなく「寿司店」「フレンチ」等で正確に、クラブは許可種別と整合)
  • 2. 店舗名・住所・電話番号(NAP)が Web サイト・食べログ・Retty で完全一致(資産7のスクリプトで検出可能)
  • 3. 説明文に「銀座」「○○丁目」「最寄駅徒歩◯分・どの出口から」「主力業態」「客単価帯」を含む(管理画面の文字数上限まで埋める)
  • 4. 営業時間がランチ帯・ディナー帯・深夜営業で正確に設定済み(祝日例外・歩行者天国の時間帯例外も登録)
  • 5. 予約リンク(TableCheck / Retty / OpenTable 等)が GBP に紐付け済み

B. 業態特化(5項目)

  • 6. メニュー機能で主要 5 品以上が写真付きで登録済み
  • 7. 写真が月 4 枚以上更新されている
  • 8. 「個室あり」「接待利用可」「記念日プラン」「ドレスコード明示」等の属性が業態に応じて設定済み
  • 9. Google ポストが過去 14 日以内に 1 件以上投稿されている(資産9のカレンダーで自動化可能)
  • 10. 口コミ件数・直近3か月の新規口コミが業態の食べログ TOP5 中央値水準まで届いている(寿司・カフェの代表的水準は本ページ「銀座 MEO の市場環境」セクションを参照)

C. 銀座特化(5項目)

  • 11. GBP に英語・中国語版の店舗名・説明文・属性が設定済み(資産2のテンプレで実装可能)
  • 12. 英語・中国語口コミへの該当言語返信が直近 30 日で 1 件以上行われている(資産4の多言語テンプレで実装可能)
  • 13. クラブ・ラウンジの場合、風営法上の許可種別と GBP カテゴリ・営業時間設定が整合
  • 14. 銀座デザインルールに基づき、GBP 写真の看板・外観が景観条例違反になっていない
  • 15. 月次で順位定点観測を行っている(資産8の CSV で実装可能、和光 / 歌舞伎座 / GINZA SIX の 3 地点)

関連ページ


このページを書いた理由(運営者として)

ここまで読んでくれた方に率直にお伝えします。

このページは、Tufe Company に MEO を依頼してもらうための営業ページとして書いていません。銀座で店舗を運営している方が、自分で MEO の基本を整備して、上位を取りに行けるようにするための実装パックです。10資産すべて、Tufe を経由せずに使ってください。

その上で、もし「自店だけで運用するには手が足りない」「業態別の細部までは自分で詰めきれない」と感じられた場合は、Tufe Company の MEO サービスをご検討いただけます。

商品価格何が違うか
MEO Ranking Analyzer¥7,980(買い切り)5 KW × 3地点 = 15計測点を実機計測 + 競合 TOP 5 を 8 軸ベンチ + 業種別 GBP 完全度スコア + 優先施策ロードマップ。資産8と資産10を Tufe 側で実行+分析した納品物
MEO Review Booster¥7,980(買い切り)業種別 SVG QR POP 3サイズ + 口コミ返信 15 パターン + GBP 投稿カレンダー 12か月分 + KPI シート。本ページの資産3・4・9の業種別カスタマイズ版
Monthly MEO Report¥3,980 / 月月次で 5 KW × 3地点測定 + 競合 TOP 3 の口コミ・写真変化通知 + 季節 KW + 順位低下原因仮説
Tufe Local Pack¥9,980(バンドル)AI Search Pack + MEO Review Booster + MEO Ranking Analyzer + CVR Rewrite Report の 4本セット

商品ページ以外に、オンライン・契約前提なしの相談枠もあります。「資産2の hreflang を自店サイトに入れたいけど CMS が WordPress でどこに入れればいいか分からない」のような具体的な質問だけでも結構です。

相談フォーム(オンライン・無料)はこちら

来てくれてありがとうございました。