aggregateRating を正しく設定する:Googleが静かに拒否するフィールド
aggregateRating は、多くの星評価スニペットが知らぬ間に失敗している場所です。必須フィールド、正直さのルール、そして星が表示されない理由を解説します。
aggregateRating の必須フィールドとは
aggregateRating はコンパクトなオブジェクトで、重要な項目は少数です。必要なのは ratingValue(平均スコア)と、それを算出した評価の件数です。件数は reviewCount(文章を含むレビューの数)または ratingCount(テキストなしの星評価を含む評価の総数)で表現できますが、少なくともどちらか一方は必須です。
それ以外はすべて任意です。bestRating と worstRating はデフォルトで 5 と 1 になるため、評価スケールが異なる場合にのみ宣言が必要です。ほとんどのストアではその必要はありません。
- ratingValue:平均スコア。例:「4.6」。
- reviewCount または ratingCount:少なくともどちらか一方が必須。
- bestRating:任意。デフォルトは 5。
- worstRating:任意。デフォルトは 1。
reviewCount と ratingCount:どちらを使うべきか
星だけの評価(テキストなし)を含む総数を扱う場合は ratingCount を使い、すべての件数が実際の文章レビューである場合は reviewCount を使います。この区別が重要なのは、2つの数値がしばしば異なるからです。誤った方を宣言すると、実態とかけ離れた数字をマークアップに記載することになります。
100件の星評価があり、そのうち40件が文章を伴うレビューであれば、reviewCount は 40、ratingCount は 100 です。両方を宣言することもできます。ただし、文章レビューが 40 件しかないのに reviewCount に 100 を記入することはできません。フィールド名はその数値が何を表しているかの宣言であるからです。
カウントは表示件数と一致しなければならないルール
Googleの構造化データガイドラインでは、aggregateRating はユーザーがそのページで実際に確認できるレビューを反映している必要があります。マークアップ内のカウントとページに表示されているレビューは同じセットを指していなければなりません。これが一致しない場合、マークアップはページの内容を正確に表していないとみなされ、星評価スニペットが表示されない理由になります。
これは、商品ページに 10 件のレビューを表示しているのにスキーマで件数を 200 と宣言しているストアでよく起きます。意図が誠実であっても(商品のレビューが本当に 200 件存在するとしても)、ページが 10 件しか見せていなければ、マークアップはページの実態を超えた主張になります。
サイト全体の集計評価や水増しカウントが拒否される理由
よくある拒否事例は、全商品ページに同じ総合評価を適用することです。ストア全体のレビューから単一の平均を算出して各商品ページに適用すると、新着商品がベストセラーの評判を引き継いでしまいます。Product スキーマ上の aggregateRating はそのストアではなくその商品についての主張であるため、Googleはこれを誤解を招くものとみなします。
水増しも同様です。件数を上乗せしたり、廃番になったバリエーションの評価を引き継いだり、非表示にしたレビューをカウントに含めたりすると、表示されているページとマークアップが乖離します。この乖離がスニペット掲載停止につながります。
- すべての商品ページに同じサイト全体の平均評価を流用すること。
- 商品ページに表示されている件数よりも多いカウントを宣言すること。
- 別の商品やバリエーションから引き継いだ評価。
- 非表示、削除済み、または非公開のレビューを含むカウント。
aggregateRating が有効かどうかを確認する方法
ウィジェットではなく、レンダリング済みの HTML を確認してください。商品ページを開き、ページソースを表示するか Rich Results Test を使い、aggregateRating オブジェクトがサーバーの HTML 内に ratingValue とカウントを持って存在しているかを確認します。そのうえで、ページに実際に表示されているレビュー数を数え、2つの数値が整合しているかをチェックします。
Rich Results Test は必須フィールドの欠落を指摘しますが、整合性のとれた見た目の数値がページを誇張していても検出できません。その確認はあなた自身の判断に委ねられています。ツールはあくまで形式を検証するものであり、正確性は検証しません。300 という件数の隣に 12 件のレビューが表示されていても、バリデーターは通過しますが、手動審査で拒否されるリスクが残ります。
マークアップが検証を通過しても星が表示されない理由
検証が確認するのは構文であり、表示資格ではありません。aggregateRating が完全に正しい形式であっても、カウントが表示ページと矛盾している場合、マークアップがクローラーの実行しないスクリプトによって挿入されている場合、あるいは Google がそのクエリでスニペットを表示しないと判断した場合には、星は表示されません。最初の 2 つは修正可能ですが、3 つ目は Google 側の判断です。
スクリプトによる挿入の問題は気づきにくいものです。多くのレビューアプリはページ読み込み後に JavaScript ウィジェット内に評価をレンダリングするため、買い物客が見る aggregateRating はクローラーが読む HTML に含まれていません。フィールドは正しく設定されていますが、クローラーが参照する場所にないだけです。
aggregateRating を確実に正しく実装するには
正しい aggregateRating はサーバーサイドでレンダリングされ、商品ごとに個別に設定され、正直な内容でなければなりません。ratingValue とカウントはスクリプトが実行される前からページ HTML に含まれており、ストア全体ではなくその商品を表し、カウントはページ上のレビュー数と一致している必要があります。多くのレビューアプリは商品ページ上の買い物客向けに構築されており、星をウィジェットにレンダリングします。見た目は正しくても、クローラーには正しく読まれません。すでに取得している評価を、読み取り可能で商品ごとに正確なマークアップとしてレンダリングし、検索でスニペットを獲得し AI にも引用されるようにすること、BeyondReviews が解決しようとしているのはそのギャップです。
- reviewCount と ratingCount の両方が必要ですか?
- どちらか一方があれば十分です。すべての件数が文章レビューであれば reviewCount を、テキストなしの星評価を含む場合は ratingCount を使います。両方の数値がある場合は両方宣言できますが、どちらも提供しないと aggregateRating は無効になります。
- ストア全体の平均評価を全商品に使えますか?
- いいえ。Product スキーマ上の aggregateRating はその商品についての主張です。サイト全体の単一平均を全ページに適用することは誤解を招くとみなされ、星評価スニペットが表示されない一般的な理由のひとつです。各商品には固有の評価と固有のカウントが必要です。
- bestRating を宣言する必要がありますか?
- 評価スケールが 5 段階でない場合にのみ必要です。bestRating のデフォルトは 5、worstRating のデフォルトは 1 です。標準的な 5 段階評価のストアであれば、両方省略できます。10 段階など別のスケールを使う場合は、ratingValue が正しく解釈されるよう宣言してください。
- マークアップは検証を通っていますが、星が表示されません。なぜですか?
- 検証は構文を確認するものであり、表示資格ではありません。よくある原因は、表示されているレビューと矛盾するカウント、クローラーが実行しないスクリプトによるマークアップの挿入、あるいは Google によるスニペット非表示の選択です。まずレンダリング済みの HTML と表示件数を確認してください。