ECサイトのテクニカルSEOチェックリスト(Shopify・WooCommerce対応)

Shopify・WooCommerceのECサイト向けテクニカルSEOチェック。noindex、robots.txt、サイトマップ、title、H1、canonical、商品の構造化データ、OGP、alt属性を確認します。

FixReports 編集部2分で読めます

ECサイトのテクニカルSEOチェックリストで確かめるのは、次の3点です。検索エンジンが見つけてほしいページをクロールしてインデックスできること、各ページが何のページかを理解できること、そして検索結果で適切に表示できることです。具体的には、意図しないnoindexがないこと、重要なページをブロックしないrobots.txt、正規URLだけを載せたサイトマップ、ページごとに固有のタイトルとメタディスクリプション、明確なH1が1つあること、バリエーションやコレクション経由の重複をまとめるcanonicalタグ、有効なProductの構造化データ、Open Graphタグ、内容がわかる代替テキスト、内部リンク切れがないことです。これらのチェックは技術的な障害を取り除くものであり、検索順位やトラフィックを保証するものではありません。

要点

  • robots.txtが制御するのはクロールであって、インデックス登録ではありません。ページをGoogleに表示させたくない場合はnoindexを使い、そのページをrobots.txtでブロックしないでください。ブロックするとGoogleはそのルールを読み取れません(Google 検索セントラル (新しいタブで開きます))。
  • 1つのサイトマップファイルに含められるのは、最大50,000件のURLまたは非圧縮で50 MBまでです。Googleは<priority>と<changefreq>を無視します(Google 検索セントラル (新しいタブで開きます))。
  • Googleは見出しに理想的な数はないとしていますが、商品名を示すH1が1つあれば、買い物客にとってもスクリーンリーダーにとっても最もわかりやすいメインタイトルになります。
  • 販売者リスティングには、商品名、画像、ネストされたOffer(AggregateOfferではないもの)が必要で、Offerには0より大きい価格と通貨が必要です(Google 検索セントラル (新しいタブで開きます))。

ShopifyとWooCommerceは標準で何に対応していますか?

Shopifyはテクニカルな基本事項の大半をプラットフォームとテーマで処理しますが、WooCommerceのストアでは、そのいくつかをWordPressコアとSEOプラグインに頼ることになります。

項目ShopifyWooCommerce(WordPress)
XMLサイトマップ/sitemap.xml、自動生成WordPress 5.5以降は/wp-sitemap.xml、またはSEOプラグインのサイトマップ
robots.txt自動生成。robots.txt.liquidで編集WordPressが生成する仮想ファイルで、コアのサイトマップが記載される
canonicalタグ自動で追加コアは個別ページにのみ追加
メタディスクリプション各商品の「検索結果のプレビュー」(search engine listing)の欄SEOプラグインまたはテーマ
商品の構造化データテーマがstructured_dataフィルターで出力WooCommerceコアが商品ページにJSON-LDを出力
Open Graphタグテーマ(Dawnではmeta-tags.liquid)SEOプラグインまたはテーマ
カートとチェックアウトrobots.txtでDisallowWooCommerceがnoindexを設定

各行の詳細と出典は以下のとおりです(2026年10月時点)。

ストアのページがインデックスされるようにするにはどうすればよいですか?

ページがインデックスされるのは、ステータス200を返し、robots.txtでブロックされておらず、noindexルールがない場合です。

noindexルールはmetaタグかHTTPヘッダーで指定できます。robots.txtの中での指定は、Googleではサポートされていません(Google (新しいタブで開きます))。

<meta name="robots" content="noindex">
X-Robots-Tag: noindex

robots.txtはクローラーのトラフィックを管理するものです。ブロックされたURLでも、ほかのページからリンクされていれば、説明文なしで検索結果に表示されることがあります(Google (新しいタブで開きます))。Search Consoleのページのインデックス登録レポート (新しいタブで開きます)には、インデックスに登録されていない各URLが、「noindex タグによって除外されました」(URL marked 'noindex')などの理由とともに表示されます。すべてのURLをインデックスさせる必要はありませんが、商品ページとコレクションページはインデックスされている必要があります。

Shopify

デフォルトのrobots.txtは、管理画面、カート、チェックアウト、アカウント、注文のパスに加え、コレクションページと重複する絞り込み(/collections/*+*)や並べ替え(sort_by)のコレクションURLをブロックしています。robots.txt.liquidテンプレートで編集できますが、Shopifyはこれをサポート対象外のカスタマイズとしており、誤りがあるとストアのトラフィックがすべて失われるおそれがあると警告しています(Shopify ヘルプセンター (新しいタブで開きます))。

ページ、ブログ記事、商品を非表示にするには、整数型のメタフィールドseo.hiddenを1に設定します。これでサイトマップ、検索エンジン、ストア内検索から非表示になります。また、商品ステータスをUnlisted(非掲載)にすると、コレクションやおすすめ商品からも非表示になります(Shopify ヘルプセンター (新しいタブで開きます))。ストアがパスワードで保護されている間は、検索エンジンはサイトマップを読み取れません。

WooCommerce

設定 > 表示設定 > 検索エンジンでの表示(Settings > Reading > Search engine visibility)を確認します。「検索エンジンがサイトをインデックスしないようにする」にチェックが入っていると、WordPress(5.3以降)はページにnoindex, nofollowのrobots metaタグを追加し(WordPress.org (新しいタブで開きます))、コアのサイトマップも無効にします。ステージングサイトでストアを構築した場合は、公開時にこのチェックが外れているか確認してください。WooCommerce自体も、カート、チェックアウト、マイアカウントのページにnoindexを付け、注文完了などのエンドポイントでX-Robots-Tag: noindexを送信します(WooCommerceのソースコード (新しいタブで開きます))。これは想定どおりの動作です。

ECサイトのXMLサイトマップには何を含めるべきですか?

サイトマップには、検索結果に表示させたい、インデックス可能な正規URLだけを載せます。商品、コレクションまたはカテゴリー、コンテンツページ、ブログ記事です。

Googleのルールは次のとおりです。1ファイルあたり最大50,000件のURLまたは50 MBまで、それより多い場合はサイトマップインデックスを使うこと、絶対URLを使うこと、検索結果に表示したいURLだけを載せること、<lastmod>は正確な場合にだけ使うことです(Google (新しいタブで開きます))。サイトマップはSearch Consoleのサイトマップレポートから送信するか、robots.txtで指定します。

Sitemap: https://example.com/sitemap.xml

Shopifyでは、すべてのドメインに自動生成のsitemap.xmlがあり、商品、コレクション、ブログ、ページの子サイトマップにリンクしていて、追加するたびに更新されます。海外向けのドメインには、それぞれ専用のサイトマップが作られます(Shopify ヘルプセンター (新しいタブで開きます))。

WooCommerceでは、WordPress 5.5以降、コアのサイトマップインデックスが/wp-sitemap.xmlで提供され、WordPressのrobots.txtに記載されます。1つのサイトマップに含まれるのは、デフォルトで最大2,000件です。Yoast SEOなどのSEOプラグインは、これを独自のサイトマップに置き換えます(Make WordPress Core (新しいタブで開きます))。送信する前に、実際に公開されているのがどのサイトマップかを確認してください。

商品ページのタイトルとメタディスクリプションはどう書けばよいですか?

すべてのページに、固有で内容がわかるタイトルと、ページを要約したメタディスクリプションを付け、重要な語句を先頭に置きます。Googleはどちらも画面に収まるように切り詰めるためです。

Googleのタイトルに関するガイダンスでは、タイトルは内容がわかる簡潔なものにし、キーワードの詰め込みや定型文の繰り返しを避け、サイト名は区切り文字を使って先頭か末尾に置くよう求めています。文字数の上限はありませんが、タイトルリンクはデバイスの幅に合わせて切り詰められます(Google (新しいタブで開きます))。また、GoogleはH1やog:titleなど、ほかのテキストからタイトルリンクを生成することもあります。

スニペットについては、Googleは主にページのコンテンツを使い、メタディスクリプションのほうがページを正確に説明している場合にはそれを使います。Googleは価格やメーカーといった商品情報を含めることを提案しており、自動生成した説明文も、読みやすく変化に富んでいれば問題ないとしています(Google (新しいタブで開きます))。

<title>Linen shirt, natural, relaxed fit | Example Store</title>
<meta name="description" content="Relaxed-fit shirt in European linen. Sizes XS to XXL, $68, free returns within 30 days.">

H1は各ページに1つだけにすべきですか?

Googleは特定の数を求めていませんが、ページの内容を示すH1が1つあれば、買い物客、スクリーンリーダー、検索エンジンのいずれにとっても最もわかりやすいメインタイトルになります。

Googleの「SEOスターター ガイド」は、見出しに理想的な数はなく、見出しの順序は検索には影響しないとしています。ただし、意味に沿った順序はスクリーンリーダーの助けになります(Google (新しいタブで開きます))。タイトルリンクに関するガイダンスでは、メインタイトルを最も目立つテキスト、たとえば最初に表示される<h1>にすることを提案しています。W3Cのチュートリアルは、見出しがページの構成を伝えること、見出しのレベルを飛ばさないようにすべきことを補足しています(W3C WAI (新しいタブで開きます))。

ECサイトでよくある不備は、全ページでロゴがH1になっている、商品名が<div>やH2になっている、アプリによって2つ目のH1が追加されている、コレクションページにH1がない、といったものです。

canonical URLは、バリエーションやコレクションによる重複をどのように処理しますか?

canonicalタグは、同じ内容を持つ複数のURLのうちどれをインデックスすべきかをGoogleに伝えます。そのため、バリエーションのパラメーター付きURLやコレクション経由のURLは、優先する1つの商品URLを指すようにします。

Googleは、リダイレクトとrel="canonical"を強いシグナル、サイトマップへの掲載を弱いシグナルとして扱います。絶対URLを使い、正規URLを指定するためにrobots.txtやnoindexを使わないでください(Google (新しいタブで開きます))。?color=greenのような任意のクエリパラメーターでバリエーションを表す場合、GoogleはパラメーターなしのURLを正規URLにすることを提案しています。Googleは#以降のフラグメントを無視するため、バリエーションにはパスかパラメーターが必要です。また、インデックス可能なページでは自己参照のcanonicalを使い、リンク、サイトマップ、canonicalタグの間でURLを統一することを推奨しています(Google (新しいタブで開きます))。

<link rel="canonical" href="https://example.com/products/linen-shirt">

Googleが指定を無視した場合、ページのインデックス登録レポートに「重複しています。Google により、ユーザーがマークしたページとは異なる正規ページが選択されました」(Duplicate, Google chose different canonical than user)と表示されます。これはたいてい、シグナルが矛盾しているサインです。

  • Shopify:canonicalタグは自動で生成されます(Shopify ヘルプセンター (新しいタブで開きます))。Dawnテーマは<link rel="canonical" href="{{ canonical_url }}">を出力します。withinフィルターを使うテーマでは、コレクションを含む商品URL(/collections/summer/products/linen-shirt)が作られ、Shopifyはこれが標準の商品ページと重複すると説明しています(Shopify (新しいタブで開きます))。それらのcanonicalが/products/linen-shirtを指しているか確認してください。
  • WooCommerce:WordPressコアがcanonicalタグを出力するのは、商品や固定ページなど個別の表示だけです(WordPress開発者リファレンス (新しいタブで開きます))。そのため、ショップページやカテゴリーのアーカイブはSEOプラグインやテーマに依存します。商品のパーマリンク構造を変更するとすべての商品URLが変わり、リダイレクトを追加しない限り、古いリンクは404エラーになります(WooCommerce (新しいタブで開きます))。

販売者リスティング向けのProduct構造化データはどう設定しますか?

ページ上の価格と在庫状況に一致するネストされたOfferを含むProductマークアップを追加し、Googleのリッチリザルト テストで確認します。

Googleは、直接購入できない商品ページには商品スニペットを、購入できるページには販売者リスティングを使います(Google (新しいタブで開きます))。形式は一般的にJSON-LDが推奨されています(Google (新しいタブで開きます))。販売者リスティングにはname、image、そしてOfferとしてのoffersが必要で、priceは0より大きく、priceCurrencyはISO 4217形式でなければなりません。推奨プロパティにはavailability、gtin、brand、aggregateRating、shippingDetails、hasMerchantReturnPolicyがあります(Google (新しいタブで開きます))。バリエーションについては、GoogleはhasVariant、variesBy、productGroupIDを使ったProductGroupに対応しています(Google (新しいタブで開きます))。

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Linen shirt, natural",
  "image": ["https://example.com/images/linen-shirt-1x1.jpg"],
  "sku": "LS-NAT-M",
  "brand": { "@type": "Brand", "name": "Example Store" },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/products/linen-shirt",
    "price": "68.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}
</script>

マークアップするのは、買い物客に見えている内容だけにしてください。構造化データが検索結果に表示されることを、Googleは保証していません(Google (新しいタブで開きます))。

  • Shopify:{{ product | structured_data }}は、バリエーションのない商品にはProductを、バリエーションのある商品にはProductGroupを出力します(Shopify (新しいタブで開きます))。Dawnでは商品セクションに含まれています。レビューアプリやSEOアプリが独自のマークアップを追加する場合は、重複していないか確認してください。
  • WooCommerce:コアは商品ページにProductのJSON-LDを出力します。SKU、offers、レビューがある場合は評価、そしてGTIN、UPC、EAN、ISBNの欄(WooCommerce 9.2 (新しいタブで開きます)で追加)が入力されていればGTINも含まれます。バリエーションごとに価格が異なる可変商品では、URLで1つのバリエーションが選択されていない限り、AggregateOfferの価格帯が出力されます(WooCommerceのソースコード (新しいタブで開きます))。販売者リスティングにはOfferが必要なので、必ずテストしてください。

返品については、Googleは組織単位の返品ポリシーのマークアップも受け付けますが、Merchant CenterやSearch Consoleでの設定のほうが優先されます(Google (新しいタブで開きます))。

商品ページにはどのOpen Graph(OGP)タグが必要ですか?

商品ページにはog:title、og:type、og:image、og:urlに加えて、og:descriptionとog:image:altを設定します。そうすれば、共有されたリンクに正しいタイトルと写真が表示されます。

Open Graph protocolは、この4つを必須としており、og:urlを正規URLと定義し、すべてのog:imageにog:image:altを添えるべきだとしています(ogp.me (新しいタブで開きます))。

<meta property="og:type" content="product">
<meta property="og:title" content="Linen shirt, natural">
<meta property="og:url" content="https://example.com/products/linen-shirt">
<meta property="og:image" content="https://example.com/images/linen-shirt-1200x630.jpg">
<meta property="og:image:alt" content="Natural linen shirt on a hanger">
<meta property="og:description" content="Relaxed-fit shirt in European linen.">

商品画像の代替テキストはなぜ重要なのですか?

代替テキストは、商品画像に何が写っているかを検索エンジンとスクリーンリーダーの利用者に伝えます。Googleはこれを、コンピュータビジョンやページのコンテンツと組み合わせて使います。

Googleの画像に関するガイダンスは、キーワードを詰め込まない、有用で具体的な代替テキストを求めています。最良の例として挙げられているのは「Dalmatian puppy playing fetch」(ボール遊びをするダルメシアンの子犬)です。GoogleはCSSの背景画像をインデックスしないため、商品写真は<img>要素に入れます(Google (新しいタブで開きます))。ECサイトであれば、「シャツ シャツ リネン 購入」ではなく、「生成りのリネンシャツ、背面」のような代替テキストにします。

内部リンク切れはどうやって見つけて修正しますか?

ストアをクロールして4xxエラーを返す内部リンクを洗い出し、各リンクを更新するか、古いURLから最も近い公開中のページへ301リダイレクトします。

Googleは、hrefを持つ<a>要素として作られたリンクをクロールし、重要なページはすべて、少なくとも1つのほかのページからリンクすることを推奨しています(Google (新しいタブで開きます))。4xxコードを返すURLはインデックスされず、インデックス済みのものは削除されます。301は強いリダイレクトシグナル、302は弱いシグナルです(Google (新しいタブで開きます))。ストアのリンクは、商品の削除や名前の変更、ハンドルの変更、コレクションの廃止によって切れますが、古いリンクはメニュー、商品説明、ブログ記事に残ったままになります。

  • Shopify:コンテンツ > メニュー > URLリダイレクトを表示 > URLリダイレクトを作成(Content > Menus > View URL redirects > Create URL redirect)に進みます。Shopifyがリダイレクトするのは、実際にリンク切れになっているURLだけです(Shopify ヘルプセンター (新しいタブで開きます))。
  • WooCommerce:スラッグやパーマリンク設定を変更するたびに、サーバーのルールかリダイレクト用プラグインを追加します。

無料スキャンなら、こうした問題の多くを約1分で検出できます。SEO改善レポートは、タイトル、メタディスクリプション、H1、canonical、noindex、robots.txt、サイトマップ、Productの構造化データ、Open Graph、代替テキスト、内部リンク切れを最大25ページでチェックし、お使いのプラットフォームに合わせた修正方法を示します。

よくある質問

テクニカルSEOを修正すれば、検索順位は必ず上がりますか?

いいえ。これらの修正は、ページがクロール、インデックス、理解されない原因を取り除くものです。検索順位は引き続き、関連性をはじめとする多くの要因に左右されます。

商品のバリエーションごとに、インデックスされる個別のURLが必要ですか?

バリエーションの作り方によります。バリエーションが1つのページを共有し、任意のクエリパラメーターだけが異なる場合、GoogleはパラメーターなしのURLを正規URLにすることを提案しています。バリエーションごとに個別のページがある場合、Googleのバリエーションに関するガイダンスでは、各ページを別々に扱います。

マークアップが有効なのに、商品にリッチリザルトが表示されないのはなぜですか?

Googleは、有効な構造化データであってもリッチリザルトの表示を保証していません。マークアップが表示されている内容と一致しているか、0より大きい価格のOfferを使っているか、リッチリザルト テストに合格しているかを確認してください。

絞り込み後のコレクションページはrobots.txtでブロックすべきですか?

Shopifyでは、絞り込みや並べ替えをしたコレクションURLはコレクションページと重複するため、デフォルトのrobots.txtですでにDisallowされています。robots.txt.liquidを編集する場合も、変更する特別な理由がない限り、これらのルールは残しておいてください。

出典