product-reviews-ratings について
商品レビューシステムの選定と設定を扱う、EC 運営者向けスキルです。収集、モデレーション、表示、構造化データについて、Shopify、WooCommerce、BigCommerce、独自ストア別に説明します。
主な機能
- 01アプリまたは独自レビューシステムの選定
- 02購入後レビュー依頼の設定
- 03レビュー表示と評価マークアップの設定
- 04レビューの審査と購入確認
- 05レビュー関連指標の追跡
活用シーン
- 01新店舗へのレビューシステム導入
- 02商品ページへの評価表示追加
- 03レビューモデレーション手順の構築
- 04レビュー移行や依頼の自動化
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ finsilabs/ awesome-ecommerce-skills --skill product-reviews-ratingsインストール後、Claude Code で/product-reviews-ratingsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
tile.jsonevals/bayesian-rating-calculation-and-schema-o/criteria.jsontask.mdevals/review-display-helpful-votes-and-admin-m/criteria.jsontask.mdevals/review-submission-endpoint-with-auto-mod/criteria.jsontask.md詳細
商品レビューと評価
概要
商品レビューは、Eコマースにおいて最も強力なソーシャルプルーフの指標です。レビューが5件以上ある商品は、レビューがない商品と比べてコンバージョン率が270%高くなります。主要なプラットフォームには、レビューの収集やモデレーション、Googleの星評価に対応するschema.orgマークアップ、購入確認済みバッジの付与を、カスタムコードなしで処理できるレビューアプリがあります。独自のモデレーションロジック、深いAPI連携、または自社データベースでのレビュー管理が必要な場合に限り、カスタムレビューシステムの構築を検討してください。
このスキルを使う場面
- 新しいストアを立ち上げ、レビューの収集・表示システムが必要な場合
- Google検索結果に星評価を表示するため、schema.orgの
AggregateRatingマークアップを実装する場合 - 偽レビューやスパムレビューを防ぐモデレーションのワークフローを構築する場合
- レビューの信頼性を高めるため、購入確認済みバッジを表示する場合
- 配達後に購入者へレビュー依頼メールを自動送信する場合
- あるプラットフォームやアプリから別のプラットフォームやアプリへレビューをインポートする場合
主な手順
手順1:プラットフォームを確認し、適切なレビューツールを選ぶ
| プラットフォーム | 推奨ツール | 理由 |
|---|---|---|
| Shopify | Judge.me | 無料プランに、無制限のレビュー、写真付きレビュー、購入確認済みバッジ、schema.orgマークアップ、購入後のレビュー依頼メールが含まれます |
| Shopify | Yotpo | Q&A、ロイヤルティ連携、Google Shoppingへのレビュー配信など、より高度な機能を備えており、中堅以上のストアに最適です |
| WooCommerce | WooCommerce標準のレビュー機能 + WP Product Reviewプラグイン | WooCommerceには星評価機能が標準搭載されています。schema.orgマークアップと購入確認の制御には、WP Product Reviewを追加してください |
| WooCommerce | WooCommerce向けJudge.me | Shopify版と同じ機能を備え、WooCommerce連携として利用できます |
| BigCommerce | Judge.meまたはYotpo | どちらもBigCommerce App Marketplaceから利用でき、すべての機能を同等に備えています |
| カスタム/ヘッドレス | レビューAPIを構築 | カスタムのモデレーションロジックを使い、レビューを自社データベースで管理する必要がある場合に必須です |
手順2:プラットフォームごとの設定
Shopify
オプションA:Judge.me(推奨 — 無料、機能が充実)
-
Shopify App StoreからJudge.me Product Reviewsをインストールします
-
Judge.meは、設定可能な期間が経過した後に、購入後のレビュー依頼メールを自動送信します:
- Judge.me → Settings → Review Request Emailsに移動します
- 遅延をフルフィルメント後5~7日に設定します(顧客が商品を受け取り、使う時間を確保できます)
- メールテンプレートをブランドカラーと商品画像でカスタマイズします
-
レビュー表示を設定します:
- Judge.me → Widgets → Install Widgetsに移動します
- 商品テンプレートでレビューウィジェットを有効にします(Judge.meではワンクリックでインストールできます)
- 商品一覧で星評価スニペットを有効にします
-
schema.orgマークアップを有効にします:
- Judge.me → Settings → SEOに移動します
- 「Add aggregate rating schema」が有効になっていることを確認します。これにより、Google検索結果に星評価が表示されます
-
購入確認とモデレーションを設定します:
- Settings → Review Settingsに移動します
- Verified Purchase Onlyを有効にします。商品を購入した顧客のみがレビューを投稿できます
- Auto-publish verified reviewsを有効にし、購入確認ができないレビューは手動でモデレーションします
- 不適切な表現のフィルターを「Medium」以上に設定します
オプションB:Yotpo(中堅・大企業向け)
- App StoreからYotpo Reviewsをインストールします
- Yotpo → Settings → Review Requestでレビュー依頼の送信タイミングを設定します
- Google Shoppingキャンペーンを実施している場合は、Google Shopping Reviews syndicationを有効にします。YotpoからGoogleへレビューのデータが直接送信されます
- Yotpo Q&Aを使って、PDPのレビューの下に質問と回答のセクションを追加します
schema.orgマークアップのテスト: Judge.meまたはYotpoのschema出力を有効にした後、商品ページのURLを使ってGoogleのリッチリザルトテストで検証します。インデックス登録後、1~2週間でGoogle検索に星評価が表示されます。
WooCommerce
WooCommerce 組み込みのレビュー(無料、基本機能):
- WooCommerce → Settings → Products → Reviews に移動します
- Enable product reviews を有効にします
- Show "verified owner" label on customer reviews を有効にします。これにより、商品の購入者のみがレビューを投稿できるようになります
- Reviews can only be left by "verified owners" を有効にして、未確認の投稿を制限します
schema.org マークアップと拡張表示の追加:
- WordPress プラグインディレクトリから WP Product Review をインストールします
- WP Product Review には以下の機能があります:
- 集計した星評価の schema.org マークアップ(Google のリッチリザルトに必要)
- 商品一覧での星評価表示
- レビューのメリット/デメリット欄
- WP Product Review → Settings で設定します
レビュー依頼メールの自動化:
- 購入後のメール自動化のため、Klaviyo または AutomateWoo をインストールします
- Klaviyo では、「Placed Order」イベントをトリガーとして、7 日間の遅延を設定し、レビュー依頼リンクを含む Flow を作成します
- AutomateWoo では、AutomateWoo → Workflows → Add に移動し、トリガーに「Order Status Changed to Completed」を設定して、7 日間の遅延を指定します
WooCommerce 向け Judge.me:
- Judge.me for WooCommerce をインストールします(judge.me から入手できます)
- Shopify 版と同じレビュー依頼メール、購入確認による制限、スキーママークアップを利用できます
BigCommerce
BigCommerce 向け Judge.me:
- Apps → Search "Judge.me" に移動してインストールします
- Shopify 版と同じ設定で、レビュー依頼メール、スキーママークアップ、購入確認による制限を同様に利用できます
BigCommerce 組み込みの商品レビュー:
- Products → [Product] → Reviews tab に移動して、レビューを手動でモデレートします
- Settings → Store Settings → Miscellaneous に移動し、Product Reviews を有効にします
- 組み込みのレビューには schema.org マークアップが含まれないため、Google の検索結果に星評価を表示するには Judge.me または Yotpo をインストールします
BigCommerce 向け Yotpo:
- BigCommerce App Marketplace からインストールします
- メールに加えて、Google ショッピングレビューの配信と SMS によるレビュー依頼を利用できます
カスタム/ヘッドレス
ヘッドレスストアフロントでは、購入後のトリガー、モデレーション、ベイズ集計スコアリング、schema.org 出力を備えたレビューパイプラインを構築します:
// lib/reviews.ts
// POST /api/reviews — accept review submission with signed token verification
export async function submitReview(req: Request, res: Response) {
const { token, productId, rating, title, body, authorName } = req.body;
// Validate signed token (generated in post-purchase email, prevents spam)
const tokenData = await verifyReviewToken(token);
if (!tokenData) return res.status(401).json({ error: 'Invalid or expired review token' });
const verifiedPurchase = await db.orderItems.exists({ orderId: tokenData.orderId, productId });
// Auto-moderation: spam score + profanity check
const spamScore = await checkSpam({ body, authorName, ip: req.ip });
const hasProfanity = await checkProfanity(body + ' ' + title);
const status =
spamScore > 0.8 ? 'spam' :
hasProfanity ? 'pending' :
verifiedPurchase ? 'approved' : 'pending';
const review = await db.reviews.create({
productId, orderId: tokenData.orderId, customerId: tokenData.customerId,
authorName, authorEmail: tokenData.email, rating, title, body,
verifiedPurchase, status, approvedAt: status === 'approved' ? new Date() : null,
});
if (status === 'approved') await updateProductRatingSummary(productId);
res.json({ reviewId: review.id, status });
}
// Bayesian aggregate: prevents a 2-review product with 5.0 outranking a 200-review product with 4.7
export async function updateProductRatingSummary(productId: string) {
const reviews = await db.reviews.findMany({ where: { productId, status: 'approved' } });
const rawAverage = reviews.length > 0
? reviews.reduce((sum, r) => sum + r.rating, 0) / reviews.length : 0;
const globalMean = await db.reviews.globalAverageRating();
const C = 5; // confidence weight — trust product's own average after 5+ reviews
const bayesianAverage = (C * globalMean + reviews.reduce((s, r) => s + r.rating, 0)) / (C + reviews.length);
await db.productRatingSummaries.upsert({ productId }, {
productId, reviewCount: reviews.length,
averageRating: Math.round(bayesianAverage * 10) / 10,
rawAverageRating: Math.round(rawAverage * 10) / 10,
});
}
// Emit schema.org AggregateRating JSON-LD — required for Google star ratings in search
export function buildProductSchema(product: Product, ratingSummary: { reviewCount: number; averageRating: number }) {
return {
'@context': 'https://schema.org',
'@type': 'Product',
name: product.name,
image: product.images.map(i => i.url),
description: product.description,
sku: product.sku,
offers: {
'@type': 'Offer',
price: (product.priceInCents / 100).toFixed(2),
priceCurrency: 'USD',
availability: product.inventoryQuantity > 0 ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock',
},
...(ratingSummary.reviewCount > 0 && {
aggregateRating: {
'@type': 'AggregateRating',
ratingValue: ratingSummary.averageRating.toFixed(1),
reviewCount: ratingSummary.reviewCount,
bestRating: '5',
worstRating: '1',
},
}),
};
}
// Trigger review request email 5 days after delivery
export async function triggerReviewRequest(orderId: string) {
const order = await db.orders.findById(orderId, { include: ['lineItems.product', 'customer'] });
const token = await createSignedReviewToken(orderId, order.customerEmail);
await reviewQueue.add(
'send-review-request',
{ orderId, email: order.customerEmail, token, products: order.lineItems.map(i => ({ productId: i.productId, name: i.product.name })) },
{ delay: 5 * 86400000, jobId: `review-request-${orderId}` }
);
}
ステップ 3:モデレーションのワークフローを設定する
すべてのレビューアプリで、公開前にモデレーション方針を決める必要があります:
Judge.me の場合:
- Settings → Review Settings → Moderation に移動します
- 確認済みレビューは自動公開、未確認レビューは手動レビューキューに入るよう設定します
- 不適切な表現のフィルターを有効にします
- Judge.me → Reviews → Pending で、モデレーションキューを毎週確認します
Yotpo の場合:
- Yotpo → Moderation → Settings に移動します
- 自動承認ルールを設定します(例:星評価が 3 以上で、購入確認済みの場合に自動承認)
- Yotpo は、設定したチームのメールアドレスにモデレーションの概要を毎日送信します
カスタム実装の場合: 購入確認済みのレビューのうち、スパムと不適切な表現のチェックに合格したものは自動承認し、それ以外はすべてキューに入れます。モデレーションを完全に省略せず、保留キューを毎日処理してください。
ステップ 4:レビューの効果を測定する
| 指標 | ベンチマーク | 確認場所 |
|---|---|---|
| レビュー収集率 | 配達済み注文の 3~8% | Judge.me Analytics → Email Performance |
| レビューが 5 件以上ある商品 | 有効な商品の割合を追跡 | Judge.me → Insights |
| 平均評価 | 4.2~4.7 が適正 | プラットフォームの商品一覧ページ |
| Google の星評価からのクリック率 | スキーマ公開後に Google Search Console で確認 | Search Console → Search Appearance → Rich Results |
ベストプラクティス
- 一から構築する前にJudge.meまたはYotpoを利用します — スキーママークアップ、メール送信のタイミング、購入確認のロジック、モデレーションキューを標準で処理できます
- レビュー依頼は発送後ではなく、配達から5~7日後に送信します — 顧客が商品を受け取り、使用する時間が必要です
- 否定的なレビューは絶対に削除しないでください — 非表示にすると信頼を損ない、FTCのガイドラインに違反する可能性もあります。代わりに公開で返信してください
- 購入確認済みバッジを表示します — レビューの信頼性が高まり、顧客が本物のレビューを見分けやすくなります
- 初回読み込み時のカルーセルは5~10件に制限します — ページのLCPを妨げないよう、追加のレビューは遅延読み込みします
- 公開前にGoogleのリッチリザルトテストでschema.orgのマークアップを検証します — JSON-LDが正しくない場合、検索結果に星評価が表示されません
よくある問題
| 問題 | 解決策 |
|---|---|
| Google検索に星評価が表示されない | AggregateRating.reviewCountが1以上であり、スキーマが<head>内にJSON-LDとして記述されていることを確認します。Googleのリッチリザルトテストで検証します |
| 商品の配達前にレビュー依頼が送信される | 発送イベントではなく配達Webhookを起点にレビュー依頼メールを送信し、配達後に5日の猶予を設けます |
| スパムレビューがモデレーションキューに大量に届く | WooCommerceでAkismetとの連携を有効にするか、Judge.me組み込みのスパムフィルターを使用します。スパムスコアが高い投稿は自動的に拒否します |
| 同じ顧客から重複したレビューが投稿される | Judge.meとYotpoは、購入確認済みの商品ごとにレビューを1件に制限します。独自に構築する場合は、(customerId, productId)に一意制約を追加します |
| レビュー写真のせいでページの読み込みが遅くなる | Judge.meとYotpoは、写真を自動的にリサイズしてCDN経由で配信します。独自に構築する場合は、アップロード時に200pxのサムネイルにリサイズします |
関連スキル
- @user-generated-content
- @customer-segmentation
- @personalization-engine
- @conversion-rate-optimization