# Chanmama Search

> 蝉妈妈达人搜索与筛选 skill。在蝉妈妈达人库中按条件搜索达人，通过两轮 LLM 筛选（初筛名称 + 精筛三级分类），输出合格达人列表。 触发场景：搜索达人、筛选达人、蝉妈妈查询、达人数据提取、每日达人发现。

- Skill: `ayaoplus/chanmama-search` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add ayaoplus/chanmama-search`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ayaoplus/chanmama-search/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: ayaoplus (https://skillmd.com/u/ayaoplus)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ayaoplus/chanmama-search

---


# chanmama-search — 蝉妈妈达人搜索与筛选

## 前置条件

1. anyreach CDP Proxy 运行中：
```bash
node "<anyreach_dir>/scripts/check-deps.mjs"
```
2. 用户已在 Chrome 中登录蝉妈妈

> `<anyreach_dir>` 默认为本 skill 同级的 `anyreach/` 目录，可通过 `ANYREACH_DIR` 环境变量覆盖。

## 完整工作流

```
Step 1: 搜索达人列表
  node run.mjs --preset default --max-pages 10 --output /tmp/bloggers.json

Step 2: LLM 初筛（过滤品牌号/专场号/工厂号等）
  读取 prompts/screen-stage1.md 作为 system prompt
  将 /tmp/bloggers.json 中的达人数据作为 user message 发给 LLM
  LLM 返回 pass/reject 判断
  保留 pass 的达人

Step 3: 详情页三级分类提取
  将初筛通过的达人传入 detail.mjs
  node detail.mjs --input /tmp/passed-stage1.json --output /tmp/details.json

Step 4: LLM 精筛（根据三级分类判断品类匹配度）
  读取 prompts/screen-stage2.md 作为 system prompt
  将 /tmp/details.json 中的三级分类数据作为 user message 发给 LLM
  LLM 返回 pass/reject 判断
  保留 pass 的达人 → 最终合格列表
```

## Step 1: 搜索达人列表

```bash
# 使用预设条件搜索（推荐）
node "<skill_dir>/run.mjs" --preset default --max-pages 10 --output /tmp/bloggers.json

# 使用自定义筛选条件
node "<skill_dir>/run.mjs" --filters '{"category":"日用百货","subCategory":"个人护理","bloggerGender":"女","fanGender":"女性居多","checkDaren":true,"levels":["LV1","LV2","LV3","LV4"],"sellMode":"直播带货为主","liveHourlyOutput":"1000-1万"}' --max-pages 10

# 使用已保存的条件（备选，稳定性较低）
node "<skill_dir>/run.mjs" --condition "阿周" --max-pages 10
```

预设 `default` 的筛选条件：

| 筛选项 | 值 |
|--------|-----|
| 带货分类 | 日用百货 → 个人护理 |
| 达人画像 | 女 |
| 粉丝画像 | 女性居多 |
| 达人信息 | 勾选达人号 |
| 带货等级 | LV1、LV2、LV3、LV4 |
| 带货方式 | 直播带货为主 |
| 直播场均小时产出 | 1000-1万 |

输出格式：
```json
{
  "action": "extractAll",
  "totalBloggers": 100,
  "bloggers": [
    {
      "name": "达人昵称",
      "douyinId": "抖音号",
      "hasLevel": true,
      "profileLink": "https://www.chanmama.com/bloggerRank/XXX.html",
      "followers": "10.2万",
      "liveSales": "50.3万",
      "liveHourlyOutput": "8.2万",
      "avgSessionSales": "4.2万"
    }
  ]
}
```

## Step 2: LLM 初筛

**提示词文件**：`prompts/screen-stage1.md`

将提示词作为 system prompt，达人列表作为 user message，发给你的 LLM。

LLM 会基于达人名称判断是否为品牌号、专场号、工厂号、明星号等，返回 pass/reject。

**原则：宁可放过，不要错杀。** 拿不准的保留进入下一轮。

将 pass 的达人（保留 profileLink 字段）保存为 `/tmp/passed-stage1.json`。

## Step 3: 详情页三级分类提取

```bash
node "<skill_dir>/detail.mjs" --input /tmp/passed-stage1.json --output /tmp/details.json
```

参数：

| 参数 | 说明 | 默认 |
|------|------|------|
| `--input, -i` | 初筛结果 JSON（需含 profileLink） | — |
| `--urls` | 逗号分隔的详情页 URL 列表（替代 --input） | — |
| `--output, -o` | 输出文件路径 | stdout |
| `--delay` | 每个达人之间的间隔毫秒 | 2000 |

输出格式（每个达人）：
```json
{
  "url": "https://www.chanmama.com/bloggerRank/XXX.html",
  "name": "椰尼Ya",
  "douyinId": "6susu61228",
  "headerTags": ["达人号", "日用百货-个人护理96.24%"],
  "byProducts": [{"name": "面部护肤", "percent": "35.59%"}],
  "bySales": [{"name": "口腔护理", "percent": "66.25%"}],
  "byRevenue": [{"name": "口腔护理", "percent": "53.29%"}],
  "ok": true
}
```

三个维度：
- `byProducts`：上架商品最多品类 TOP5
- `bySales`：销量最佳品类 TOP5
- `byRevenue`：销售额最佳品类 TOP5（**最重要**）

## Step 4: LLM 精筛

**提示词文件**：`prompts/screen-stage2.md`

将提示词作为 system prompt，三级分类数据作为 user message，发给你的 LLM。

LLM 会判断每个达人的品类是否匹配目标方向（女性向日用个护），返回 pass/reject + 关键品类标签。

最终通过精筛的达人即为合格列表，可进入后续流程（如写入飞书多维表格）。

## 退出码

| 码 | 含义 |
|----|------|
| 0 | 成功 |
| 1 | 运行错误 |
| 2 | 需要登录蝉妈妈 |

## 环境变量

| 变量 | 说明 | 默认 |
|------|------|------|
| `ANYREACH_DIR` | anyreach 安装路径 | `../anyreach` |
| `CDP_PROXY_PORT` | CDP Proxy 端口 | 3456 |

## 文件结构

```
run.mjs                    → Step 1: 搜索达人列表
detail.mjs                 → Step 3: 详情页三级分类提取
prompts/screen-stage1.md   → Step 2: 初筛提示词（过滤品牌号等）
prompts/screen-stage2.md   → Step 4: 精筛提示词（三级分类匹配）
SKILL.md                   → 本文件（agent 使用指南）
```

