关于 product-reviews-ratings
面向电商店铺运营者的技能,指导选择并配置商品评论与评分方案,涵盖评论收集、审核、展示和结构化数据。内容针对 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详细介绍
产品评论与评分
概述
产品评论是电商中最有力的社会认同信号——有 5 条以上评论的产品,其转化率比没有评论的产品高出 270%。各大平台都有评论应用,可处理评论收集、审核、用于 Google 星级评分的 schema.org 标记,以及已验证购买徽章,无需编写自定义代码。只有在需要专有审核逻辑、深度 API 集成或将评论数据存储在自己的数据库中时,才应构建自定义评论系统。
何时使用此技能
- 启动新商店,需要评论收集和展示系统时
- 实现 schema.org
AggregateRating标记,以便在 Google 搜索结果中显示星级评分时 - 构建审核工作流,以阻止虚假或垃圾评论时
- 展示已验证购买徽章,以提高评论可信度时
- 设置交付后自动发送购买后评论邀请邮件时
- 将评论从一个平台或应用导入另一个平台或应用时
核心说明
第 1 步:确定平台并选择合适的评论工具
| 平台 | 推荐工具 | 原因 |
|---|---|---|
| Shopify | Judge.me | 免费套餐包含无限评论、带图片的评论、已验证购买徽章、schema.org 标记和购买后邮件邀请 |
| Shopify | Yotpo | 功能更高级:问答、忠诚度集成、Google Shopping 评论同步——最适合中型及以上商店 |
| WooCommerce | WooCommerce 内置评论 + WP Product Review 插件 | WooCommerce 内置星级评分;添加 WP Product Review,以实现 schema.org 标记和已验证购买限制 |
| 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" 事件触发的 Flow,延迟 7 天发送,并包含评价请求链接
- 在 AutomateWoo 中:前往 AutomateWoo → Workflows → Add → 触发条件:"Order Status Changed to Completed",延迟 7 天发送
用于 WooCommerce 的 Judge.me:
- 安装 Judge.me for WooCommerce(可在 judge.me 获取)
- 提供与 Shopify 版本相同的评价请求邮件、已验证购买限制和 schema 标记
BigCommerce
用于 BigCommerce 的 Judge.me:
- 前往 Apps → Search "Judge.me" 并安装
- 配置方式与 Shopify 版本相同——评价请求邮件、schema 标记和已验证购买限制的运作方式完全一致
BigCommerce 内置产品评价:
- 前往 Products → [Product] → Reviews tab,手动审核评价
- 前往 Settings → Store Settings → Miscellaneous → 启用 Product Reviews
- 内置评价不包含 schema.org 标记——安装 Judge.me 或 Yotpo,即可在 Google 搜索结果中显示星级评分
用于 BigCommerce 的 Yotpo:
- 从 BigCommerce App Marketplace 安装
- 除邮件外,还支持 Google Shopping Reviews 联合分发和 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 星级评分的点击率 | schema 上线后在 Google Search Console 中监控 | Search Console → Search Appearance → Rich Results |
最佳实践
- 从头构建前,先使用 Judge.me 或 Yotpo — 它们开箱即用地处理架构标记、邮件发送时机、已验证购买逻辑和审核队列
- 在送达后 5–7 天发送评价请求,而不是发货后 — 客户需要时间收货并使用产品
- 绝不要删除负面评价 — 压制负面评价会削弱信任,还可能违反 FTC 指南;应公开回复
- 显示已验证购买徽章 — 它们能提升评价可信度,帮助客户区分真实评价
- 初次加载时将轮播中的评价数量限制为 5–10 条 — 延迟加载更多评价,避免阻塞页面 LCP
- 上线前使用 Google 的 Rich Results Test 验证 schema.org 标记 — 只有 JSON-LD 正确时,搜索结果中才会显示星级评分
常见问题
| 问题 | 解决方案 |
|---|---|
| Google Search 中不显示星级评分 | 确保 AggregateRating.reviewCount ≥ 1,并且 schema 以 JSON-LD 格式放在 <head> 中;使用 Google 的 Rich Results Test 进行测试 |
| 产品送达前就发送了评价请求 | 通过送达 webhook 触发评价邮件,而不是通过发货事件;送达后增加 5 天缓冲期 |
| 垃圾评价涌入审核队列 | 在 WooCommerce 中启用 Akismet 集成,或使用 Judge.me 内置的垃圾信息过滤器;自动拒绝垃圾评分较高的提交内容 |
| 同一客户重复评价 | Judge.me 和 Yotpo 会限制每笔已验证购买只能提交一条评价;自定义构建时,为 (customerId, productId) 添加唯一约束 |
| 评价照片拖慢页面速度 | Judge.me 和 Yotpo 会自动调整照片大小并通过 CDN 提供;自定义构建时,在上传时将照片调整为 200px 缩略图 |
相关技能
- @user-generated-content
- @customer-segmentation
- @personalization-engine
- @conversion-rate-optimization