SEO & メディア・スラッグ管理 Pro プラグイン
EC-CUBE 4.3向けに開発された、カテゴリ・商品のSEOメタタグ、静的スラッグURL(/category/{slug} / /product/{slug})、Google公式推奨Schema.org構造化データ(JSON-LD)、動的XMLサイトマップ、およびリアルタイムSEOスコア診断(Yoastスタイル)を完全網羅したオールインワンSEOパッケージです。
1プラグイン概要
従来のEC-CUBEはURLが動的パラメータ形式(/products/list?category_id=12 や /products/detail/123)であり、商品やカテゴリごとの細やかな検索エンジン最適化(SEO)やSNS共有(OGP)、Googleリッチリザルトへの対応が困難でした。
本プラグインは、これらの課題を一掃し、Google検索エンジンの最新アルゴリズム(E-E-A-T対応、リッチスニペット、インデックス最適化)とユーザー体験(UX)を劇的に引き上げるためのプロ向けSEOソリューションです。
主要機能マトリクス
/category/{slug} および /product/{slug} を提供。サイト内全域の内部リンクもスラッグURLへ自動置換。/robots.txt を自動提供。rel="canonical"、rel="prev"、rel="next" の自動出力と説明文フォールバック。2インストール・有効化・更新手順
2-1. ファイルの配置
プラグイン一式をEC-CUBEの以下のディレクトリへ配置します。
/path/to/eccube/app/Plugin/SeoCategory/2-2. 新規インストール & 有効化
サーバーのターミナルにてEC-CUBEのルートディレクトリに移動し、以下のコンソールコマンドを実行します。
cd /path/to/eccube
php bin/console eccube:plugin:install --code=SeoCategory
php bin/console eccube:plugin:enable --code=SeoCategory
php bin/console eccube:generate:proxies
php bin/console cache:clear2-3. バージョンアップ(既存環境からの更新)
旧バージョン(Ver 1.x または 2.0.x)をご利用中の環境にファイルを上書き配置した場合は、以下のアップデートコマンドを実行してください。データベーステーブルへの新規カラム追加(slug, meta_robots, canonical_url 等)が自動的にマイグレーションされます。
php bin/console eccube:plugin:update --code=SeoCategory
php bin/console cache:clear3設定できるSEO・メディア項目一覧
カテゴリおよび商品ごとに、以下の豊富なメタデータやURL設定を個別に指定可能です。
| 項目名 | 出力タグ / 適用場所 | 設定内容・推奨値・備考 |
|---|---|---|
| カスタムスラッグ | /category/{slug}/product/{slug} | 半角英数字とハイフンのみ(例: mens-casual)。重複不可。URLの最適化とクローラー認知度向上。 |
| SEOタイトル | <title>og:title | 検索結果の青文字リンクおよびSNS見出し。30〜60文字推奨。空欄時は標準のカテゴリ名/商品名を出力。 |
| メタ説明文 | <meta name="description">og:description | 検索スニペットに表示される要約文。80〜160文字推奨。空欄時は本文や詳細説明から自動抽出。 |
| メタキーワード | <meta name="keywords"> | 主要検索キーワードをカンマ区切りで入力(例: メンズ, シャツ, シルク, 通販)。 |
| クローラー指示 | <meta name="robots"> | index,follow(標準)/ noindex,follow / noindex,nofollow から選択。非公開・限定商品の除外に有効。 |
| 正規化URL | <link rel="canonical"> | カスタム正規化先URL。空欄の場合はプラグインがスラッグURLを完全自動で正規化。 |
| OGP画像 | og:imagetwitter:image | SNSシェア(X/LINE/Facebook)専用の推奨画像(1200×630px)。未設定時は商品メイン画像やカテゴリ画像へ自動フォールバック。 |
| サムネイル画像 | カテゴリ一覧 / ナビ / スライダー | トップページのカテゴリスライダーやメガメニューの丸型・角型アイコンとして使用。 |
| バナー画像 | 商品一覧(カテゴリ)上部アイキャッチ | カテゴリ一覧ページのメインビジュアル画像。横長バナー(推奨幅: 1200px)。 |
| 上部説明文 | バナー直下の導入エリア | カテゴリの特徴や魅力を伝える2〜3文のリード文。 |
| 下部詳細記事 | 商品グリッド最下部の記事エリア | 選び方ガイド、FAQ、お手入れ方法、スタイリング例など、検索流入を劇的に伸ばすロングテールSEO記事エリア。 |
4構造化データ (JSON-LD)
GoogleやBingなどの検索エンジンがページの内容をセマンティックに解析できるよう、Schema.org規格に完全準拠したJSON-LDスクリプトをフロントページの <head> に自動出力します。
4-1. パンくずリスト階層
カテゴリ一覧および商品詳細ページにおいて、親カテゴリから子カテゴリ、商品名までの階層関係を正確に辿り、Google検索結果のURL上部に美しいパンくずナビゲーションを表示させます。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "ホーム",
"item": "https://example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "トップス",
"item": "https://example.com/category/tops"
},
{
"@type": "ListItem",
"position": 3,
"name": "シャツ・ブラウス",
"item": "https://example.com/category/shirts"
},
{
"@type": "ListItem",
"position": 4,
"name": "シルク混プレミアム長袖シャツ",
"item": "https://example.com/product/premium-silk-shirt"
}
]
}
]
}
</script>4-2. 商品詳細リッチリザルト
商品詳細ページでは、検索結果に価格や在庫状況、商品画像が直接表示される「リッチスニペット」を自動生成します。
- 価格表示: 税込み販売価格(JPY)、通貨コード
JPY - 在庫状態: 在庫あり時は
https://schema.org/InStock、売り切れ時はhttps://schema.org/OutOfStockを自動判定 - 商品状態: 新品(
https://schema.org/NewCondition) - 識別情報: 商品コード(SKU)、商品名、商品画像URL(複数登録時は全画像リスト)
4-3. カテゴリ一覧コレクション
カテゴリ一覧ページでは、ページ種別を CollectionPage として定義し、カテゴリ名・説明文・正規化URLを構造化マークアップします。
5静的スラッグURL & 内部リンク自動変換
URLに英語やローマ字で意味のあるキーワードを含めることで、クリック率(CTR)の向上と検索順位の安定化を実現します。
| 対象ページ | EC-CUBE標準URL | プラグイン導入後のSEO静的URL |
|---|---|---|
| カテゴリ商品一覧 | /products/list?category_id=12 | /category/{slug} または /c/{slug} |
| 商品詳細ページ | /products/detail/123 | /product/{slug} または /p/{slug} |
全自動の内部リンク書き換え
テンプレートファイル(Twig)に手を加える必要はありません。レスポンスリスナーがフロント画面に出力されるHTML全体をリアルタイム解析し、以下のリンクを自動的にスラッグURLへ瞬時に書き換えます。
- ヘッダー・フッター・メガメニューのカテゴリリンク
- 商品一覧グリッド内の商品詳細リンク
- 関連商品ブロック・おすすめ商品リンク
- パンくずリスト内のカテゴリリンク
6動的サイトマップ (sitemap.xml) & Robots.txt
検索エンジンのクローラーが店舗内の全ページを漏れなく巡回できるように、2つの重要なエンドポイントを全自動で提供します。
6-1. 動的 XMLサイトマップ (/sitemap.xml)
Google Search Consoleに登録するだけで、常に最新の公開ページ一覧がクローラーに通知されます。キャッシュファイルではなく動的生成されるため、新商品追加時もファイル更新作業は不要です。
- トップページ:
priority: 1.0,changefreq: daily - 公開カテゴリ: 非アクティブや
noindexを自動除外し、スラッグURLで優先出力(priority: 0.8,changefreq: weekly) - 販売中商品: 非公開商品や
noindexを自動除外し、スラッグURLで優先出力(priority: 0.7,changefreq: weekly) - 最終更新日: 各商品・カテゴリの最新更新日時(Y-m-d形式)を正確に出力
6-2. クローラー制御 (/robots.txt)
/robots.txt にアクセスがあった際、管理画面(/admin/)やマイページ(/mypage/)、カート画面(/cart/)などクローラーに巡回させたくないディレクトリを適切に遮断(Disallow)し、末尾に Sitemap: https://yourdomain.com/sitemap.xml を自動付与して返却します。
7リアルタイムSEO診断 & Google SERPプレビュー
WordPressの「Yoast SEO」や「Rank Math」のように、SEO項目の入力中にリアルタイムで品質をスコアリングし、Google検索結果の見た目を忠実にシミュレートするインタラクティブウィジェットを搭載しています。
- タイトル文字数: 34文字(推奨: 30〜60文字に適合)
- 説明文文字数: 112文字(推奨: 80〜160文字に適合)
- カスタムスラッグ: 半角英数ハイフンで設定済み
- OGPソーシャル画像: 設定済み
- インデックス設定: index, follow(正常に巡回対象)
診断項目の配点・評価ロジック
| 評価項目 | 配点 | 日本語SEO推奨基準 | 詳細解説 |
|---|---|---|---|
| SEOタイトル長 | 25点 | 30〜60文字 | 短すぎるとキーワード不足、60文字を超えると検索画面で省略記号(…)になります。 |
| Meta Description長 | 25点 | 80〜160文字 | PC・スマホ両方のスニペット枠に最も美しく収まる日本語のゴールデン文字数です。 |
| カスタムスラッグ | 20点 | 半角英数ハイフン登録済 | 数字IDのみのURLに比べ、検索意図との一致度が高まります。 |
| OGP画像設定 | 15点 | 画像登録済(または自動補填) | SNSシェア時のアイキャッチカード崩れを防止します。 |
| Robotsインデックス | 15点 | index, follow | 誤って noindex が指定され検索流入が消滅する重大事故を防ぎます。 |
8ページネーションSEO & 説明文スマート自動生成
8-1. ページネーション正規化 (rel="prev" / rel="next")
カテゴリ商品一覧の2ページ目以降(?pageno=2 など)にアクセスした際、検索エンジンのガイドラインに従い、以下のタグを自動的にヘッダーに挿入します。
<!-- 2ページ目アクセス時の出力例 -->
<link rel="canonical" href="https://example.com/category/shirts?pageno=2" />
<link rel="prev" href="https://example.com/category/shirts" />
<link rel="next" href="https://example.com/category/shirts?pageno=3" />これにより、全ページが1ページ目として誤認されてインデックスが重複するペナルティを防ぎ、全ページが正しく評価されます。
8-2. メタ説明文のスマートフォールバック
商品やカテゴリが何百点・何千点もあり、Meta Descriptionを1つずつ入力する時間が取れない場合でも心配ありません。
- 商品詳細ページ: 商品の「詳細説明文(DescriptionDetail)」から自動でHTMLタグや余分な空白を除去し、先頭150文字を美しいMeta Descriptionとして自動抽出。
- カテゴリ一覧ページ: プラグインの「上部説明文」から同様に先頭150文字を自動抽出。
9メタタグ自動注入 & スマートOGPフォールバック
本プラグインは、フロントエンドのHTMLを解析し、以下の完全なメタタグ群を動的に <head> 内に注入・置換します。
| 出力タグ | 生成ロジック |
|---|---|
<title> | 指定タイトル ➔(未設定時)商品名・カテゴリ名 +「 | ショップ名」 |
<meta name="description"> | 指定説明文 ➔(未設定時)本文から先頭150文字自動抽出 |
<meta name="keywords"> | 指定キーワードを出力 |
<meta name="robots"> | 指定値(例: index,follow) |
<link rel="canonical"> | 指定正規化URL ➔(未設定時)スラッグ静的URLを自動生成 |
<meta property="og:title"> | SEOタイトルと同期 |
<meta property="og:description"> | Meta Descriptionと同期 |
<meta property="og:image"> | 個別OGP画像 ➔ 商品1枚目メイン画像 ➔ カテゴリバナー ➔ サイトデフォルトOGP |
<meta name="twitter:card"> | summary_large_image(大きなアイキャッチカード)を自動出力 |
/products/list?name=キーワード)でも、「『キーワード』の検索結果一覧 | ショップ名」といった動的タイトルと適切なCanonicalタグを自動出力します。10管理画面での操作方法
日々の店舗運営スタイルに合わせて、2つの操作フローから自由にSEOデータを編集できます。
10-1. 標準のカテゴリ・商品編集画面から(通常作業時)
- カテゴリ編集:
商品管理 ➔ カテゴリ画面を開きます。タブ形式(基本情報、上部説明文、下部詳細記事、画像設定、SEO & スラッグ設定)の構成となっており、第5タブでスコア診断を見ながら設定できます。 - 商品登録・編集:
商品管理 ➔ 商品登録・商品編集画面を開きます。画面中部に「SEO & メディア設定」カードが追加されており、商品の説明文や価格を入力しながら並行してSEO項目を設定できます。
10-2. 専用のSEO管理一覧画面から(一括点検・横断編集時)
- SEOカテゴリ管理:
商品管理 ➔ SEOカテゴリ管理(/admin/seo_category) - SEO商品管理:
商品管理 ➔ SEO商品管理(/admin/seo_product)
全カテゴリ・商品のSEO入力状況が一目で把握でき、キーワード絞り込み検索、ページネーション件数切り替え(10/20/50/100件)、ダイレクト編集ボタンが備わっています。
11カテゴリメディア管理 & リッチテキスト記事エリア
カテゴリページを単なる商品リストではなく、コンテンツ力のある「オウンドメディア型EC」へと進化させる強力な機能です。
11-1. 2系統のカテゴリ画像
| 画像タイプ | 主な表示先・役割 | 推奨サイズ・比率 |
|---|---|---|
| サムネイル画像 | トップページのカテゴリスライダー、メガメニューの丸型アイコン | 正方形 (400×400px または 600×600px) |
| バナー画像 | 商品一覧(カテゴリ一覧)ページ最上部のヘッダーアイキャッチ | 横長 (1200×400px 〜 1200×500px) |
11-2. 上部説明文と下部詳細記事の使い分け
- 上部説明文: バナー直下に表示されます。ユーザーが探している商品カテゴリの概要をサッと把握できるように、2〜3行の簡潔なテキストやキャンペーン告知を掲載します。
- 下部詳細記事: 商品グリッドの一番下に表示されます。スクロールした先にあるため商品の邪魔にならず、検索エンジン向けに「選び方のコツ」「人気ランキング」「お手入れ方法」「よくある質問」などの豊富なテキストコンテンツを記載するのに最適です。WYSIWYGエディタ(見出し、太字、リスト、リンク、テーブル)が標準利用可能です。
12商品一覧画面での一括カテゴリ設定モーダル
新カテゴリを追加した際や、季節のセール特設カテゴリに商品を紐付けたい際、1商品ずつ編集画面を開く必要はありません。
EC-CUBE標準の 商品管理 ➔ 商品一覧 画面にて、複数商品にチェックを入れて「一括カテゴリ設定」ボタンを押すと、専用モーダルがポップアップします。
| 操作モード | 動作詳細 | 利用シーン |
|---|---|---|
| 追加 | 選択商品の現在のカテゴリ所属はすべて維持したまま、指定したカテゴリを追加します。 | 「冬のセール」や「ギフト特集」などの特設カテゴリに既存商品をまとめ入れする時。 |
| 上書き | 選択商品の現在のカテゴリ所属をすべて解除し、指定したカテゴリのみに置き換えます。 | 商品カテゴリの統廃合や大幅なリニューアル時。 |
| 解除 | 選択商品から、指定した特定のカテゴリの紐付けのみを一括で取り消します。 | セール終了後に「セール特設」カテゴリから商品を一斉解除する時。 |
13CSV一括エクスポート / インポート & 雛形ダウンロード
数百点以上の商品や数十のカテゴリのSEO・スラッグ設定を、ExcelやGoogleスプレッドシートで一括編集するための高機能CSV機能です。管理画面から直接ワンクリックで「雛形(テンプレート)CSV」をダウンロードでき、初心者でも迷わず安全にデータを作成・インポートできます。
13-1. 商品SEO CSVフォーマット仕様 (全9列)
商品管理 ➔ SEO商品管理 ➔ 雛形ファイルダウンロード / CSVインポート
| 列番号 | CSVヘッダー名 | 必須 | データ型・入力例・説明 |
|---|---|---|---|
| 1 | Product ID | ○ | 数値(例: 1, 169)。EC-CUBEの内部商品ID。 |
| 2 | Product Name | — | 文字列(例: メンズ ベーシック Tシャツ)。参照用(インポート時は更新対象外)。 |
| 3 | Slug | — | 半角英数ハイフン(例: mens-basic-cotton-tshirt)。重複不可。空欄時はURL変更なし。 |
| 4 | SEO Title | — | 文字列(例: 【公式】メンズ ベーシック Tシャツ通販 | ショップ名)。Google検索用タイトル。 |
| 5 | Meta Description | — | 文字列(120〜150文字推奨)。検索結果のスニペットに表示されます。 |
| 6 | Meta Keywords | — | 文字列(例: メンズTシャツ,無地Tシャツ,綿100%)。カンマ区切り。 |
| 7 | Meta Robots | — | 文字列(例: index,follow / noindex,follow)。検索エンジンの巡回指示。 |
| 8 | Canonical URL | — | URL(例: https://example.com/p/mens-basic-tshirt)。重複コンテンツ対策。 |
| 9 | OGP Image | — | 画像ファイル名(例: product_169_ogp.jpg)。SNSシェア時の専用画像。 |
13-2. カテゴリSEO CSVフォーマット仕様 (全14列)
商品管理 ➔ SEOカテゴリ管理 ➔ 雛形ファイルダウンロード / CSV一括インポート
| 列番号 | CSVヘッダー名 | 必須 | データ型・入力例・説明 |
|---|---|---|---|
| 1 | Category ID | ○ | 数値(例: 1, 2)。EC-CUBEの内部カテゴリID。 |
| 2 | Category Name | — | 文字列(例: 食品, 飲み物)。参照用(インポート時は更新対象外)。 |
| 3 | Slug | — | 半角英数ハイフン(例: foods, beverages)。/c/{slug}で直接アクセス可能。 |
| 4 | Is Active (1=Yes, 0=No) | ○ | 1 (公開) または 0 (非公開)。非公開時は301転送またはトップへリダイレクト。 |
| 5 | SEO Title | — | 文字列(例: 【公式】厳選食品・グルメ通販 | ショップ名)。ブラウザタブ・検索エンジン用。 |
| 6 | Meta Description | — | 文字列(例: 全国のこだわりグルメや新鮮な産直食品を厳選してお届けします...)。 |
| 7 | Meta Keywords | — | 文字列(例: 食品,お取り寄せ,産直グルメ,通販)。カンマ区切り。 |
| 8 | Meta Robots | — | 文字列(例: index,follow または noindex,nofollow)。 |
| 9 | Canonical URL | — | 正規化URL(例: https://example.com/c/foods)。空欄時は自動生成。 |
| 10 | Thumbnail Image | — | ファイル名(例: cat_thumb_01.jpg)。一覧や子カテゴリ用。 |
| 11 | Banner Image | — | ファイル名(例: cat_banner_01.jpg)。カテゴリページ上部の大判バナー。 |
| 12 | OGP Image | — | ファイル名(例: cat_ogp_01.jpg)。SNSシェア用アイキャッチ画像。 |
| 13 | Top Description (HTML) | — | HTMLコード。商品一覧の上部に表示されるリード文・バナー枠。 |
| 14 | Bottom Description (HTML) | — | HTMLコード。商品一覧の下部に表示されるSEO記事・解説・FAQ(見出しH2/H3使用可)。 |
13-3. 雛形CSVダウンロード機能 & 同梱サンプルデータ
管理画面の「CSVインポート」カード右側に配置された「雛形ファイルダウンロード」ボタンをクリックすると、UTF-8 BOM付きのスケルトンCSVがダウンロードされます。
エクスポートされるCSVおよび雛形ファイルには「UTF-8 BOM」(
\xEF\xBB\xBF)が自動付与されているため、Microsoft Excelで直接ダブルクリックして開いても日本語が一切文字化けしません。もちろんGoogleスプレッドシートやLibreOfficeでもそのまま開いて編集可能です。📁 プラグイン同梱のサンプルデータファイル一覧
本プラグインの Resource/sample_data/ ディレクトリに、すぐに試せる高精度なサンプルCSVファイルと自動インポートスクリプトが用意されています。
| ファイル種別 | ファイルパス | 内容・行数 |
|---|---|---|
| SEOカテゴリ サンプルCSV | Resource/sample_data/sample_seo_category.csv | 全14列・7カテゴリ(食品、飲料、デザート、CUBE、アイスサンド、犬用品、猫用品)。タイトル、ディスクリプション、リッチHTML記事付き。 |
| SEO商品 サンプルCSV | Resource/sample_data/sample_seo_product.csv | 全9列・7商品(ジェラートCUBE、アイスサンド、ドッグフード、Tシャツ、ジーンズ、ワンピース等)。スラッグ、タイトル、SEO設定完備。 |
| DB一括投入スクリプト | Resource/sample_data/insert_sample_data.php | 上記サンプルCSVをワンライナーでデータベースへ直接安全に投入・更新するCLIツール。 |
ターミナルで以下のコマンドを実行するだけで、データベース内の既存カテゴリ・商品に対応するSEOサンプルデータが一括で投入・更新されます。
php app/Plugin/SeoCategory/Resource/sample_data/insert_sample_data.php
14データベース設計 & 保存ディレクトリ構成
14-1. データベーステーブル設計
| テーブル物理名 | 保持する主なカラム | 関連テーブル |
|---|---|---|
plg_seo_category | id, category_id, slug, is_active,danhmuc_title, danhmuc_description, danhmuc_keyword, danhmuc_ogp,meta_robots, canonical_url, thumbnail_image, banner_image,top_description, bottom_description, create_date, update_date | dtb_category.id (1対1) |
plg_seo_product | id, product_id, slug,sanpham_title, sanpham_description, sanpham_keyword, sanpham_ogp,meta_robots, canonical_url, create_date, update_date | dtb_product.id (1対1) |
14-2. アップロード画像の保存先ディレクトリ
- カテゴリサムネイル・バナー画像:
html/upload/save_image/category/ - カテゴリ専用OGP画像:
html/upload/seo_category/ - 商品専用OGP画像:
html/upload/seo_product/
15よくあるご質問
Q1. スラッグを設定した後、旧URLへアクセスした場合はどうなりますか?
A. 従来の /products/detail/123 や /products/list?category_id=12 へのアクセスも引き続き正常に表示されます(既存のブックマークや他サイトからの被リンクが切れることはありません)。また、サイト内のリンクは自動的に新しいスラッグURLへ置換されます。
Q2. カテゴリを非公開(無効)にした場合、アクセスはどう処理されますか?
A. カテゴリの「表示設定(有効/無効)」を無効(is_active = 0)にしたカテゴリのURLへアクセスがあった場合、ユーザーを迷わせないようトップページ(/)へ「301 恒久転送(Moved Permanently)」を自動返却します。
Q3. Google Search Console にサイトマップを登録する具体的な手順は?
A. Google Search Console にログインし、対象プロパティを選択 ➔ 左メニュー「サイトマップ」➔「新しいサイトマップの追加」欄に sitemap.xml と入力して「送信」ボタンを押してください。ステータスが「成功しました」となれば完了です。
Q4. スラッグに日本語(漢字・ひらがな・カタカナ)を使用できますか?
A. URLエンコード時の極端な文字列肥大化や、SNS・外部ツール連携時の文字化けトラブルを防止するため、スラッグには半角英数字、ハイフン(-)、アンダースコア(_)のみを使用することを強く推奨しており、システム的にも半角英数字チェックが行われます。
Q5. サイトマップに特定の商品やカテゴリを含めたくない場合はどうすればよいですか?
A. 当該商品またはカテゴリの編集画面で「クローラー設定」を noindex, follow または noindex, nofollow に設定してください。動的サイトマップ(/sitemap.xml)の生成ロジックが自動的にこれを検知し、サイトマップ出力から完全に除外します。