「Shopifyでお店を作ったから、構造化データを入れておいて」。そう頼まれたものの、どのファイルを開けばいいのか分からない。そんな状態でこの記事にたどり着いた方が多いのではないかと思います。
調べると、schema.orgの型の名前が次々に出てきます。ところが、いちばん最初に確かめることは、その名前ではありません。
この記事は、標準テーマDawnをそのまま使っているShopifyの担当者を想定して書きました。専門用語はその場で言い換えます。最後は「今日どの順番で手を動かすか」まで持っていきます。
こんなふうに調べていませんか
- 「Shopify 構造化データ 実装」で検索して、編集するファイルを探している
- AIに聞いたら「アプリを入れましょう」と返ってきたが、それでいいのか判断がつかない
- 「AI検索で出るようにschemaを入れて」と言われたが、どこで終わりなのか分からない
この記事を読み終えたときに手に入るもの
- Dawnがすでに出している型と、まだ出していない型を、自分で見分けられるようになります
- テーマのどのファイルに書くのかが、図で分かります
- 触る前の準備から公開までの順番が、そのまま作業手順になります
結論30秒でわかる、この記事の結論
- Shopifyの構造化データ実装で最初にやることは、追加ではなく確認です。
- 標準テーマDawnは、商品ページにProduct(バリアントがあればProductGroup)、記事ページにArticleをすでに出しています。この2つは足しません。
- 足せるのは、Dawnが出していない型です。Organization・LocalBusiness・BreadcrumbList・Review系がここにあたります。
進行役は3人です。若葉さん(Web担当2年目)は「そもそも、それって何ですか?」を、高梨課長(マーケ課長)は「誰がやるんですか?」を聞く役、鈴木さん(AIO/SEOの専門家・本誌監修)が答える役です。
01Shopifyの構造化データ実装、AI検索対策としては何から始めるんですか?
若葉さんShopifyでお店を作ったので、構造化データを入れておいて、と言われたんです。でも、どこに何を書けばいいのか、まったく見当がつかなくて…。
鈴木さん最初の一歩は、書くことではありません。いま何が出ているかを見ることです。ここを飛ばすと、同じ情報を二重に埋め込んでしまうことがあるんですよ。
構造化データとは、ページの中身を検索エンジンや生成AIが読み取りやすい形にそろえて書いたデータです。Shopifyでは、これをゼロから書く必要のあるページは多くありません。
標準テーマDawnは、商品ページと記事(ブログ)ページに、構造化データをすでに出力しています。実務で最初に必要なのは、追加ではなく確認です。 すでに出ている型に同じ型を重ねると、同じページに同種の構造化データが複数ある状態になります。
一方で、Dawnが出していない型もあります。そちらは重なる心配なく足せます。「出ているものは触らない、出ていないものだけ足す」。これが、この記事を通した判断の軸です。
着手の目安として、Shopify公式ブログは実装の優先順位を紹介しています。Organization・Local business・Product・Price・Breadcrumb・Product availabilityという並びです。MerchantReturnPolicyは「Other schema types to consider」という別のセクションで扱われています。
ただ、この並びには見落とされやすい前提があります。Productは、優先順位を検討する前にDawnが実装済みだという点です。 並びを上から順に手作業でつぶしていくと、途中でいきなり二重実装に入ってしまいます。
この章のまとめ
Shopifyの構造化データ実装は、コードを書くところから始まりません。いま出ているものを開いて見るところから始まります。
02Shopifyのテーマは、AIO的にどのファイルを見ればいいんですか?
構造化データを安全に足すには、テーマのファイル構成を先に押さえます。Shopify公式ドキュメントは、テーマを4種類のファイルで説明しています。layout/theme.liquidが全ページ共通の外枠、templates/*.jsonがページ種別ごとにどのsectionを並べるかの定義、sections/*.liquidがページ内の再利用できるコンテンツモジュール、snippets/*.liquidがどこからでも呼び出せる部品です。
言葉だけだと入り組んで見えるので、住まいにたとえてみます。layoutは建物そのもの、templatesは間取り図、sectionsは一つひとつの部屋、snippetsはどの部屋にも持ち込める家具です。
ここで、つまずきやすい点が1つあります。商品ページの構造化データは、templates/product.jsonではなく、sections/main-product.liquidに書かれています。 Online Store 2.0のテーマでは、JSONテンプレートが直接コードを持ちません。処理はsection側のファイルへ委ねる構成になっています。
この構成を知らないままtemplatesの中を探すと、該当のコードが見つかりません。そして「うちのテーマには入っていないらしい」という誤解が生まれます。ここが、二重実装のいちばん多い入口です。
この章のまとめ
探しにいく先は、templatesではなくsectionsです。JSONテンプレートは並び順を決めるだけで、中身はsectionのファイルが持っています。
03Dawnは構造化データをどこまで出してくれているんですか?AI検索での扱いは?
高梨課長鈴木さん、うちはDawnをほぼそのまま使っています。この状態だと、どこまでできていることになりますか。
鈴木さん実際のテーマのコードを見ると、構造化データが書かれているファイルは2つだけでした。商品ページと記事ページですね。
高梨課長逆に言うと、それ以外は白紙ということですか。
鈴木さんそうなります。白紙のところは、こちらで書き足せる余地が残っている、と読み替えていただければ。
| ページ種別 | 出力される型 | 実装ファイル |
|---|---|---|
| 商品ページ | Product(バリアントありはProductGroup) | sections/main-product.liquid |
| 記事(ブログ)ページ | Article | sections/main-article.liquid |
| 全ページ共通 | なし(OGP・Twitterカードのメタタグのみ) | layout/theme.liquid、snippets/meta-tags.liquid |
商品ページに書かれているコードは、次の3行です。
<script type="application/ld+json">
{{ product | structured_data }}
</script>記事ページも同じ形で、productがarticleに変わるだけです。このstructured_dataフィルタは、productとarticleのオブジェクトに使えます。バリアントを持たない商品はschema.orgのProduct型、1つ以上のバリアントを持つ商品はProductGroup型として出力されます。この仕様は2024年7月16日、Googleの推奨に合わせてProductGroup対応へ更新されました。
layout/theme.liquidを確認しても、schema.orgに関わるコードは見つかりませんでした。そこから読み込まれるsnippets/meta-tags.liquidも同じです。OGPやTwitterカード用のmetaタグはありますが、JSON-LDではありません。
この章のまとめ
Dawnが出しているのは、商品ページと記事ページの2つです。それ以外の型には、こちらで足す余地が残っています。
04Shopifyで足していい構造化データは、AI対策ではどれになりますか?
Organization・LocalBusiness・BreadcrumbList・Review系の4種類は、Dawnには実装されていません。ここは重なる心配なく足せます。
どれから手をつけるかは、先ほどのShopify公式ブログの並びが手がかりになります。あの並びのうち、Dawnが出していないのはOrganization・Local business・Breadcrumbの3つです。上から順に置き直すと、そのまま着手順になります。
パンくずの型は『BreadcrumbList schemaの書き方|必須3項目と例外』、レビュー関連は『Review・AggregateRating schemaの実装手順』で扱っています。
この章のまとめ
足す先は、白紙の4種類だけです。順番は公式ブログの並びを借りれば、迷わずに決まります。
05Shopifyの構造化データ実装で触る前のバックアップは、AI対策の作業でも必要なんですか?
高梨課長コードを触ると聞くと、正直こわいです。うちには専任のエンジニアがいません。
鈴木さんでしたら、順番を1つ足しておきましょう。テーマを複製して、複製したほうを編集します。 Shopify公式ヘルプセンターも、カスタマイズ前のバックアップ作成をすすめています。
高梨課長ライブのテーマをそのまま編集すると、どうなりますか。
鈴木さん書き間違いが、そのままお店に出ます。複製で作業していれば、公開に切り替える前のプレビューで気づけます。
ライブ(公開中)のテーマを直接編集すると、記述ミスがそのまま店舗に反映されます。ここが作業の安全弁になります。
コードを触る前に、この順で準備します
テーマ一覧を開く
Shopify管理画面で「オンラインストア」>「テーマ」へ進みます
複製する
編集したいテーマの操作メニューから「複製」を選びます
名前を確認する
「Copy of [テーマ名]」という名前で複製が作られます
コード編集を開く
複製したテーマの操作メニューから「コードを編集」を開きます
複製側だけで作業する
以降の編集は、この未公開のテーマだけで行います
プレビューしてから切り替える
表示と構造化データを確認できてから公開にします
テーマの保存枠には上限があります。テーマがすでに20個ある場合は、複製する前に、使わなくなった1つを削除して空きを作る必要があります。 ここで手が止まりやすいので、着手の前に一覧を見ておくと進みが早くなります。
この章のまとめ
複製は、コードが書けるかどうかとは別の話です。複製さえしておけば、書き間違えても公開前に引き返せます。
06LLMO対策として、Shopifyの構造化データ実装でLiquidはどう書くんですか?
Liquidのオブジェクトは、公式ドキュメントで定義された名前と綴りのまま使います。存在しないプロパティ名を書いてもエラー画面にはならず、空欄のまま処理が進むことがあります。 画面は普通に表示されるので、間違いに気づきにくいのが厄介です。
| オブジェクト | 主なプロパティ | 内容 |
|---|---|---|
| shop | shop.name / shop.url / shop.description / shop.email | ストアの基本情報 |
| shop.brand | shop.brand.logo / shop.brand.slogan | ブランドアセット(ロゴ等) |
| product | product.title / product.vendor / product.featured_image | 商品ページで参照できる情報 |
| article | article.title / article.author / article.published_at | 記事ページで参照できる情報 |
この章のまとめ
Liquidは、綴りを間違えても止まりません。名前は思い出しながら書かず、公式のリファレンスから写します。
07AI検索最適化で効くように、Shopifyのフィルタはどう使い分けますか?
JSON-LDそのものの書き方は『JSON-LDの書き方入門|3つのコピペ例で今日から書ける【図解つき】』で扱っています。ここではShopify特有の2つのフィルタに絞ります。
文字列をJSON-LDへ出力するときは、jsonフィルタを通します。 ストア名や商品名に引用符(")が入っていると、そのまま出した場合にJSONの構文が壊れるためです。このフィルタは値をクォートで囲み、中の引用符も自動でエスケープします。
"name": {{ shop.name | json }}画像を扱う場合はimage_urlフィルタを使います。img_urlという旧フィルタは非推奨なので、新しい構文で書きます。widthかheightのどちらかは指定が要り、書かないとエラーになります。
{{ shop.brand.logo | image_url: width: 300 }}この章のまとめ
壊れ方が静かなのが、Liquidの落とし穴です。文字列はjsonフィルタで囲む、画像はimage_urlで出す。この2つで多くが防げます。
08Organization schemaは、Shopifyのどこに置くとAI検索最適化に効きますか?
置き場所は全ページではなく、ホームページの1箇所に絞ります。 Google公式は、ホームページか組織説明ページへの単一設置をすすめています。全ページで繰り返し出力すると、かえって認識されにくくなります。
住所やロゴなど、もっと多くのプロパティを入れたい場合は『Organization schemaの書き方|6グループで埋める順番【図解つき】』の推奨プロパティ一覧をご覧ください。次の節に置くのは、Shopify向けの最小構成です。
この章のまとめ
Organizationは、置く数ではなく置き場所で効きます。ホームページに1つ。判定を挟んで、ほかのページには出さない形にします。
09AIO対応のコードは、Shopifyの構造化データ実装でどこに書き足すんですか?
作業は、複製したテーマのコード編集画面で行います。snippetsフォルダに新規ファイル(例: organization-schema.liquid)を作り、次のコードを貼り付けます。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": {{ shop.name | json }},
"url": {{ shop.url | json }},
"description": {{ shop.description | json }},
"email": {{ shop.email | json }}
{%- if shop.brand.logo %},
"logo": {{ shop.brand.logo | image_url: width: 300 | json }}
{%- endif %}
}
</script>次にlayout/theme.liquidを開き、{% render 'meta-tags' %}の直後へ呼び出しを足します。ホームページかどうかを判定してから描くのがポイントです。template.nameは現在のテンプレート種類を返すプロパティで、ホームページではindexになります。
{% if template.name == 'index' %}
{% render 'organization-schema' %}
{% endif %}この章のまとめ
書き足す場所は2か所です。中身はsnippetsの部品に、呼び出しはlayoutに。判定を挟むことで、置き場所が1つに保たれます。
10構造化データが二重になっていないか、AI検索対策の前にどう確かめますか?
若葉さん足したあと、二重になっていないかは、どうやって見ればいいんでしょうか。
鈴木さんブラウザだけで確かめられますよ。ページのソースを開いて、application/ld+jsonを探します。同じ@typeのブロックが2つ以上並んでいないかを見るだけです。
具体的には、対象のページで右クリックから「ページのソースを表示」を選びます(Windowsは Ctrl+U、Macは Cmd+Option+U)。同じ@typeのブロックが2つ以上並んでいたら、そこが重なっている場所です。
最後にRich Results Test(search.google.com/test/rich-results)へURLを入れ、検出結果とエラー・警告を見ます。ツールの使い分けは『構造化データのテストツール入門|今使うべき2つの使い分け方【図解つき】』にまとめています。
Google公式の構造化データガイドラインも確認しました。同じ種類のブロックが2つある場合にどちらを採用するかという明示的な規定は、2026年8月の時点で見当たりません。 ページ内に複数の種類がある場合の扱いは説明されていますが、同一種類の重なりへの言及はありません。
近い場所には、参考になる指針があります。サイト名の構造化データについてGoogle公式は、WebSite構造化データがすでにある場合は新しいブロックを足さず、同じ場所へまとめて書くと示しています。Productを名指しした規定ではありませんが、「既存の出力に重ねず、まとめる」という考え方は、そのまま当てはめられます。
この章のまとめ
迷ったら、ソースを開いて数えます。同じ型が並んでいないか。この一手だけで、二重実装のほとんどは手前で止まります。
11AIOの観点で、公開前にShopifyの何をチェックすればいいですか?
公開に切り替える前に、ここまでの作業を一度に見返します。抜けやすいのは、複製側で作業したかどうかと、出力の目視です。どちらも作業そのものではなく、作業の前後にある確認だからです。
構造化データを入れれば引用が増える、という話には注意が要ります。この点は『構造化データとAI引用の相関|論文を読んで分かった3つの事実【図解で解説】』で扱っています。過度な期待を置かず、まずは「読める状態にする」ことを優先してください。
この章のまとめ
最後の関門は、コードではなく確認です。複製で作業したか、出力を自分の目で見たか。この2つを通してから公開に切り替えます。
12Shopifyの構造化データ実装で、AI対策としてよくある失敗は何ですか?
同じつまずき方が繰り返されます。どれも、悪意ではなく善意から起きます。
標準搭載を知らずに、Product schemaのアプリを足してしまう。 商品ページには、すでにProduct(またはProductGroup)schemaがあります。アプリを入れる前に、ページのソースで確認する手順が要ります。商品ページの型そのものは『Product schemaの書き方|価格・在庫がズレる3つの落とし穴【図解つき】』で扱っています。
ライブテーマを直接編集してしまう。 Shopify公式ヘルプセンターは、複製したテーマでの作業をすすめています。記述ミスがすぐ店舗へ反映される事態を、手前で避けられます。
存在しないプロパティやフィルタを書いてしまう。 非推奨のimg_urlを新しい構文のつもりで使う、shop.brand.logoをshop.logoと書き間違える、といったミスです。空欄のまま静かに通るので、プレビューでの目視を習慣にしてください。
この章のまとめ
失敗の3つは、いずれも確認の省略から生まれます。逆に言えば、確認を挟むだけで手前で止められます。
13よくある質問
Shopifyの標準テーマに、自分でProduct schemaを追加する必要はありますか?
Dawn等の標準テーマでは、追加は不要です。structured_dataフィルタによって、商品ページにはすでにProduct(またはProductGroup)schemaが出力されています。まずはページのソースを表示して、自社テーマの状態を確認してください。
structured_dataフィルタの出力に、項目を追加できますか?
フィルタの出力そのものを部分的に拡張する公式な方法は確認できませんでした。項目を足したい場合は、レビューアプリなど専用の仕組みを使うか、出力全体を置き換える実装が必要になります。後者は上級者向けの対応です。
レビューアプリを入れると構造化データは重複しますか?
アプリの仕様によります。AggregateRatingやReviewを独自に出力するアプリもあるため、入れたあとは本記事の確認手順で重なりの有無を確かめてください。
テーマを複製せずに、直接ライブテーマのコードを編集してもいいですか?
すすめられません。Shopify公式ヘルプセンターは、バックアップとして複製したテーマでの作業を案内しています。ライブテーマの直接編集は、ミスがそのまま公開へ反映されるリスクがあります。
Organization schemaは商品ページにも設置すべきですか?
その必要はありません。Google公式は、ホームページか組織説明ページへの単一設置をすすめています。全ページへの繰り返し設置は、かえって認識の妨げになります。
14まとめ|今日この順で手を動かす
Shopifyの標準テーマDawnは、商品ページと記事ページに構造化データをすでに出しています。作業の起点は、コードを書くことではなく、ページのソースを開いて見ることです。足すのは、Dawnが出していない型だけです。
もう一度、今日この順で
ページのソースを開く
商品ページと記事ページで、いま出ている型を確かめます
出ていない型だけを選ぶ
Organization・LocalBusiness・BreadcrumbList・Review系から選びます
複製したテーマに足す
snippetsへ書き、theme.liquidから判定つきで呼び出します
AI検索では、こう聞かれています
Shopifyで構造化データを実装するには、どのファイルを編集すればいいですか?
「Shopifyのテーマは、AIO的にどのファイルを見ればいいんですか?」の章で図にしています
Shopifyの標準テーマに、自分でProduct schemaを追加する必要はありますか?
「Dawnは構造化データをどこまで出してくれているんですか?AI検索での扱いは?」の章で分けています
ShopifyにOrganization schemaを入れるには、どこに書けばいいですか?
「AIO対応のコードは、Shopifyの構造化データ実装でどこに書き足すんですか?」の章にコードがあります
次に読むなら、この記事です