返回 Skill 列表
extension
分类: 数据与分析无需 API Key

EtsyAnalyze

>当用户发送一条或多条 Etsy 商品链接(包含etsy.com/listing/或同类格式),或是提供 Etsy CSV 数据文件要求分析时,即可启用该功能。它可实现完整竞品分析流程自动化:调用谷歌浏览器并加载用户本地 Cookie 以绕过反机器人防护机制,通过 Chrome 开发者工具协议(CDP)提取完整渲染后的网页超文本标记语言,从 JSON-LD 结构化数据中解析商品信息,并生成完整的 HTML 格式竞品分析报告。若为多条链接或 CSV 数据,还可生成多商品对比报告,包含关键词分析、定价策略及市场机会洞察。触发指令包括任意 Etsy 商品链接、帮我分析这个竞品、分析 Etsy 链接、Etsy 竞品分析、批量分析、多个竞品、CSV 文件分析及其他同类需求表述。

person作者: 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 同目录下