← Back to Skills Marketplace
tobewin

Ecommerce Review Analyzer

by ToBeWin · GitHub ↗ · v1.0.7 · MIT-0
cross-platform ✓ Security Clean
252
Downloads
0
Stars
0
Active Installs
8
Versions
Install in OpenClaw
/install ecommerce-review-analyzer
Description
淘宝京东拼多多评论分析工具。自动抓取商品评论,分析好评差评,生成专业分析报告。支持多店铺多商品对比,差评详情分析,改进建议。电商运营必备工具。
README (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内置浏览器自动化
  • 需要登录电商平台
  • 支持中文评论分析
  • 数据准确性优先
  • 数据准确性优先
  • 支持中文评论分析
Usage Guidance
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.
Capability Analysis
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.
Capability Assessment
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.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install ecommerce-review-analyzer
  3. After installation, invoke the skill by name or use /ecommerce-review-analyzer
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
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
电商评论分析工具:支持淘宝/京东/拼多多评论抓取,情感分析,关键洞察,改进建议
Metadata
Slug ecommerce-review-analyzer
Version 1.0.7
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 8
Frequently Asked Questions

What is Ecommerce Review Analyzer?

淘宝京东拼多多评论分析工具。自动抓取商品评论,分析好评差评,生成专业分析报告。支持多店铺多商品对比,差评详情分析,改进建议。电商运营必备工具。 It is an AI Agent Skill for Claude Code / OpenClaw, with 252 downloads so far.

How do I install Ecommerce Review Analyzer?

Run "/install ecommerce-review-analyzer" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Ecommerce Review Analyzer free?

Yes, Ecommerce Review Analyzer is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Ecommerce Review Analyzer support?

Ecommerce Review Analyzer is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Ecommerce Review Analyzer?

It is built and maintained by ToBeWin (@tobewin); the current version is v1.0.7.

💬 Comments