← 返回 Skills 市场
tobewin

Ecommerce Review Analyzer

作者 ToBeWin · GitHub ↗ · v1.0.7 · MIT-0
cross-platform ✓ 安全检测通过
252
总下载
0
收藏
0
当前安装
8
版本数
在 OpenClaw 中安装
/install ecommerce-review-analyzer
功能描述
淘宝京东拼多多评论分析工具。自动抓取商品评论,分析好评差评,生成专业分析报告。支持多店铺多商品对比,差评详情分析,改进建议。电商运营必备工具。
使用说明 (SKILL.md)

淘宝京东拼多多评论分析工具

自动抓取商品评论,分析好评差评,生成专业分析报告。

功能特点

  • 🛒 三平台支持:淘宝、京东、拼多多
  • 📊 自动抓取:浏览器自动化获取评论
  • 🧠 智能分析:AI分析评论内容和情感
  • 📈 评分统计:好评率、差评率、评分分布
  • 💬 差评详情:完整差评内容和出处
  • 💡 改进建议:AI生成改进建议
  • 📄 专业报告:Word和PDF双格式输出
  • 🎯 多商品对比:同一店铺多个商品对比
  • 🏪 多店铺对比:不同店铺对比分析
  • 💡 改进建议: AI生成改进建议
  • 📄 专业报告: Word (.docx) + PDF 输出
  • 🎯 多商品: 支持同一店铺多个商品
  • 🏪 多店铺: 支持不同店铺对比分析
  • 🛒 多平台: 支持淘宝/京东/拼多多对比

使用场景

  • "分析淘宝店铺评论" / "Analyze Taobao reviews"
  • "查看京东差评" / "Check JD negative reviews"
  • "帮我分析这个产品的用户反馈"
  • "ecommerce-review-analyzer"

支持平台

平台 方式 需要登录
淘宝 浏览器自动化
京东 浏览器自动化
拼多多 浏览器自动化

前置条件

  • OpenClaw v2026.3.22+ (浏览器自动化)
  • 必须使用OpenClaw内置浏览器自动化(不支持第三方浏览器工具)
  • 已登录目标电商平台
  • 已配置OpenClaw browser工具

⚠️ 重要声明

本技能强制使用OpenClaw内置浏览器自动化功能。 不支持Playwright、Selenium等第三方浏览器工具。 必须使用OpenClaw v2026.3.22+的browser工具。 浏览器会话继承用户已登录状态。


工作流程

用户请求
    ↓
1. 检测登录状态
    ↓
2. 协助扫码登录(如需要)
    ↓
3. 抓取商品评论
    ↓
4. AI分析评论内容
    ↓
5. 生成专业报告(Word+PDF)

输出格式

Word报告 (.docx)

包含:

  • 商品基本信息
  • 评分分布表格
  • 差评详情(含完整评论)
  • 改进建议

PDF报告

与Word内容完全一致,便于打印。


示例报告

┌─────────────────────────────────────────────┐
│  📊 商品评论分析报告                         │
└─────────────────────────────────────────────┘

商品:智能手表 Pro
平台:淘宝 / 京东
分析评论:1,234条

📊 评分分布
├─ ⭐⭐⭐⭐⭐ 好评:78% (970条)
├─ ⭐⭐⭐ 中评:15% (186条)
└─ ⭐⭐ 差评:7% (78条)

💬 差评详情

差评 1: ⭐⭐
"充电太慢了,充满要4个小时,退货!"
👤 用户B | 📅 2026-03-18 | 🏪 科技旗舰店

差评 2: ⭐
"App经常闪退,客服态度差,差评!"
👤 用户C | 📅 2026-03-15 | 🏪 科技旗舰店

💡 改进建议
• 优化充电速度
• 修复App稳定性
• 加强客服培训

浏览器自动化代码

抓取淘宝评论

// 1. 打开商品页面
await browser.open({
  url: "https://item.taobao.com/item.htm?id=商品ID"
})

// 2. 等待页面加载
await browser.wait({ timeout: 5000 })

// 3. 检查是否需要登录
const needsLogin = await browser.evaluate(() => {
  return document.querySelector('.login-dialog') !== null
})

if (needsLogin) {
  // 协助用户扫码登录
  const qrImage = await browser.screenshot({ selector: '.qrcode-img' })
  await chat.send("⚠️ 请扫描二维码登录淘宝:", { image: qrImage })
  await browser.waitForNavigation({ timeout: 120000 })
}

// 4. 点击"评价"标签
await browser.click({ selector: 'a[href="#J_TabBar"]' })
await browser.wait({ timeout: 3000 })

// 5. 滚动加载更多评论
for (let i = 0; i \x3C 3; i++) {
  await browser.evaluate(() => window.scrollBy(0, 500))
  await browser.wait({ timeout: 1000 })
}

// 6. 提取评论数据
const reviews = await browser.evaluate(() => {
  const items = []
  document.querySelectorAll('.J_KgRate_ReviewItem').forEach(el => {
    const rating = el.querySelector('.tb-rev-item-rating')?.children.length || 0
    const content = el.querySelector('.tb-rev-item__body-text')?.innerText || ''
    const user = el.querySelector('.tb-rev-item__user-name')?.innerText || ''
    const date = el.querySelector('.tb-rev-item__time')?.innerText || ''
    
    items.push({
      rating: rating,
      content: content.trim(),
      user: user.trim(),
      date: date.trim()
    })
  })
  return items
})

return reviews

抓取京东评论

// 1. 打开商品页面
await browser.open({
  url: "https://item.jd.com/商品ID.html"
})

// 2. 等待加载
await browser.wait({ timeout: 5000 })

// 3. 滚动到评论区
await browser.evaluate(() => {
  const element = document.querySelector('#comment')
  if (element) element.scrollIntoView()
})
await browser.wait({ timeout: 2000 })

// 4. 提取评论
const reviews = await browser.evaluate(() => {
  const items = []
  document.querySelectorAll('.comment-item').forEach(el => {
    const rating = el.querySelector('.comment-star')?.className.match(/\d+/) || [0]
    const content = el.querySelector('.comment-con')?.innerText || ''
    const user = el.querySelector('.user-name')?.innerText || ''
    const date = el.querySelector('.comment-date')?.innerText || ''
    
    items.push({
      rating: parseInt(rating[0]) || 5,
      content: content.trim(),
      user: user.trim(),
      date: date.trim()
    })
  })
  return items
})

return reviews

抓取拼多多评论

// 1. 打开商品页面
await browser.open({
  url: "https://mobile.yangkeduo.com/goods.html?goods_id=商品ID"
})

// 2. 等待加载
await browser.wait({ timeout: 5000 })

// 3. 点击评价标签
await browser.click({ selector: '[class*="comment"]' })
await browser.wait({ timeout: 2000 })

// 4. 提取评论
const reviews = await browser.evaluate(() => {
  const items = []
  document.querySelectorAll('[class*="comment-item"]').forEach(el => {
    const content = el.innerText || ''
    if (content.length > 10) {
      items.push({
        content: content.trim(),
        platform: '拼多多'
      })
    }
  })
  return items
})

return reviews

Python代码示例

from docx import Document
from docx.shared import Pt, Cm, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from fpdf import FPDF
from datetime import datetime
import os

class ReviewAnalyzer:
    def __init__(self):
        self.reviews = []
    
    def add_review(self, product, platform, store, rating, content, date, user):
        """添加评论数据"""
        self.reviews.append({
            'product': product,
            'platform': platform,
            'store': store,
            'rating': rating,
            'content': content,
            'date': date,
            'user': user
        })
    
    def analyze(self):
        """分析评论数据"""
        total = len(self.reviews)
        if total == 0:
            return None
        
        positive = len([r for r in self.reviews if r['rating'] >= 4])
        negative = len([r for r in self.reviews if r['rating'] \x3C= 2])
        neutral = total - positive - negative
        avg_rating = sum(r['rating'] for r in self.reviews) / total
        
        return {
            'total': total,
            'positive': positive,
            'negative': negative,
            'neutral': neutral,
            'avg_rating': avg_rating,
            'positive_rate': positive / total * 100,
            'negative_rate': negative / total * 100,
            'negative_reviews': [r for r in self.reviews if r['rating'] \x3C= 2]
        }
    
    def generate_word_report(self, analysis, output_path):
        """生成Word报告"""
        doc = Document()
        section = doc.sections[0]
        section.top_margin = Cm(2)
        section.bottom_margin = Cm(2)
        section.left_margin = Cm(2.5)
        section.right_margin = Cm(2.5)
        
        # 标题
        title = doc.add_heading('Product Review Analysis Report', 0)
        title.alignment = WD_ALIGN_PARAGRAPH.CENTER
        
        # 基本信息
        info_table = doc.add_table(rows=4, cols=2)
        info_table.style = 'Table Grid'
        info_table.cell(0, 0).text = 'Product'
        info_table.cell(0, 1).text = self.reviews[0]['product'] if self.reviews else 'N/A'
        info_table.cell(1, 0).text = 'Platform'
        info_table.cell(1, 1).text = self.reviews[0]['platform'] if self.reviews else 'N/A'
        info_table.cell(2, 0).text = 'Reviews'
        info_table.cell(2, 1).text = str(analysis['total'])
        info_table.cell(3, 0).text = 'Date'
        info_table.cell(3, 1).text = datetime.now().strftime('%Y-%m-%d')
        
        doc.add_paragraph()
        
        # 评分分布
        h = doc.add_heading('Rating Distribution', level=1)
        
        rating_table = doc.add_table(rows=4, cols=3)
        rating_table.style = 'Table Grid'
        rating_table.cell(0, 0).text = 'Rating'
        rating_table.cell(0, 1).text = 'Count'
        rating_table.cell(0, 2).text = 'Percentage'
        rating_table.cell(1, 0).text = 'Positive (4-5)'
        rating_table.cell(1, 1).text = str(analysis['positive'])
        rating_table.cell(1, 2).text = f"{analysis['positive_rate']:.1f}%"
        rating_table.cell(2, 0).text = 'Neutral (3)'
        rating_table.cell(2, 1).text = str(analysis['neutral'])
        rating_table.cell(2, 2).text = f"{analysis['neutral'] / analysis['total'] * 100:.1f}%"
        rating_table.cell(3, 0).text = 'Negative (1-2)'
        rating_table.cell(3, 1).text = str(analysis['negative'])
        rating_table.cell(3, 2).text = f"{analysis['negative_rate']:.1f}%"
        
        doc.add_paragraph()
        
        # 差评详情
        h = doc.add_heading('Negative Reviews', level=1)
        
        for i, review in enumerate(analysis['negative_reviews'], 1):
            entry = doc.add_paragraph()
            run = entry.add_run(f'Review {i}: {"*" * review["rating"]}')
            run.font.bold = True
            
            quote = doc.add_paragraph()
            quote.add_run(f'"{review["content"]}"').font.italic = True
            
            detail = doc.add_paragraph()
            detail.add_run(f'User: {review["user"]} | Date: {review["date"]}').font.color.rgb = RGBColor(100, 100, 100)
            
            doc.add_paragraph()
        
        doc.save(output_path)
        return output_path
    
    def generate_pdf_report(self, analysis, output_path):
        """生成PDF报告"""
        pdf = FPDF()
        pdf.add_page()
        pdf.set_auto_page_break(auto=True, margin=15)
        
        # 标题
        pdf.set_font('Helvetica', 'B', 20)
        pdf.set_text_color(30, 60, 114)
        pdf.cell(0, 12, 'Product Review Analysis', new_x='LMARGIN', new_y='NEXT', align='C')
        pdf.ln(5)
        
        # 基本信息
        pdf.set_font('Helvetica', '', 11)
        pdf.set_text_color(51, 51, 51)
        pdf.cell(0, 6, f'Reviews: {analysis["total"]}', new_x='LMARGIN', new_y='NEXT')
        pdf.ln(5)
        
        # 评分分布
        pdf.set_font('Helvetica', 'B', 14)
        pdf.set_text_color(30, 60, 114)
        pdf.cell(0, 8, 'Rating Distribution', new_x='LMARGIN', new_y='NEXT')
        pdf.ln(5)
        
        pdf.set_font('Helvetica', '', 11)
        pdf.set_text_color(51, 51, 51)
        pdf.cell(0, 6, f'Positive: {analysis["positive"]} ({analysis["positive_rate"]:.1f}%)', new_x='LMARGIN', new_y='NEXT')
        pdf.cell(0, 6, f'Negative: {analysis["negative"]} ({analysis["negative_rate"]:.1f}%)', new_x='LMARGIN', new_y='NEXT')
        pdf.ln(5)
        
        # 差评详情
        pdf.set_font('Helvetica', 'B', 14)
        pdf.set_text_color(30, 60, 114)
        pdf.cell(0, 8, 'Negative Reviews', new_x='LMARGIN', new_y='NEXT')
        pdf.ln(5)
        
        pdf.set_font('Helvetica', '', 10)
        pdf.set_text_color(51, 51, 51)
        for i, review in enumerate(analysis['negative_reviews'], 1):
            pdf.cell(0, 6, f'Review {i}: {"*" * review["rating"]}', new_x='LMARGIN', new_y='NEXT')
            pdf.multi_cell(0, 5, f'"{review["content"]}"')
            pdf.cell(0, 5, f'User: {review["user"]} | Date: {review["date"]}', new_x='LMARGIN', new_y='NEXT')
            pdf.ln(5)
        
        pdf.output(output_path)
        return output_path

# 使用示例
analyzer = ReviewAnalyzer()

# 添加评论
analyzer.add_review('Smart Watch Pro', 'Taobao', 'Tech Store', 5, 'Very good!', '2026-03-20', 'User A')
analyzer.add_review('Smart Watch Pro', 'Taobao', 'Tech Store', 2, 'Bad quality!', '2026-03-15', 'User B')

# 分析
analysis = analyzer.analyze()

# 生成报告
analyzer.generate_word_report(analysis, 'report.docx')
analyzer.generate_pdf_report(analysis, 'report.pdf')

Notes

  • 使用OpenClaw内置浏览器自动化
  • 需要登录电商平台
  • 支持中文评论分析
  • 数据准确性优先
  • 数据准确性优先
  • 支持中文评论分析
安全使用建议
This skill appears to do what it says, but it operates by using your browser session and requires you to be logged into the ecommerce sites. Before installing or using it: 1) Only use it if you trust the skill source (no homepage/author info is supplied). 2) Consider logging into a dedicated account (or temporarily logging out of other sensitive accounts) so only review data is accessible. 3) Be aware it will capture full review text, usernames, dates and may screenshot login QR codes—do not share credentials. 4) If you allow autonomous runs, monitor when the agent invokes this skill (it could scrape data without you manually triggering it). 5) If you need stronger assurance, request the full source code or run the scraping in an isolated sandbox/browser profile first.
功能分析
Type: OpenClaw Skill Name: ecommerce-review-analyzer Version: 1.0.7 The skill is a legitimate tool for scraping and analyzing e-commerce reviews from Taobao, JD, and Pinduoduo. It utilizes OpenClaw's built-in browser automation to extract review data and uses standard Python libraries (python-docx, fpdf2) to generate local reports. No evidence of data exfiltration, malicious execution, or harmful prompt injection was found in SKILL.md or the associated code snippets.
能力评估
Purpose & Capability
The name/description (scraping and analyzing Taobao/JD/Pinduoduo reviews) matches the actual instructions: it requires browser automation and Python, performs DOM scraping of review pages, and generates Word/PDF reports. No unrelated binaries or credentials are requested.
Instruction Scope
Runtime instructions explicitly use the OpenClaw built-in browser to open product pages, evaluate arbitrary page JS, screenshot QR codes, and extract usernames, dates, stores and full review text. That scope is expected for scraping, but the instructions do not strictly limit data collection to only review text—because it runs in your logged-in session the skill could access other page-level or account data if modified.
Install Mechanism
This is an instruction-only skill with no install spec (low disk/write risk). The metadata lists Python package dependencies (jieba, python-docx, fpdf2) which are reasonable for Chinese text processing and report generation; installing packages via pip is typical but would be done at runtime or by the agent, not by an automatic installer in the skill bundle.
Credentials
The skill requests no environment variables or external credentials (good). However it explicitly requires the OpenClaw browser session and inherits the user's logged-in state for Taobao/JD/PDD — this gives the skill access to cookies/session-scoped data in the browser, which is sensitive. The need for that access is consistent with the stated purpose, but it is a privacy consideration.
Persistence & Privilege
always:false (not force-included). disable-model-invocation is false (the agent may invoke the skill autonomously), which is the platform default. Combined with access to your logged-in browser sessions, autonomous invocation increases privacy risk if the agent runs the skill without your active supervision; the skill itself does not request elevated system privileges nor modify other skills.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install ecommerce-review-analyzer
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /ecommerce-review-analyzer 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.7
优化描述:面向中国电商运营,纯中文描述,突出淘宝/京东/拼多多支持
v1.0.6
添加浏览器自动化代码:淘宝/京东/拼多多评论抓取代码,登录处理,数据提取
v1.0.5
添加完整Python代码:ReviewAnalyzer类,支持Word和PDF报告生成
v1.0.4
声明强制使用OpenClaw内置浏览器自动化,移除第三方工具依赖
v1.0.3
优化格式:统一格式,移除markdown输出,添加完整示例报告
v1.0.2
增强功能:多商品/多店铺/多平台分析,代表评论举例,专业报告输出,数据准确性优先
v1.0.1
增强功能:扫码登录、AI分析、Word/PDF输出、多语言、自定义分析角度
v1.0.0
电商评论分析工具:支持淘宝/京东/拼多多评论抓取,情感分析,关键洞察,改进建议
元数据
Slug ecommerce-review-analyzer
版本 1.0.7
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 8
常见问题

Ecommerce Review Analyzer 是什么?

淘宝京东拼多多评论分析工具。自动抓取商品评论,分析好评差评,生成专业分析报告。支持多店铺多商品对比,差评详情分析,改进建议。电商运营必备工具。 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 252 次。

如何安装 Ecommerce Review Analyzer?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install ecommerce-review-analyzer」即可一键安装,无需额外配置。

Ecommerce Review Analyzer 是免费的吗?

是的,Ecommerce Review Analyzer 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Ecommerce Review Analyzer 支持哪些平台?

Ecommerce Review Analyzer 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Ecommerce Review Analyzer?

由 ToBeWin(@tobewin)开发并维护,当前版本 v1.0.7。

💬 留言讨论