Shopify ファセット検索のSEO対策: フィルターURLでクローリング予算を無駄にするのをやめよう
Shopifyのフィルターは数千の重複URLを生成し、クローリング予算を消費してランキングを低下させます。ファセット検索SEOを修正する具体的な手順を紹介します。
Shopifyのコレクションフィルターはプラットフォーム上で最も効果的なUXツールの一つであり、マーチャントが気付かないうちに犯す最も危険なSEOミスの一つです。フィルターの組み合わせごとにクローリング可能なURLが生成される場合、Googlebotは本当に重要なページではなく、薄く、ほぼ重複した内容のページにクローリング予算を費やします。修正には単一の設定切り替えではなく、意図的なクローリングアーキテクチャが必要です。
重要なポイント
- 500個の製品、3つのコレクション、製品あたり3つのバリアントを持つストアは、わずか500個の実際の製品から8,000以上のクローリング可能なURLを生成でき、重複ページでクローリング予算を浪費します。
- 内部リンクがコレクションパスURLではなく
/products/パスのURLを指す場合、Googleはシopifyの自動カノニカルタグを30~40%の頻度で無視します。 - 4つのrobots.txtカスタマイズは、100,000ページ未満のストアではクローリング浪費の大多数に対応します。
- ファセットフィルターパラメータは3つの戦略のいずれかで処理する必要があります:robots.txtでブロック、
noindexを追加、またはフラグメントベースのクライアント側ステートを使用します。 - 検索とディスカバリーアプリは無料で、どのフィルター属性がクローリング可能なURLを生成するかを制御し、コードを変更する前の最初のレバーとなります。
ファセット検索がShopify SEOを破壊する理由
検索とディスカバリーアプリを基盤とするShopifyのストアフロントフィルターは、/collections/shirts?filter.p.tag=blueなどのクエリパラメータ付きURLを生成します。デフォルトでは、Shopifyはフィルターの組み合わせのすべてにカノニカルタグを適用しているわけではないため、Googleはほぼ同一のページの連鎖を見ることになり、各ページは1つのパラメータ値だけが異なります。
最近のeコマースサイト監査(Shopify Plusストアを含む)では、5つのうち4つが、Googlebotのクローリングリクエストの60%以上をユーザーが入力または共有することのないURLに送っており、ほとんどがフィルター組み合わせとソートパラメータであることが判明しました。これはニッチな問題ではありません。フィルターアプリをインストールして何もしなければ、デフォルトの結果です。
規模は急速に増加します。平均して3つのコレクションと3つのバリアントを持つ500個の製品ストアでは、Shopifyのアーキテクチャはわずか500個の実際の製品に対して8,000以上のクローリング可能なURLを作成できます。これはクローリング予算が実際のコンテンツではなく重複ページに費やされていることです。Black Belt Commerceの2026年5月の技術分析で詳しく説明されています。
それを複合させるカノニカルタグの問題
Shopifyは自動的にカノニカルタグを生成します。製品は/products/{handle}を指すカノニカルを取得します。これは正しいシグナルです。問題は、サイト全体の内部リンクが/collections/shirts/products/blue-teeなどのコレクションパスバージョンを指す場合、Googleはカノニカルタグを30~40%の頻度で無視します。
つまり、カノニカルだけでは不十分です。テーマ内のすべての内部リンク(「関連商品かもしれません」カルーセル、パンくずリスト、コレクショングリッドタイルを含む)は、コレクション対応パスではなく/products/ URLに解決される必要があります。テーマのLiquidテンプレートをチェックして、製品URLがどこで出力されるかを確認してください。ほとんどのテーマでは、コレクションループ内でコレクションパスのURLが使用され、これは正確に間違った動作です。
実際の影響を検証するには、Google Search Consoleにアクセスし、**カバレッジ > 除外**を開いて、「重複、送信されたURLがカノニカルとして選択されていません」を探してください。そこに数百のエントリが表示される場合、内部リンクがカノニカルタグを損なっています。
すべてのフィルタータイプに対する3つの戦略
すべてのフィルターが同じ扱いに値するわけではありません。決定ツリーは簡単です:
1. robots.txtでブロック(SEO価値がゼロのフィルター用)
タグベースのコレクションページ(例:/collections/shirts+blue)とソートパラメータはスタンドアロンの検索インテントをほぼ持ちません。robots.txt.liquidファイルにDisallow: /collections/*/tagged/を追加して、Googlebotがそれらをまったくクローリングしないようにします。2021年半ば以降、Shopifyはマーチャントにテーマコードエディタのrobots.txt.liquidテンプレートを使用してrobots.txtをカスタマイズすることを許可し、外部ツールなしでパターンごとの制御を提供しています。
Disallowルールをタグフィルターページに追加すると、ほぼランク付けされないシンコンテンツのクローリング浪費を防ぎます。その1行は、Shopifyの製品タギングを多く使用するストアで驚くほど大きな表面積をカバーします。
2. Noindex(UXに役立つが、スタンドアロンの検索インテントがないフィルター用)
幅広いコレクションでのサイズや色などの一部のフィルターはオンサイトの使いやすさに不可欠ですが、個別のクエリにはランク付けされません。ボットがこれらのページをクローリングしてnoindexディレクティブを確認できるようにしますが、ページがrobots.txtによってブロックされていないことを確認してください。ルールは:ブロックされたページはGoogleにnoindexを通信できないため、一方または他方を使用し、両方は決して使用しないでください。
テーマのLiquidで、noindexタグを条件付きで出力できます:
liquid {% if request.page_type == 'collection' and current_tags %} <meta name="robots" content="noindex, follow"> {% endif %}
これはタグフィルターされたコレクションビューのみを対象とし、ベースコレクションページは完全にインデックス可能のままにします。
3. フラグメントベースのステート(SEO価値がまったくないフィルター用)
目標がゼロの検索表示であるUX駆動のフィルターの場合、クエリパラメータではなくURLフラグメント(例:#color=blue)でフィルタ状態をレンダリングすることを検討してください。Googleのガイダンスでは、一般的にクローリングおよびインデックスのためにURLフラグメントを使用しないことが確認されており、それらのステートを仕様に従って検索から除外しておきます。これはカスタムJavaScriptが状態を管理する必要がありますが、インデックスに表示されるべきではないフィルターの最もクリーンなアーキテクチャソリューションです。
3つのフィルター処理戦略の比較
| 戦略 | Googlebotはページをクローリングします | 最適な用途 | 主な制限 |
|---|---|---|---|
| robots.txtでブロック | いいえ | タグフィルター、ソートパラメータ、検索インテントがゼロのURL | noindexシグナルを渡せない。過剰ブロックを避けるために慎重に使用してください |
| Noindexメタタグ | はい | サイズ、色、またはオンサイトで役立つがランク付けされないUXフィルター | noindexが読まれる前にページが取得されるため、クローリング予算を消費します |
| フラグメントベースのステート | いいえ(フラグメントはGoogleで無視されます) | ゼロの検索表示が目標である純粋にUXのフィルター | ステート管理にカスタムJavaScriptが必要。SEOターゲットフィルターには適していません |
検索とディスカバリーアプリが制御すること(そうでないこと)
Shopifyの無料検索とディスカバリーアプリはフィルターアーキテクチャが始まる場所です。どの製品属性がフィルター可能になるか、およびフィルター値がどのように順序付けされるかを制御します。1つの重要なプラットフォーム制約:5,000以上の製品を持つコレクションはまったくフィルターを表示しません。大規模なカタログがある場合、これはブロードコレクションをより厳密なサブコレクションに分割する理由であり、SEOにも適しています(より対象となるコレクションページ、よりクリーンなクローリングパス)。
アプリが制御しないのは、生成されたフィルターURLが検索でどのように動作するかです。これはカノニカルタグ、robots.txt、および内部リンクを通じてあなたの責任です。アプリはUXレイヤーをセットアップします。SEOレイヤーは別のエンジニアリング関心事です。
ネイティブアプリのリミットが制限的すぎるエンタープライズスケールのストアの場合、サードパーティのフィルターアプリはより多くの柔軟性を追加しますが、すべてのページでロードされるJavaScriptが追加されるため、Largest Contentful Paint(LCP)が2.5秒を超える可能性があり、これはGoogleがランキング信号として使用します。インストールする各アプリはスクリプトをすべてのページに読み込むため、ページ速度に対するフィルター機能のバランスをアプリごとに検討してください。
robots.txt.liquidプレイブック
ここはほとんどのShopifyストアをカバーする凝縮されたルールセットです。これらをrobots.txt.liquidファイルに追加してください:
Disallow: /collections/*/tagged/ Disallow: /search Disallow: /cart Disallow: /checkout Disallow: /account
/collections/*/tagged/行は、製品タグをフィルターとして使用するストアで最も影響があります。Googleでインデックスされたオンサイト検索ページは重複シンコンテンツでクローリング予算を低下させるため、これらもブロックしてください。カート、チェックアウト、アカウントページはインデックスされるべきではなく、既にShopifyのデフォルトrobots.txtでブロックされていますが、明示的にすることでプラットフォーム変更に対するセットアップを将来対応にします。
変更を加えた後、Google Search ConsoleのURL検査ツールを使用して、個別のページが期待通りに応答していることを確認してください。robots.txt変更後2~4週間、週次でクローリング統計レポートを監視してください。「robots.txtによってブロック」除外のスパイクは正常で予想されます。コアコレクションページのインプレッション数の低下は不正常で、Disallowルールが広すぎることを示しています。
内部リンク:カノニカルタグだけではできない修正
ほとんどのマーチャントがスキップする構造修正はテーマの内部リンク出力を更新することです。Liquidでは、コレクションループ内の製品URLは通常次のように出力されます:
liquid {{ product.url | within: collection }}
これはコレクションパスURLを生成します。SEOの場合、カノニカルパスが必要です:
liquid {{ product.url }}
| within: collectionフィルターは、ほとんどのカノニカル不一致レポートの背後にある犯人です。製品カードリンク、パンくずリスト、および関連製品カルーセルから削除すると、Googleのクローリングはカノニカル化している同じURLに従います。カノニカルタグと内部リンクが一致すると、Googleは確実にカノニカルシグナルを尊重します。
テーマのLiquid出力とクローリングアーキテクチャについてのより詳しいレビューが必要な場合、提供しているShopify SEOサービスにはエンゲージメントの一部として完全なクローリング監査が含まれます。
サイトマップの衛生管理
Shopifyの自動生成されるsitemap.xmlは有用なクローリング加速器ですが、定期的なレビューが必要です。サイトマップはデフォルトでコレクションパスの製品URLを正しく除外します。これはプラットフォームの過小評価されたSEO動作の1つです。それが自動的にフィルター出さないのはタグベースのコレクションページと、一部のストア設定では、ページ1を超えてパジネートされたコレクションURLです。
Shopifyはサイトマップエントリを手動で削除することを許可しませんが、Liquidベースのnoindexタグを使用してページをインデックスから抑制できます。これはサイトマップがそれらをリストしている場合でも、GoogleがそれらのURLをインデックスから除外すべきであると通知します。サイトマップ省略だけにnoindexシグナルとして依存しないでください。確実に除外したいページには、<head>のメタロボットタグを使用してください。
実装の検証
カノニカル修正、robots.txt更新、および内部リンク修正を実装した後、この順序で検証します:
- Google Search Console > カバレッジ > 除外:「重複、送信されたURLがカノニカルとして選択されていません」のカウントは4~8週間以内に低下すべきです。
- クローリング統計レポート:総クローリングリクエストは減少または安定するはずです。コレクションパスURLに向かう共有は低下するはずです。
- Screaming FrogまたはAhrefs Site Audit:30日後に再クロール時に3xx、noindex、カノニカル不一致URLの比率をベースラインと比較します。
- URL検査:5~10個のフィルターURLをスポットチェックして、Googleの選択されたカノニカルが意図した
/products/URLと一致することを確認してください。
ファセット検索を超えてCore Web Vitalsと構造化データに進む完全なテクニカルチェックリストについては、前に公開したShopifyスピード最適化ガイドを参照してください。
AIクローラーの次元
2年前には大規模では存在しなかった1つの要因:ChatGPT、Perplexity、Googleの生成AIオーバービューシステムからのAIクローラーは現在、ストアにヒットするボットトラフィックに追加されています。これらのクローラーは別のユーザーエージェントの下で動作し、Shopifyのデフォルトrobots.txtはUser-agent: *のみに対応しています。AIボットを明示的に許可または制限したい場合、robots.txt.liquidで命名されたユーザーエージェントルールが必要です。さらに重要なことに、これらのクローラーは構造化データに大きく依存して製品ページを理解します。正規コレクションおよび製品ページを表面化するサイトマップと、正しいProductスキーマを組み合わせることが、AI生成レスポンスで製品がどのように引用されるかです。
最初にクローリングアーキテクチャを修正してください。Googlebotに表示するカノニカルURLはAIクローラーが製品を理解し、推奨するために使用するものと同じです。
よくある質問
Shopifyはファセット検索SEOの問題を自動的に修正しますか?
Shopifyは製品ページにカノニカルタグを自動的に追加しますが、フィルターURLのインデックス作成、タグページのrobots.txtルール、または内部リンクパスを管理しません。マーチャントはrobots.txt.liquidテンプレートとLiquidテーマ編集を使用して、これらを個別に構成する必要があります。
すべてのコレクションフィルターURLをrobots.txtでブロックすべきですか?
いいえ。スタンドアロンの検索インテントがゼロのフィルターの組み合わせ(ソートパラメータやタグフィルターページなど)のみをブロックしてください。本来の検索クエリを表すフィルター(たとえば、特定の素材にフィルターされたコレクション)は、一意のカノニカルURLを持つ独自のインデックス可能なページに値するかもしれません。
クローリング予算問題を修正した後、ランキング改善を見るにはどのくらい時間がかかりますか?
クローリング予算の修正は通常、Googlebotが再クロール後4~8週間以内に、Google Search Consoleでカノニカルが再評価されて結果が表示されます。検索結果のオーガニックランキング改善は、通常、インデックス修正が安定した後2~3ヶ月後に続きます。