# タスク：gyuhiya.com への構造化データ実装・NAP統一

このファイルの内容を、上から順番にそのまま実行してください。判断や設計は不要です。すべて指定どおりに配置するだけで完了します。

対象：`gyuhiya.com`（Shopify・カスタムテーマ）

**このファイルの範囲**

- Step 1〜5：**GEO対策**（生成AI検索での引用最適化）— 構造化データ（schema.org）、meta description、OGPの実装
- Step 6：**MEO対策のうちサイト側でできる部分**（NAP統一）— Googleビジネスプロフィール自体の登録は別途進めており、このファイルの対象外です。サイト内の店名・住所・電話番号の表記統一のみを扱います

Step 6は住所の最終確定を待たず、**今すぐ着手できます**（求肥屋様が正しい住所をご存知のため）。

---

## 前提（実行前に必ず確認）

- このテーマは Liquid（Shopify のテンプレート言語）です。
- 既存のコードは一切削除・変更しないでください。**追記のみ**を行ってください。
- 各コードブロックの直前に「貼り付け先」を明記しています。ファイルが複数候補ある場合は、実際のテーマ構成を確認してから該当する1ファイルに入れてください。

---

## Step 0：作業前にテーマを複製する（必須・最優先）

本番公開中のテーマを直接編集しないでください。

1. Shopify管理画面 → オンラインストア → テーマ
2. 公開中テーマの「…」→ 複製
3. 複製された「〜のコピー」の方だけを編集する
4. 完了後、動作確認してから複製したテーマを公開する

**この手順を飛ばして本番テーマを直接編集することは禁止です。**

---

## Step 1：`layout/theme.liquid` の `</head>` 直前に、以下を追記

Organization（会社情報）と Store（店舗情報）の構造化データです。

```html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://gyuhiya.com/#organization",
      "name": "株式会社求肥屋",
      "alternateName": ["求肥屋", "Gyuhiya"],
      "url": "https://gyuhiya.com/",
      "email": "contact@gyuhiya.com",
      "telephone": "+81-6-7777-8757",
      "foundingDate": "2026-05-01",
      "founder": {
        "@type": "Person",
        "name": "坂本 康太"
      },
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "本庄東1-11-9 久野ハイツ1A",
        "addressLocality": "大阪市北区",
        "addressRegion": "大阪府",
        "postalCode": "531-0074",
        "addressCountry": "JP"
      },
      "sameAs": [
        "https://www.instagram.com/gyuhiya/",
        "https://maps.app.goo.gl/3yYAFPww9jwsFGVM6"
      ]
    },
    {
      "@type": ["Store", "FoodEstablishment"],
      "@id": "https://gyuhiya.com/#store",
      "name": "求肥屋 天六店",
      "parentOrganization": { "@id": "https://gyuhiya.com/#organization" },
      "url": "https://gyuhiya.com/",
      "telephone": "+81-6-7777-8757",
      "servesCuisine": "和菓子",
      "priceRange": "¥¥",
      "currenciesAccepted": "JPY",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "本庄東1-11-9 FOODBASE天六",
        "addressLocality": "大阪市北区",
        "addressRegion": "大阪府",
        "postalCode": "531-0074",
        "addressCountry": "JP"
      },
      "geo": {
        "@type": "GeoCoordinates",
        "latitude": 34.7117015,
        "longitude": 135.5089722
      },
      "openingHoursSpecification": [
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": [
            "Monday","Tuesday","Wednesday",
            "Thursday","Friday","Saturday","Sunday"
          ],
          "opens": "12:00",
          "closes": "18:00"
        }
      ]
    }
  ]
}
</script>
```

**注意（あとで確認が必要な箇所）**

- `Organization` の住所は「久野ハイツ1A」、`Store` の住所は「FOODBASE天六」で、意図的に**書き分けています**（同一建物か否かが未確定のため）。この住所表記の統一については **Step 6（NAP統一）** で扱いますので、ここでは変更しないでください。
- `sameAs` は現在Instagram・Googleマップのみです。Yahoo!プレイス等へ登録した場合は、そのURLをこの配列に追記してください（サイテーション統制の中心になります）。

---

## Step 2：商品ページのテンプレートの末尾に、以下を追記

`sections/main-product.liquid` など、商品ページを描画しているファイルを特定し、その**末尾**に追記してください。Shopifyの変数を使っているため、**全商品共通で1箇所に入れるだけ**で構いません。

```html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "@id": {{ request.origin | append: product.url | json }},
  "name": {{ product.title | json }},
  "description": {{ product.description | strip_html | truncate: 400 | json }},
  "image": [
    {%- for image in product.images limit: 5 -%}
      {{ image | image_url: width: 1200 | prepend: "https:" | json }}
      {%- unless forloop.last -%},{%- endunless -%}
    {%- endfor -%}
  ],
  "brand": {
    "@type": "Brand",
    "name": "求肥屋"
  },
  "category": "和菓子 / プリン",
  "manufacturer": { "@id": "https://gyuhiya.com/#organization" },
  "offers": {
    "@type": "Offer",
    "url": {{ request.origin | append: product.url | json }},
    "price": {{ product.price | divided_by: 100.0 | json }},
    "priceCurrency": "JPY",
    "availability": {%- if product.available -%}
      "https://schema.org/InStock"
    {%- else -%}
      "https://schema.org/OutOfStock"
    {%- endif -%},
    "seller": { "@id": "https://gyuhiya.com/#organization" },
    "shippingDetails": {
      "@type": "OfferShippingDetails",
      "shippingRate": {
        "@type": "MonetaryAmount",
        "value": 1400,
        "currency": "JPY"
      },
      "shippingDestination": {
        "@type": "DefinedRegion",
        "addressCountry": "JP"
      }
    },
    "hasMerchantReturnPolicy": {
      "@type": "MerchantReturnPolicy",
      "applicableCountry": "JP",
      "returnPolicyCategory":
        "https://schema.org/MerchantReturnNotPermitted"
    }
  }
}
</script>
```

**絶対に変更・削除してはいけない箇所**

- `divided_by: 100.0` — Shopifyは価格を100倍（銭単位）で保持しているため、この変換を消すと価格が100倍で表示されます。
- `MerchantReturnNotPermitted` — 冷凍生菓子のためお客様都合の返品不可としています。特商法の記載と一致させる必要があります。
- **`aggregateRating`（星評価）は追加しないでください。** サイトに実際のレビュー機能が無いため、評価を書くとGoogleの規約違反（手動対策の対象）になります。

---

## Step 3：トップページのテンプレートの末尾に、以下を追記

`templates/index.json` から読み込まれるセクション、またはトップページ用のセクションファイルの末尾に追記してください。

```html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "求肥プリンとは、どんなお菓子ですか？",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "もち米からつくる求肥と、なめらかなプリンを重ねた新しいお菓子です。すくうと絹のようにのびる食感が特徴で、和菓子でも洋菓子でもない口あたりが楽しめます。海外では mochi pudding としてご紹介しています。"
      }
    },
    {
      "@type": "Question",
      "name": "どうやって食べるのがおすすめですか？",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "解凍の仕方で2通りの味わいがあります。冷蔵庫で8時間以上おくともっちりとよくのびる食感に、そこから常温に30〜45分おくといちばんよく伸びる頃合いです。湯煎の場合は弱火で15分あたためると、とろりとなめらかな口どけになります。"
      }
    },
    {
      "@type": "Question",
      "name": "賞味期限はどのくらいですか？",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "冷凍保存の場合、製造日から30日です。解凍後は冷蔵解凍なら48時間以内、湯煎解凍なら温かいうちにお召し上がりください。"
      }
    },
    {
      "@type": "Question",
      "name": "店頭では単品で買えますか？",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "はい。天六の店頭ではみたらし・黒ごま・あんこを単品でお求めいただけます。オンラインショップでの販売は3種セットのみとなります。"
      }
    },
    {
      "@type": "Question",
      "name": "全国に発送してもらえますか？",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "はい。佐川急便の飛脚クール便（冷凍）でお届けします。送料はお届け地域により1,400円からで、商品代金10,000円以上のお買い上げで送料無料です。ご注文確認後、5営業日以内に発送いたします。"
      }
    },
    {
      "@type": "Question",
      "name": "アレルギー物質は含まれますか？",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "商品によって異なります。みたらしは小麦・乳成分・ごま・大豆、黒ごまは乳成分・ごま、あんこは乳成分・オレンジ・ごまを含みます。3種セットにはこれらすべてが含まれます。"
      }
    }
  ]
}
</script>
```

**前提条件**：構造化データに書いてよいのは、実際にページ上に表示されている内容だけです。上記6問はすべて、現在のトップページ本文（食べ方・賞味期限・店舗情報）に記載がある内容から作成しています。**この6問以外は追加しないでください。** 残り（店舗の場所、のし・包装、予約、イートイン、支払い方法など）はクライアント側のヒアリング回答が確定してから別途追加します。

---

## Step 4：`layout/theme.liquid` の `<head>` 内に、以下を追記

meta description（未設定のため追加）。

```html
<meta name="description" content="{%- if page_description -%}
  {{ page_description | escape }}
{%- elsif template.name == 'product' -%}
  {{ product.description | strip_html | truncate: 120 | escape }}
{%- else -%}
  求肥とプリンを重ねた「のびるプリン」の専門店。大阪・天六の店頭とオンラインでお求めいただけます。北新地の日本料理人・政次由宇監修。
{%- endif -%}">
```

---

## Step 5：`layout/theme.liquid` の `<head>` 内に、以下を追記

OGP（SNSシェア時のプレビュー。未設定のため追加）。

```html
<meta property="og:site_name" content="求肥屋">
<meta property="og:type" content="{% if template.name == 'product' %}product{% else %}website{% endif %}">
<meta property="og:title" content="{{ page_title | escape }}">
<meta property="og:url" content="{{ canonical_url }}">
<meta property="og:description" content="{{ page_description | default: shop.description | escape }}">
{%- if template.name == 'product' and product.featured_image -%}
  <meta property="og:image" content="https:{{ product.featured_image | image_url: width: 1200 }}">
{%- else -%}
  <meta property="og:image" content="https://gyuhiya.com/cdn/shop/files/Shopify.jpg">
{%- endif -%}
<meta name="twitter:card" content="summary_large_image">
```

---

## Step 6：NAP（店名・住所・電話番号）をサイト内で統一する【MEO対策】

**これは検索エンジン向けのMEO（地図検索最適化）で重視される項目です。** 同じ店舗の名称・住所・電話番号がウェブ上で表記ゆれを起こしていると、Googleとその他の検索エンジンが「別の場所かもしれない」と評価を分散させてしまいます。Googleビジネスプロフィール自体の登録は別ルートで進めていますが、**サイト側の表記統一はこのタスクの範囲です。**

### 6-1. 現状の把握（実行前に必ず行う）

現在、サイト自身の中で**住所表記が割れています**。

| ページ | 現在の表記 |
|---|---|
| 店舗案内ページ | 本庄東1-11-9 **FOODBASE天六** |
| 会社概要ページ | 本庄東1-11-9 **久野ハイツ1A** |
| 特定商取引法に基づく表記ページ | 本庄東1-11-9 **久野ハイツ1A** |

まず、テーマ内（`templates/`、`sections/`、`snippets/`、`config/settings_data.json`、ページコンテンツを含む）を対象に、次の文字列を横断的に検索し、**該当するファイル名・行・前後の文脈を一覧にして報告してください。**

- `久野ハイツ`
- `FOODBASE`
- `FOOD BASE`
- `本庄東`（上記3つで拾いきれない表記がないかの網羅チェック用）

店名の表記ゆれ（`求肥専門店"求肥屋"` / `求肥屋` / `求肥屋 天六店` など）も、見つかった範囲で併せて報告してください。

### 6-2. 正しい住所への統一

求肥屋様（発注者）に、どちらが正式な店舗住所か（または両方とも異なる第三の表記か）をご確認ください。**この判断はコード上ではできないため、必ず先方への確認を挟んでから実施してください。** 確認が取れたら、6-1で洗い出した該当箇所すべてを、確認された表記に統一してください。

参考として、Step 1で実装した構造化データでは、`Organization`（会社情報）を「久野ハイツ1A」、`Store`（店舗情報）を「FOODBASE天六」として意図的に書き分けています。これは「本社・登記上の住所」と「実店舗の所在地」が異なる可能性を考慮したものです。6-2で先方に確認する際は、**この2つが同一建物なのか、別の場所（本社と店舗）なのか**を明確にしてもらい、別の場所である場合は構造化データ側もこの前提のまま（書き分けたまま）で問題ありません。同一建物であれば、Step 1の該当2箇所（`streetAddress`）も統一してください。

### 6-3. 電話番号・営業時間の確認

上記と合わせて、サイト内に表示されている電話番号（`06-7777-8757`）と営業時間（`12:00-18:00`）についても、ページごとに表記が割れていないかを確認し、割れている場合は統一してください。

---

## Step 7：検証する

以下3ページで、下記2つのツールを使い確認してください。いずれも無料・URL入力のみです。

- https://search.google.com/test/rich-results （Google公式）
- https://validator.schema.org/

確認するページ：

1. トップページ → `Organization` `Store` `FAQPage` が検出されること
2. 商品ページ（3種セット） → `Product` が検出され、価格が `2360` になっていること（`236000` のように100倍で出ていたら Step 2 の `divided_by: 100.0` が抜けています）
3. 商品ページ（単品） → 価格が `770` または `820` になっていること

いずれもエラー（赤）が0件であることを確認してください。警告（黄）は任意項目のため残っていて構いません。

あわせて、Step 6で統一した住所・電話番号が、サイト内の全ページで表記が一致していることを目視でも確認してください。

---

## Step 8：付帯タスク（コードとは無関係・手作業）

- Shopify管理画面の各商品編集ページで、**販売元（vendor）を「マイストア」から「求肥屋」に変更**してください。構造化データのブランド名としても参照されます。
- 商品登録名が `求肥プリン　みたらし`（全角スペース）と `求肥屋プリン あんこ`（半角スペース・屋号違い）で表記が割れています。`求肥プリン ◯◯` に統一してください（クライアント確認済みの場合のみ実施。未確認なら保留）。

---

## 完了後

上記 Step 0〜8 が完了したら、以下を報告してください。

- 実装した項目（Step 1〜5のうちどれを完了したか）
- Step 6-1 で見つかったNAP表記ゆれの一覧、および 6-2 で統一した内容
- Step 7 の検証結果（エラー件数、NAP表記の一致確認）
- 保留にした項目とその理由（あれば）
