mcpField
P
product-reviews-ratings

product-reviews-ratings

github.com/finsilabs营销与增长6093 次安装5 天前更新
代码仓库

关于 product-reviews-ratings

面向电商店铺运营者的技能,指导选择并配置商品评论与评分方案,涵盖评论收集、审核、展示和结构化数据。内容针对 Shopify、WooCommerce、BigCommerce 及自定义店面分别说明。

主要功能

  1. 01选择评论应用或自建方案
  2. 02设置购买后评论邀请
  3. 03配置评论展示与评分标记
  4. 04审核评论并验证购买
  5. 05跟踪评论相关指标

适用场景

  1. 01为新店部署评论系统
  2. 02为商品页添加评分展示
  3. 03建立评论审核流程
  4. 04迁移评论或自动发送邀请

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill product-reviews-ratings

安装后在 Claude Code 中输入/product-reviews-ratings确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

tile.json
evals/bayesian-rating-calculation-and-schema-o/
criteria.json
task.md
evals/review-display-helpful-votes-and-admin-m/
criteria.json
task.md
evals/review-submission-endpoint-with-auto-mod/
criteria.json
task.md

详细介绍

产品评论与评分

概述

产品评论是电商中最有力的社会认同信号——有 5 条以上评论的产品,其转化率比没有评论的产品高出 270%。各大平台都有评论应用,可处理评论收集、审核、用于 Google 星级评分的 schema.org 标记,以及已验证购买徽章,无需编写自定义代码。只有在需要专有审核逻辑、深度 API 集成或将评论数据存储在自己的数据库中时,才应构建自定义评论系统。

何时使用此技能

  • 启动新商店,需要评论收集和展示系统时
  • 实现 schema.org AggregateRating 标记,以便在 Google 搜索结果中显示星级评分时
  • 构建审核工作流,以阻止虚假或垃圾评论时
  • 展示已验证购买徽章,以提高评论可信度时
  • 设置交付后自动发送购买后评论邀请邮件时
  • 将评论从一个平台或应用导入另一个平台或应用时

核心说明

第 1 步:确定平台并选择合适的评论工具
平台推荐工具原因
ShopifyJudge.me免费套餐包含无限评论、带图片的评论、已验证购买徽章、schema.org 标记和购买后邮件邀请
ShopifyYotpo功能更高级:问答、忠诚度集成、Google Shopping 评论同步——最适合中型及以上商店
WooCommerceWooCommerce 内置评论 + WP Product Review 插件WooCommerce 内置星级评分;添加 WP Product Review,以实现 schema.org 标记和已验证购买限制
WooCommerce适用于 WooCommerce 的 Judge.me与 Shopify 版本功能相同;可作为 WooCommerce 集成使用
BigCommerceJudge.me 或 Yotpo两者均可在 BigCommerce App Marketplace 上使用,功能完整
自定义 / 无头架构构建评论 API当评论需要存储在自己的数据库中并采用自定义审核逻辑时,必须使用

第 2 步:按平台进行设置

Shopify

选项 A:Judge.me(推荐——免费且功能全面)

  1. 从 Shopify App Store 安装 Judge.me Product Reviews

  2. Judge.me 会在可配置的延迟后自动发送购买后评论邀请邮件:

    • 前往 Judge.me → Settings → Review Request Emails
    • 将延迟设为 履约后 5–7 天(给客户时间收货并使用产品)
    • 使用品牌颜色和产品图片自定义邮件模板
  3. 配置评论展示:

    • 前往 Judge.me → Widgets → Install Widgets
    • 在产品模板上启用评论小组件(Judge.me 提供一键安装)
    • 在产品列表中启用星级评分摘要
  4. 启用 schema.org 标记:

    • 前往 Judge.me → Settings → SEO
    • 确保已启用“Add aggregate rating schema”——这项设置用于在 Google 搜索结果中显示星级评分
  5. 配置验证和审核:

    • 前往 Settings → Review Settings
    • 启用 Verified Purchase Only:只有购买过产品的客户才能发表评论
    • 启用 Auto-publish verified reviews;对未验证评论进行人工审核
    • 将脏话过滤器设为“Medium”或更高

选项 B:Yotpo(适用于中型市场和企业)

  1. 从 App Store 安装 Yotpo Reviews
  2. 在 Yotpo → Settings → Review Request 中配置评论邀请时间
  3. 如果投放 Google Shopping 广告系列,请启用 Google Shopping Reviews syndication——Yotpo 会直接将评论数据发送给 Google
  4. 使用 Yotpo Q&A 在 PDP 的评论下方添加问答版块

测试 schema.org 标记: 启用 Judge.me 或 Yotpo 的 schema 输出后,使用产品页面 URL 通过 Google 的富媒体搜索结果测试进行验证。页面编入索引后,星级评分会在 1–2 周内出现在 Google 搜索中。


WooCommerce

WooCommerce 内置评价(免费、基础):

  1. 前往 WooCommerce → Settings → Products → Reviews
  2. 启用 Enable product reviews
  3. 启用 Show "verified owner" label on customer reviews — 此选项会将评价限制为购买过该产品的客户
  4. 启用 Reviews can only be left by "verified owners",以限制未经验证的评价提交

添加 schema.org 标记并增强展示效果:

  1. 从 WordPress 插件目录安装 WP Product Review
  2. WP Product Review 会添加:
    • 综合星级评分 schema.org 标记(Google 富媒体搜索结果所必需)
    • 产品列表中的星级评分展示
    • 评价优缺点字段
  3. 在 WP Product Review → Settings 中配置

自动发送评价请求邮件:

  1. 安装 Klaviyo 或 AutomateWoo,用于购买后的邮件自动化
  2. 在 Klaviyo 中:创建一个由 "Placed Order" 事件触发的 Flow,延迟 7 天发送,并包含评价请求链接
  3. 在 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:

  1. 前往 Apps → Search "Judge.me" 并安装
  2. 配置方式与 Shopify 版本相同——评价请求邮件、schema 标记和已验证购买限制的运作方式完全一致

BigCommerce 内置产品评价:

  1. 前往 Products → [Product] → Reviews tab,手动审核评价
  2. 前往 Settings → Store Settings → Miscellaneous → 启用 Product Reviews
  3. 内置评价不包含 schema.org 标记——安装 Judge.me 或 Yotpo,即可在 Google 搜索结果中显示星级评分

用于 BigCommerce 的 Yotpo:

  1. 从 BigCommerce App Marketplace 安装
  2. 除邮件外,还支持 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

评论

支持 Markdown