メインコンテンツまでスキップ
ストア運営・コンテンツ

年399ドルのスキーマアプリは「構造化データの重複は都市伝説」と書いている。そして、テーマ側の重複を消す作業を100ドルで売っている

Shopifyには structured_data というLiquidフィルタがあり、バリアントのない商品にはProduct、1つ以上のバリアントがある商品にはProductGroupを出力します。Dawnはこれを1行で呼んでいます。App Storeのスキーマアプリは、その上にもう1つのブロックを追加します。2026年9月15日に米国のShopifyストア10件の商品ページを1ページずつ取得し、すべてのJSON-LDブロックを解析しました。3件は1つのURLに複数のProduct系エンティティを持ち、2件はHTMLに商品マークアップがなくJavaScript実行後にはじめて現れ、1件は最後まで何も出力せず、1件は星評価を @type のないブロックに入れていて、どのエンティティにも結び付いていませんでした。立場が明確な2社は完全に対立しています。Ilana's JSON-LD for SEO(年399ドル、評価4.9・443件)は「The myth of duplicate structured data」という記事で重複は問題ないと書き、別途100ドルでテーマ側の構造化データを削除するサービスを販売し、テーマを更新すると元に戻るため買い直しが必要だと自ら明記しています。Webrex: AI SEO, Schema JSON-LD(Built for Shopify、評価4.9・853件)はリスティングで「Fix schema errors & duplicates in one click」と書いています。Admin API 2023-04以降、公開アプリはShopifyの個別許可なしにテーマファイルを書き換えられません。shopify.dev、Google検索セントラル、両社の自社ページ、Shopify App Storeで2026年9月15日に確認しています。

AIECアプリ研究所 AI編集部公開日 更新日 読了 18分#SEO・アクセス改善#アプリ比較

この記事でわかること

この記事の目次Contents閉じる開く

Shopifyの商品ページでソースを表示して、application/ld+json を検索してみてください。そこに書かれているものが、「このページの商品は何か」というGoogleの問いに対して、あなたのストアが返している答えです。

テーマとレビューアプリとSEOアプリが入ったストアでは、この問いに複数の当事者が、互いに面識のないまま、それぞれ答えています。

先に結論

Shopifyは商品マークアップを自動で出力していて、それは必ずしも Product ではない。 Liquidフィルタ structured_data は、バリアントのない商品には schema.org の Product を、1つ以上のバリアントがある商品には ProductGroup を出力します。Dawnはこれを sections/main-product.liquid の中で1行呼んでいるだけです。

Googleはこの2つを別物として扱う。 Googleの商品バリアント向けドキュメントは、バリアント用プロパティに加えて Product 構造化データを追加するよう書いています。また ProductGroup の productGroupID とバリアント側の inProductGroupWithID を両方書く場合、一致していなければならないと明記しています。

実際のストアでは、ページが1つのことを言っていることはあまりない。 2026年9月15日に米国のShopifyストア10件から商品ページを1件ずつ取得し、すべてのJSON-LDブロックを解析しました。3件は1つのURLに複数の Product 系エンティティを持っていました。2件はHTMLに商品マークアップがなく、JavaScript実行後にだけ現れました。1件は最後まで何も出力しませんでした。1件は星評価を @type も @context もないブロックに入れていて、どのエンティティにも結び付いていませんでした。

立場の明確な2社が、正面から対立している。 Ilana's JSON‑LD for SEO (TM)は「The myth of duplicate structured data(構造化データ重複の神話)」という記事を公開し、Googleは気にしないと主張しています。Webrex: AI SEO, Schema JSON‑LDはリスティングで「Fix schema errors & duplicates in one click」と書いています。

前者は、その削除作業を別売りしている。 100ドルの買い切りで、テーマを手作業で編集する形です。そして同社の商品ページ自身が、テーマ更新で消えることを警告しています。「If you update or change your theme, you'll override the changes to your code and will need to purchase the service again.」

アプリが黙ってそれをやることはできない。 Admin API 2023-04以降、Assetリソースへの PUT と DEL は write_themes スコープに加えて、Shopifyが個別に付与する例外許可を必要とします。SEOは例外対象カテゴリーに挙がっていますが、どのアプリが許可を持っているかはリスティングのどこにも書かれていません。

最も安上がりな対処は、自分で5分の監査をすること。 この記事で扱う内容は、すべてソース表示とRich Results Testで確認できます。

アプリを入れる前にShopifyが出力しているもの

Shopifyの structured_data フィルタは、オブジェクトをschema.org形式へ変換するものとして文書化されており、product と article オブジェクトに対して使えます。多くのマーチャントが読んだことのない部分は、出力ルールです。

Product objects are output as a schema.org Product if they have no variants, and a ProductGroup if they have one or more variants.

Dawnはこれを使っています。sections/main-product.liquid の末尾で、実装はこの3行だけです。

<script type="application/ld+json">
  {{ product | structured_data }}
</script>

これは良い知らせであると同時に落とし穴でもあります。テーマ制作者ではなくShopify自身が生成した、構造的に妥当なマークアップが無料で出力されるということです。同時に、商品にバリアントが付いた瞬間——サイズや色で売るアパレルやシューズはほぼすべてそうです——そのページのエンティティは ProductGroup になり、素の Product を追加するアプリは、その隣に型の違う2つ目の答えを置くことになります。

米国10ストアが実際に出力していたもの

米国のShopifyストア10件から商品ページを1件ずつ選び、生HTMLを取得し、同じURLをヘッドレスブラウザで読み込んでJavaScript実行後のDOMも解析しました。10件すべてが稼働中のShopifyストアフロントです。2回に分けて測るのは、GoogleのShopping向けクロールが必ずしもJavaScriptを実行せず、そのことをGoogle自身が文書に書いているからです。

ストアHTML内JavaScript実行後意味
allbirds.comProductGroup(91バリアント入れ子)+ トップレベルのキーが aggregateRating だけのブロック同じ評価ブロックに @type も @context もなく、商品に結び付いていない
brooklinen.comBreadcrumbList のみProduct ×2 + BreadcrumbList商品エンティティは2つともクライアント側で <head> に注入される。うち1つはYotpoのもので、評価と別の価格・別の画像を持つ
blendjet.comProduct ×8同じバリアントごとに1エンティティ。8つすべてが同じストア単位の評価(4.9、69,439件)を繰り返している
chubbiesshorts.comOrganization, BreadcrumbList, Product, ProductGroup同じ1つのURLに商品名が2つ。ProductGroup の productGroupID はShopifyのCollection GIDで、隣の Product の sku は 603263-002
gymshark.comなしProductGroup(7バリアント)初期HTMLに商品マークアップがない
deathwishcoffee.comOrganization, Product同じ問題なし
drsquatch.comなしなし商品構造化データが一切ない
hauslabs.comProduct同じ問題なし
nativecos.comBreadcrumbList ×2, Product同じパンくずが重複、商品エンティティは1つ
thesill.comOrganization, Product, BreadcrumbList同じ問題なし

10件のうち3件は問題なし。3件は1つのURLに複数の Product 系エンティティ。2件は商品マークアップがブラウザ内にしか存在しない。1件は何も出力しない。1件は妥当な ProductGroup を出力したうえで、評価を読み取れない場所に置いています。

Brooklinenのページが、この問題の最も分かりやすい形です。両方の書き手が見えるからです。片方は id="productData" を持ち、sku は BT-WFL-148、評価なし。もう片方は class="y-rich-snippet-script"——Yotpo: Product Reviews Appのものです——で、aggregateRating は4.3・24件、画像が違い、価格は53.4。同じ商品名に価格が2つ、画像が2つ、星が付いているのは片方だけ。そしてどちらも、Googleの最初のパスが見るHTMLには存在しません。

Allbirdsのページは惜しい例です。ProductGroup 自体は整っていて、productGroupID は MENS_TREE_DASHERS2、name は Men's Tree Dasher 2、hasVariant に91バリアントが入っています。そのうえで、aggregateRating 4.5・3,449件だけを含むブロックが別に置かれ、トップレベルに @type がありません。2つを結ぶものは何もなく、評価はページ上にあるのに、ページ上のどのエンティティのものでもありません。

Googleのドキュメントが実際に書いていること

Google検索セントラルの商品バリアントのリファレンスから、上の表と突き合わせて読む価値のある3か所を引用します。

ProductGroup の必須プロパティは name だけです。productGroupID も variesBy も hasVariant も推奨止まりです。つまり ProductGroup は、出すのも簡単で、役に立たない形で出すのも簡単です。

識別子について。

Each product group must have a unique ID in its corresponding structured data markup, specified with the inProductGroupWithID property in variant Product properties or the productGroupID property in the ProductGroup property.

そして productGroupID について。

If you provide the identifier for both the ProductGroup property and its variant Product properties, they must match.

Chubbiesのページでは、ProductGroup がCollection GIDを持ち、隣の Product がSKUを持っています。一致していません。

マークアップの置き場所について。

If you're a merchant optimizing for all types of shopping results, we recommend putting Product structured data in the initial HTML for best results.

さらに。

For JavaScript-generated Product markup: Be aware that dynamically-generated markup can make Shopping crawls less frequent and less reliable, which can be an issue for fast-changing content like product availability and price.

GymsharkとBrooklinenはどちらもこの後者に該当します。ここでGoogleが言っていないことにも注意してください。Product が2つあることをペナルティだとは言っていません。識別子が一致しなければならないこと、レンダリングが必要なマークアップは読み取りの信頼性が落ちること、この2つを言っています。

2つのアプリ、2つの正反対の立場

Ilana&#39;s JSON‑LD for SEO (TM)のShopify App Storeリスティングページ上部

出典: Shopify App Store(Ilana's JSON‑LD for SEO (TM)、2026-09-15時点)

Ilana's JSON‑LD for SEO (TM)(開発元: Ilana Davis LLC)は年399ドル・無料トライアルあり、評価4.9・443件。ここで扱う4アプリのうち、無料プランがない2つのうちの1つです。Built for Shopifyバッジはありません。

同社自身の記事「The myth of duplicate structured data」は明確です。「Google doesn't care if you have duplicate sets of the same structured data on a page」と書き、そのあとにGoogleが最良のセットを選ぶ過程についての6段階モデルを示しています。アプリは自社のデータを追加するだけで、テーマ側のデータは削除しません。

そして同じサイトに、100ドルの別商品「Remove Theme Structured Data」があります。削除を勧める理由は3つだけ挙げられています。

  1. The theme provided markup has errors.
  2. You're having issues with Merchant Center.
  3. More than one set of review (aggregateRating) data is present.

3番目は、まさにBrooklinenのページとBlendJetのページのことです。そしてこの商品に付いた注意書きが、この記事で最も実務的な一文です。

When you purchase this service, I will remove the theme microdata and JSON-LD code once. If you update or change your theme, you'll override the changes to your code and will need to purchase the service again.

Webrex: AI SEO, Schema JSON‑LDのShopify App Storeリスティングページ上部

出典: Shopify App Store(Webrex: AI SEO, Schema JSON‑LD、2026-09-15時点)

Webrex: AI SEO, Schema JSON‑LD(開発元: Webrex Studio)は正反対の立場を取ります。Built for Shopify、評価4.9・853件、無料プランと無料トライアルあり。リスティングには「automatically Fixes schema errors & remove duplicates」とあり、箇条書きの1つは「Fix schema errors & duplicates in one click - clean structured data, no code」です。リスティング画像では、テーマ由来のスキーマ、レビューアプリのスキーマ、重複した商品スキーマの3つが削除対象として示されています。

リスティングが書いていないのは、どうやって削除するのかです。これは重要です。Shopifyのルール上、インストール済みのアプリがテーマ由来のスキーマを表示させなくする方法は2つしかなく、その2つは挙動が違うからです。

「削除」が簡単ではない理由

Admin API 2023-04以降、Assetリソースへの PUT と DEL リクエストは write_themes スコープの背後に制限されています。shopify.devは、App Store掲載アプリにとってそれが何を意味するかを明示しています。

If an app that's distributed in the Shopify App Store needs to use Asset resource PUT or DEL requests, then it needs to be granted an exemption by Shopify to use the write_themes access scope.

SEOは例外許可の対象カテゴリーに入っているため、スキーマアプリが許可を持つことはあり得ます。Shopifyは、例外許可がBuilt for Shopify取得にも有効だと書いています。ただし許可は個別審査で、どのアプリが持っているかを示すリスティング項目は存在しません。

つまりアプリの選択肢は次のどちらかです。

  • 例外許可を持ち、テーマファイルを編集する。 <script> タグは本当に出力されなくなります。同時にそれはテーマへの恒久的な編集であり、テーマ更新やテーマ差し替えで元に戻り得ます。100ドルの手作業サービスと同じ失敗パターンです。
  • ブラウザ内でノードを取り除く。 タグはShopifyのサーバーから返ってくるHTMLには残っていて、アプリのJavaScriptが動いたあとにDOMから消えます。HTMLしか読まないクローラーには、依然として見えています。

どちらが間違いというわけではありません。答えている問いが違うだけです。そして掃除の理由がMerchant Center——返されたものをそのまま読みます——であれば、状況が変わるのは前者だけです。

スキーマ特化型4アプリの比較

数値はすべて2026年9月15日時点のShopify App Store(en-US表示)のものです。

アプリ開発元料金評価Built for Shopify無料プラン既存スキーマへの立場
Ilana's JSON‑LD for SEO (TM)Ilana Davis LLC$399/year、無料トライアルあり4.9(443)なしなし追加のみ。削除は100ドルの別サービス
Webrex: AI SEO, Schema JSON‑LDWebrex Studio無料プランあり、無料トライアルあり4.9(853)ありありエラー修正と重複削除をワンクリックで行うと表示。方式はリスティングに記載なし
Schema Markup Snippets by NabuAdNabu Global, Inc.無料5.0(4)なしあり「no theme code」で全ページに追加。削除の記載なし
Schema App Total Schema MarkupSchema AppCore $15/month、Advanced $30/month2.5(3)なしなし既存コンテンツからマークアップを生成・配信。削除の記載なし

Schema Markup Snippets by NabuのShopify App Storeリスティングページ上部

出典: Shopify App Store(Schema Markup Snippets by Nabu、2026-09-15時点)

Nabuは、一般的なケースを素直な形で表しています。無料で、Product、Collection、Breadcrumb、Article、Blog、Merchantのスキーマを追加し、「no theme code needed」と明記しています。何かを削除するとはリスティングのどこにも書いていません。テーマが既に structured_data を呼んでいるストアでは、これは1つ目の隣に2つ目の商品エンティティが来るということです。この記事の残りが扱っているのがまさにその状況であり、それ自体はアプリの欠陥ではありません。

Schema App Total Schema MarkupのShopify App Storeリスティングページ上部

出典: Shopify App Store(Schema App Total Schema Markup、2026-09-15時点)

Schema App Total Schema Markupは、エンタープライズ向けスキーマベンダーのShopify向けプラグインです。Coreが月15ドル、Advancedが月30ドルで、Advancedでは商品・ブログ・記事以外のページ向けにエディタが使えます。評価2.5はレビュー3件によるもので、どちらの方向にも一般化できる件数ではありません。

なお、スキーマも書く総合SEOアプリのほうが、スキーマ特化型よりレビュー件数ははるかに多くなっています。SearchPie: SEO, Schema & Speed(PieLab、Built for Shopify、4.9・2,454件)とSmart SEO AI & Image Optimizer(Sherpas Design、Built for Shopify、5.0・952件)は、どちらも機能一覧にスキーママークアップを挙げています。どちらかが既に入っているなら、メタタグや画像altのために入れたアプリが、商品ページに構造化データを書いている可能性があります。

自分のストアを5分で確認する

  1. バリアントのある商品ページを開き、ソースを表示して application/ld+json を検索し、ブロック数を数えます。
  2. 各ブロックの @type を確認します。見るべきはブロックが複数あることではなく、Product または ProductGroup が複数あることです。商品と並んで Organization や BreadcrumbList があるのは正常です。
  3. ProductGroup と Product の両方がある場合、productGroupID と inProductGroupWithID、sku を突き合わせます。両方書く場合は一致が必要です。
  4. aggregateRating の数を数えます。複数あるケースは、ここで挙げたどのベンダーも直す価値があると認めている唯一の点です。
  5. URLをGoogleのRich Results Testにかけ、コードタブを読みます。書いたものではなく、Googleが解析したものが表示されます。
  6. ソース表示とレンダリング後のDOMを比べます。商品マークアップが後者にしかない場合、Googleが信頼性が落ちると明記している側にいます。

どうすべきか

商品エンティティが1つ、評価が1つなら、何もしなくてよい。 今回の10件のうち3件がこの状態です。スキーマアプリが買えるのは、Shopifyのフィルタが出力しない項目——配送、返品、priceValidUntil、FAQ、動画——であって、存在しない問題の修正ではありません。

問題が aggregateRating の重複だけなら、レビューアプリ側から手を付ける。 多くの場合はレビューアプリのウィジェット設定にある項目で、費用はかかりません。

Merchant Centerで商品が弾かれているなら、削除はサーバー側でなければならない。 Merchant Centerはサーバーが返したものを読みます。ブラウザ側での掃除は届きません。例外許可を持つアプリを使うか、テーマを編集するかで、テーマ変更後にやり直す前提で考えてください。

フロントエンドが独自実装なら、入れる前に監査する。 上の表で問題のあった7件は、どれも structured_data を呼んで終わりの素のテーマには見えません。それぞれが独自の方法で独自のマークアップを書いています。既に自前でマークアップを組んでいるフロントエンドの上にスキーマアプリを載せるのが、1つのURLに Product が8つ並び、ストア単位の評価が8回繰り返される経路です。

何をするにせよ、テーマ更新の前ではなく後にやる。 両社のドキュメントが一致している唯一の点であり、そうしなければ100ドルの請求書が2回それを教えてくれることになります。

出典

RelatedShopifyはLinkpopを終了し、月額5ドルのStarterプランも新規停止した。公式ブログが代わりに勧めるLinktreeのShopifyアプリは評価3.6

Shopifyの無料リンクまとめページLinkpopは2025年7月7日に終了し、linkpop.comは現在shopify.comへリダイレクトされます。2026年8月15日にはヘルプセンターに、SNSで商品リンクを共有するための月額5ドルのStarterプランが「新規ストアには提供されない」と記載されました。そして2026年7月21日付のShopify公式ブログがリンクまとめツールとして紹介する6ツールのうち、Shopify App Storeのリスティングにリンクしているのは2つだけ。LinkShopと、Marketplacesカテゴリに分類され、請求がShopifyの請求書の外で行われ、18件のレビューで評価3.6のLinktreeです。2026年9月18日に7つのリンクまとめアプリの料金を確認しました。分かれ目は月額0〜15ドルの料金ではなく、ページがどこに置かれるか。4つのアプリはShopifyのapp proxy経由で自ストアのドメイン上にページを配信します。つまりページはストアのパスワードの内側にあり、新しい月額0ドルのAgenticプランではそのパスワードが外れることはありません。Shopifyヘルプセンター、shopify.dev、Shopify App Store、稼働中のストアページで確認しています。