Back to skills
extension
Category: Data & AnalyticsNo API key required

EtsyAnalyze

This skill should be used whenever the user sends one or more Etsy listing URLs (containing etsy.com/listing/ or similar formats), or provides Etsy CSV data files for analysis. It automates the full competitor analysis workflow: launching Chrome with the user's local cookies to bypass anti-bot protection, extracting the fully-rendered page HTML via Chrome DevTools Protocol (CDP), parsing product data from JSON-LD structured data, and generating comprehensive HTML competitor analysis reports. For multiple URLs or CSV data, it generates a multi-product comparison report with keyword analysis, pricing strategy, and market opportunity insights. Trigger phrases include any Etsy listing URL(s), "帮我分析这个竞品", "分析Etsy链接", "Etsy竞品分析", "批量分析", "多个竞品", CSV file analysis, or similar requests.

personAuthor: user_0f1364e5hubcommunity

Etsy 竞品分析 Skill

功能概述

支持两种分析模式:

| 模式 | 输入 | 输出 | |------|------|------| | 实时爬取 | Etsy listing URL(s) | 单品报告 / 多竞品对比报告 | | CSV 分析 | 已抓取的 Etsy CSV 数据文件 | 批量竞品分析报告(表格驱动型) |

触发条件

  • 用户发来一个或多个 etsy.com/listing/ 链接
  • 用户提供 Etsy CSV 数据文件路径
  • 提及"分析竞品/批量分析/多个竞品/CSV分析"

模式一:实时爬取模式

环境配置(用户固定参数)

  • Chrome 路径C:\Users\Administrator\AppData\Local\Google\Chrome\Bin\chromex.exe
  • 用户数据目录C:\Users\Administrator\AppData\Local\Google\Chrome\User Data
  • CDP 调试端口9222
  • 输出目录C:\Users\Administrator\Downloads\
  • 单品脚本scripts/etsy_analyze.js
  • 批量脚本scripts/etsy_batch.js(2 个以上链接时使用)
  • 模板报告template_report.html(批量分析标准模板)

触发判断逻辑

用户发来的 Etsy 链接数量:
  1 个 → 使用 etsy_analyze.js(单品报告)
  2+ 个 → 使用 etsy_batch.js(单品报告 × N + 1 份对比总报告)

如何识别多个链接:用户可以用任何方式提供链接:

  • 换行分隔
  • 空格分隔
  • 列表形式(1. 2. 3.)
  • 多条消息(先提一个再加一个)

只要消息里有 2 个及以上 etsy.com/listing/ 链接,就走批量流程。


模式二:CSV 数据分析模式

当用户提供已抓取的 Etsy CSV 数据文件时,直接读取 CSV 并生成分析报告。

输入格式要求

CSV 文件应包含以下字段(标准 Etsy 抓取格式):

商品链接,商品ID,商品标题,商品标价,商品图片,定制选项1,定制选项2,商品描述,店铺名称,抓取时间

工作流程

Step 1:读取 CSV 文件

使用 Read 工具读取 CSV 文件路径,解析所有竞品数据。

Step 2:数据提取与统计

从每条记录中提取:

  • 价格:从"商品标价"字段提取数字(支持 NowUSD/USD 格式)
  • 标题字数:计算标题字符数
  • 描述字数:计算描述字符数
  • 店铺:店铺名称
  • 变体:解析定制选项1和定制选项2,统计风格数和图案数
  • SKU组合:计算选项组合总数
  • 定制类型:从选项中识别定制方式(姓名、日期、照片等)

Step 3:生成 HTML 报告

使用 Write 工具生成报告,必须使用标准表格驱动型格式

参考模板:C:\Users\Administrator\.workbuddy\skills\etsy-analyzer\template_report.html

Step 4:输出文件

保存到与 CSV 同目录:

<CSV文件所在目录>/Etsy竞品分析报告_<日期>.html

报告格式规范(标准版)

必须使用表格驱动型报告格式,参考 template_report.html:

1. 核心摘要卡片

<div class="summary-grid">
  <div class="stat-card">
    <div class="stat-num">竞品数</div>
    <div class="stat-label">竞品样本数</div>
  </div>
  ...
</div>

2. 核心数据对比表(必须包含)

| 列 | 说明 | |---|---| | # | 序号 | | 图片 | 商品缩略图(56x56px) | | 商品标题 | 可点击链接 | | 店铺 | 店铺名 | | 基础价 | 最低标价 | | 最高价 | 最高变体价 | | 标题字数 | 标题字符数 | | 风格数 | 定制选项1数量 | | 图案数 | 定制选项2数量 | | SKU组合 | 总变体组合数 | | 定制类型 | badge 标签 |

3. 定制选项详细对比表

每行展示:店铺名、风格/款式选项(opt-pill)、图案/内容选项、选项组合数、个性化类型

4. 定价策略分析表

| 价格区间 | 竞品数 | 代表款式 | 特点 | 策略建议 |

5. 关键词分析

  • 词频统计:使用 kw-bar 条形图展示关键词出现频率
  • 词云:tag-cloud + tag/tag-lg/tag-md/tag-sm 分层
  • 关键词分层策略表:核心词/场景词/差异词/长尾词

6. 描述核心信息分析表

| 维度 | 高频内容 | 频率 | 建议 |

7. 竞品深度对比

选择 2-3 个典型竞品进行多维度对比

8. 市场机会与建议

  • 差异化机会点:opportunity 样式卡片
  • 注意事项:warning 样式卡片
  • 推荐标题模板:insight-box 样式
  • Tags 推荐清单:tag-cloud 样式

9. 附录:原始数据索引

包含商品ID、店铺名、价格、SKU数、可点击链接的表格

CSS 样式规范

/* 固定颜色主题 */
--primary: #C2410C (橙色)
--bg: #f4f4f4
--card-bg: #fff
--success: #22c55e (opportunity)
--warning: #f59e0b (warning)

/* 标签样式 */
.badge-bs { background: #C2410C } /* Bestseller */
.badge-new { background: #6366f1 } /* 新品/定制类型 */
.opt-pill { background: #f1f5f9 }  /* 选项胶囊 */
.tag { background: #fde8de }       /* 标签 */

/* 盒样式 */
.insight-box { background: #fff8f5; border-left: 3px solid #C2410C }
.opportunity { background: #f0fdf4; border-left: 3px solid #22c55e }
.warning { background: #fffbeb; border-left: 3px solid #f59e0b }

标准工作流程(实时爬取 4 步)

Step 1:提取 Listing ID

从 URL 中提取数字 ID:

https://www.etsy.com/listing/1234567890/...  →  listingId = 1234567890

Step 2:启动 Chrome(有界面 + CDP 端口)

必须使用有界面模式(非 headless),利用本地 Cookie 绕过 DataDome 反爬机制:

$chromePath = "C:\Users\Administrator\AppData\Local\Google\Chrome\Bin\chromex.exe"
$userDataDir = "C:\Users\Administrator\AppData\Local\Google\Chrome\User Data"

# 先检查端口是否已被占用(复用已有实例)
$portInUse = netstat -an | Select-String ":9222 "
if (-not $portInUse) {
    Start-Process $chromePath "--remote-debugging-port=9222 --user-data-dir=`"$userDataDir`" --no-first-run <URL>"
    Start-Sleep -Seconds 18   # 等待页面完全渲染(含可能的验证码)
} else {
    # 端口已在使用,导航到新 URL
    # 通过 CDP /json/new?<url> 打开新标签页
    Start-Sleep -Seconds 5
}

⚠️ 等待时间至少 18 秒,确保 JS 渲染和反爬验证完成。

Step 3:运行分析脚本

单品(1 个链接):

$scriptPath = "<SKILL_DIR>\scripts\etsy_analyze.js"
node $scriptPath "<etsy_url>"

批量(2+ 个链接):

$scriptPath = "<SKILL_DIR>\scripts\etsy_batch.js"
node $scriptPath "<url1>" "<url2>" "<url3>"

脚本自动完成:

  1. 连接 http://localhost:9222/json 获取页面列表
  2. WebSocket 连接 Chrome DevTools Protocol
  3. 执行 Runtime.evaluate 获取 document.documentElement.outerHTML
  4. 解析 JSON-LD 结构化数据(<script type="application/ld+json">
  5. 生成 HTML 竞品报告(批量还会生成对比总报告)

输出文件

  • 单品报告:C:\Users\Administrator\Downloads\etsy_report_<listingId>.html
  • 批量对比:C:\Users\Administrator\Downloads\etsy_compare_<timestamp>.html

Step 4:展示报告

报告生成后,使用 preview_url 工具以 file:/// 协议展示报告:

file:///C:/Users/Administrator/Downloads/etsy_report_<listingId>.html

报告包含内容

单品报告

| 模块 | 数据字段 | |------|---------| | 核心指标 | 价格区间、评分、评价数、销量、收藏数 | | 基本信息 | 商品名、店铺、发货地、上架时间、图片数量 | | 商品变体 | 所有可选变体属性 | | SEO 关键词 | Meta keywords 标签 | | 图片预览 | 前 6 张商品主图 | | 客户评论 | 近期真实评论(最多 5 条) | | 竞品机会 | 价格/评价/运费/变体/图片维度的差异化建议 |

多竞品对比报告(批量专属)

| 模块 | 内容 | |------|------| | 综合最强竞品 | 自动评分排名,突出 TOP 1 | | 可视化图表 | 销量/评价/价格条形图 + 综合雷达图(Chart.js) | | 详细对比表 | 所有竞品关键指标并排对比 | | SEO 关键词对比 | 各竞品关键词横向展示 | | 机会分析矩阵 | 每个竞品的差异化机会卡片 |


数据提取优先级

  1. JSON-LD 结构化数据@type: Product):最可靠,优先使用
  2. Meta 标签keywordsdescription):SEO 数据备用
  3. 页面文本正则匹配:销量、收藏数等非结构化数据

常见问题处理

CDP 连接失败

  • 确认 Chrome 已启动且端口 9222 可访问:Invoke-RestMethod http://localhost:9222/json
  • 如端口被占用但不是 Chrome,先关闭占用进程

页面被 DataDome 拦截(只有 1-2KB HTML):

  • 必须使用有界面模式(非 --headless
  • 确认使用了正确的 --user-data-dir(含登录 Cookie)
  • 增加等待时间到 25 秒

HTML 抓取成功但数据为空

  • 检查是否为香港/其他区域版本 URL(/hk-en/
  • JSON-LD 数据结构可能因地区而异

CSV 字段缺失

  • 部分字段可能为空,使用默认值或"-"代替
  • 图片链接可能失效,添加 onerror="this.style.display='none'"

注意事项

  • 本工具仅用于公开可访问的商品页面分析,不绕过付费墙或登录限制
  • 每次分析间隔建议 30 秒以上,避免触发 IP 频率限制
  • Chrome 进程在分析完成后不会自动关闭(保留供下次复用)
  • CSV 分析模式下,报告保存到 CSV 同目录下