一句话:一个 Cloudflare Worker 同时提供页面和接口;接口按"5 个引擎并行抓取 → 聚合 → 三层清洗 → 评分分层"跑一遍,用 SSE 把每一步实时推给页面;页面既能实时跑,也能回放一份固化的真实运行快照。
| 模块 | 实现 | 关键技术事实(都是真实请求验证过的) |
|---|---|---|
| ① 搜索路径 | Claude 由标题/类目/卖点生成 6 个买家搜索词,每词抓前 2 页,逐条解析并区分自然位 / 广告位 | ScraperAPI 不做 JS 渲染时搜索页 0 条广告;加 render=true 后一页 48-60 条,含 3-15 条 Sponsored。用 AdHolder / puis-sponsored-label 标记判定 |
| ② 图搜 | Claude Vision 看主图生成 3 个纯视觉查询词再搜索(模拟 Amazon Lens) | Lens 无公开接口;正式版接本机 Playwright 浏览器网关上传主图 |
| ③ 详情页 | 渲染抓取 /dp 页,拆出广告位、看了又看、买了又买、相似对比 | id="sp_detail*_ASIN" = 广告位;走马灯按 a-carousel-heading 标题归类;不渲染只能拿到 26 个,渲染后能拿全 |
| ④ 类目和榜单 | 从详情页 BSR 链接取叶子类目 Best Sellers Top 50 | 链接形如 /gp/bestsellers/<store>/<nodeId> |
| ⑤ Alexa AI 搜索 | Claude 生成 3 个买家意图问题;网关在线走 Alexa for shopping 真实问答,离线用等价搜索词兜底(当前为模拟) | 本机 rufus-gateway 目前离线;Alexa 面板改版后选择器需重调 |
| 目标画像 / 候选信息 | ScraperAPI 结构化商品接口 | 返回价格、重量、尺寸(“9.05 x 3.54 x 2.36 inches; 15.52 ounces”)、类目路径、BSR、主图、卖点;KV 缓存 24h |
| L1 硬过滤 | 无价格 / 自家品牌 / 配件耗材 | 第一版配件正则把标题里 “6 Tips”(附赠喷头)当配件误杀 17 个真对手 → 改为只认 replacement/refill/spare 或标题前 5 词以配件名词为主体 |
| L2 规格门槛 | 重量 ±35% · 尺寸体积 0.5-2× 且最长边 0.7-1.4× · 价格 ±60% · 叶子/父类目一致;缺失不淘汰但扣分 | Bens 口径:规格 = 尺寸 + 重量,是核心指标。实测张力杆/落地式置物架(60-140oz)全部被挡在粘贴式(32oz)之外 |
| L3 语义 | Claude 每批 12 个候选打 0-100 分(同用途/人群/形态),<55 淘汰,失败自动重试 | 第一版并发高峰时批次静默失败导致“全部未评分” → 加重试 + 把失败写进日志 |
| 评分 / 分层 | 语义 35% + 规格 25% + 召回热度 20% + 价格 15% + 市场强度 5% → A≥80 / B≥68 / C≥55 / D | 规格分 = 重量接近 40 + 尺寸接近 30 + 类目 30;关注方式 A 每日 / B 每周 / C 每月 / D 归档 |
| 页面 | 单文件 HTML(无框架),两种模式共用一套渲染函数 | 演示回放 = 把一次真实 SSE 输出固化为 demo_data.js,打开 15 秒播完;架构流程图随进度点亮 |
| 运行 / 部署 | Cloudflare Worker + KV,wrangler deploy | Secrets 只放 Cloudflare;公司网络屏蔽 *.workers.dev,所以绑了 jp.ipanda.ai / jp.aibens.cc;一次实时查询约 400-500 ScraperAPI credits |
不是一次说完,而是一条主线 + 十一次追加,每次都在 Claude 干活时插进来、当场并入。
| 问题 | 采用 | 原因 |
|---|---|---|
| 抓取深度 | 每词 2 页(正式版可放到 20) | 5-8 词 × 20 页 × 渲染 ≈ 100-160 次抓取,Demo 不必 |
| 图搜 / Alexa | LLM 模拟 + 预留网关接口,页面标注 | 无公开接口、网关离线,Demo 讲清流程即可 |
| 市场 | US 为主,下拉支持 UK/DE/FR/JP/CA | 演示样本用 US |
| 部署 | 独立 Worker,不进能力中心 migration | Demo 阶段;挂能力中心时再走 Service Binding + JWT |
| 与竞品雷达 / comp 的关系 | 并行新项目,不改线上 | 讲法不同,避免影响生产 |
| 价格带 | ±35% → ±60% | ±35% 把 Waterpik $49.99 这类真对手挡掉 |
| 演示样本 | COSLUS C20 水牙线 → YASONIC 3-Pack 置物架 | Bens 要求换产品;置物架类目能直观展示重量口径 |
projects/competitor-search-worker(git v0.2.0)HANDOFF.md:渠道实现 vs 正式版建议、代码结构、接口、成本、边界