{"openapi":"3.1.0","info":{"title":"Rnote API","description":"专业的**小红书（RedNote / Xiaohongshu）数据 API 接口服务**，30+ 接口覆盖笔记、用户、搜索、商品、话题，以及**蒲公英**博主商业数据；可获取无水印图文与视频内容。智能账号池自动轮换，按需计费（Pay-per-request）；服务异常或资源不足不扣费。\n\n## 核心能力\n\n- **小红书数据接口** — 笔记详情、用户主页、搜索、评论、商品、话题、创作灵感等全场景数据采集（无水印图文/视频）\n- **蒲公英数据接口** — 博主选号、博主详情与合作报价、笔记转化率、核心数据、粉丝概览/画像/增长（达人投放与竞品分析）\n- **互动接口** — 点赞、收藏、关注、评论等社交互动操作\n- **智能账号池** — 多账号自动轮换调度，平台统一维护账号稳定性，你无需自备账号\n\n## Base URL（不同接口族前缀不同）\n\n- 小红书数据（爬虫）接口：`/api/v2/crawler/*`（多为 GET）\n- 蒲公英博主数据接口：`/api/v2/pgy/*`（POST，JSON body）\n\n## 认证方式\n\n所有 API 接口使用 `X-API-Key` Header 认证。在 [管理后台](/admin/login) 创建 API Key 后，点击右上角 **Authorize** 按钮输入即可调试。\n\n## 相关链接\n\n- [API 文档与上手指南](/docs/guide) — 接口详解、Base URL、示例代码\n- [在线调试环境](https://docs.rnote.dev/) — 基于 Apifox，输入 API Key 即可在线测试所有接口\n- [定价](/pricing) — 按需计费，阶梯定价\n- [经销商合作](/dealer) — 永久折扣，邀请返利\n- [服务状态](/status) — 实时服务健康监控\n- [联系我们](/contact) — Email / Telegram\n","version":"2.0.0"},"paths":{"/api/v2/crawler/note/image":{"get":{"tags":["小红书数据接口 V2"],"summary":"获取图文笔记详情","description":"获取图文笔记详情。\n\n返回笔记正文、图片列表（**无水印原图**）、话题标签、作者信息与互动数据（点赞/收藏/评论/分享数）。\n\n### 参数\n\n| 参数 | 必填 | 形态 | 从哪来 |\n|---|---|---|---|\n| `note_id` | 是 | 24 位十六进制，如 `697c0eee000000000a03c308` | 笔记链接 `xiaohongshu.com/explore/{note_id}` 的最后一段；或 `/search/notes` 结果里的 `id` |\n\n### 示例\n\n```bash\ncurl 'https://rnote.dev/api/v2/crawler/note/image?note_id=697c0eee000000000a03c308'       -H 'X-API-Key: sk-你的Key'\n```\n\n### 返回\n\n`$.data.data` 是一个**数组**，取第 0 项即笔记本体：\n\n```python\nnote = resp[\"data\"][\"data\"][0]\n```\n\n里面包含笔记标题与正文、图片地址列表、话题标签、作者昵称与头像、以及点赞/收藏/评论/分享计数。\n\n### 注意\n\n- 视频笔记请用 `/note/video`；用错接口拿不到播放地址。\n- 笔记被删除或设为私密时取不到内容，`success` 为 `false`。","operationId":"get_image_note_detail_api_v2_crawler_note_image_get","security":[{"API Key":[]}],"parameters":[{"name":"note_id","in":"query","required":true,"schema":{"type":"string","description":"笔记ID","title":"Note Id"},"description":"笔记ID","example":"697c0eee000000000a03c308"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/note/video":{"get":{"tags":["小红书数据接口 V2"],"summary":"获取视频笔记详情","description":"获取视频笔记详情。\n\n返回**无水印视频播放地址**、封面图、时长、正文与话题标签、作者信息与互动数据。\n\n### 参数\n\n| 参数 | 必填 | 形态 | 从哪来 |\n|---|---|---|---|\n| `note_id` | 是 | 24 位十六进制 | 笔记链接 `xiaohongshu.com/explore/{note_id}` 的最后一段；或 `/search/notes` 结果里的 `id` |\n\n### 示例\n\n```bash\ncurl 'https://rnote.dev/api/v2/crawler/note/video?note_id=6a16dc5b000000003601bdbf'       -H 'X-API-Key: sk-你的Key'\n```\n\n### 返回\n\n`$.data.data` 是一个**数组**，取第 0 项即笔记本体：\n\n```python\nnote = resp[\"data\"][\"data\"][0]\n```\n\n包含视频播放地址（多档清晰度）、封面、时长、正文、话题标签、作者与互动计数。\n\n### 注意\n\n- 图文笔记请用 `/note/image`。\n- 播放地址有时效，取到后尽快下载，不要长期存 URL。","operationId":"get_video_note_detail_api_v2_crawler_note_video_get","security":[{"API Key":[]}],"parameters":[{"name":"note_id","in":"query","required":true,"schema":{"type":"string","description":"笔记ID","title":"Note Id"},"description":"笔记ID","example":"697c0eee000000000a03c308"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/note/comments":{"get":{"tags":["小红书数据接口 V2"],"summary":"获取笔记评论","description":"获取笔记的一级评论列表，支持翻页与三种排序。\n\n### 参数\n\n| 参数 | 必填 | 默认 | 说明 |\n|---|---|---|---|\n| `note_id` | 是 | — | 笔记 ID，24 位十六进制 |\n| `cursor` | 否 | 空 | 翻页游标。首次留空 |\n| `index` | 否 | `0` | 翻页索引。首次传 0 |\n| `pageArea` | 否 | `UNFOLDED` | `UNFOLDED`=展开，`FOLDED`=折叠 |\n| `sort_strategy` | 否 | `latest_v2` | `latest_v2` 最新 / `like_count` 最热 / `default` 不推荐（翻页会漏或重） |\n\n### 示例\n\n```bash\n# 第一页（最新）\ncurl 'https://rnote.dev/api/v2/crawler/note/comments?note_id=697c0eee000000000a03c308' -H 'X-API-Key: sk-你的Key'\n\n# 按最热排序\ncurl 'https://rnote.dev/api/v2/crawler/note/comments?note_id=697c0eee000000000a03c308&sort_strategy=like_count' -H 'X-API-Key: sk-你的Key'\n```\n\n### 翻页（两种写法都支持）\n\n响应里的 `$.data.data.cursor` 是一段 **JSON 字符串**：\n\n```json\n{\"cursor\": \"6a97cf20000000000b012aaf\", \"index\": 3, \"pageArea\": \"ALL\"}\n```\n\n两种用法都可以：\n\n```bash\n# 写法一：整段原样塞回 cursor（最省事，推荐）\ncurl 'https://rnote.dev/api/v2/crawler/note/comments?note_id=697c...&cursor=%7B%22cursor%22%3A%226a97...%22%2C%22index%22%3A3%2C%22pageArea%22%3A%22ALL%22%7D' -H 'X-API-Key: sk-你的Key'\n\n# 写法二：自己解析后拆成三个参数\ncurl 'https://rnote.dev/api/v2/crawler/note/comments?note_id=697c...&cursor=6a97...&index=3&pageArea=ALL' -H 'X-API-Key: sk-你的Key'\n```\n\n用写法一时，以 JSON 里的 `index` / `pageArea` 为准。`has_more` 为 `false` 时停止翻页。\n\n### 返回\n\n`$.data.data`：\n\n| 字段 | 说明 |\n|---|---|\n| `comments` | 评论数组，见下 |\n| `cursor` | 下一页游标（JSON 字符串） |\n| `has_more` | 是否还有下一页 |\n| `comment_count` / `comment_count_l1` | 评论总数 / 一级评论数 |\n| `current_sort_strategy` | 本次生效的排序 |\n| `all_sort_strategies` | 该笔记支持的全部排序方式 |\n\n单条评论对象包含：`id`、`content`、`time`、`like_count`、`ip_location`、`user`（评论者）、`sub_comment_count`（回复数）、`sub_comments`（部分回复预览）、`at_users` 等。\n\n### 拿二级评论\n\n对 `sub_comment_count > 0` 的评论，用它的 `id` 作为 `comment_id` 调 `/note/sub_comments`。","operationId":"get_note_comments_api_v2_crawler_note_comments_get","security":[{"API Key":[]}],"parameters":[{"name":"note_id","in":"query","required":true,"schema":{"type":"string","description":"笔记ID","title":"Note Id"},"description":"笔记ID","example":"697c0eee000000000a03c308"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","description":"分页游标，从上一次响应中获取","default":"","title":"Cursor"},"description":"分页游标，从上一次响应中获取"},{"name":"index","in":"query","required":false,"schema":{"type":"integer","description":"评论索引，从上一次响应中获取","default":0,"title":"Index"},"description":"评论索引，从上一次响应中获取"},{"name":"pageArea","in":"query","required":false,"schema":{"type":"string","description":"折叠状态: UNFOLDED(默认-展开), FOLDED(折叠)","default":"UNFOLDED","title":"Pagearea"},"description":"折叠状态: UNFOLDED(默认-展开), FOLDED(折叠)"},{"name":"sort_strategy","in":"query","required":false,"schema":{"enum":["default","latest_v2","like_count"],"type":"string","description":"排序策略: latest_v2(最新-默认), like_count(最热), default(不推荐)","default":"latest_v2","title":"Sort Strategy"},"description":"排序策略: latest_v2(最新-默认), like_count(最热), default(不推荐)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/note/sub_comments":{"get":{"tags":["小红书数据接口 V2"],"summary":"获取笔记二级评论","description":"获取某条一级评论下的回复（二级评论），游标翻页。\n\n### 参数\n\n| 参数 | 必填 | 默认 | 说明 |\n|---|---|---|---|\n| `note_id` | 是 | — | 笔记 ID |\n| `comment_id` | 是 | — | **父评论 ID** —— 取 `/note/comments` 返回的评论 `id` |\n| `cursor` | 否 | 空 | 翻页游标，首次留空，翻页传上次返回的 `cursor` |\n| `index` | 否 | `0` | 翻页索引 |\n| `num` | 否 | `5` | 每页数量，1~5 |\n| `page_context` | 否 | 空 | 页面上下文 JSON，如 `{\"highlight\":[\"关键词\"]}` |\n\n### 示例\n\n```bash\n# 1) 先取一级评论，挑一条有回复的\ncurl 'https://rnote.dev/api/v2/crawler/note/comments?note_id=6a9aa495000000002603936d' -H 'X-API-Key: sk-你的Key'\n#    → comments[i].sub_comment_count > 0，记下 comments[i].id\n\n# 2) 再取它的回复\ncurl 'https://rnote.dev/api/v2/crawler/note/sub_comments?note_id=6a9aa495000000002603936d&comment_id=699fb9930000000008030db6' -H 'X-API-Key: sk-你的Key'\n```\n\n### 返回\n\n`$.data.data`：`comments`（回复数组，结构同一级评论）、`has_more`、`page_context`。\n\n### 注意\n\n`comment_id` 必须是**该笔记下**的评论 ID，跨笔记传会取不到数据。","operationId":"get_note_sub_comments_api_v2_crawler_note_sub_comments_get","security":[{"API Key":[]}],"parameters":[{"name":"note_id","in":"query","required":true,"schema":{"type":"string","description":"笔记ID","title":"Note Id"},"description":"笔记ID","example":"699916e6000000001d0253da"},{"name":"comment_id","in":"query","required":true,"schema":{"type":"string","description":"父评论ID","title":"Comment Id"},"description":"父评论ID","example":"699fb9930000000008030db6"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","description":"分页游标，首次留空，翻页传上次返回的 cursor（子评论ID）","default":"","title":"Cursor"},"description":"分页游标，首次留空，翻页传上次返回的 cursor（子评论ID）"},{"name":"index","in":"query","required":false,"schema":{"type":"integer","description":"分页索引，首次传 0，翻页传上次返回的 index","default":0,"title":"Index"},"description":"分页索引，首次传 0，翻页传上次返回的 index"},{"name":"num","in":"query","required":false,"schema":{"type":"integer","maximum":5,"minimum":1,"description":"每页数量，默认 5","default":5,"title":"Num"},"description":"每页数量，默认 5"},{"name":"page_context","in":"query","required":false,"schema":{"type":"string","description":"页面上下文 JSON，如 {\"highlight\":[\"关键词\"]}","default":"","title":"Page Context"},"description":"页面上下文 JSON，如 {\"highlight\":[\"关键词\"]}"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/user/info":{"get":{"tags":["小红书数据接口 V2"],"summary":"获取用户信息","description":"获取用户主页信息。\n\n返回昵称、头像、简介、性别、IP 属地、粉丝/关注/获赞与收藏数等。\n\n### 参数\n\n| 参数 | 必填 | 形态 | 从哪来 |\n|---|---|---|---|\n| `user_id` | 是 | 24 位十六进制，如 `61b46d790000000010008153` | 主页链接 `xiaohongshu.com/user/profile/{user_id}`；或 `/search/users` 结果 |\n\n### 示例\n\n```bash\ncurl 'https://rnote.dev/api/v2/crawler/user/info?user_id=61b46d790000000010008153' -H 'X-API-Key: sk-你的Key'\n```\n\n### 返回\n\n`$.data.data` 主要字段：\n\n| 字段 | 说明 |\n|---|---|\n| `result` | 基础资料（昵称、头像、简介、性别等） |\n| `ip_location` | IP 属地 |\n| `follows` / `collected` / `liked` | 关注数 / 收藏数 / 获赞数 |\n| `share_link` | 主页分享链接 |\n| `tab_visible` | 主页各 Tab 的可见性 |\n\n### 相关\n\n要拿这个人发过的笔记用 `/user/posted`，收藏的用 `/user/faved`。","operationId":"get_user_info_api_v2_crawler_user_info_get","security":[{"API Key":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"用户ID","title":"User Id"},"description":"用户ID","example":"61b46d790000000010008153"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/user/posted":{"get":{"tags":["小红书数据接口 V2"],"summary":"获取用户笔记列表","description":"获取用户**发布**的笔记列表，游标翻页。\n\n### 参数\n\n| 参数 | 必填 | 默认 | 说明 |\n|---|---|---|---|\n| `user_id` | 是 | — | 用户 ID，24 位十六进制 |\n| `cursor` | 否 | 空 | 翻页游标。首次留空，翻页传上次返回的 `cursor` |\n| `num` | 否 | `20` | 每页数量，1~20 |\n\n### 示例\n\n```bash\n# 第一页\ncurl 'https://rnote.dev/api/v2/crawler/user/posted?user_id=61b46d790000000010008153&num=20' -H 'X-API-Key: sk-你的Key'\n\n# 下一页（cursor 取自上一次响应）\ncurl 'https://rnote.dev/api/v2/crawler/user/posted?user_id=61b46d790000000010008153&cursor=上一次的cursor' -H 'X-API-Key: sk-你的Key'\n```\n\n### 返回\n\n`$.data.data`：`notes`（笔记数组：id、标题、封面、类型、互动计数）、`has_more`、`tags`。\n\n`has_more` 为 `false` 时停止翻页。\n\n### 注意\n\n对方设置了主页不可见时会返回空列表。","operationId":"get_user_posted_notes_api_v2_crawler_user_posted_get","security":[{"API Key":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"用户ID","title":"User Id"},"description":"用户ID","example":"61b46d790000000010008153"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","description":"分页游标，首次请求留空，翻页时传入上一次响应中的 cursor 值","default":"","title":"Cursor"},"description":"分页游标，首次请求留空，翻页时传入上一次响应中的 cursor 值"},{"name":"num","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"description":"每页数量，默认 20","default":20,"title":"Num"},"description":"每页数量，默认 20"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/user/faved":{"get":{"tags":["小红书数据接口 V2"],"summary":"获取用户收藏笔记列表","description":"获取用户**收藏**的笔记列表，游标翻页。\n\n### 参数\n\n| 参数 | 必填 | 默认 | 说明 |\n|---|---|---|---|\n| `user_id` | 是 | — | 用户 ID |\n| `cursor` | 否 | 空 | 翻页游标。首次留空；**翻页时传上一页最后一条笔记的 `note_id`** |\n| `num` | 否 | `10` | 每页数量，1~10 |\n\n### 示例\n\n```bash\ncurl 'https://rnote.dev/api/v2/crawler/user/faved?user_id=5a8cf39111be10466d285d6b&num=10' -H 'X-API-Key: sk-你的Key'\n```\n\n### 返回\n\n`$.data.data`：`notes`、`has_more`、`fallback`、`need_clean`。\n\n### 注意\n\n收藏夹默认是私密的 —— **只有对方公开了收藏，才拿得到数据**，否则返回空列表。","operationId":"get_user_faved_notes_api_v2_crawler_user_faved_get","security":[{"API Key":[]}],"parameters":[{"name":"user_id","in":"query","required":true,"schema":{"type":"string","description":"用户ID","title":"User Id"},"description":"用户ID","example":"5a8cf39111be10466d285d6b"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","description":"分页游标，首次留空，翻页传上次列表最后一条笔记的 note_id","default":"","title":"Cursor"},"description":"分页游标，首次留空，翻页传上次列表最后一条笔记的 note_id"},{"name":"num","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"description":"每页数量，默认 10","default":10,"title":"Num"},"description":"每页数量，默认 10"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/search/notes":{"get":{"tags":["小红书数据接口 V2"],"summary":"搜索笔记","description":"搜索笔记，支持排序、类型与时间筛选。\n\n### 参数\n\n| 参数 | 必填 | 默认 | 可选值 |\n|---|---|---|---|\n| `keyword` | 是 | — | 任意关键词 |\n| `page` | 否 | `1` | 从 1 开始 |\n| `sort_type` | 否 | `general` | `general` 综合 / `time_descending` 最新 / `popularity_descending` 最多点赞 / `comment_descending` 最多评论 / `collect_descending` 最多收藏 |\n| `note_type` | 否 | `不限` | `不限` / `视频笔记` / `普通笔记` / `直播笔记` |\n| `time_filter` | 否 | `不限` | `不限` / `一天内` / `一周内` / `半年内` |\n| `search_id`、`search_session_id` | 否 | 空 | **翻页必传**，见下 |\n\n`note_type` 与 `time_filter` 填的是**中文词**，照抄上表即可。\n\n### 示例\n\n```bash\n# 综合搜索第一页\ncurl 'https://rnote.dev/api/v2/crawler/search/notes?keyword=美食推荐' -H 'X-API-Key: sk-你的Key'\n\n# 一周内的视频笔记，按点赞排序\ncurl 'https://rnote.dev/api/v2/crawler/search/notes?keyword=美食推荐&note_type=视频笔记&time_filter=一周内&sort_type=popularity_descending' -H 'X-API-Key: sk-你的Key'\n```\n\n### 翻页\n\n第一次搜索的响应里有 `$.data.search_id` 与 `$.data.search_session_id`。\n**翻页时必须把这两个值原样带上**，否则会拿到与第一页重复的结果：\n\n```bash\ncurl 'https://rnote.dev/api/v2/crawler/search/notes?keyword=美食推荐&page=2&search_id=xxx&search_session_id=yyy' -H 'X-API-Key: sk-你的Key'\n```\n\n### 返回\n\n| 路径 | 说明 |\n|---|---|\n| `$.data.data.items` | 搜索结果数组（笔记卡片：id、标题、封面、作者、互动数） |\n| `$.data.search_id` / `$.data.search_session_id` | 翻页用 |\n| `$.data.page` / `$.data.next_page` | 当前页 / 下一页页码 |\n\n`items` 里可能混有非笔记卡片（如推荐模块），按各项自身的类型字段过滤即可。","operationId":"search_notes_api_v2_crawler_search_notes_get","security":[{"API Key":[]}],"parameters":[{"name":"keyword","in":"query","required":true,"schema":{"type":"string","description":"搜索关键词","title":"Keyword"},"description":"搜索关键词","example":"美食推荐"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码，从 1 开始","default":1,"title":"Page"},"description":"页码，从 1 开始"},{"name":"sort_type","in":"query","required":false,"schema":{"type":"string","description":"排序方式: general(综合), time_descending(最新), popularity_descending(最多点赞), comment_descending(最多评论), collect_descending(最多收藏)","default":"general","title":"Sort Type"},"description":"排序方式: general(综合), time_descending(最新), popularity_descending(最多点赞), comment_descending(最多评论), collect_descending(最多收藏)"},{"name":"note_type","in":"query","required":false,"schema":{"type":"string","description":"笔记类型: 不限, 视频笔记, 普通笔记, 直播笔记","default":"不限","title":"Note Type"},"description":"笔记类型: 不限, 视频笔记, 普通笔记, 直播笔记"},{"name":"time_filter","in":"query","required":false,"schema":{"type":"string","description":"发布时间: 不限, 一天内, 一周内, 半年内","default":"不限","title":"Time Filter"},"description":"发布时间: 不限, 一天内, 一周内, 半年内"},{"name":"search_id","in":"query","required":false,"schema":{"type":"string","description":"搜索ID，翻页时传入首次搜索返回的值","default":"","title":"Search Id"},"description":"搜索ID，翻页时传入首次搜索返回的值"},{"name":"search_session_id","in":"query","required":false,"schema":{"type":"string","description":"搜索会话ID，翻页时传入首次搜索返回的值","default":"","title":"Search Session Id"},"description":"搜索会话ID，翻页时传入首次搜索返回的值"},{"name":"source","in":"query","required":false,"schema":{"type":"string","description":"来源","default":"explore_feed","title":"Source"},"description":"来源"},{"name":"ai_mode","in":"query","required":false,"schema":{"type":"integer","description":"AI模式，0=关闭, 1=开启","default":0,"title":"Ai Mode"},"description":"AI模式，0=关闭, 1=开启"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/search/users":{"get":{"tags":["小红书数据接口 V2"],"summary":"搜索用户","description":"搜索用户（博主）。\n\n### 参数\n\n| 参数 | 必填 | 默认 | 说明 |\n|---|---|---|---|\n| `keyword` | 是 | — | 关键词，昵称或领域词都可以 |\n| `page` | 否 | `1` | 从 1 开始 |\n| `search_id` | 否 | 空 | **翻页必传**，取自首次搜索响应 |\n\n### 示例\n\n```bash\ncurl 'https://rnote.dev/api/v2/crawler/search/users?keyword=美食博主' -H 'X-API-Key: sk-你的Key'\ncurl 'https://rnote.dev/api/v2/crawler/search/users?keyword=美食博主&page=2&search_id=xxx' -H 'X-API-Key: sk-你的Key'\n```\n\n### 返回\n\n| 路径 | 说明 |\n|---|---|\n| `$.data.data.users` | 用户数组（user_id、昵称、头像、粉丝数、简介等） |\n| `$.data.data.filters` | 该关键词可用的筛选项 |\n| `$.data.search_id` / `page` / `next_page` | 翻页用 |\n\n拿到 `user_id` 后可继续调 `/user/info`、`/user/posted`。","operationId":"search_users_api_v2_crawler_search_users_get","security":[{"API Key":[]}],"parameters":[{"name":"keyword","in":"query","required":true,"schema":{"type":"string","description":"搜索关键词","title":"Keyword"},"description":"搜索关键词","example":"美食博主"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码，从 1 开始","default":1,"title":"Page"},"description":"页码，从 1 开始"},{"name":"search_id","in":"query","required":false,"schema":{"type":"string","description":"搜索ID，翻页时传入首次搜索返回的值","default":"","title":"Search Id"},"description":"搜索ID，翻页时传入首次搜索返回的值"},{"name":"source","in":"query","required":false,"schema":{"type":"string","description":"来源","default":"explore_feed","title":"Source"},"description":"来源"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/search/recommend":{"get":{"tags":["小红书数据接口 V2"],"summary":"搜索推荐词","description":"获取搜索框的**联想词**（下拉推荐词）。\n\n常用于做关键词扩展、选题挖掘。\n\n### 参数\n\n| 参数 | 必填 | 说明 |\n|---|---|---|\n| `keyword` | 是 | 已输入的前缀词 |\n\n### 示例\n\n```bash\ncurl 'https://rnote.dev/api/v2/crawler/search/recommend?keyword=美食' -H 'X-API-Key: sk-你的Key'\n```\n\n### 返回\n\n`$.data.data`：`items`（联想词数组）、`result`、`search_cpl_id`、`word_request_id`。\n\n### 无翻页\n\n一次返回全部联想词，没有分页参数。","operationId":"search_recommend_api_v2_crawler_search_recommend_get","security":[{"API Key":[]}],"parameters":[{"name":"keyword","in":"query","required":true,"schema":{"type":"string","description":"搜索关键词","title":"Keyword"},"description":"搜索关键词","example":"China"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/search/images":{"get":{"tags":["小红书数据接口 V2"],"summary":"搜索图片","description":"搜索图片。\n\n### 参数\n\n| 参数 | 必填 | 默认 | 说明 |\n|---|---|---|---|\n| `keyword` | 是 | — | 关键词 |\n| `page` | 否 | `1` | 从 1 开始 |\n| `search_id`、`search_session_id`、`word_request_id` | 否 | 空 | **翻页必传**，均取自首次搜索响应 |\n\n### 示例\n\n```bash\ncurl 'https://rnote.dev/api/v2/crawler/search/images?keyword=壁纸' -H 'X-API-Key: sk-你的Key'\n```\n\n### 返回\n\n| 路径 | 说明 |\n|---|---|\n| `$.data.data.items` | 图片结果数组 |\n| `$.data.data.filter_items` | 可用筛选项 |\n| `$.data.search_id` / `search_session_id` / `word_request_id` | 翻页三件套，缺一会重复取到第一页 |\n| `$.data.page` / `next_page` | 页码 |","operationId":"search_images_api_v2_crawler_search_images_get","security":[{"API Key":[]}],"parameters":[{"name":"keyword","in":"query","required":true,"schema":{"type":"string","description":"搜索关键词","title":"Keyword"},"description":"搜索关键词","example":"壁纸"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码，从 1 开始","default":1,"title":"Page"},"description":"页码，从 1 开始"},{"name":"search_id","in":"query","required":false,"schema":{"type":"string","description":"搜索ID，翻页时传入首次搜索返回的值","default":"","title":"Search Id"},"description":"搜索ID，翻页时传入首次搜索返回的值"},{"name":"search_session_id","in":"query","required":false,"schema":{"type":"string","description":"搜索会话ID，翻页时传入首次搜索返回的值","default":"","title":"Search Session Id"},"description":"搜索会话ID，翻页时传入首次搜索返回的值"},{"name":"word_request_id","in":"query","required":false,"schema":{"type":"string","description":"词请求ID，翻页时传入首次搜索返回的值","default":"","title":"Word Request Id"},"description":"词请求ID，翻页时传入首次搜索返回的值"},{"name":"source","in":"query","required":false,"schema":{"type":"string","description":"来源","default":"explore_feed","title":"Source"},"description":"来源"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/search/products":{"get":{"tags":["小红书数据接口 V2"],"summary":"搜索商品","description":"搜索商品。\n\n### 参数\n\n| 参数 | 必填 | 默认 | 说明 |\n|---|---|---|---|\n| `keyword` | 是 | — | 关键词 |\n| `page` | 否 | `1` | 从 1 开始 |\n| `search_id` | 否 | 空 | 翻页必传 |\n\n### 示例\n\n```bash\ncurl 'https://rnote.dev/api/v2/crawler/search/products?keyword=手机壳' -H 'X-API-Key: sk-你的Key'\n```\n\n### 返回\n\n`$.data.data` 是**页面化结构**（`biz_info` / `hierarchy` / `module` / `container` / `ver`），\n商品卡片在 `container` 的层级里 —— 与其按固定路径取，不如遍历查找带 `sku_id` 的对象，\n上游改版时更不容易断。\n\n拿到 `sku_id` 后可继续调 `/product/detail`、`/product/reviews`。","operationId":"search_products_api_v2_crawler_search_products_get","security":[{"API Key":[]}],"parameters":[{"name":"keyword","in":"query","required":true,"schema":{"type":"string","description":"搜索关键词","title":"Keyword"},"description":"搜索关键词","example":"手机壳"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"页码，从 1 开始","default":1,"title":"Page"},"description":"页码，从 1 开始"},{"name":"search_id","in":"query","required":false,"schema":{"type":"string","description":"搜索ID，翻页时传入首次搜索返回的值","default":"","title":"Search Id"},"description":"搜索ID，翻页时传入首次搜索返回的值"},{"name":"source","in":"query","required":false,"schema":{"type":"string","description":"来源","default":"explore_feed","title":"Source"},"description":"来源"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/product/detail":{"get":{"tags":["小红书数据接口 V2"],"summary":"获取商品详情","description":"获取商品详情。\n\n### 参数\n\n| 参数 | 必填 | 默认 | 说明 |\n|---|---|---|---|\n| `sku_id` | 是 | — | 商品 SKU ID，24 位十六进制。从商品链接取，或用 `/search/products` 搜 |\n| `source` | 否 | `mall_search` | 来源标识，一般不用改 |\n| `pre_page` | 否 | `mall_search` | 前置页面标识，一般不用改 |\n\n### 示例\n\n```bash\ncurl 'https://rnote.dev/api/v2/crawler/product/detail?sku_id=669ddd44e05f3700011067ed' -H 'X-API-Key: sk-你的Key'\n```\n\n### 返回\n\n`$.data.data` 是**页面化结构**（`biz_info` / `hierarchy` / `module` / `container` / `ver`）：\n商品标题、价格、图集、规格、店铺信息分散在 `container` 的各个组件对象里。\n\n建议**遍历查找**你需要的字段，而不是写死路径 —— 上游页面改版时组件顺序会变，\n写死路径会突然取不到值。\n\n### 相关\n\n评分与评价概览用 `/product/review/overview`，评价列表用 `/product/reviews`，\n关联推荐用 `/product/recommendations`。","operationId":"get_product_detail_api_v2_crawler_product_detail_get","security":[{"API Key":[]}],"parameters":[{"name":"sku_id","in":"query","required":true,"schema":{"type":"string","description":"商品 SKU ID","title":"Sku Id"},"description":"商品 SKU ID","example":"669ddd44e05f3700011067ed"},{"name":"source","in":"query","required":false,"schema":{"type":"string","description":"来源","default":"mall_search","title":"Source"},"description":"来源"},{"name":"pre_page","in":"query","required":false,"schema":{"type":"string","description":"前置页面","default":"mall_search","title":"Pre Page"},"description":"前置页面"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/product/review/overview":{"get":{"tags":["小红书数据接口 V2"],"summary":"获取商品评论总览","description":"获取商品的**评价概览**：平均分、各星级分布、评价总数，以及首屏若干条评价。\n\n### 参数\n\n| 参数 | 必填 | 默认 | 说明 |\n|---|---|---|---|\n| `sku_id` | 是 | — | 商品 SKU ID |\n| `tab` | 否 | `2` | 标签类型，一般不用改 |\n\n### 示例\n\n```bash\ncurl 'https://rnote.dev/api/v2/crawler/product/review/overview?sku_id=669ddd44e05f3700011067ed' -H 'X-API-Key: sk-你的Key'\n```\n\n### 返回\n\n`$.data.data` 主要字段：\n\n| 字段 | 说明 |\n|---|---|\n| `avgScore` / `avgScoreDesc` / `avgScoreLevel` | 平均分 / 文字描述 / 等级 |\n| `scoreToCnt` | 各星级的评价条数分布 |\n| `total` | 评价总数 |\n| `reviews` | 首屏评价（**只是预览，要完整列表请用 `/product/reviews`**） |\n| `sortStrategyList` / `filterStrategyList` | 可用的排序 / 筛选方式 |\n| `purchaseHistoryCount` | 购买过的人数 |\n\n### 注意\n\n这个接口**不分页**。要遍历全部评价请用 `/product/reviews`。","operationId":"get_product_review_overview_api_v2_crawler_product_review_overview_get","security":[{"API Key":[]}],"parameters":[{"name":"sku_id","in":"query","required":true,"schema":{"type":"string","description":"商品 SKU ID","title":"Sku Id"},"description":"商品 SKU ID","example":"669ddd44e05f3700011067ed"},{"name":"tab","in":"query","required":false,"schema":{"type":"integer","description":"标签类型，默认 2","default":2,"title":"Tab"},"description":"标签类型，默认 2"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/product/reviews":{"get":{"tags":["小红书数据接口 V2"],"summary":"获取商品评论列表","description":"获取商品评价列表，支持排序、仅看有图、翻页。\n\n### 参数\n\n| 参数 | 必填 | 默认 | 说明 |\n|---|---|---|---|\n| `sku_id` | 是 | — | 商品 SKU ID |\n| `page` | 否 | `0` | **页码从 0 开始**（不是 1） |\n| `page_size` | 否 | `12` | 每页数量，1~12 |\n| `sort_strategy_type` | 否 | `0` | `0` 综合排序 / `1` 最新排序 |\n| `share_pics_only` | 否 | `0` | `1` 只看有图评价 |\n| `from_page` | 否 | `score_page` | 来源页标识，一般不用改 |\n\n### 示例\n\n```bash\n# 第一页（注意从 0 开始）\ncurl 'https://rnote.dev/api/v2/crawler/product/reviews?sku_id=669ddd44e05f3700011067ed&page=0' -H 'X-API-Key: sk-你的Key'\n\n# 只看有图 + 最新排序\ncurl 'https://rnote.dev/api/v2/crawler/product/reviews?sku_id=669ddd44e05f3700011067ed&share_pics_only=1&sort_strategy_type=1' -H 'X-API-Key: sk-你的Key'\n```\n\n### 返回\n\n`$.data.data`：`reviews`（评价数组）、`hasMore`（是否还有下一页）、`sortedPicResult`（图片聚合）、`expMap`。\n\n翻页就是 `page` 逐次 +1，直到 `hasMore` 为 `false`。\n\n### 注意\n\n页码从 **0** 开始 —— 这是本接口与其它搜索类接口（从 1 开始）不同的地方。","operationId":"get_product_reviews_api_v2_crawler_product_reviews_get","security":[{"API Key":[]}],"parameters":[{"name":"sku_id","in":"query","required":true,"schema":{"type":"string","description":"商品 SKU ID","title":"Sku Id"},"description":"商品 SKU ID","example":"669ddd44e05f3700011067ed"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"页码，从 0 开始","default":0,"title":"Page"},"description":"页码，从 0 开始"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":12,"minimum":1,"description":"每页数量，默认 12","default":12,"title":"Page Size"},"description":"每页数量，默认 12"},{"name":"sort_strategy_type","in":"query","required":false,"schema":{"type":"integer","description":"排序策略，0=综合排序，1=最新排序","default":0,"title":"Sort Strategy Type"},"description":"排序策略，0=综合排序，1=最新排序"},{"name":"share_pics_only","in":"query","required":false,"schema":{"type":"integer","description":"仅看有图评论，0=否，1=是","default":0,"title":"Share Pics Only"},"description":"仅看有图评论，0=否，1=是"},{"name":"from_page","in":"query","required":false,"schema":{"type":"string","description":"来源页面","default":"score_page","title":"From Page"},"description":"来源页面"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/product/recommendations":{"get":{"tags":["小红书数据接口 V2"],"summary":"获取商品推荐列表","description":"获取某商品的关联推荐商品。\n\n### 参数\n\n| 参数 | 必填 | 默认 | 说明 |\n|---|---|---|---|\n| `sku_id` | 是 | — | 商品 SKU ID |\n| `cursor_score` | 否 | 空 | 翻页游标。首次留空，翻页传上次返回的 `cursor_score` |\n| `region` | 否 | `US` | 地区 |\n\n### 示例\n\n```bash\ncurl 'https://rnote.dev/api/v2/crawler/product/recommendations?sku_id=669ddd44e05f3700011067ed' -H 'X-API-Key: sk-你的Key'\n```\n\n### 返回\n\n`$.data.data`：`result`、`components`（推荐商品的组件化列表）。\n与 `/product/detail` 一样是页面化结构，建议遍历查找带 `sku_id` 的对象。","operationId":"get_product_recommendations_api_v2_crawler_product_recommendations_get","security":[{"API Key":[]}],"parameters":[{"name":"sku_id","in":"query","required":true,"schema":{"type":"string","description":"商品 SKU ID","title":"Sku Id"},"description":"商品 SKU ID","example":"669ddd44e05f3700011067ed"},{"name":"cursor_score","in":"query","required":false,"schema":{"type":"string","description":"分页游标，首次留空，翻页传上次返回的 cursor_score","default":"","title":"Cursor Score"},"description":"分页游标，首次留空，翻页传上次返回的 cursor_score"},{"name":"region","in":"query","required":false,"schema":{"type":"string","description":"地区，默认 US","default":"US","title":"Region"},"description":"地区，默认 US"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/topic/info":{"post":{"tags":["小红书数据接口 V2"],"summary":"获取话题详情","description":"获取话题详情。\n\n**这是 crawler 系列里唯一的 `POST` 接口** —— 参数走 JSON 请求体，不是 query string。\n\n### 请求体\n\n| 字段 | 必填 | 默认 | 说明 |\n|---|---|---|---|\n| `page_id` | 是 | — | 话题页 ID，24 位十六进制。从话题页链接取 |\n| `source` | 否 | `normal` | 来源标识，一般不用改 |\n| `note_id` | 否 | 空 | 从某条笔记进入话题时可带上 |\n\n### 示例\n\n```bash\ncurl -X POST 'https://rnote.dev/api/v2/crawler/topic/info'       -H 'X-API-Key: sk-你的Key'       -H 'Content-Type: application/json'       -d '{\"page_id\": \"5c1cc866febed9000184b7c1\"}'\n```\n\n### 返回\n\n`$.data.data` 主要字段：\n\n| 字段 | 说明 |\n|---|---|\n| `page_info` | 话题名称、简介、封面、参与量等 |\n| `topic_id` / `topic_long_id` | 话题 ID |\n| `users` | 话题相关用户 |\n| `tabs` / `custom_tabs` | 话题页的 Tab 结构 |\n| `share_info` | 分享信息 |\n| `followed` | 是否已关注 |\n\n### 相关\n\n话题下的笔记流用 `/topic/feed`（那个是 `GET`）。","operationId":"get_topic_info_api_v2_crawler_topic_info_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopicInfoRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/crawler/topic/feed":{"get":{"tags":["小红书数据接口 V2"],"summary":"获取话题笔记列表","description":"获取话题下的笔记流，游标翻页。\n\n### 参数\n\n| 参数 | 必填 | 默认 | 说明 |\n|---|---|---|---|\n| `page_id` | 是 | — | 话题页 ID |\n| `sort` | 否 | `trend` | `trend` 最热 / `time` 最新 |\n| `page_size` | 否 | `10` | 每页数量，1~10 |\n| `cursor_score` | 否 | 空 | 翻页游标，取上一页 `items[-1].cursor_score` |\n| `last_note_id` | 否 | 空 | 上一页最后一条的 `id` |\n| `last_note_ct` | 否 | 空 | 上一页最后一条的 `create_time`（毫秒时间戳） |\n| `session_id`、`first_load_time` | 否 | 空 | 首次自动生成；**翻页时建议原样回传**，保持会话一致 |\n\n### 示例\n\n```bash\n# 第一页（最热）\ncurl 'https://rnote.dev/api/v2/crawler/topic/feed?page_id=5c1cc866febed9000184b7c1' -H 'X-API-Key: sk-你的Key'\n\n# 最新排序\ncurl 'https://rnote.dev/api/v2/crawler/topic/feed?page_id=5c1cc866febed9000184b7c1&sort=time' -H 'X-API-Key: sk-你的Key'\n```\n\n### 翻页\n\n这个接口的游标是**三个字段一组**，都取自上一页的最后一条：\n\n```python\nlast = resp[\"data\"][\"data\"][\"items\"][-1]\nparams = {\n    \"page_id\": page_id,\n    \"cursor_score\": last[\"cursor_score\"],\n    \"last_note_id\": last[\"id\"],\n    \"last_note_ct\": last[\"create_time\"],\n}\n```\n\n只传其中一两个会翻不动或重复。`has_more` 为 `false` 时停止。\n\n### 返回\n\n`$.data.data`：`items`（笔记数组）、`has_more`。另有 `$.data.extra`（上游附带信息）。","operationId":"get_topic_feed_api_v2_crawler_topic_feed_get","security":[{"API Key":[]}],"parameters":[{"name":"page_id","in":"query","required":true,"schema":{"type":"string","description":"话题页面ID","title":"Page Id"},"description":"话题页面ID","example":"5c1cc866febed9000184b7c1"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"排序方式: trend(最热) / time(最新)","default":"trend","title":"Sort"},"description":"排序方式: trend(最热) / time(最新)"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"description":"每页数量，默认 10","default":10,"title":"Page Size"},"description":"每页数量，默认 10"},{"name":"cursor_score","in":"query","required":false,"schema":{"type":"string","description":"分页游标分数，取 $.data.items[-1].cursor_score","default":"","title":"Cursor Score"},"description":"分页游标分数，取 $.data.items[-1].cursor_score"},{"name":"last_note_id","in":"query","required":false,"schema":{"type":"string","description":"上一页最后一条笔记ID，取 $.data.items[-1].id","default":"","title":"Last Note Id"},"description":"上一页最后一条笔记ID，取 $.data.items[-1].id"},{"name":"last_note_ct","in":"query","required":false,"schema":{"type":"string","description":"上一页最后一条笔记创建时间戳(毫秒)，取 $.data.items[-1].create_time","default":"","title":"Last Note Ct"},"description":"上一页最后一条笔记创建时间戳(毫秒)，取 $.data.items[-1].create_time"},{"name":"session_id","in":"query","required":false,"schema":{"type":"string","description":"会话ID，首次自动生成，翻页时建议回传保持一致","default":"","title":"Session Id"},"description":"会话ID，首次自动生成，翻页时建议回传保持一致"},{"name":"first_load_time","in":"query","required":false,"schema":{"type":"string","description":"首次加载时间戳(毫秒)，首次自动生成，翻页时建议回传","default":"","title":"First Load Time"},"description":"首次加载时间戳(毫秒)，首次自动生成，翻页时建议回传"},{"name":"source","in":"query","required":false,"schema":{"type":"string","description":"来源","default":"normal","title":"Source"},"description":"来源"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/search/groups":{"get":{"tags":["小红书数据接口 V2"],"summary":"搜索群聊","description":"搜索群聊。\n\n### 参数\n\n| 参数 | 必填 | 默认 | 说明 |\n|---|---|---|---|\n| `keyword` | 是 | — | 关键词 |\n| `page_no` | 否 | `0` | **页码从 0 开始** |\n| `search_id` | 否 | 空 | 翻页必传，取自首次搜索响应 |\n| `source` | 否 | `unifiedSearchGroup` | 来源标识 |\n| `is_recommend` | 否 | `0` | 是否推荐 |\n\n### 示例\n\n```bash\ncurl 'https://rnote.dev/api/v2/crawler/search/groups?keyword=上海' -H 'X-API-Key: sk-你的Key'\n```\n\n### 返回\n\n`$.data.data`：`group_info_list`（群聊数组）、`has_more`、`group_search_filters`（可用筛选项）。\n\n### 注意\n\n页码从 **0** 开始，参数名是 `page_no` 而不是其它搜索接口的 `page`。","operationId":"search_groups_api_v2_crawler_search_groups_get","security":[{"API Key":[]}],"parameters":[{"name":"keyword","in":"query","required":true,"schema":{"type":"string","description":"搜索关键词","title":"Keyword"},"description":"搜索关键词","example":"上海"},{"name":"page_no","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"页码，从 0 开始","default":0,"title":"Page No"},"description":"页码，从 0 开始"},{"name":"search_id","in":"query","required":false,"schema":{"type":"string","description":"搜索ID，翻页时传入首次搜索返回的值","default":"","title":"Search Id"},"description":"搜索ID，翻页时传入首次搜索返回的值"},{"name":"source","in":"query","required":false,"schema":{"type":"string","description":"来源","default":"unifiedSearchGroup","title":"Source"},"description":"来源"},{"name":"is_recommend","in":"query","required":false,"schema":{"type":"integer","description":"是否推荐，默认 0","default":0,"title":"Is Recommend"},"description":"是否推荐，默认 0"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/creator/inspiration/feed":{"get":{"tags":["小红书数据接口 V2"],"summary":"获取推荐灵感列表","description":"获取创作灵感流（选题推荐）。\n\n面向内容创作者的选题参考，不需要指定关键词。\n\n### 参数\n\n| 参数 | 必填 | 默认 | 说明 |\n|---|---|---|---|\n| `cursor` | 否 | 空 | 翻页游标。首次留空，翻页传上次返回的 `cursor`（形如 `r_1`、`r_2`） |\n| `tab` | 否 | `0` | 标签类型 |\n| `source` | 否 | `creator_center` | 来源标识 |\n\n### 示例\n\n```bash\n# 第一页\ncurl 'https://rnote.dev/api/v2/crawler/creator/inspiration/feed' -H 'X-API-Key: sk-你的Key'\n\n# 下一页\ncurl 'https://rnote.dev/api/v2/crawler/creator/inspiration/feed?cursor=r_1' -H 'X-API-Key: sk-你的Key'\n```\n\n### 返回\n\n`$.data.data`：`inspirations`（选题数组）、`cursor`（下一页游标）、`end_flag`（为真表示已到底）。\n\n### 注意\n\n翻页看 **`end_flag`**，不是 `has_more` —— 与本系列其它接口不同。","operationId":"get_creator_inspiration_feed_api_v2_crawler_creator_inspiration_feed_get","security":[{"API Key":[]}],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","description":"分页游标，首次留空，翻页传上次返回的 cursor (如 r_1, r_2...)","default":"","title":"Cursor"},"description":"分页游标，首次留空，翻页传上次返回的 cursor (如 r_1, r_2...)"},{"name":"tab","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"标签类型，默认 0","default":0,"title":"Tab"},"description":"标签类型，默认 0"},{"name":"source","in":"query","required":false,"schema":{"type":"string","description":"来源","default":"creator_center","title":"Source"},"description":"来源"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/crawler/creator/hot/inspiration/feed":{"get":{"tags":["小红书数据接口 V2"],"summary":"获取热点灵感列表","description":"获取**热门**创作灵感流。\n\n与 `/creator/inspiration/feed` 的区别：这个偏热门榜单，字段名是 `items` 而不是 `inspirations`。\n\n### 参数\n\n| 参数 | 必填 | 默认 | 说明 |\n|---|---|---|---|\n| `cursor` | 否 | 空 | 翻页游标。首次留空，翻页传上次返回的 `cursor`（形如 `1`、`2`） |\n| `num` | 否 | `20` | 每页数量，1~20 |\n\n### 示例\n\n```bash\ncurl 'https://rnote.dev/api/v2/crawler/creator/hot/inspiration/feed?num=20' -H 'X-API-Key: sk-你的Key'\n```\n\n### 返回\n\n`$.data.data`：`items`（热门选题数组）、`cursor`、`end_flag`。\n\n### 注意\n\n- 翻页看 `end_flag`。\n- 结果字段是 `items`；普通灵感流是 `inspirations`，两个接口不要混用解析代码。","operationId":"get_creator_hot_inspiration_feed_api_v2_crawler_creator_hot_inspiration_feed_get","security":[{"API Key":[]}],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","description":"分页游标，首次留空，翻页传上次返回的 cursor (如 1, 2...)","default":"","title":"Cursor"},"description":"分页游标，首次留空，翻页传上次返回的 cursor (如 1, 2...)"},{"name":"num","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"description":"每页数量，默认 20","default":20,"title":"Num"},"description":"每页数量，默认 20"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/pgy/note/detail":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-笔记详情","description":"获取单篇笔记的正文、图片/视频与互动数据。\n对应蒲公英笔记卡片点开后的详情弹窗。\n\n- **note_id**: 笔记ID\n\n**返回主要字段**（都在 `data.data` 下）：笔记基础（`noteId`/`noteLink`/`title`/`content` 正文/`type` 类型/`createTime`）、\n作者（`userId`/`name`/`headPhoto`）、媒体（`imagesList[]` 图片 url 与宽高、`videoInfo` 视频）、\n互动数据（`impNum` 曝光/`readNum` 阅读/`likeNum` 点赞/`favNum` 收藏/`cmtNum` 评论）。\n\n## 示例\n\n```bash\ncurl -X POST 'https://rnote.dev/api/v2/pgy/note/detail'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"note_id\": \"6a9aa495000000002603936d\"}'\n```\n\n`note_id` 从 `/blogger/notes` 的 `list[].noteId`、`/blogger/notes_v2` 的\n`noteList[].noteInfo.noteId`，或 `/content/square` 的榜单结果里取。","operationId":"note_detail_api_v2_pgy_note_detail_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteDetailReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/note/comments":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-笔记精选评论","description":"获取单篇笔记的精选评论（含作者回复）。\n对应笔记详情弹窗里的「精选评论」区块。\n\n- **note_id**: 笔记ID，可从 `/blogger/notes` 的 `list[].noteId`、\n  `/blogger/notes_v2` 的 `noteList[].noteInfo.noteId` 或 `/content/square` 的榜单结果取得\n\n## 没有翻页\n\n上游固定返回 **5 条**，且**不支持翻页**。实测 `pageIndex` 传 0/1/2/5/20、\n`pageSize` 传 5/10/20/50/100，返回的永远是同一批 5 条（`comment.idStr` 全等）——\n这是「精选评论 Top5」而不是可翻页的评论列表，所以本接口不暴露任何分页参数。\n想要全量评论请用笔记评论类接口，蒲公英这边拿不到。\n\n## 返回\n\n`data.data` 是**数组**（不是对象），每项为一条评论线程：\n\n| 字段 | 说明 |\n|---|---|\n| `comment` | 主楼评论：`content` 正文 / `createTime` 时间 / `likeCount` 点赞 / `subCommentCount` 子评论数 / `idStr` 评论ID / `userIdStr` 评论人ID |\n| `l1L2Comments[]` | 该楼下的回复（**博主的回复就在这里**），字段同 `comment`，`targetCommentId` 指向主楼 |\n| `userMap` | `{userIdStr: {userNickName 昵称, imageUrl 头像, gender 性别}}` |\n\n⚠️ **昵称和头像要 join `userMap`** —— `comment` 与 `l1L2Comments[]` 里只有 `userIdStr`，\n没有昵称。用 `userIdStr` 去 `userMap` 里取：\n\n```python\nthreads = r[\"data\"][\"data\"]\nfor t in threads:\n    c = t[\"comment\"]\n    who = t[\"userMap\"].get(c[\"userIdStr\"], {}).get(\"userNickName\", \"?\")\n    print(who, c[\"content\"], c[\"likeCount\"])\n    for sub in t[\"l1L2Comments\"]:\n        sub_who = t[\"userMap\"].get(sub[\"userIdStr\"], {}).get(\"userNickName\", \"?\")\n        print(\"  ↳\", sub_who, sub[\"content\"])\n```\n\n注意 `id` / `noteId` / `userId` 这几个数字字段有精度问题（超出 JS 安全整数），\n请一律用配套的 `idStr` / `noteIdStr` / `userIdStr` 字符串版本。\n\n## 示例\n\n```bash\ncurl -X POST 'https://rnote.dev/api/v2/pgy/note/comments'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"note_id\": \"6a9aa495000000002603936d\"}'\n```","operationId":"note_comments_api_v2_pgy_note_comments_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteDetailReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/note/components":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-笔记组件","description":"获取单篇笔记挂载的组件配置（正文搜索组件 / 评论区组件 / 底部组件）。\n对应笔记详情弹窗里标题下方那几个组件标签。\n\n- **note_id**: 笔记ID，来源同 `/note/comments`\n\n与 `/note/detail` 返回的 `compClickData` **不重复**，两者互补：\n\n| | 给什么 |\n|---|---|\n| 本接口 | 组件**配置** —— 挂了哪个组件、搜索词、品牌方、博主、按钮文案、跳转 |\n| `/note/detail` 的 `compClickData` | 组件**点击率档位** —— `正常`/`较高`/`极高`（口径 0-2% / 2%-10% / 10%+） |\n\n## 返回\n\n`data.data` 下三个位置，**没挂该组件时为 `null`**：\n\n| 字段 | 说明 |\n|---|---|\n| `noteContent` | 正文组件。`subType`（如 `NOTE_CONTENT_SEARCH` 正文搜索）/ `searchWord` 搜索词 / `brandName` / `gameAppId` |\n| `noteComment` | 评论区组件。含 `componentInfo`（`subType` 如 `NOTE_COMMENT_SEARCH` / `name` 组件名 / `buttonName` 按钮文案 / `content` 展示文案 / `jumpType`、`jumpUrl` 跳转 / `type`）、`brandInfo`（`brandUserName`/`brandAvatar`/`homePageLink` 品牌方）、`kolInfo`（`kolName`/`kolAvatar`/`homePageLink` 博主） |\n| `noteBottom` | 底部组件，实测多数笔记为 `null` |\n\n可用来看这条商业笔记具体挂了什么转化组件、导向哪个品牌或搜索词。\n\n## 示例\n\n```bash\ncurl -X POST 'https://rnote.dev/api/v2/pgy/note/components'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"note_id\": \"6a9aa495000000002603936d\"}'\n```\n\n典型用法：先用 `/content/square` 找出一批商业笔记，再逐条调本接口，\n看它们分别挂了什么转化组件、导向哪个品牌或搜索词。","operationId":"note_components_api_v2_pgy_note_components_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteDetailReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/blogger/detail":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-博主详情","description":"获取博主的资料、标签与合作报价。对应蒲公英博主主页左侧的资料卡。\n\n获取单个博主的详细资料，包括昵称、简介、地区、标签、合作报价、所属机构等。\n\n- **user_id**: 博主用户ID，可从博主列表结果或蒲公英博主页 URL 中取得\n\n**返回主要字段**（都在 `data.data` 下）：博主资料（`userId`/`name`/`redId` 小红书号/`headPhoto`/`location` 地区/`personalTags` 标签）、\n粉丝与互动（`fansCount` 粉丝数/`likeCollectCountInfo` 获赞收藏/`businessNoteCount` 商业笔记数）、\n合作报价（`picturePrice` 图文价/`videoPrice` 视频价/`lowerPrice` 起价）、合作状态（`cooperateState`/`isCollect`）。\n\n## 示例\n\n```bash\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/detail'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\"}'\n```\n\n`user_id` 从 `/blogger/list` 结果的 `kols[].userId` 取，\n或从蒲公英博主主页 URL 里截。","operationId":"blogger_detail_api_v2_pgy_blogger_detail_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserIdReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/blogger/notes":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-笔记案例（博主笔记明细）","description":"分页获取博主的笔记案例列表，每条含曝光/阅读/互动等指标。\n对应蒲公英博主主页「笔记数据 → 笔记案例」，翻页即对应本接口翻页。\n\n> **少数博主本接口可能返回空列表（`data.data.total` 为 0）**——例如笔记以跨平台/跨域\n> 内容为主的博主。若遇到这种情况，可改用 `/api/v2/pgy/blogger/notes_v2`（覆盖范围更广的\n> 笔记案例接口，字段结构不同，见其文档）。\n\n## 翻页\n\n| 参数 | 取值 | 说明 |\n|---|---|---|\n| `page_number` | ≥1 | 页码，从 1 开始（注意这个端点用的是 `page_number` 不是 `page_num`） |\n| `page_size` | **1-8** | 蒲公英网页固定 8，不能更大 |\n\n翻页只改 `page_number`，其余筛选**必须原样保持不变**。翻到某页返回空数组即没有更多；\n`data.data.total` 是该博主符合筛选的笔记总数，可据此算总页数。每次调用单独计费。\n\n## 快速开始\n\n```json\n{\"user_id\": \"5c668b3e0000000012021605\", \"page_number\": 1, \"page_size\": 8}\n```\n\n只看**合作笔记**（即该博主接过的商业合作）：\n\n```json\n{\"user_id\": \"5c668b3e0000000012021605\", \"page_number\": 1, \"page_size\": 8,\n \"note_type\": 3}\n```\n\n---\n\n## 筛选参数\n\n与网页「笔记案例」那一行的控件一一对应：\n\n| 参数 | 对应控件 | 取值 |\n|---|---|---|\n| `user_id` | — | **必填**，博主用户ID，从 `/blogger/list` 结果或蒲公英博主主页 URL 取 |\n| `note_type` | 按笔记类型 | `4`=全部类型（默认）`3`=**合作笔记** `1`=图文笔记 `2`=视频笔记 |\n| `order_type` | 排序下拉 | `1`=最新发布（默认）`2`=阅读最多 `3`=互动最多 |\n| `advertise_switch` | 流量类型下拉 | `1`=全部流量（默认）`0`=仅自然流量 |\n| `feature_tag` | 按内容特征 | 该博主的内容特征标签，如 `韩系` |\n| `content_tag` | 按内容类目 | 该博主的内容类目，如 `美妆` |\n| `is_third_platform` | 仅展示跨域合作笔记 | `1`=只看跨域合作笔记，`0`=不限（默认） |\n\n`feature_tag` / `content_tag` 是**按博主而异**的标签，先调 `/api/v2/pgy/blogger/detail`\n看该博主的 `featureTags`（特征）与 `contentTags`（类目），再挑一个填进来；填了该博主没有的\n标签会返回 0 条。两者与网页一样是单选。\n\n> `note_type` 与 `/blogger/notes-rate`、`/blogger/core-data` 的同名参数**取值不同**：\n> 那两个接口是 `1`=图文 `2`=视频 `3`=图文+视频，本接口按上表。\n\n---\n\n## 返回\n\n字段都在 `data.data` 下：`list[]` 笔记数组 + `total` 命中总数。\n\n```python\nnotes = r[\"data\"][\"data\"][\"list\"]\n```\n\n`list[]` 每条笔记：\n\n| 类别 | 字段 |\n|---|---|\n| 基础 | `noteId` / `title` / `imgUrl` 封面 / `date` 发布日期 / `isVideo` 是否视频 |\n| 数据 | `readNum` 阅读 / `likeNum` 点赞 / `collectNum` 收藏 / `thirdReadUserNum` 站外阅读人数 |\n| 合作 | `isAdvertise` 是否商业合作 / `brandName` 合作品牌 |\n\n另有 `total` 命中总数（会随筛选变化，可用来判断该博主有多少合作笔记）。\n\n拿到 `noteId` 后可调 `/api/v2/pgy/note/detail` 查这条笔记的正文、图片/视频与完整互动数据。\n\n## 示例\n\n```bash\n# 第一页（默认排序）\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/notes'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\", \"page_number\": 1, \"page_size\": 20}'\n\n# 只看视频、按互动排序\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/notes'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\", \"note_type\": 2, \"order_type\": 2}'\n\n# 只看合作（广告）笔记\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/notes'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\", \"advertise_switch\": 1}'\n\n# 按类目/特征标签过滤\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/notes'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\", \"content_tag\": \"美妆\"}'\n```\n\n**跨域博主返空时**：本接口是原生 KOL 链路，对跨域博主可能返回空列表 ——\n这时改用 `/blogger/notes_v2`（走搜索链路，覆盖更广）。\n两个接口的返回字段结构不同，解析代码不能混用。","operationId":"blogger_notes_api_v2_pgy_blogger_notes_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotesReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/blogger/notes_v2":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-笔记案例 v2（覆盖跨域笔记）","description":"分页获取博主的笔记案例列表（v2）。与 `/blogger/notes` 是**两套独立接口**：\n覆盖范围更广（含跨平台/跨域笔记），返回结构也不同。**当 `/blogger/notes` 返回空时改用本接口。**\n\n> 两接口的 `note_type` 取值与返回字段都不一样，不能混用；按各自文档调用。\n\n## 翻页\n\n| 参数 | 取值 | 说明 |\n|---|---|---|\n| `page_number` | ≥1 | 页码，从 1 开始 |\n| `page_size` | **1-8** | 蒲公英网页固定 8，不能更大 |\n\n翻页只改 `page_number`，其余筛选**必须原样保持不变**。翻到某页返回空数组即没有更多；\n`data.data.total` 是该博主符合筛选的笔记总数，可据此算总页数。每次调用单独计费。\n\n## 快速开始\n\n```json\n{\"user_id\": \"592b6f7c5e87e74d3669f3ba\", \"page_number\": 1, \"page_size\": 8}\n```\n\n只看**视频笔记**、按阅读量排序：\n\n```json\n{\"user_id\": \"592b6f7c5e87e74d3669f3ba\", \"page_number\": 1, \"page_size\": 8,\n \"note_type\": 2, \"order_type\": 2}\n```\n\n---\n\n## 筛选参数\n\n| 参数 | 对应控件 | 取值 |\n|---|---|---|\n| `user_id` | — | **必填**，博主用户ID |\n| `note_type` | 按笔记类型 | `0`=全部类型（默认）`1`=图文笔记 `2`=视频笔记 |\n| `order_type` | 排序下拉 | `1`=最新发布（默认）`2`=阅读最多 `3`=互动最多 |\n\n---\n\n## 返回\n\n`data.data.noteList[]`，每条含 `noteInfo`（笔记指标）+ `userInfo`（博主信息）：\n\n```python\nnotes = r[\"data\"][\"data\"][\"noteList\"]\nfirst = notes[0][\"noteInfo\"]   # noteId / title / imageUrl / notePublishTime ...\n```\n\n`noteInfo` 主要字段：\n\n| 类别 | 字段 |\n|---|---|\n| 基础 | `noteId` / `title` / `imageUrl` 封面 / `notePublishTime` 发布时间 / `noteType`（1=图文 2=视频）|\n| 数据 | `impNum` 曝光 / `readNum` 阅读 / `engageNum` 互动 / `favNum` 收藏 |\n| 分类 | `taxonomy1` / `taxonomy2` 内容分类 / `cooperNote` 是否合作 / `isAdNote` 是否广告 |\n\n另有 `data.data.total` 命中总数。拿到 `noteId` 后可调 `/api/v2/pgy/note/detail` 查完整数据。\n\n## 示例\n\n```bash\n# 第一页\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/notes_v2'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\", \"page_number\": 1, \"page_size\": 20}'\n\n# 只看视频笔记\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/notes_v2'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\", \"note_type\": 2}'\n\n# 换排序\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/notes_v2'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\", \"order_type\": 2}'\n```\n\n**什么时候用这个**：`/blogger/notes` 对跨域博主返空时改用本接口。\n两者返回结构不同（本接口在 `noteList[].noteInfo` 下），解析代码不要混用。","operationId":"blogger_notes_v2_api_v2_pgy_blogger_notes_v2_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotesV2Req"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/blogger/notes-rate":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-数据表现（笔记中位数/互动率/完播率）","description":"获取博主笔记的整体数据表现：曝光/阅读/互动中位数、互动率、完播率、百赞/千赞比例、\n内容形式占比等，用于评估内容质量与稳定性。\n对应蒲公英博主主页「数据概览 → 笔记数据」与「笔记数据 → 数据表现」区块。\n\n## 参数\n\n与网页「数据表现」那一行的控件一一对应：\n\n| 参数 | 对应控件 | 取值 |\n|---|---|---|\n| `user_id` | 必填 | 博主用户ID，从 `/blogger/list` 结果或蒲公英博主主页 URL 取 |\n| `business` | 日常笔记 / 合作笔记 页签 | `0`=日常笔记（默认）`1`=**合作笔记** |\n| `note_type` | 笔记类型下拉 | `3`=图文+视频（默认）`1`=图文 `2`=视频 |\n| `date_type` | 时间范围下拉 | `1`=近30日（默认）`2`=近90日 |\n| `advertise_switch` | 流量类型下拉 | `1`=全部流量（默认）`0`=仅自然流量 |\n\n> 想看「这个博主接商单时表现如何」，把 `business` 设为 `1`（合作笔记）再对比 `0`（日常笔记）。\n\n**返回主要字段**（都在 `data.data` 下）：笔记量（`noteNumber`/`videoNoteNumber`）、各项中位数（`impMedian` 曝光/\n`readMedian` 阅读/`interactionMedian` 互动/`likeMedian`/`collectMedian`/`commentMedian`/`shareMedian`）、\n率值（`interactionRate` 互动率/`videoFullViewRate` 完播率/`picture3sViewRate` 图文3秒阅读率/\n`hundredLikePercent` 百赞比/`thousandLikePercent` 千赞比）、内容形式占比（`noteType[]`）。\n各 `*BeyondRate` 为同行超越率。\n\n## 示例\n\n```bash\n# 默认：日常笔记 · 图文+视频 · 近30日 · 全部流量\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/notes-rate'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\"}'\n\n# 只看合作笔记（评估「接商单时表现如何」）\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/notes-rate'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\", \"business\": 1}'\n\n# 只看视频、近90日、仅自然流量\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/notes-rate'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\", \"note_type\": 2, \"date_type\": 2, \"advertise_switch\": 0}'\n```\n\n**对比技巧**：同一个 `user_id` 各调一次 `business=0` 和 `business=1`，\n把两组中位数并排看，就知道这个博主接商单后数据掉多少。","operationId":"blogger_notes_rate_api_v2_pgy_blogger_notes_rate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotesRateReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/blogger/core-data":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-核心指标趋势","description":"获取博主曝光/阅读/互动等指标的逐日趋势与区间汇总，用于绘制表现趋势图。\n对应蒲公英博主主页「笔记数据 → 数据表现 → 核心指标」的趋势图。\n\n## 参数\n\n| 参数 | 对应控件 | 取值 |\n|---|---|---|\n| `user_id` | 必填 | 博主用户ID，从 `/blogger/list` 结果或蒲公英博主主页 URL 取 |\n| `business` | 日常笔记 / 合作笔记 页签 | `0`=日常笔记（默认）`1`=**合作笔记** |\n| `note_type` | 笔记类型下拉 | `3`=图文+视频（默认）`1`=图文 `2`=视频 |\n| `date_type` | 时间范围下拉 | `1`=近30日（默认）`2`=近90日 |\n| `advertise_switch` | 流量类型下拉 | `1`=全部流量（默认）`0`=仅自然流量 |\n\n**返回主要字段**（都在 `data.data` 下）：`dailyData[]` 逐日趋势 + `sumData` 区间汇总（曝光/阅读/互动/CPM/CPE 等）。\n逐日点数随 `date_type` 变化（近30日约 30 个点）。\n\n## 示例\n\n```bash\n# 默认：日常笔记 · 近30日趋势\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/core-data'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\"}'\n\n# 合作笔记 · 近90日 · 仅自然流量\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/core-data'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\", \"business\": 1, \"date_type\": 2, \"advertise_switch\": 0}'\n```\n\n拿到 `dailyData[]` 后可直接画趋势图；`sumData` 是同区间的汇总值。","operationId":"blogger_core_data_api_v2_pgy_blogger_core_data_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreDataReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/blogger/data-summary":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-数据概览","description":"获取博主的成本与报价预估、内容形式占比、粉丝增长幅度、合作行业等概览指标。\n对应蒲公英博主主页「数据概览」里的服务表现与成长表现区块。\n\n## 参数\n\n| 参数 | 对应控件 | 取值 |\n|---|---|---|\n| `user_id` | 必填 | 博主用户ID，从 `/blogger/list` 结果或蒲公英博主主页 URL 取 |\n| `business` | 日常笔记 / 合作笔记 口径 | `0`=日常笔记（默认）`1`=**合作笔记** |\n\n两种口径的**成本类指标不同**（实测同一博主：日常图文 CPM ≈11、合作口径 ≈19），\n想评估「按商单价格算的性价比」请传 `business=1`。\n\n**返回主要字段**（都在 `data.data` 下）：成本/报价预估（`estimatePictureCpm`/`estimateVideoCpm`/`pictureReadCost`/\n`videoReadCost`）、内容形式占比（`noteType[]`）、粉丝增长（`fans30GrowthRate`）、\n合作行业（`tradeNames`）、活跃度（`isActive`）。各 `*BeyondRate`/`*Compare` 为同行对比。\n\n## 示例\n\n```bash\n# 日常笔记口径\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/data-summary'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\"}'\n\n# 合作笔记口径（按商单价格评估性价比时用这个）\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/data-summary'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\", \"business\": 1}'\n```","operationId":"blogger_data_summary_api_v2_pgy_blogger_data_summary_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataSummaryReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/blogger/fans-summary":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-粉丝概览","description":"获取博主的粉丝概览（粉丝量级、活跃度等汇总指标）。\n对应蒲公英博主主页「粉丝分析 → 粉丝概览」。\n\n- **user_id**: 博主用户ID\n\n**返回主要字段**（都在 `data.data` 下）：`fansNum` 粉丝数/`fansIncreaseNum` 增量/`fansGrowthRate` 增长率、\n活跃粉丝（`activeFansL28`/`activeFansRate`）、互动粉丝（`engageFansL30`）、阅读粉丝（`readFansIn30`）、\n付费粉丝（`payFansUserNum30d`），各 `*BeyondRate` 为同行超越率。\n\n## 示例\n\n```bash\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/fans-summary'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\"}'\n```\n\n配合 `/blogger/fans-profile`（画像）与 `/blogger/fans-history`（趋势）一起看，\n三个接口分别回答「粉丝有多少」「粉丝是谁」「粉丝怎么变的」。","operationId":"blogger_fans_summary_api_v2_pgy_blogger_fans_summary_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserIdReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/blogger/fans-profile":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-粉丝画像","description":"获取博主的粉丝画像（性别、年龄、地域、兴趣、设备等分布）。\n对应蒲公英博主主页「粉丝分析」里的画像图表。\n\n- **user_id**: 博主用户ID\n\n**返回主要字段**（都在 `data.data` 下）：`ages[]` 年龄分布、`gender` 性别（male/female）、`interests[]` 兴趣、\n`provinces[]`/`cities[]` 地域、`devices[]` 设备分布。\n\n## 示例\n\n```bash\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/fans-profile'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\"}'\n```\n\n选号时最常用的两个字段是 `gender`（性别构成）与 `cities[]`（城市分布）——\n投地域性强的产品时先看这两个再决定要不要谈。","operationId":"blogger_fans_profile_api_v2_pgy_blogger_fans_profile_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserIdReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/blogger/fans-history":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-粉丝增长趋势","description":"获取博主粉丝随时间的增长曲线。\n对应蒲公英博主主页「粉丝分析 → 粉丝趋势」。\n\n## 参数\n\n与网页「粉丝趋势」区的两个控件一一对应：\n\n| 参数 | 对应控件 | 取值 |\n|---|---|---|\n| `user_id` | 必填 | 博主用户ID，从 `/blogger/list` 结果或蒲公英博主主页 URL 取 |\n| `increase_type` | 粉丝总量 / 粉丝增量 页签 | `1`=粉丝总量（累计粉丝数，默认）`2`=粉丝增量（每日新增） |\n| `date_type` | 时间范围下拉 | `1`=近30日（默认）`2`=近60日 |\n\n两个参数的默认值都与蒲公英网页一致：粉丝总量 + 近30日。要每日新增曲线请传 `increase_type=2`。\n\n**返回主要字段**（都在 `data.data` 下）：`list[]` 逐日数据点（`num` 当日值、日期）、`fansNumInc` 区间净增、\n`fansNumIncRate` 增长率。点数与 `date_type` 对应（近30日 30 个点、近60日 60 个点）。\n\n## 示例\n\n```bash\n# 默认：粉丝总量 · 近30日\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/fans-history'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\"}'\n\n# 每日新增 · 近60日（看有没有异常暴涨）\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/fans-history'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\", \"increase_type\": 2, \"date_type\": 2}'\n```\n\n`increase_type=2` 的曲线出现孤立尖峰，通常意味着买量或蹭到热点，\n选号时值得再看一眼那几天的笔记。","operationId":"blogger_fans_history_api_v2_pgy_blogger_fans_history_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FansHistoryReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/blogger/list":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-笔记博主广场（找博主/选号）","description":"按 60+ 个条件搜索可合作的小红书博主，返回画像、笔记/合作数据与报价。\n对应蒲公英网页「找博主 → 笔记博主广场」的全部搜索与筛选能力。\n\n所有筛选都是可选的，全部留空即按智能排序返回推荐博主。\n\n---\n\n## 快速开始\n\n```json\n{\"page_num\": 1, \"page_size\": 20,\n \"blogger\": {\"content_tag\": [\"美妆\"]},\n \"fans\": {\"count\": {\"min\": 10000, \"max\": 50000}}}\n```\n\n→ 美妆类目、粉丝 1 万~5 万的博主，按智能排序返回 20 条。\n\n---\n\n## 1. 搜索与排序\n\n| 参数 | 说明 |\n|---|---|\n| `keyword` | 搜索词，留空则只按筛选条件查 |\n| `search_type` | `1`=按笔记关键词找博主（默认）、`0`=按博主昵称找 |\n| `column` / `sort` | 排序字段与方向，取值见下方枚举表 |\n| `page_num` / `page_size` | 分页，详见下方第 5 节「翻页」 |\n| `brand_user_id` | 可选。填品牌方 userId 后，会按该品牌做个性化推荐并标记「已合作」 |\n| `similar_user_id` | 可选。**找相似博主**：填一个博主的 userId，返回与他相似的博主，**并且可以叠加下面所有筛选**。对应网页博主卡片上的「找相似」 |\n| `similar_word` | 可选。配合 `similar_user_id` 的博主昵称，仅用于回显、不影响结果；网页两个一起发，建议照做 |\n\n> `similar_user_id` 与 `/blogger/similar` 是两条不同的链路：前者走本接口、**能叠加筛选**、\n> 分页按本接口规则；后者是平台的「相似博主推荐」，只按相似度返回、不支持筛选、每页最多 4 条。\n> 想「找相似 + 再按粉丝量/报价筛一遍」用前者。\n\n## 2. 筛选分组\n\n筛选按维度分成 7 组，每组是一个对象：\n\n| 分组 | 覆盖的筛选 |\n|---|---|\n| `goal` | 营销目标（曝光 / 种草 / 转化 × 指标 × 成本或规模） |\n| `blogger` | 博主类目、人设、擅长内容、内容题材、二十大人群、行业特色画像、预估消费行为、笔记类目、性别、地域、签约情况 |\n| `fans` | 粉丝量、粉丝年龄、粉丝性别、粉丝地域、婚恋状态、消费水平、母婴阶段、手机价格、手机品牌 |\n| `note` | 日常笔记的曝光/阅读/互动中位数、千赞笔记比例、笔记类型 |\n| `coop` | 合作报价、合作订单数、合作信用度、近期合作行业与品牌、传播规模、预估 CPM、预估阅读单价、预估互动单价、外溢进店单价 |\n| `live` | 近 30 天直播场次、场均观播人数、场均销售额 |\n| `flags` | 明星、优质博主、新锐博主、笔记+直播均可合作、意向行业匹配、行业推荐博主、热门活动、剔除低活/掉粉/已合作/已邀约 |\n\n**数值区间**统一写成 `{\"min\": 10000, \"max\": 50000}`。两端都可省略：省略 `min` 视为 0，\n省略 `max` 视为不限；但两端全空会报 422。\n\n---\n\n## 3. 各筛选填什么值\n\n### 3.1 固定枚举\n\n下表列全了所有枚举参数的取值。左列是请求 JSON 里的路径，例如 `fans.age` 就是\n`{\"fans\": {\"age\": 3}}`。**填表外的值会直接 422**。\n\n| 参数路径 | 对应筛选 | 全部取值 |\n|---|---|---|\n| `search_type` | 搜笔记 / 搜昵称 | `1`=搜笔记（默认）`0`=搜昵称 |\n| `column` | 排序字段 | `comprehensiverank`=智能排序（默认） `fansCount`=粉丝数 `clickNum`=阅读中位数-日常 `mEngagementNum`=互动中位数-日常 `price`=全部报价 `accumCommonImpMedinNum30d`=曝光中位数-日常 `accumPicCommonImpMedinNum30d`=图文曝光中位数-日常 `accumVideoCommonImpMedinNum30d`=视频曝光中位数-日常 `pictureClickMidNum`=图文阅读中位数-日常 `videoClickMidNum`=视频阅读中位数-日常 `pictureInterMidNum`=图文互动中位数-日常 `videoInterMidNum`=视频互动中位数-日常 `thousandLikePercent30`=千赞笔记比例 `pictureThousandLikePercent30`=图文千赞笔记比例 `videoThousandLikePercent30`=视频千赞笔记比例 `hundredLikePercent30`=百赞笔记比例 `pictureHundredLikePercent30`=图文百赞笔记比例 `videoHundredLikePercent30`=视频百赞笔记比例 `videoFinishRate`=视频完播率 `accumCoopImpMedinNum30d`=曝光中位数-合作 `readMidCoop30`=阅读中位数-合作 `interMidCoop30`=互动中位数-合作 `mCpuvNum30d`=外溢进店中位数-合作 `picturePrice`=图文报价 `videoPrice`=视频报价 `pictureReadCost`=图文预估阅读单价 `videoReadCost`=视频预估阅读单价 `inviteReply48hNumRatio`=邀约48h回复率 `fans30GrowthRate`=粉丝量变化幅度 `fansActiveIn28dLv`=活跃粉丝占比 `fansEngageNum30dLv`=互动粉丝占比 `kliveCnt30d`=近30天直播场次 `avgLiveViewerNum`=场均观播人数 `avgAgmv90d`=场均销售额 |\n| `sort` | 排序方向 | `desc`=降序（默认）`asc`=升序 |\n| `goal.market_target` | 营销目标 | `estimateAllCpm`=曝光·曝光表现·成本 `mAccumImpNum`=曝光·曝光表现·规模 `readCost`=曝光·阅读表现·成本 `mValidRawReadFeedNum`=曝光·阅读表现·规模 `estimateEngageCost`=种草·互动表现·成本 `mEngagementNum90d`=种草·互动表现·规模 `estimateCpuv`=转化·外溢进店·成本 `mCpuvNum`=转化·外溢进店·规模 |\n| `blogger.gender` | 性别 | `男` `女` |\n| `blogger.signed` | 签约情况 | `-1`=不限 `0`=个人博主 `1`=机构博主 |\n| `fans.age` | 粉丝年龄 | `0`=不限 `1`=<18 `2`=18~24 `3`=25~34 `4`=35~44 `5`=>44 占比高 |\n| `fans.gender` | 粉丝性别 | `0`=不限 `1`=男性占比高 `2`=女性占比高 |\n| `fans.marital_status` | 婚恋状态 | `-1`=不限 `0`=未婚 `1`=已婚 |\n| `fans.consumption_level` | 消费水平 | `-1`=不限 `0`=低消费 `1`=中消费 `2`=高消费 |\n| `fans.child_age`（数组） | 母婴阶段 | `0`=备孕 `2`=0-6月 `3`=7-12月 `4`=1-3岁 `5`=4-6岁 `6`=7-12岁 `7`=孕早期 `8`=孕晚期 |\n| `fans.device_price`（数组） | 手机价格 | `0-999` `1000-1999` `2000-2999` `3000-3999` `4000-4999` `5000-5999` `6000-6999` `7000-7999` `8000+` |\n| `fans.device_brand`（数组） | 手机品牌 | `苹果` `华为` `OPPO` `VIVO` `荣耀` `小米` `一加` `魅族` `中兴` `联想` |\n| `note.note_type` | 笔记类型 | `0`=不限 `1`=图文笔记为主 `2`=视频笔记为主 |\n| `coop.industry` | 近期合作行业 | `不限` `美妆个护` `食品饮料` `母婴` `3c及电器` `日用百货` `服装配饰` `互联网` `生活服务` `家居建材` `汽车` |\n\n### 3.2 需要先查字典的筛选\n\n下列筛选的可选项由平台维护、会随运营调整，先调 **`/api/v2/pgy/blogger/filter-options`**\n获取，再按对应层级填入。该接口结果基本不变，建议缓存后复用。\n\n**这些参数的写法不统一，下表是唯一可靠的对照。** 大多数是「裸名、任意层级、可混填」，\n但有三个例外（`audience20` 要复合串、`note_scene` / `consumer_behavior` 要全路径、\n`industry_crowd` 要数字 ID），照着别的参数的写法填会失败。\n\n| 参数路径 | 对应筛选 | 字典键 | 填什么 | 能填哪一层 |\n|---|---|---|---|---|\n| `blogger.content_tag` | 博主类目 | `contentTags` | 裸名 | 一级 / 二级，可混填 |\n| `blogger.personal_tags` | 博主人设 | `personalTagsV2` | 裸 `tagName` | 一级 / 二级 / 叶子，可混填 |\n| `blogger.feature_tags` | 擅长内容 | `featureTags` | 裸名 | 一级 / 二级，可混填 |\n| `blogger.location` | 地域（博主所在地） | `areas` | 裸地名 | 省 / 市 / 区县，可混填 |\n| `fans.location` | 粉丝地域 | `fansAreas` | 裸地名 | 省 / 市（**没有区县**），可混填 |\n| `blogger.content_theme` | 内容题材 | `contentTheme` | 裸 `label` | **只有一级**，子项无效 |\n| `blogger.audience20` | 二十大人群 | `audience20` | 一级裸名，或 `\"一级 一级-二级\"` | **二级必须用复合串** |\n| `blogger.note_scene` | 笔记类目 | `contentScenes` | **含根节点的空格全路径** | 任意深度 |\n| `blogger.consumer_behavior` | 预估消费行为 | `consumerBehavior` | **含根节点的空格全路径** | 任意深度 |\n| `blogger.industry_crowd` | 行业特色画像 | `automotiveIndustryTag` | **最深层叶子的 `value`（数字 ID）** | 只有叶子 |\n| `flags.industry_first` / `industry_second` | 行业（**不是**博主类目） | `industryTags` | 裸名，**单值不是数组** | 一级 / 二级各一个 |\n| `flags.activity_codes` | 热门活动 | `activities` | 每项的 `code` | — |\n\n**数组型参数一律是「或」**，多个值取并集去重；上限 30 项、单项 64 字符。\n\n#### 填错了会怎样：两种失败，都不报错\n\n| 失败形态 | 表现 | 哪些参数 |\n|---|---|---|\n| **过度过滤** | `total=0`，看起来像「真的没有博主」 | 除 `consumer_behavior` 外的全部 |\n| **静默不过滤** | 返回**未经筛选**的结果，你以为筛了其实没筛 | `consumer_behavior` |\n\n实测（粉丝 100 万~120 万，无其它筛选时 `total=455`）：\n\n* `content_tag=[\"护肤品\"]`（多一个字）→ `total=0`\n* `fans.location=[\"浙江省\"]`（多一个「省」）→ `total=0`\n* `audience20=[\"挑战极限者\"]`（照字典 label 裸填）→ `total=0`\n* `note_scene=[\"选车攻略\"]`（只填末段，没填全路径）→ `total=0`\n* `industry_crowd=[\"身心疗愈兴趣人群\"]`（填了 label 不是数字 ID）→ `total=0`\n* `consumer_behavior=[\"保时捷911\"]`（裸叶子名）→ **`total=455`，等于没筛**\n  ；`consumer_behavior=[\"zzz不存在zzz\"]` 同样 `455`。**只有全路径写法才真的生效**\n  （`[\"内容行为预估 汽车\"]` → `54`）。\n\n所以看到 `total=0` 时**先怀疑取值写法**，再怀疑「真的没有符合条件的博主」；\n看到结果多得可疑时，检查是不是 `consumer_behavior` 被静默忽略了。\n所有取值都应从 `/blogger/filter-options` 里**原样复制**，不要手写。\n\n#### 博主类目（`blogger.content_tag`）怎么多选\n\n网页上勾了好几个类目、有的勾「全部」有的只勾几个子项时，就按下面这样填。\n\n`contentTags` 是两层树：`taxonomy1Tag` 是一级（美妆、护肤、个人护理…共 28 个），\n`taxonomy2Tags[]` 是它的子项。**一级名和二级名混在同一个扁平数组里就行**，\n不用分开传、也没有嵌套结构。二级名全局唯一、也不与一级名重名，所以不会有歧义。\n\n举个网页上的实际场景：**美妆勾了「全部」，护肤只勾了 2 个子项，个人护理也勾了 2 个**：\n\n```json\n{\"blogger\": {\"content_tag\": [\"美妆\", \"面部保养\", \"面部清洁\", \"头发产品\", \"身体护理\"]}}\n```\n\n其中 `美妆` 是一级名（= 该类目全部），后面四个是二级名\n（`面部保养`/`面部清洁` 属于护肤，`头发产品`/`身体护理` 属于个人护理）。\n\n几条实测出来的规则（固定同一组粉丝量条件、只改类目，对比返回的 `total`）：\n\n| 传什么 | total | 说明 |\n|---|---|---|\n| `[\"面部保养\"]` | 200 | — |\n| `[\"面部清洁\"]` | 2 | — |\n| `[\"面部保养\",\"面部清洁\"]` | **201** | **多个之间是「或」**，并集去重（有 1 个博主两个都占） |\n| `[\"护肤\"]` | **379** | 一级名 = 该类目全部 |\n| 护肤的全部 4 个二级 | **328** | **比一级名少 51 个** |\n| `[\"护肤\",\"面部保养\"]` | 379 | 父子同填不报错，但子项本就被父项包含，等于只填父 |\n| `[\"护肤品\"]`（错别字） | **0** | **静默返回 0 条、不报错** |\n\n所以有两条要特别注意：\n\n* **勾「全部」就填一级名，别自己展开成它的全部二级名。** 上表里护肤展开后少了 51 个博主\n  —— 有些博主只挂了一级类目、没有二级标签，展开就把他们漏掉了。\n* **名字填错不会报错，只会返回 0 条。** 务必从 `/blogger/filter-options` 的 `contentTags`\n  里**原样复制**，别手写。看到 `total=0` 时先怀疑名字，再怀疑「真的没有博主」。\n\n数组最多 30 项，单个标签名最长 64 字符。\n\n同一套「一级名 = 该类目全部、可与二级名混填」的规则，也适用于其它两层字典型参数\n（如 `flags.industry_first` / `industry_second` 对应的 `industryTags`）。\n\n#### 地域（`blogger.location` / `fans.location`）怎么填\n\n**和类目一样是扁平的**：数组里直接填地名，省和市可以混在一起，多个之间是「或」。\n\n和类目一样的场景 —— 网页上**浙江勾了「全部」，江苏只勾了 2 个市，广东也勾了 2 个**：\n\n```json\n{\"fans\": {\"location\": [\"浙江\", \"南京\", \"苏州\", \"广州\", \"深圳\"]}}\n```\n\n`浙江` 是省名（= 整个省），后面四个是市名。要选整个省就填省名，\n**不用展开成它下面所有的市**（和类目同理，只是这里纯属多余）。\n\n博主地域（`blogger.location`）多一层区县，写法完全一样：\n\n```json\n{\"blogger\": {\"location\": [\"上海\", \"杭州\", \"上城区\"]}}\n```\n\n背后的机制和类目不同，但你不需要关心：**上游对这两个字段的要求是相反的** ——\n博主地域吃裸地名，粉丝地域吃完整路径（`\"中国 浙江 杭州\"`）—— 我们在服务端各自转好。\n你填裸名就行，填完整路径也照收。\n\n`fans.location` 侧实际会转成什么（取自生产字典）：\n\n| 你填 | 我们发给上游 |\n|---|---|\n| `浙江` | `中国 浙江`（省级，**不会**展开成它的 11 个市） |\n| `杭州` | `中国 浙江 杭州` |\n| `吉林` | `中国 吉林` **和** `中国 吉林 吉林` —— 省市同名，两条都发，「或」 |\n| `浙江省` | 字典里没有 → 原样透传 → 上游判无效 → **`total=0`** |\n\n两点注意：\n\n* **`fans.location` 这棵树只到市，没有区县**（`blogger.location` 才有区县）。\n  地名清单见 `/blogger/filter-options` 的 `fansAreas` / `areas`。\n* 和类目一样，**地名写错不报错、只返回 0 条**（上表最后一行：多写一个「省」字就没了）。\n\n#### 二十大人群（`blogger.audience20`）怎么填\n\n**这个和上面两个不一样，不是扁平裸名。** 二级必须写成 `\"一级 一级-二级\"` ——\n一级名要出现两次，中间一个空格，后半段用连字符连接。\n\n和类目一样的场景 —— 网页上**自在户外勾了「全部」，自由畅行只勾了 2 个子项，\n运动焕活也勾了 2 个**（实测 `total=169`）：\n\n```json\n{\"blogger\": {\"audience20\": [\n    \"自在户外\",\n    \"自由畅行 自由畅行-都市漫游家\",\n    \"自由畅行 自由畅行-静奢新贵\",\n    \"运动焕活 运动焕活-轻松健体派\",\n    \"运动焕活 运动焕活-线条雕塑家\"\n]}}\n```\n\n注意对比：**勾「全部」的那个只写一级裸名**（`自在户外`），\n**勾了具体子项的每一个都要写成复合串**（`自由畅行 自由畅行-都市漫游家`）——\n一级名在复合串里出现两次，中间一个空格，后半段用连字符。\n\n实测（粉丝 100 万~120 万、不带其它筛选时基线 `total=455`）：\n\n| 传什么 | total | 说明 |\n|---|---|---|\n| `[\"自在户外\"]` | 135 | 一级名 = 整个人群，可以单独填 |\n| `[\"自在户外 自在户外-挑战极限者\"]` | 9 | 复合格式，选到二级 |\n| `[\"挑战极限者\"]` | **0** | **裸的二级名无效，静默返回 0** |\n| 两个复合值 | 18 | 多个之间是「或」（9 + 9） |\n| `[\"自由畅行\",\"自在户外 自在户外-挑战极限者\"]` | 176 | 一级与复合二级**可以混填**（单独 `自由畅行` 是 175） |\n\n所以：**想选某个二级人群，别照着 `audience20` 字典里的 `label` 直接填** ——\n那是裸名，会静默返回 0 条。要拼成 `\"父label 父label-子label\"`。\n可选值见 `/blogger/filter-options` 的 `audience20`（19 个一级 / 121 个二级）。\n\n#### 博主人设（`blogger.personal_tags`）怎么多选\n\n`personalTagsV2` 是**三层**树（一级 → 分组 → 叶子），三层**任意一层都能填、可以混填**。\n想要整组就填那一组的名字，不用把叶子一个个列出来。\n\n```json\n{\"blogger\": {\"personal_tags\": [\"职业身份\", \"妈妈\", \"留学背景\"]}}\n```\n\n`职业身份` 是一级（= 该一级下 13 组 57 个叶子全要），`妈妈` 和 `留学背景` 是叶子。\n\n实测（基线 455）：一级 `职业身份`=91、二级 `互联网`=8、叶子 `妈妈`=31；\n`[\"职业身份\",\"妈妈\"]`=114（并集去重，不是 91+31）。\n\n#### 擅长内容（`blogger.feature_tags`）怎么多选\n\n两层，**一级和二级都能填、可以混填**。填一级就是那一组全要。\n\n```json\n{\"blogger\": {\"feature_tags\": [\"风格\", \"vlog\"]}}\n```\n\n实测：一级 `风格`=37、`形式`=183，二级 `vlog`=136、`韩系`=19；\n`[\"风格\",\"vlog\"]`=150（并集）。\n\n#### 内容题材（`blogger.content_theme`）—— 只能填一级\n\n这个是例外：**只有一级 `label` 有效，填子项一律 0 条**。\n\n```json\n{\"blogger\": {\"content_theme\": [\"通用\"]}}\n```\n\n实测：`[\"通用\"]`=366，而它的子项 `[\"口播\"]`=**0**。\n想按子项筛只能退而求其次用 `feature_tags`。\n\n#### 笔记类目 / 预估消费行为 —— 必须填「含根节点的空格全路径」\n\n`note_scene`（`contentScenes`）和 `consumer_behavior`（`consumerBehavior`）\n这两个**不能填裸名**，要把从根节点到目标节点的每一层用空格连起来：\n\n```json\n{\"blogger\": {\n    \"note_scene\": [\"汽车 理性决策\", \"汽车 理性决策 选车攻略 政策\"],\n    \"consumer_behavior\": [\"内容行为预估 汽车\"]\n}}\n```\n\n路径可以停在任意深度（越深越窄）。实测 `note_scene`：\n`[\"汽车\"]`=75、`[\"汽车 理性决策\"]`=23、`[\"汽车 理性决策 选车攻略 政策\"]`=1，\n而只填末段 `[\"选车攻略\"]`=**0**。\n\n⚠️ **`consumer_behavior` 填错的后果和别的参数不一样**：它不是返回 0 条，而是\n**整个筛选被静默忽略**。实测 `[\"保时捷911\"]`（裸叶子名）和 `[\"zzz不存在zzz\"]`\n都返回 455 —— 和完全不加这个筛选一模一样。只有全路径写法才真的生效\n（`[\"内容行为预估 汽车\"]`=54）。所以用这个参数时，**务必用加了它和不加它两次\n请求的 `total` 对比一下**，确认真的筛上了。\n\n另外这个字典**按账号灰度**，有些账号取到的是 `null`，那就用不了这个筛选。\n\n#### 行业特色画像（`blogger.industry_crowd`）—— 只能填数字 ID\n\n`automotiveIndustryTag` 是四层树，但**只有最深层叶子的 `value` 有效，而且是数字 ID**，\n不是 label。中间层的 `value` 是一串十六进制字符串，填了也没用。\n\n```json\n{\"blogger\": {\"industry_crowd\": [\"17121263\"]}}\n```\n\n实测：`[\"17121263\"]`=110，而填对应的 label `[\"身心疗愈兴趣人群\"]`=**0**。\n\n#### 行业（`flags.industry_first` / `industry_second`）—— 单值，不能多选\n\n这两个是**字符串不是数组**，各只能填一个，且要配套使用（二级必须属于一级）。\n取值来自 `industryTags` 的 `taxonomy1Tag` / `taxonomy2Tags`。\n\n```json\n{\"flags\": {\"industry_first\": \"美妆个护\", \"industry_second\": \"护肤\"}}\n```\n\n注意这是「**行业**」，和「博主类目」（`blogger.content_tag`）是两套完全不同的分类，\n名字看着像但不通用。\n\n### 3.3 直接填名称的筛选\n\n| 参数路径 | 对应筛选 | 怎么填 |\n|---|---|---|\n| `coop.brand_ids` | 近期合作品牌 | 品牌方 userId 列表（**本平台暂无品牌搜索接口，userId 需自行提供**） |\n\n> 想按粉丝人群圈博主，用 `blogger.audience20`（二十大人群）。\n\n---\n\n\n### 3.4 区间型字段（值写成 `{\"min\": x, \"max\": y}`）\n\n| 参数路径 | 对应网页筛选 |\n|---|---|\n| `fans.count` | 粉丝量 |\n| `note.imp_median` | 日常笔记 → 曝光中位数 |\n| `note.read_median` | 日常笔记 → 阅读中位数 |\n| `note.inter_median` | 日常笔记 → 互动中位数 |\n| `note.thousand_like_percent` | 日常笔记 → 千赞笔记比例（单位 %） |\n| `coop.pic_price` / `coop.video_price` | 合作报价（图文 / 视频一口价，元） |\n| `coop.order_count` | 合作订单数 |\n| `coop.reply_48h_ratio` | 合作信用度 → 48h 邀约回复率（%） |\n| `coop.imp_median` / `coop.read_median` / `coop.inter_median` | 传播规模（合作笔记的曝光 / 阅读 / 互动中位数） |\n| `coop.cpuv` | 传播规模 → CPUV |\n| `coop.pic_cpm` / `coop.video_cpm` | 预估 CPM（图文 / 视频） |\n| `coop.pic_read_price` / `coop.video_read_price` | 预估阅读单价（图文 / 视频） |\n| `coop.pic_engage_cost` / `coop.video_engage_cost` | 预估互动单价（图文 / 视频） |\n| `coop.estimate_cpuv` | 外溢进店单价 |\n| `live.live_count` | 近 30 天直播场次 |\n| `live.avg_viewer` | 场均观播人数 |\n| `live.avg_gmv` | 场均销售额（元） |\n\n### 3.5 开关型字段（值写 `true`）\n\n| 参数路径 | 对应网页筛选 |\n|---|---|\n| `flags.is_star` | 明星 |\n| `flags.high_quality` | 优质博主 |\n| `flags.new_high_quality` | 新锐博主 |\n| `flags.note_and_live` | 笔记 + 直播均可合作 |\n| `flags.filter_intention` | 意向行业匹配 |\n| `flags.exclude_low_active` | 剔除低活博主 |\n| `flags.exclude_fans_down` | 剔除掉粉博主 |\n| `flags.exclude_cooperated` | 剔除已合作博主 |\n| `flags.exclude_invited` | 剔除已邀约博主 |\n| `coop.exclude_brands` | 配合 `coop.brand_ids`：`true` = 排除与这些品牌合作过的博主 |\n\n此外 `flags.industry_first` / `flags.industry_second` 是行业推荐博主的一级/二级行业名，\n`flags.activity_codes` 是热门活动 code（取自 `/blogger/filter-options` 的 `activities`）。\n\n## 4. 更多示例\n\n下面每一条都可以直接当请求体用，改改数值就是你自己的场景。\n\n```json\n// ① 关键词找博主：搜「咖啡」相关笔记的博主，按粉丝数降序\n{\"page_num\": 1, \"page_size\": 20, \"keyword\": \"咖啡\", \"search_type\": 1,\n \"column\": \"fansCount\", \"sort\": \"desc\"}\n\n// ② 按画像选号：1万-5万粉、女性粉丝为主的美妆「妈妈」博主\n{\"page_num\": 1, \"page_size\": 20,\n \"blogger\": {\"content_tag\": [\"美妆\"], \"personal_tags\": [\"妈妈\"]},\n \"fans\": {\"count\": {\"min\": 10000, \"max\": 50000}, \"gender\": 2}}\n\n// ③ 按性价比选号：图文报价 ≤5000、阅读中位数 ≥3000 的视频博主，剔除低活\n{\"page_num\": 1, \"page_size\": 20,\n \"note\": {\"read_median\": {\"min\": 3000}, \"note_type\": 2},\n \"coop\": {\"pic_price\": {\"max\": 5000}},\n \"flags\": {\"exclude_low_active\": true, \"high_quality\": true}}\n\n// ④ 找会直播带货的博主：近30天开播 1-5 场、场均销售额 ≥1万\n{\"page_num\": 1, \"page_size\": 20,\n \"live\": {\"live_count\": {\"min\": 1, \"max\": 5}, \"avg_gmv\": {\"min\": 10000}}}\n\n// ⑤ 找相似博主：给一个满意的标杆博主，扩一批相似的，并叠加自己的筛选\n{\"page_num\": 1, \"page_size\": 20,\n \"similar_user_id\": \"5a8cf39111be10466d285d6b\",\n \"fans\": {\"count\": {\"min\": 50000}},\n \"coop\": {\"pic_price\": {\"max\": 20000}}}\n\n// ⑥ 预算优先：按「每次阅读成本」从低到高排，先看最便宜的\n{\"page_num\": 1, \"page_size\": 20,\n \"column\": \"pictureReadCost\", \"sort\": \"asc\",\n \"coop\": {\"pic_price\": {\"min\": 1000, \"max\": 10000}}}\n\n// ⑦ 涨粉快的新秀：按近30天粉丝增长率降序\n{\"page_num\": 1, \"page_size\": 20,\n \"column\": \"fans30GrowthRate\", \"sort\": \"desc\",\n \"fans\": {\"count\": {\"min\": 5000, \"max\": 100000}},\n \"flags\": {\"exclude_fans_down\": true}}\n\n// ⑧ 爆款率优先：按百赞笔记占比降序（内容稳定性比粉丝量更重要时用）\n{\"page_num\": 1, \"page_size\": 20,\n \"column\": \"hundredLikePercent30\", \"sort\": \"desc\",\n \"note\": {\"thousand_like_percent\": {\"min\": 10}}}\n\n// ⑨ 地域投放：找上海本地的探店博主\n//    注意 blogger.location 填「地名」即可，不要填「上海市-上海市-黄浦区」这种全路径\n{\"page_num\": 1, \"page_size\": 20,\n \"blogger\": {\"location\": [\"上海\"], \"content_tag\": [\"美食\"]}}\n\n// ⑩ 按粉丝所在地投放（和上面那条是两个不同的维度）\n{\"page_num\": 1, \"page_size\": 20,\n \"fans\": {\"location\": [\"广东\"], \"count\": {\"min\": 20000}}}\n\n// ⑪ 排除已合作过的，只看没碰过的新博主\n{\"page_num\": 1, \"page_size\": 20,\n \"blogger\": {\"content_tag\": [\"护肤\"]},\n \"flags\": {\"exclude_cooperated\": true, \"exclude_invited\": true}}\n\n// ⑫ 按行业筛 + 视频报价上限\n{\"page_num\": 1, \"page_size\": 20,\n \"coop\": {\"industry\": \"美妆个护\", \"video_price\": {\"max\": 8000},\n          \"order_count\": {\"min\": 1}}}\n\n// ⑬ 母婴场景：粉丝有 0-3 岁小孩、消费力中高\n{\"page_num\": 1, \"page_size\": 20,\n \"blogger\": {\"content_tag\": [\"母婴\"]},\n \"fans\": {\"child_age\": [\"0-3岁\"], \"consumption_level\": 3}}\n\n// ⑭ 蒲公英优选：只看平台标记的优质/新锐博主\n{\"page_num\": 1, \"page_size\": 20,\n \"flags\": {\"high_quality\": true, \"new_high_quality\": true, \"is_star\": true}}\n\n// ⑮ 多维组合（把上面几类叠在一起）\n{\"page_num\": 1, \"page_size\": 20, \"column\": \"comprehensiverank\", \"sort\": \"desc\",\n \"goal\":    {\"market_target\": \"mAccumImpNum\"},\n \"blogger\": {\"content_tag\": [\"美妆\"], \"gender\": \"女\", \"signed\": 0},\n \"fans\":    {\"count\": {\"min\": 10000}, \"age\": 3, \"device_brand\": [\"苹果\"]},\n \"note\":    {\"inter_median\": {\"min\": 500}, \"thousand_like_percent\": {\"min\": 20}},\n \"coop\":    {\"industry\": \"美妆个护\", \"video_price\": {\"max\": 8000}},\n \"live\":    {\"avg_viewer\": {\"min\": 5000}},\n \"flags\":   {\"exclude_cooperated\": true}}\n```\n\n### 4.1 完整的 curl 写法\n\n```bash\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/list'       -H 'X-API-Key: sk-你的Key'       -H 'Content-Type: application/json'       -d '{\"page_num\": 1, \"page_size\": 20,\n       \"blogger\": {\"content_tag\": [\"美妆\"]},\n       \"fans\": {\"count\": {\"min\": 10000, \"max\": 50000}}}'\n```\n\n### 4.2 常见错误写法\n\n这几种写法**不会报错**，只会安静地返回 0 条或不符合预期的结果，最难排查：\n\n```json\n// ✗ 区间写成了数字 —— 区间型字段必须是 {\"min\": x, \"max\": y}\n{\"fans\": {\"count\": 10000}}\n// ✓\n{\"fans\": {\"count\": {\"min\": 10000}}}\n\n// ✗ 地域填了全路径 —— 博主地域填地名即可\n{\"blogger\": {\"location\": [\"上海市-上海市-黄浦区\"]}}\n// ✓\n{\"blogger\": {\"location\": [\"上海\"]}}\n\n// ✗ 百分比填了小数 —— 百分比类字段填 0-100 的数，不是 0-1\n{\"note\": {\"thousand_like_percent\": {\"min\": 0.2}}}\n// ✓ 想表达「20%」\n{\"note\": {\"thousand_like_percent\": {\"min\": 20}}}\n\n// ✗ 类目值是自己编的 —— 需要查字典的筛选必须用 /blogger/filter-options 返回的值\n{\"blogger\": {\"content_tag\": [\"美妆护肤\"]}}\n// ✓ 先调 /blogger/filter-options 看 contentTags 里有什么，再照抄\n{\"blogger\": {\"content_tag\": [\"美妆\"]}}\n\n// ✗ 开关型字段填了 false —— 填 false 等于不筛，想生效就填 true\n{\"flags\": {\"exclude_cooperated\": false}}\n// ✓\n{\"flags\": {\"exclude_cooperated\": true}}\n```\n\n搜不到结果时的排查顺序：**先把筛选一个个去掉**，看是哪个条件卡住的；\n需要查字典的筛选（类目/场景/消费行为/地域）优先怀疑值写错了。\n\n---\n\n## 5. 翻页\n\n| 参数 | 取值 | 说明 |\n|---|---|---|\n| `page_num` | **1-250** | 页码。上游只放出前 5000 条 = 250 页，第 251 页起返回空数组 |\n| `page_size` | **1-20** | 蒲公英网页固定 20，不能更大。**建议保持 20**：蒲公英会对当页结果做二次过滤（下架、不可合作等），取太小可能整页被过滤成 0 条 |\n\n翻页只改 `page_num`，其余筛选**必须原样保持不变**，否则两页口径不一致会重复或遗漏。\n\n**`total` 不是命中总数，是可翻上限**，恒为 `5000`（= 250 页 × 20）。想缩小结果集\n请加筛选，而不是指望翻到底。翻到某页返回空数组即没有更多。每次调用单独计费。\n\n## 6. 返回\n\n业务数据在 `data.data` 下 —— `data` 是蒲公英原样信封，再进一层才是数据：\n\n```python\nkols = r[\"data\"][\"data\"][\"kols\"]\n```\n\n`kols[]` 为命中的博主，每条约 140 个字段，主要分四类：\n\n| 类别 | 主要字段 |\n|---|---|\n| 身份 | `userId` / `name` / `redId` 小红书号 / `headPhoto` / `location` / `gender` |\n| 标签 | `contentTags` 内容类目（含二级）/ `featureTags` 特征 / `personalTags` 人设 / `tradeType` 近期合作行业 |\n| 数据 | `fansNum` 粉丝数 / `clickMidNum` 阅读中位数 / `interMidNum` 互动中位数 / `accumCommonImpMedinNum30d` 曝光中位数 / `thousandLikePercent30` 千赞比 / `fans30GrowthRate` 粉丝增速 / `kliveCnt30d` 直播场次 / `avgAgmv90d` 场均销售额 |\n| 商业 | `picturePrice` 图文报价 / `videoPrice` 视频报价 / `lowerPrice` 起价 / `estimatePictureCpm` 预估CPM / `pictureReadCost` 阅读单价 / `cooperateState` 合作状态 / `noteList` 近期笔记 |\n\n另有 `total`（**可翻上限，恒为 5000**，不是精确命中数 —— 见上方「翻页」一节）、\n`trackId`、`highlightWords` 关键词高亮。\n\n## 7. 注意\n\n- **字段名写错会直接 422**，不会被静默忽略\n- 无可用资源或服务异常返回 503\n- 拿到 `userId` 后，可用 `/blogger/detail`、`/blogger/notes`、`/blogger/fans-profile`\n  等接口查更细的数据，用 `/blogger/similar` 按相似度扩量","operationId":"blogger_list_api_v2_pgy_blogger_list_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BloggerListReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/live-blogger/list":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-直播博主广场（直播带货选号）","description":"按电商转化力、直播表现、粉丝购买力等维度搜索**直播带货博主（买手）**，返回其销售额、\n客单价、观播数据与合作意向。对应蒲公英网页「找博主 → 直播博主广场」。\n\n---\n\n## 快速开始\n\n```json\n{\"page_num\": 1, \"page_size\": 20,\n \"category\": {\"first\": [\"女装/女士精品\"]},\n \"ecom\": {\"avg_gmv\": {\"min\": 100000}}}\n```\n\n→ 主营女装、场均销售额 ≥10 万的买手。\n\n---\n\n## 1. 与 `/blogger/list` 的区别\n\n两者是并列的两个选号入口，找的是不同类型的人：\n\n| | `/blogger/list` | `/live-blogger/list`（本接口） |\n|---|---|---|\n| 找什么人 | 发笔记种草的博主 | 直播带货的买手 |\n| 核心指标 | 阅读/互动中位数、笔记报价、CPM | 场均销售额、客单价、场均观播、在线峰值 |\n| 画像维度 | 博主类目、人设、二十大人群 | 合作品类、买手天团、内容人设 |\n| 翻页 | `page_num` + `page_size` | 同左，**另需回传 `seed`** |\n\n**两边的博主 ID 是同一套**：本接口返回的 `distributor_id` 就是 `/blogger/list` 的\n`userId`，可直接用 `/blogger/detail`、`/blogger/notes` 等接口补全这个买手的笔记侧数据。\n\n## 2. 搜索与分页\n\n| 参数 | 说明 |\n|---|---|\n| `nick_name` | 按博主昵称搜索，留空则只按筛选条件查 |\n| `page_num` / `page_size` / `seed` | 分页，详见下方第 6 节「翻页」 |\n\n## 3. 筛选分组\n\n| 分组 | 覆盖的筛选 |\n|---|---|\n| `category` | 合作品类（一级、二级） |\n| `buyer` | 买手天团、内容人设 |\n| `ecom` | 场均销售额、合作品牌场均销售额、客单价 |\n| `live` | 有直播计划（可指定日期）、场均观播人数、在线人数峰值 |\n| `fans` | 粉丝量、粉丝年龄、粉丝性别、粉丝消费力 |\n| `flags` | 积极寻求合作中、邀约回复率高、可查看联系方式、商单合作过、你关注TA、TA关注你、直播潜力高、日播买手、明星 |\n\n**数值区间**统一写成 `{\"min\": 10000, \"max\": 100000}`，两端可省略。\n\n---\n\n## 4. 各筛选填什么值\n\n### 4.1 固定枚举\n\n| 参数路径 | 对应筛选 | 全部取值 |\n|---|---|---|\n| `fans.age` | 粉丝年龄 | `0`=不限 `1`=<18 `2`=18-24 `3`=25-34 `4`=35-44 `5`=>44 占比高 |\n| `fans.gender` | 粉丝性别 | `0`=不限 `1`=男性占比高 `2`=女性占比高 |\n| `fans.consumption`（数组） | 粉丝消费力 | `high`=高消费占比高 `middle`=中等 `low`=低（是 **middle** 不是 medium） |\n\n### 4.2 标签类筛选\n\n合作品类、买手天团、内容人设填中文标签名，取值参考蒲公英「直播博主广场」页面的\n对应下拉。已验证可用的示例：\n\n| 参数路径 | 对应筛选 | 示例 |\n|---|---|---|\n| `category.first` | 合作品类-一级 | `[\"女装/女士精品\"]`（**单传一级即可，无需二级**） |\n| `category.second` | 合作品类-二级 | `[\"连衣裙\"]`（可留空） |\n| `buyer.group_tag` | 买手天团 | `[\"气质简约\"]` |\n| `buyer.persona_tag` | 内容人设 | `[\"模特\"]` |\n\n其余：`flags.*` 全是布尔；`live.plan_days` 是 `YYYYMMDD` 字符串数组。\n\n> `ecom.atv`（客单价）按档位匹配（0-100 / 100-200 / 200-500 …），与你给的区间有\n> 重叠的档位都会命中 —— 传 100~300 也会返回 200-500 档的买手。\n\n---\n\n\n### 区间型字段（值写成 `{\"min\": x, \"max\": y}`）\n\n| 参数路径 | 对应网页筛选 |\n|---|---|\n| `fans.count` | 粉丝购买力 → 粉丝量 |\n| `ecom.avg_gmv` | 电商转化力 → 场均销售额（元） |\n| `ecom.brand_avg_gmv` | 电商转化力 → 合作品牌场均销售额（元） |\n| `ecom.atv` | 电商转化力 → 客单价（元）。注意上游按**档位**匹配，与区间有重叠的档位都会命中 |\n| `live.avg_viewer` | 直播表现力 → 场均观播人数 |\n| `live.max_online` | 直播表现力 → 在线人数峰值 |\n\n### 开关型字段（值写 `true`）\n\n| 参数路径 | 对应网页筛选 |\n|---|---|\n| `live.has_plan` | 直播投入度 → 有直播计划（配合 `live.plan_days` 指定日期） |\n| `flags.actively_seeking` | 积极寻求合作中 |\n| `flags.high_reply_rate` | 邀约回复率高 |\n| `flags.contact_visible` | 可查看联系方式 |\n| `flags.cooperated_before` | 商单合作过 |\n| `flags.following` | 你关注 TA |\n| `flags.follower` | TA 关注你 |\n| `flags.live_potential_high` | 直播潜力高 |\n| `flags.daily_buyer` | 日播买手 |\n| `flags.is_star` | 明星 |\n\n## 5. 更多示例\n\n```json\n// ① 找有直播计划、观播人数高、且能看到联系方式的买手\n{\"page_num\": 1, \"page_size\": 20,\n \"live\": {\"has_plan\": true, \"avg_viewer\": {\"min\": 10000}},\n \"flags\": {\"contact_visible\": true, \"actively_seeking\": true}}\n\n// ② 按粉丝购买力选号\n{\"page_num\": 1, \"page_size\": 20,\n \"fans\": {\"count\": {\"min\": 10000, \"max\": 100000}, \"gender\": 2, \"consumption\": [\"high\"]}}\n\n// ③ 翻页：把上一页返回的 seed 带上\n{\"page_num\": 2, \"page_size\": 20, \"seed\": 1787045123}\n```\n\n---\n\n## 6. 翻页\n\n| 参数 | 取值 | 说明 |\n|---|---|---|\n| `page_num` | **1-250** | 页码。上游只放出前 5000 条 = 250 页，第 251 页起返回空数组 |\n| `page_size` | **1-20** | 蒲公英网页固定 20，不能更大 |\n| `seed` | 整数 | 结果集种子，见下 |\n\n**`seed` 是这个接口特有的，翻页时必须处理**：直播博主广场的排序带随机性，\n不带同一个 `seed` 翻页会导致各页之间重复或遗漏。用法是把**上一页响应里的 `seed`\n原样回传**给下一页：\n\n```json\n// 第 1 页：不传 seed（或传 0）\n{\"page_num\": 1, \"page_size\": 20}\n// 响应 data.data.seed = 1787045123\n// 第 2 页：回传上一页的 seed，其余筛选原样不变\n{\"page_num\": 2, \"page_size\": 20, \"seed\": 1787045123}\n```\n\n首页返回的 `seed` 可能是 `0`，原样回传 `0` 即可，不必特殊处理。\n除 `page_num` 和 `seed` 外，其余筛选**必须原样保持不变**，否则两页口径不一致。\n翻到某页返回空数组即没有更多。\n\n**注意 `total` 不是可翻数量**：`total` 是命中总数（可能有几百万），\n但实际能翻的只有 `page_total`（恒为 5000）。想缩小结果集请加筛选，\n而不是指望翻到底。\n\n## 7. 返回\n\n`distributor_info_list[]` 为命中的买手，每条含两个对象：\n\n| 对象 | 主要字段 |\n|---|---|\n| `distributor_data_info` | `distributor_id` 博主 userId / `red_id` 小红书号 / `distributor_name` / `fans_num` 粉丝数 / `atv` 客单价档位 / `avg_sale_amount` 场均销售额 / `avg_live_viewer_num` 场均观播 / `max_online_people_num` 在线峰值 / `distribution_live_num` 场次 / `content_categorys` 内容类目 / `city` |\n| `distributor_extra_info` | 意向品类、佣金、联系方式、等级 |\n\n另有 `total` 总数、`page_total` 可翻页上限、`seed`（翻页要回传）、`req_id`。\n\n## 8. 注意\n\n- **字段名写错会直接 422**，不会被静默忽略\n- 无可用资源或服务异常返回 503\n\n## 示例（curl 完整写法）\n\n```bash\n# 最简：第一页\ncurl -X POST 'https://rnote.dev/api/v2/pgy/live-blogger/list'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"page_num\": 1, \"page_size\": 20}'\n\n# 按昵称搜\ncurl -X POST 'https://rnote.dev/api/v2/pgy/live-blogger/list'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"page_num\": 1, \"page_size\": 20, \"nick_name\": \"小美\"}'\n\n# 场均观看 ≥5000 且场均销售额 ≥1万\ncurl -X POST 'https://rnote.dev/api/v2/pgy/live-blogger/list'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"page_num\": 1, \"page_size\": 20, \"live\": {\"avg_viewer\": {\"min\": 5000}, \"avg_gmv\": {\"min\": 10000}}}'\n```\n\n翻页只改 `page_num`；同一批结果想保持顺序稳定，把首次返回的 `seed` 原样回传。","operationId":"live_blogger_list_api_v2_pgy_live_blogger_list_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LiveBloggerReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/blogger/filter-options":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-找博主筛选项","description":"返回蒲公英「找博主」筛选面板里各带层级选项的全部可选值，供 `/blogger/list` 填参使用。\n这些选项由平台维护、会随运营变动，故不写死在文档里，请实时拉取。\n\n## 只要其中几个？用 `include`\n\n完整响应约 240 KB，其中 `automotiveIndustryTag`（行业特色画像）一个键就占 ~150 KB。\n只需要某几个字典时传 `include`，能显著减小响应：\n\n```json\n{\"include\": [\"contentTags\", \"personalTagsV2\"]}\n```\n\n省略 `include` = 返回全部键（与旧版行为一致）。传了未知键返回 422。\n\n**返回字段**（都在 `data.data` 下）：\n\n| 键 | 对应网页筛选 | 填进 /blogger/list 的字段 | 取哪一层 |\n|---|---|---|---|\n| `contentTags` | **博主类目** | `blogger.content_tag` | `taxonomy1Tag`（一级）或 `taxonomy2Tags[]` 里的名字（二级），**都填裸名、可混在一个数组里**（多选规则见 `/blogger/list` 第 3.2 节） |\n| `personalTagsV2` | 博主人设 | `blogger.personal_tags` | 三级树的**叶子 tagName**（如 妈妈） |\n| `featureTags` | 擅长内容 | `blogger.feature_tags` | **二级名**（如 vlog） |\n| `contentTheme` | 内容题材 | `blogger.content_theme` | **一级 label**（如 汽车特色）；子项无效 |\n| `audience20` | 二十大人群 | `blogger.audience20` | 一级 label，或 `\"一级 一级-二级\"` |\n| `automotiveIndustryTag` | 行业特色画像 | `blogger.industry_crowd` | **最深层叶子的 value**（数字 ID） |\n| `consumerBehavior` | 预估消费行为 | `blogger.consumer_behavior` | 叶子 label |\n| `contentScenes` | **笔记类目** | `blogger.note_scene` | **含根节点的空格全路径**，如 `汽车 理性决策 选车攻略 政策` |\n| `areas` | **地域**（博主所在地） | `blogger.location` | 地区名；这棵树到**区县** |\n| `fansAreas` | **粉丝地域** | `fans.location` | 地区名；这棵树只到**市** |\n| `market` | 营销目标 | `goal.market_target` | 三级 type |\n| `activities` | 平台推荐 → 热门活动 | `flags.activity_codes` | 每项的 `code` |\n| `industryTags` | 行业（**不是**博主类目） | `flags.industry_first` / `industry_second` | 一级 `taxonomy1Tag` / 二级 `taxonomy2Tags` |\n\n> **`contentTags` 与 `industryTags` 是两套体系**，别混：前者是「博主类目」（美妆/护肤/母婴…，\n> 28 个一级 + 120 个二级），后者是「行业」，只用于「行业推荐博主」。\n>\n> **`areas` 与 `fansAreas` 也是两棵不同的树**（前者到区县、后者到市），不要互相套用。\n>\n> `coop.industry`（近期合作行业）是固定 11 值的枚举，**不查本字典**，取值见该字段说明。\n\n**本端点结果基本不变，建议客户端缓存**（如 1 天），不必每次搜索前都调。\n\n## 示例\n\n```bash\n# 取全部字典（首次接入时先跑一次，把结果缓存起来）\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/filter-options'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{}'\n\n# 只取需要的几类，响应更小\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/filter-options'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"include\": [\"contentTags\", \"areas\"]}'\n```\n\n字典变化很慢，**建议本地缓存**，不必每次筛选前都调一次。","operationId":"blogger_filter_options_api_v2_pgy_blogger_filter_options_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/blogger/similar":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-相似博主推荐","description":"给定一个博主，返回与其相似的其它博主。对应蒲公英博主主页下方的「相似博主推荐」。\n典型用法：先用 `/blogger/list` 或人工选出一个满意的标杆博主，再用本接口按相似度扩量选号。\n\n- **user_id**: 目标博主用户ID\n- **page_num**: 页码，从 1 开始\n- **page_size**: 每页数量，**1-4**（蒲公英网页固定 4，不能更大）\n\n**翻页**：只改 `page_num`，`user_id` 保持不变。相似博主总数通常只有个位数到几十，\n`data.data.total` 即为上限，翻到返回空数组即没有更多。每次调用单独计费。\n\n**返回主要字段**（都在 `data.data` 下）：结构与 `/blogger/list` 完全一致 —— `kols[]`（字段同博主列表）+ `total` +\n`trackId`（本接口前缀为 `kolSimilar_`）。相似博主总数通常只有个位数到几十，`total` 即为上限。\n\n## 示例\n\n```bash\n# 第一页（每页最多 4 个，这是蒲公英网页的固定值）\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/similar'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\", \"page_num\": 1, \"page_size\": 4}'\n\n# 翻页：只改 page_num\ncurl -X POST 'https://rnote.dev/api/v2/pgy/blogger/similar'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"user_id\": \"5a8cf39111be10466d285d6b\", \"page_num\": 2, \"page_size\": 4}'\n```\n\n**扩量选号的常见流程**：先用 `/blogger/list` 筛出一个满意的标杆博主，\n再用本接口按相似度扩一圈，逐个用 `/blogger/data-summary` 比性价比。\n\n想按「相似 + 其它筛选条件」一起搜，用 `/blogger/list` 的 `similar_user_id`\n参数（那条链路支持叠加筛选，本接口只按相似度返回）。","operationId":"blogger_similar_api_v2_pgy_blogger_similar_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimilarReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/content/square":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-内容广场（热门内容榜单）","description":"蒲公英「学内容 → 创意灵感 → 内容广场」的完整复刻：**不需要任何 ID**，直接查\n「现在什么内容在火」，返回按指定指标排序的笔记榜单。\n\n这与本组其它接口的方向相反 —— `/blogger/*` 和 `/note/detail` 都要先有一个\n博主或笔记 ID 才能查它的数据；本接口是入口式的，拿到榜单后可以再顺着\n笔记里的博主 ID 去调 `/blogger/detail` 等接口做深挖。\n\n---\n\n## 1. 全部参数一览\n\n| 参数 | 必填 | 默认 | 说明 |\n|---|---|---|---|\n| `biz_type` | ✅ | — | 榜单，见下方第 2 节 |\n| `page_num` | | `1` | 页码，从 1 开始 |\n| `page_size` | | `34` | 每页数量，**1-34**（蒲公英网页固定 34，不能更大） |\n| `search_word` | | `\"\"` | 关键词；留空=看整榜。支持英文逗号分隔批量搜，如 `面膜,精华` |\n| `order_by` | | 随榜单 | 排序字段，见第 5 节；留空=用该榜默认排序 |\n| `date_range` | | `7` | 统计窗口，取 `3` / `7` / `14` / `30`（近 N 日） |\n| `sub_biz_type` | | `3` | **仅榜 8**，见第 6 节 |\n| `category` | | — | **仅榜 1** 的类目，见第 4 节 |\n| `industry` | | — | **榜 2/3/4/5/6/7/8** 的所属行业，见第 4 节 |\n| `note_type` | | — | 内容类型，见第 6 节 |\n| `content_type` | | — | 内容来源，见第 6 节 |\n| `theme` | | — | **榜 2/4/5/7/8** 的题材，见第 6 节 |\n| `author_type` | | — | **仅榜 4** 创作者类型，见第 6 节 |\n| `placement` | | — | **榜 2/3/5/7/8** 流量场域，见第 6 节 |\n| `marketing_target` | | — | **仅榜 3** 营销目标，见第 6 节 |\n| `price` | | — | **仅榜 4** 创作者报价，见第 6 节 |\n| `fans` | | — | **仅榜 4** 创作者粉丝量区间，见第 6 节 |\n\n不传的筛选就是「不限」。**不要把不需要的字段传成空字符串或 0** —— 那会被当成一次真实筛选。\n\n## 2. 翻页\n\n| 参数 | 取值 | 说明 |\n|---|---|---|\n| `page_num` | ≥1 | 页码 |\n| `page_size` | **1-34** | 蒲公英网页固定 34，不能更大 |\n\n翻页只改 `page_num`，其余参数**必须原样保持不变**，否则两页的口径不一致、\n结果会重复或遗漏：\n\n```json\n{\"biz_type\": 1, \"page_num\": 1, \"page_size\": 34, \"category\": \"内容类目#美妆\"}\n{\"biz_type\": 1, \"page_num\": 2, \"page_size\": 34, \"category\": \"内容类目#美妆\"}\n```\n\n**每个榜单固定只有 100 条**（返回的 `total` 恒为 100）—— 这是榜单不是全量搜索，\n上游只放出 Top 100。所以 `page_size=34` 时翻到第 3 页就到底了，第 4 页返回空数组。\n要更多内容请换榜单、换筛选或换 `date_range`，**调大 `page_size` 没用**（上限 34）。\n\n响应里的 `pageInfoDto.totalPage` 实测恒为 `0`，**不要拿它判断还有没有下一页**；\n以 `total`（100）自行计算，或直接翻到返回空数组为止。\n\n每次调用单独计费，建议先用第 1 页确认筛选口径对了再往下翻。\n\n## 3. 先选榜单（`biz_type`）\n\n| 值 | 榜单 | 内容 |\n|---|---|---|\n| `1` | 小红书热门 | 全平台热门内容榜单 |\n| `2` | 产品种草 | 营销诉求为产品种草的内容榜单 |\n| `3` | 电商推广 | 营销诉求为商品或直播推广的内容榜单 |\n| `4` | 蒲公英合作 | 笔记博主合作的内容榜单 |\n| `5` | 客资收集 | 营销诉求为客资收集的内容榜单 |\n| `6` | 电商热门 | 电商热门商品内容榜单 |\n| `7` | 种草直达 | 营销诉求为种草直达的内容榜单 |\n| `8` | 应用推广 | 营销诉求为应用推广的内容榜单 |\n\n## 4. 各榜支持的筛选不同\n\n榜单决定了可用的筛选项 —— 传了该榜不支持的字段会返回 **422** 并告诉你这个榜支持哪些，\n不会被静默忽略（否则你会拿到一份没按预期过滤的数据却发现不了）。\n\n| 榜 | 可用筛选 |\n|---|---|\n| `1` 小红书热门 | `category`、`note_type`、`content_type` |\n| `2` 产品种草 / `5` 客资收集 / `7` 种草直达 | `industry`、`placement`、`note_type`、`content_type`、`theme` |\n| `3` 电商推广 | `industry`、`placement`、`note_type`、`content_type`、`marketing_target` |\n| `4` 蒲公英合作 | `industry`、`note_type`、`author_type`、`theme`、`price`、`fans` |\n| `6` 电商热门 | `industry`、`note_type`、`content_type` |\n| `8` 应用推广 | `industry`、`placement`、`note_type`、`content_type`、`theme`、`sub_biz_type` |\n\n## 4.1 行业怎么填\n\n「行业」在不同榜单下是不同的分类体系，别混用：\n\n| 榜 | 字段 | 取值 |\n|---|---|---|\n| `1` | `category` | `内容类目#X` 或 `所属行业#X`。内容类目 X 取：美妆、护肤、个人护理、母婴、时尚、美食、家居家装、影视综资讯、运动健身、宠物、文化艺术、兴趣爱好、生活记录、教育、职场、情感、摄影、游戏、科技数码、出行旅游、音乐、搞笑、健康养生、汽车、婚嫁、商业财经、素材、其他 |\n| `2/4/5/7/8` | `industry` | 母婴、家用电器、3C数码、食品饮料、美妆个护、汽车出行、本地生活、日化家清、医疗健康、宠物（新）、家居家装、出行旅游、教育培训、金融行业、医疗医美、免税平台、服饰鞋包、珠宝配饰、运动户外、文玩娱乐、到店综合、奢侈品、互联网、影像婚美、房地产 |\n| `3/6` | `industry` | 电商商品类目，如 茶、彩妆/香水/美妆工具、厨房电器、床上用品……（数百项，与上面两套完全不同） |\n\n## 5. 排序（`order_by`）\n\n留空即用该榜的网页默认排序（榜 2 和 3 默认阅读率，其余默认曝光量）。\n\n通用（所有榜可用）：\n\n| 取值 | 含义 | 取值 | 含义 |\n|---|---|---|---|\n| `premium_imp_num` | 曝光量 | `premium_engage_rate` | 互动率 |\n| `premium_read_num` | 阅读量 | `premium_like_num` | 点赞量 |\n| `premium_ctr` | 阅读率 | `premium_fav_num` | 收藏量 |\n| `premium_engage_num` | 互动量 | `premium_cmt_num` | 评论量 |\n\n仅 `3` 电商推广 / `6` 电商热门 额外支持：\n\n| 取值 | 含义 |\n|---|---|\n| `premium_ecm_dgmv` | 笔记支付金额 |\n| `premium_ecm_order_pv` | 笔记支付订单数 |\n| `premium_ecm_order_rate` | 笔记支付转化率 |\n\n仅 `4` 蒲公英合作 额外支持（小红星=淘宝、小红盟=京东、小红链=唯品会）：\n\n| 取值 | 含义 | 取值 | 含义 |\n|---|---|---|---|\n| `taobao_third_active_pgy_user_ratio` | 小红星站外转化率 | `taobao_third_active_pgy_user_cost` | 小红星站外转化成本 |\n| `jd_third_active_pgy_user_ratio` | 小红盟站外活跃率 | `jd_third_active_pgy_user_cost` | 小红盟站外活跃成本 |\n| `wph_third_active_pgy_user_ratio` | 小红链站外活跃率 | `wph_third_active_pgy_user_cost` | 小红链站外活跃成本 |\n\n传了本榜不支持的排序同样返回 422。\n\n## 6. 其它枚举一览\n\n| 参数 | 网页名称 | 全部取值 |\n|---|---|---|\n| `note_type` | 内容类型 | `1` 图文、`2` 视频 |\n| `content_type` | 内容来源 | `1` 博主合作笔记、`2` 明星合作笔记、`3` 员工笔记、`5` 买手笔记、`6` 专业号笔记、`11` 主理人笔记、`-1` 用户笔记 |\n| `author_type` | 创作者类型 | `1` 蒲公英博主、`2` 明星 |\n| `placement` | 流量场域 | `1` 发现、`2` 搜索、`3` 视频内流 |\n| `marketing_target` | 营销目标 | `3` 商品推广、`8` 直播推广 |\n| `sub_biz_type` | 应用唤起 | `1` 应用下载、`2` 小程序推广、`3` 应用唤起 |\n| `date_range` | 时间范围 | `3`、`7`、`14`、`30`（近 N 日） |\n| `theme` | 题材 | 吃播、双品对比、活动分享、选购攻略、问答类、仿妆变装、采访类、单品推荐、经验教程、探店打卡、生活剧情、新品预告、创意内容、知识科普、测评类、好物合集、试色、情感话题、OOTD、手工制作、开箱 |\n\n`price`（创作者报价，仅榜 4）要同时给口径和区间，因为图文和视频是两套独立报价：\n`{\"kind\": 1, \"range\": {\"min\": 10000, \"max\": 50000}}`，`kind` 取 `1` 图文笔记 / `2` 视频笔记。\n`fans`（创作者粉丝，仅榜 4）只要区间：`{\"min\": 100000, \"max\": 500000}`。\n\n---\n\n## 7. 示例\n\n```json\n// ① 近 7 日全平台最热的美妆视频\n{\"biz_type\": 1, \"category\": \"内容类目#美妆\", \"note_type\": 2}\n\n// ② 母婴行业近 30 日互动率最高的蒲公英合作笔记，博主报价 1~5 万（图文）\n{\"biz_type\": 4, \"industry\": \"母婴\", \"date_range\": 30,\n \"order_by\": \"premium_engage_rate\",\n \"price\": {\"kind\": 1, \"range\": {\"min\": 10000, \"max\": 50000}}}\n\n// ③ 电商推广榜按笔记支付金额排序，只看搜索场域\n{\"biz_type\": 3, \"order_by\": \"premium_ecm_dgmv\", \"placement\": 2}\n\n// ④ 带关键词看榜：面膜相关的热门内容\n{\"biz_type\": 1, \"search_word\": \"面膜\"}\n```\n\n## 8. 返回\n\n业务数据在 `data.data` 下 —— `data` 是蒲公英原样信封，再进一层才是数据：\n\n| 字段 | 说明 |\n|---|---|\n| `noteList[]` | 命中的笔记。每条含 `noteInfo`（`title` 标题、`noteType` 类型、`noteLink` 笔记链接、`noteImages` 封面、`readNum` 阅读、`likeNum` 点赞、`favNum` 收藏、`cmtNum` 评论、`videoDuration` 视频时长、`notePublishTime` 发布时间）与博主信息 |\n| `total` | 该榜的条数，恒为 **100**（见上方「翻页」一节） |\n| `pageInfoDto` | 上游的分页回执（`pageNum`/`pageSize`/`total`）。其中 `totalPage` 实测恒为 `0`，**不可用**，请以 `total` 自行计算 |\n\n```python\nnotes = r[\"data\"][\"data\"][\"noteList\"]\n```\n\n## 9. 注意\n\n- **字段名写错、枚举值不合法、榜单与筛选不匹配都会 422**\n- 关键词支持英文逗号分隔批量搜（与网页搜索框一致）\n- 无可用资源或服务异常返回 503\n\n## 示例（curl 完整写法）\n\n```bash\n# 最简：默认榜单第一页\ncurl -X POST 'https://rnote.dev/api/v2/pgy/content/square'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"page_num\": 1, \"page_size\": 20}'\n\n# 搜关键词\ncurl -X POST 'https://rnote.dev/api/v2/pgy/content/square'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"page_num\": 1, \"page_size\": 20, \"search_word\": \"面膜\"}'\n\n# 指定榜单 + 时间范围 + 排序\ncurl -X POST 'https://rnote.dev/api/v2/pgy/content/square'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"biz_type\": 1, \"page_num\": 1, \"page_size\": 20, \"date_range\": 2, \"order_by\": \"readNum\"}'\n```\n\n`biz_type` 决定看哪个榜，**不同榜支持的筛选不同** —— 传了该榜不支持的筛选会被忽略，\n不会报错，所以拿不到预期结果时先确认榜选对了。","operationId":"content_square_api_v2_pgy_content_square_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentSquareReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/keyword/stat":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-关键词概览（搜索指数+博主画像）","description":"给定一个关键词，返回它在小红书全站的热度概览，以及发这个词的博主长什么样。\n对应蒲公英内容广场搜索后的「全站数据」+「合作博主画像」两张卡片。\n\n**返回主要字段**（都在 `data.data` 下）\n\n| 对象 | 字段 |\n|---|---|\n| `searchWordData` | `searchScore` 搜索指数、`noteNum` 关联笔记数、`userNum` 搜索人数、`readNum` 阅读量；每项都有对应的 `*30bm` 字段，是近 30 日环比百分比 |\n| `wordKolProfile` | 合作博主画像：内容类目占比（如 护肤 93.8%）、账号人设占比（如 妈妈 25%） |\n\n**配套接口**：同一个关键词还可以调 `/keyword/daily` 看逐日走势、\n`/keyword/related` 看上下游关联词。三个接口互相独立，按需调用，各自单独计费。\n\n- **search_word**: 关键词，如 `面膜`\n\n## 示例\n\n```bash\ncurl -X POST 'https://rnote.dev/api/v2/pgy/keyword/stat'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"search_word\": \"面膜\"}'\n```\n\n**选题流程**：`/keyword/related` 扩出一批词 → 逐个调本接口比 `searchScore`\n与 `noteNum` → 挑「搜索量不低但笔记数少」的词，即竞争小的机会词。","operationId":"keyword_stat_api_v2_pgy_keyword_stat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeywordReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/keyword/daily":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-关键词逐日搜索指数","description":"关键词的搜索热度逐日走势，用来判断一个词是在涨还是在退、有没有季节性。\n对应内容广场搜索后「全站数据 → 查看详情」里的趋势图。\n\n**返回主要字段**（都在 `data.data` 下）：`dailyData[]`，每天一条，含 `dateKey` 日期、`searchScore` 搜索指数、\n`noteNum` 当日笔记数、`userNum` 搜索人数。\n\n时间范围由蒲公英自行决定（实测约为近三个月），本接口没有可调的时间参数。\n要看汇总值和环比请用 `/keyword/stat`。\n\n- **search_word**: 关键词，如 `面膜`\n\n## 示例\n\n```bash\ncurl -X POST 'https://rnote.dev/api/v2/pgy/keyword/daily'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"search_word\": \"面膜\"}'\n```\n\n用来判断一个词是在涨还是在退。要汇总值与环比请用 `/keyword/stat`。","operationId":"keyword_daily_api_v2_pgy_keyword_daily_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeywordReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v2/pgy/keyword/related":{"post":{"tags":["蒲公英数据接口 V1"],"summary":"蒲公英-关键词关联词（选题扩词）","description":"返回用户搜这个词**之前**和**之后**还会搜什么，对应内容广场的「相关灵感」卡片。\n典型用法是选题扩词：拿一个核心词跑出一批关联词，再用 `/keyword/stat` 逐个比热度，\n挑出竞争小但搜索量不低的词。\n\n**返回主要字段**（都在 `data.data` 下）：`upSearchWords[]`（上游词）与 `downSearchWords[]`（下游词），\n每个词自带 `searchScore` 搜索指数、`readTotalCount` 阅读总量、`noteNum` 笔记数、\n`relevanceRank` 相关度排名、`brandTag` 是否品牌词。\n\n- **search_word**: 关键词，如 `面膜`\n\n## 示例\n\n```bash\ncurl -X POST 'https://rnote.dev/api/v2/pgy/keyword/related'       -H 'X-API-Key: sk-你的Key' -H 'Content-Type: application/json'       -d '{\"search_word\": \"面膜\"}'\n```\n\n返回的 `upSearchWords[]`（上游词）与 `downSearchWords[]`（下游词）\n就是扩词的种子，拿去逐个跑 `/keyword/stat` 比热度。","operationId":"keyword_related_api_v2_pgy_keyword_related_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeywordReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/api/v1/account/me":{"get":{"tags":["账号自助查询"],"summary":"获取当前账号信息","description":"当前 API Key 所属账号的基本信息。\n\n邮箱按 `a***@gmail.com` 脱敏返回：前缀 + 域名足够你核对绑的哪个号，\n而完整邮箱对拿到泄露 Key 的人是一份可直接用于钓鱼的资产。","operationId":"get_me_api_v1_account_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"API Key":[]}]}},"/api/v1/account/balance":{"get":{"tags":["账号自助查询"],"summary":"查询账户余额","description":"账户余额与累计充值 / 消费。\n\n金额一律是**字符串**（数据库为 Numeric(12,6)，走浮点会丢精度）。\n不做缓存 —— 充值到账后必须立刻可见。","operationId":"get_balance_api_v1_account_balance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"API Key":[]}]}},"/api/v1/account/key":{"get":{"tags":["账号自助查询"],"summary":"查询当前 API Key 信息","description":"**当次请求所用的这把** API Key 的元信息。\n\n不返回明文，也不列出你的其他 Key。","operationId":"get_current_key_api_v1_account_key_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"API Key":[]}]}},"/api/v1/account/pricing":{"get":{"tags":["账号自助查询"],"summary":"查询接口价目表（含个人折后价）","description":"接口价目表，并附上 `your_price` —— 你实际会被扣的单价。\n\n`your_price` 与计费中间件同口径（微美元整数地板除），所以能直接用来算成本。\n公开的 `/api/public/pricing` 只有牌价，不含折扣。","operationId":"get_pricing_api_v1_account_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"API Key":[]}]}},"/api/public/pricing":{"get":{"tags":["公开接口"],"summary":"Public Pricing Api","description":"公开定价列表 (无需认证)，返回牌价；个人折后价见 GET /api/v1/account/pricing。\n\n这个端点在 `_PUBLIC_PREFIXES` 里 —— 中间件对它**直接放行**，不做鉴权也不做限流。\n所以两道防护必须自己带（doc37 §二 坑 3）：\n  1. 走共享 service → 命中 30s Redis 缓存，不再每次真查库\n  2. per-IP 限流 → 免鉴权端点否则等于给所有人开了一个免费打库的口子\n限流 fail-open：Redis 抖动时不该让公开价目表整个不可用。","operationId":"public_pricing_api_api_public_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"tags":["系统"],"summary":"Health Check","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"BloggerAttrFilter":{"properties":{"content_tag":{"anyOf":[{"items":{"type":"string","maxLength":64},"type":"array","maxItems":30},{"type":"null"}],"title":"Content Tag","description":"「博主类目」：填类目名（裸名）。取值查 `/blogger/filter-options` 的 **contentTags** —— 一级 28 个填 `taxonomy1Tag`，二级 120 个填 `taxonomy2Tags[]` 里的名字。**一级名和二级名可以混在同一个数组里**，多个之间是「或」；某个类目要「全部」就填它的一级名，**不要展开成它的全部二级名**（有些博主只挂一级、没有二级标签，展开会漏掉他们）。填错的名字不报错、静默返回 0 条，务必从字典里原样复制。注意与「行业」(flags.industry_first) 不是同一套分类","examples":[["美妆","面部保养","面部清洁"]]},"personal_tags":{"anyOf":[{"items":{"type":"string","maxLength":64},"type":"array","maxItems":30},{"type":"null"}],"title":"Personal Tags","description":"「博主人设」：填 `/blogger/filter-options` 里 personalTagsV2 的 `tagName`（裸名）。这是三层树（家庭身份/职业身份/特色背景 → 分组 → 叶子），**三层任意一层都能填、可以混填**，多个之间是「或」；想要整组就填那一组的名字，不用把叶子一个个列出来（实测：一级 `职业身份`=91 条，二级 `互联网`=8 条，叶子 `妈妈`=31 条）","examples":[["职业身份","妈妈"]]},"feature_tags":{"anyOf":[{"items":{"type":"string","maxLength":64},"type":"array","maxItems":30},{"type":"null"}],"title":"Feature Tags","description":"「擅长内容」：填 `/blogger/filter-options` 里 featureTags 的名字（裸名）。**一级（形式/风格/生活方式/肤质肤色/皮肤养护）和二级（如 vlog / 韩系）都能填、可混填**，多个之间是「或」；填一级就是那一组全要","examples":[["风格","vlog"]]},"content_theme":{"anyOf":[{"items":{"type":"string","maxLength":64},"type":"array","maxItems":30},{"type":"null"}],"title":"Content Theme","description":"「内容题材」：填 `/blogger/filter-options` 里 contentTheme 的**一级 label**（如 汽车特色 / 通用）。注意只支持一级，填子项 label 或 id 查不到结果","examples":[["汽车特色"]]},"audience20":{"anyOf":[{"items":{"type":"string","maxLength":64},"type":"array","maxItems":30},{"type":"null"}],"title":"Audience20","description":"「二十大人群」：**不是扁平裸名**。一级填名字即可（如 `自在户外`，= 整个人群）；**二级必须写成 `\"一级 一级-二级\"`**（如 `\"自在户外 自在户外-挑战极限者\"`）—— 一级名要出现两次。**照字典里的二级 label 直接填（如 `挑战极限者`）会静默返回 0 条**。一级与复合二级可以混在同一个数组里，多个之间是「或」。全量见 `/blogger/filter-options` 的 audience20（19 个一级 / 121 个二级）","examples":[["自由畅行","自在户外 自在户外-挑战极限者"]]},"industry_crowd":{"anyOf":[{"items":{"type":"string","maxLength":64},"type":"array","maxItems":30},{"type":"null"}],"title":"Industry Crowd","description":"「行业特色画像」：填 `/blogger/filter-options` 里 automotiveIndustryTag **最深层叶子的 value**（数字字符串 ID，如 15795914，共 1600+ 个）。填 label 或中间层 id 均无结果","examples":[["15795914"]]},"consumer_behavior":{"anyOf":[{"items":{"type":"string","maxLength":64},"type":"array","maxItems":30},{"type":"null"}],"title":"Consumer Behavior","description":"「预估消费行为」：**必须填含根节点的空格全路径**（如 `\"内容行为预估 汽车\"`），路径可停在任意深度。取值查 `/blogger/filter-options` 的 **consumerBehavior**（5 层树）。⚠️ **填裸的叶子名不会报错、也不会返回 0 条，而是整个筛选被静默忽略** —— 实测 `[\"保时捷911\"]` 与 `[\"zzz不存在zzz\"]` 都返回未经筛选的全量结果，只有全路径写法才真的生效（`[\"内容行为预估 汽车\"]` 才筛出 54 条）。用它时请对比加/不加该筛选两次请求的 total 确认真的筛上了。另：该字典按账号灰度，部分账号取到 null 则用不了","examples":[["内容行为预估 汽车"]]},"note_scene":{"anyOf":[{"items":{"type":"string","maxLength":64},"type":"array","maxItems":30},{"type":"null"}],"title":"Note Scene","description":"「笔记类目」：填**含根节点的空格全路径**（一级 二级 三级 四级），如 \"汽车 理性决策 选车攻略 政策\"。取值查 `/blogger/filter-options` 的 **contentScenes**","examples":[["汽车 理性决策 选车攻略 政策"]]},"gender":{"anyOf":[{"type":"string","enum":["男","女"]},{"type":"null"}],"title":"Gender","description":"「性别」：男 / 女（填中文，不是数字）","examples":["女"]},"location":{"anyOf":[{"items":{"type":"string","maxLength":64},"type":"array","maxItems":30},{"type":"null"}],"title":"Location","description":"「地域」：博主所在地。**直接填地名即可**，省/市/区县任意层级都行、可混填 —— `[\"上海\"]`、`[\"杭州\"]`、`[\"上城区\"]` 都可以，多个之间是「或」。选整个省就填省名，**不用展开成它下面所有的市**。也可以填完整路径（如 `\"中国 浙江 杭州\"`），我们会自动转成地名。**地名写错不报错、只返回 0 条**，请从字典里原样复制。可选地名见 `/blogger/filter-options` 的 **areas**（到区县）","examples":[["上海","杭州"]]},"signed":{"anyOf":[{"type":"integer","enum":[-1,0,1]},{"type":"null"}],"title":"Signed","description":"「签约情况」：-1=不限 0=个人博主 1=机构博主","examples":[0]}},"additionalProperties":false,"type":"object","title":"BloggerAttrFilter","description":"博主属性：类目、人设、擅长内容、人群画像、性别、地域、签约情况等。\n\n带层级的选项（类目/人设/擅长内容/内容题材/二十大人群/行业特色画像/预估消费行为）\n先调 `/api/v2/pgy/blogger/filter-options` 取值，各字段说明里写了该取哪一层。"},"BloggerListReq":{"properties":{"page_num":{"type":"integer","maximum":250.0,"minimum":1.0,"title":"Page Num","description":"页码，从 1 开始；最多翻到第 250 页（上游只放出前 5000 条）","default":1,"examples":[1]},"page_size":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Page Size","description":"每页数量，1-20（蒲公英网页固定 20，不可更大）。**建议保持 20**：蒲公英会对当页结果做二次过滤，取太小可能整页被过滤成 0 条","default":20,"examples":[20]},"brand_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand User Id","description":"品牌方/广告主用户ID；带上后按该品牌维度做个性化推荐与已合作标记。可不填","examples":["5dcfa5370000000001006030"]},"keyword":{"type":"string","maxLength":50,"title":"Keyword","description":"搜索词；空=只筛选不搜索","default":"","examples":["咖啡"]},"search_type":{"type":"integer","enum":[0,1],"title":"Search Type","description":"搜索方式：`1`=搜笔记（按笔记关键词找博主，网页「搜笔记」）`0`=搜昵称（网页「搜昵称」）","default":1,"examples":[1]},"column":{"type":"string","enum":["comprehensiverank","fansCount","clickNum","mEngagementNum","price","accumCommonImpMedinNum30d","accumPicCommonImpMedinNum30d","accumVideoCommonImpMedinNum30d","pictureClickMidNum","videoClickMidNum","pictureInterMidNum","videoInterMidNum","thousandLikePercent30","pictureThousandLikePercent30","videoThousandLikePercent30","hundredLikePercent30","pictureHundredLikePercent30","videoHundredLikePercent30","videoFinishRate","accumCoopImpMedinNum30d","readMidCoop30","interMidCoop30","mCpuvNum30d","picturePrice","videoPrice","pictureReadCost","videoReadCost","inviteReply48hNumRatio","fans30GrowthRate","fansActiveIn28dLv","fansEngageNum30dLv","kliveCnt30d","avgLiveViewerNum","avgAgmv90d"],"title":"Column","description":"排序字段（网页结果列表表头）：`comprehensiverank`=智能排序(默认) `fansCount`=粉丝数 `clickNum`=阅读中位数(日常) `mEngagementNum`=互动中位数(日常) `price`=全部报价","default":"comprehensiverank","examples":["comprehensiverank"]},"sort":{"type":"string","enum":["desc","asc"],"title":"Sort","description":"排序方向：`desc` 降序 / `asc` 升序","default":"desc","examples":["desc"]},"similar_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Similar User Id","description":"「找相似博主」：给一个博主的 userId，返回与他相似的博主。对应网页博主卡片上的「找相似」——它走的是**本接口**（同一个请求体），可以和其它筛选叠加使用；`/blogger/similar` 是另一条链路，只按相似度返回、不支持筛选，两者按需选","examples":["5a8cf39111be10466d285d6b"]},"similar_word":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Similar Word","description":"配合 similar_user_id：该博主的昵称，仅用于回显。上游按 similar_user_id 取相似，这个字段不影响结果，但网页两个一起发，建议照做"},"goal":{"anyOf":[{"$ref":"#/components/schemas/GoalFilter"},{"type":"null"}],"description":"合作目标筛选（网页「合作目标」区：营销目标 + 人群目标）"},"blogger":{"anyOf":[{"$ref":"#/components/schemas/BloggerAttrFilter"},{"type":"null"}],"description":"博主属性筛选（网页「博主类目/博主人设/博主信息」区）"},"fans":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__FansFilter"},{"type":"null"}],"description":"粉丝画像筛选（网页「粉丝画像」区）"},"note":{"anyOf":[{"$ref":"#/components/schemas/NoteFilter"},{"type":"null"}],"description":"日常笔记数据筛选（网页「日常笔记」区）"},"coop":{"anyOf":[{"$ref":"#/components/schemas/CoopFilter"},{"type":"null"}],"description":"合作笔记数据筛选（网页「合作笔记」区）"},"live":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__LiveFilter"},{"type":"null"}],"description":"直播数据筛选（网页「直播数据」区）"},"flags":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__FlagFilter"},{"type":"null"}],"description":"开关类筛选（网页「平台推荐」「常规剔除」区）"}},"additionalProperties":false,"type":"object","title":"BloggerListReq","description":"找博主搜索：分页/排序/关键词 + 6 组筛选（对应网页筛选面板的 6 个分区）。"},"BuyerFilter":{"properties":{"group_tag":{"anyOf":[{"items":{"type":"string","maxLength":64},"type":"array","maxItems":30},{"type":"null"}],"title":"Group Tag","description":"买手天团标签，如 气质简约（时尚风格/适配身型/美护专研/运动爱好 各组的叶子）。取值参考页面的「买手天团」下拉"},"persona_tag":{"anyOf":[{"items":{"type":"string","maxLength":64},"type":"array","maxItems":30},{"type":"null"}],"title":"Persona Tag","description":"内容人设标签，如 模特（职业身份/家庭角色/特色背景/形式/生活方式/肤质特色/皮肤养护/身材特色 各组的叶子）。取值参考页面的「内容人设」下拉"}},"additionalProperties":false,"type":"object","title":"BuyerFilter","description":"网页「买手天团」+「内容人设」区。"},"CategoryFilter":{"properties":{"first":{"anyOf":[{"items":{"type":"string","maxLength":64},"type":"array","maxItems":30},{"type":"null"}],"title":"First","description":"合作品类一级，如 女装/女士精品。取值参考蒲公英「直播博主广场」页的「合作品类」；**单传一级即可用**"},"second":{"anyOf":[{"items":{"type":"string","maxLength":64},"type":"array","maxItems":200},{"type":"null"}],"title":"Second","description":"合作品类二级，如 连衣裙。可留空，只按一级筛同样有效"}},"additionalProperties":false,"type":"object","title":"CategoryFilter","description":"网页「合作品类」区（一级 + 二级，二级需与一级配套）。"},"ContentSquareReq":{"properties":{"biz_type":{"type":"integer","enum":[1,2,3,4,5,6,7,8],"title":"Biz Type","description":"榜单：1=小红书热门 2=产品种草 3=电商推广 4=蒲公英合作 5=客资收集 6=电商热门 7=种草直达 8=应用推广"},"page_num":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Page Num","description":"页码，从 1 开始；每个榜固定只有 100 条，翻不到更后面","default":1},"page_size":{"type":"integer","maximum":34.0,"minimum":1.0,"title":"Page Size","description":"每页数量，1-34（蒲公英网页固定 34，不可更大）","default":34},"search_word":{"type":"string","maxLength":100,"title":"Search Word","description":"关键词，留空=看整榜；支持英文逗号分隔批量搜","default":""},"order_by":{"type":"string","maxLength":64,"title":"Order By","description":"排序字段，留空=用该榜默认排序；取值见文档「排序」表","default":""},"date_range":{"type":"integer","enum":[3,7,14,30],"title":"Date Range","description":"统计窗口：近 3 / 7 / 14 / 30 日","default":7},"sub_biz_type":{"anyOf":[{"type":"integer","enum":[1,2,3]},{"type":"null"}],"title":"Sub Biz Type","description":"【仅榜 8】应用唤起口径：1=应用下载 2=小程序推广 3=应用唤起（默认）"},"category":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Category","description":"【仅榜 1】类目，格式「一级#二级」，一级只能是 内容类目 或 所属行业，如 \"内容类目#美妆\""},"industry":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Industry","description":"【榜 2/3/4/5/6/7/8】所属行业名，取值集因榜而异，见文档"},"note_type":{"anyOf":[{"type":"integer","enum":[1,2]},{"type":"null"}],"title":"Note Type","description":"内容类型：1=图文 2=视频"},"content_type":{"anyOf":[{"type":"integer","enum":[1,2,3,5,6,11,-1]},{"type":"null"}],"title":"Content Type","description":"内容来源：1=博主合作 2=明星合作 3=员工 5=买手 6=专业号 11=主理人 -1=用户"},"theme":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Theme","description":"【榜 2/4/5/7/8】题材名，如 开箱"},"author_type":{"anyOf":[{"type":"integer","enum":[1,2]},{"type":"null"}],"title":"Author Type","description":"【仅榜 4】创作者类型：1=蒲公英博主 2=明星"},"placement":{"anyOf":[{"type":"integer","enum":[1,2,3]},{"type":"null"}],"title":"Placement","description":"【榜 2/3/5/7/8】流量场域：1=发现 2=搜索 3=视频内流"},"marketing_target":{"anyOf":[{"type":"integer","enum":[3,8]},{"type":"null"}],"title":"Marketing Target","description":"【仅榜 3】营销目标：3=商品推广 8=直播推广"},"price":{"anyOf":[{"$ref":"#/components/schemas/PriceFilter"},{"type":"null"}],"description":"【仅榜 4】创作者报价"},"fans":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_content_filters__RangeFilter"},{"type":"null"}],"description":"【仅榜 4】创作者粉丝量区间"}},"additionalProperties":false,"type":"object","required":["biz_type"],"title":"ContentSquareReq","description":"内容广场榜单入参。可用的筛选与排序取决于 `biz_type`，详见端点文档。"},"CoopFilter":{"properties":{"pic_price":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「合作报价」图文笔记一口价（元）"},"video_price":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「合作报价」视频笔记一口价（元）"},"order_count":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「合作订单数」：博主**已接受、尚未完成**的订单数量（单）。注意这是**在手订单**，不是历史累计合作数——想找经验丰富的博主不该用它"},"reply_48h_ratio":{"anyOf":[{"$ref":"#/components/schemas/PercentRange"},{"type":"null"}],"description":"「合作信用度」：48 小时内回复合作邀约的比例。**单位是百分数，填 80 表示 80%**（不是 0.8）","examples":[{"min":80}]},"industry":{"anyOf":[{"type":"string","enum":["不限","美妆个护","食品饮料","母婴","3c及电器","日用百货","服装配饰","互联网","生活服务","家居建材","汽车"]},{"type":"null"}],"title":"Industry","description":"「近期合作行业」","examples":["美妆个护"]},"brand_ids":{"anyOf":[{"items":{"type":"string","maxLength":64},"type":"array","maxItems":20},{"type":"null"}],"title":"Brand Ids","description":"「近期合作品牌」：品牌 userId 列表"},"exclude_brands":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude Brands","description":"配合 brand_ids：true=排除与这些品牌合作过的博主"},"imp_median":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「传播规模」：近 30 日**合作笔记**处于中间位置的曝光量（次）。与 note.imp_median 的区别是这里只统计商业合作笔记"},"read_median":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「传播规模」：近 30 日**合作笔记**处于中间位置的阅读量（次）"},"inter_median":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「传播规模」：近 30 日**合作笔记**处于中间位置的互动量（次）"},"cpuv":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「传播规模」进店 UV 中位数：近 30 日**跨域**（小红星 / 小红盟等）合作笔记处于中间位置的进店 UV 量。**这是次数不是金额**（网页档位 500~1000 / 1000~2000 / 2000~5000 / 5000~10000 / 1万以上）；想按「每次进店花多少钱」筛请用 estimate_cpuv"},"pic_cpm":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「预估CPM」图文：每千次曝光成本。**单位元，量级 10~50**（网页档位 10以下 / 10~20 / 20~30 / 30~50 / 50以上）","examples":[{"max":30}]},"video_cpm":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「预估CPM」视频：每千次曝光成本。**单位元，量级 10~70**（网页档位 10以下 / 10~30 / 30~50 / 50~70 / 70以上）"},"pic_read_price":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「预估阅读单价」图文：每次阅读的成本。**单位元，量级 0.5~2**（网页档位 0.5以下 / 0.5~1.0 / 1.0~1.5 / 1.5~2.0 / 2.0以上）。**务必填小数** —— 按「万」或按「分」填都等于没筛或搜不到","examples":[{"max":1.5}]},"video_read_price":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「预估阅读单价」视频：每次阅读的成本。**单位元，量级 1.5~3**（网页档位 1.5以下 / 1.5~2.0 / 2.0~2.5 / 2.5~3.0 / 3.0以上）"},"pic_engage_cost":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「预估互动单价」图文：每次互动的成本。**单位元，量级 0.5~3**（网页档位 0.5以下 / 0.5~1.0 / 1.0~2.0 / 2.0~3.0 / 3.0以上）"},"video_engage_cost":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「预估互动单价」视频：每次互动的成本。**单位元，量级 1~4**（网页档位 1.0以下 / 1.0~2.0 / 2.0~3.0 / 3.0~4.0 / 4.0以上）"},"estimate_cpuv":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「外溢进店单价」：结合近 30 日**跨域**（小红星 / 小红盟等）合作笔记的价格与跨域进店 UV 估算出的单位进店成本。**单位元，量级 0.5~4**（网页档位 0.5以下 / 0.5~1.0 / 1.0~1.5 / 1.5~2.5 / 2.5~4.0）"}},"additionalProperties":false,"type":"object","title":"CoopFilter","description":"合作笔记 —— 网页「合作笔记」区（合作表现 + 数据表现）。"},"CoreDataReq":{"properties":{"user_id":{"type":"string","title":"User Id","description":"博主用户ID","examples":["5c668b3e0000000012021605"]},"business":{"type":"integer","enum":[0,1],"title":"Business","description":"「日常笔记 / 合作笔记」页签：`0`=日常笔记（默认）`1`=合作笔记","default":0,"examples":[1]},"note_type":{"type":"integer","enum":[1,2,3],"title":"Note Type","description":"笔记类型：`3`=图文+视频（默认）`1`=图文 `2`=视频","default":3,"examples":[3]},"date_type":{"type":"integer","enum":[1,2],"title":"Date Type","description":"统计时间范围：`1`=近30日（默认）`2`=近90日","default":1,"examples":[1]},"advertise_switch":{"type":"integer","enum":[0,1],"title":"Advertise Switch","description":"流量类型：`1`=全部流量（默认）`0`=仅自然流量","default":1,"examples":[1]}},"additionalProperties":false,"type":"object","required":["user_id"],"title":"CoreDataReq","description":"核心指标趋势查询：对应网页「笔记数据 → 核心指标」趋势图上方的控件。"},"DataSummaryReq":{"properties":{"user_id":{"type":"string","title":"User Id","description":"博主用户ID","examples":["5c668b3e0000000012021605"]},"business":{"type":"integer","enum":[0,1],"title":"Business","description":"「日常笔记 / 合作笔记」口径：`0`=日常笔记（默认）`1`=合作笔记；影响成本与报价预估","default":0,"examples":[1]}},"additionalProperties":false,"type":"object","required":["user_id"],"title":"DataSummaryReq","description":"数据概览查询。"},"EcomFilter":{"properties":{"avg_gmv":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_live_filters__RangeFilter"},{"type":"null"}],"description":"场均销售额（元）"},"brand_avg_gmv":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_live_filters__RangeFilter"},{"type":"null"}],"description":"合作品牌场均销售额（元）"},"atv":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_live_filters__RangeFilter"},{"type":"null"}],"description":"客单价（元）。按**档位**匹配（0-100 / 100-200 / 200-500 …），与你给的区间有重叠的档位都会命中 —— 传 100~300 也会返回 200-500 档的买手"}},"additionalProperties":false,"type":"object","title":"EcomFilter","description":"网页「电商转化力」区。"},"FansHistoryReq":{"properties":{"user_id":{"type":"string","title":"User Id","description":"博主用户ID","examples":["5c668b3e0000000012021605"]},"increase_type":{"type":"integer","enum":[1,2],"title":"Increase Type","description":"「粉丝总量 / 粉丝增量」页签：`1`=粉丝总量（累计粉丝数曲线，默认，与网页一致）`2`=粉丝增量（每日新增曲线）","default":1,"examples":[1]},"date_type":{"type":"integer","enum":[1,2],"title":"Date Type","description":"统计时间范围：`1`=近30日（默认）`2`=近60日","default":1,"examples":[1]}},"additionalProperties":false,"type":"object","required":["user_id"],"title":"FansHistoryReq","description":"粉丝增长趋势查询：对应网页「粉丝分析 → 粉丝趋势」的两个控件。"},"GoalFilter":{"properties":{"market_target":{"anyOf":[{"type":"string","enum":["estimateAllCpm","mAccumImpNum","readCost","mValidRawReadFeedNum","estimateEngageCost","mEngagementNum90d","estimateCpuv","mCpuvNum"]},{"type":"null"}],"title":"Market Target","description":"「营销目标」：网页上是三级选择（目标 → 指标 → 统计方式），填最终叶子码 —— `estimateAllCpm` 曝光/曝光表现/成本、`mAccumImpNum` 曝光/曝光表现/规模、`readCost` 曝光/阅读表现/成本、`mValidRawReadFeedNum` 曝光/阅读表现/规模、`estimateEngageCost` 种草/互动表现/成本、`mEngagementNum90d` 种草/互动表现/规模、`estimateCpuv` 转化/外溢进店表现/成本、`mCpuvNum` 转化/外溢进店表现/规模","examples":["mAccumImpNum"]}},"additionalProperties":false,"type":"object","title":"GoalFilter","description":"合作目标：按营销目标（曝光 / 种草 / 转化）匹配博主。\n\n想按粉丝人群圈博主，用 `BloggerAttrFilter.audience20`（二十大人群）。"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"KeywordReq":{"properties":{"search_word":{"type":"string","maxLength":100,"minLength":1,"title":"Search Word","description":"关键词，如 面膜"}},"additionalProperties":false,"type":"object","required":["search_word"],"title":"KeywordReq"},"LiveBloggerReq":{"properties":{"page_num":{"type":"integer","maximum":250.0,"minimum":1.0,"title":"Page Num","description":"页码，从 1 开始；蒲公英最多翻到第 250 页","default":1,"examples":[1]},"page_size":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Page Size","description":"每页数量，1-20（蒲公英网页固定 20，不可更大）","default":20,"examples":[20]},"seed":{"type":"integer","minimum":0.0,"title":"Seed","description":"翻页种子：**第一页传 0，之后把上一页返回的 `seed` 原样带上**，否则各页可能重复/遗漏","default":0,"examples":[0]},"nick_name":{"type":"string","maxLength":50,"title":"Nick Name","description":"按博主昵称搜索；留空=只按筛选条件查","default":"","examples":["李"]},"category":{"anyOf":[{"$ref":"#/components/schemas/CategoryFilter"},{"type":"null"}],"description":"合作品类（网页「合作品类」区）"},"buyer":{"anyOf":[{"$ref":"#/components/schemas/BuyerFilter"},{"type":"null"}],"description":"买手天团 + 内容人设（网页「买手天团」「内容人设」区）"},"ecom":{"anyOf":[{"$ref":"#/components/schemas/EcomFilter"},{"type":"null"}],"description":"电商转化力（网页「电商转化力」区）"},"live":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_live_filters__LiveFilter"},{"type":"null"}],"description":"直播投入度 + 表现力（网页「直播投入度」「直播表现力」区）"},"fans":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_live_filters__FansFilter"},{"type":"null"}],"description":"粉丝购买力（网页「粉丝购买力」区）"},"flags":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_live_filters__FlagFilter"},{"type":"null"}],"description":"精选博主开关（网页「平台推荐」区）"}},"additionalProperties":false,"type":"object","title":"LiveBloggerReq","description":"直播博主广场搜索：分页 + 6 组筛选（对应网页「直播博主广场」筛选面板）。"},"NoteDetailReq":{"properties":{"note_id":{"type":"string","title":"Note Id","description":"笔记ID","examples":["6a20edfa0000000021020951"]}},"type":"object","required":["note_id"],"title":"NoteDetailReq"},"NoteFilter":{"properties":{"imp_median":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「曝光中位数」：近 30 日**日常笔记**处于中间位置的曝光量（次）","examples":[{"min":10000}]},"read_median":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「阅读中位数」：近 30 日**日常笔记**处于中间位置的阅读量（次）"},"inter_median":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「互动中位数」：近 30 日**日常笔记**处于中间位置的互动量（次）。互动 = 点赞 + 收藏 + 评论 + 分享 + 关注"},"thousand_like_percent":{"anyOf":[{"$ref":"#/components/schemas/PercentRange"},{"type":"null"}],"description":"「千赞笔记比例」：近 30 日发布的日常笔记里，点赞量 ≥1000 的笔记占比。**单位是百分数，填 20 表示 20%**（不是 0.2）","examples":[{"min":20}]},"note_type":{"anyOf":[{"type":"integer","enum":[0,1,2]},{"type":"null"}],"title":"Note Type","description":"「笔记类型」：0=不限 1=图文笔记为主 2=视频笔记为主","examples":[2]}},"additionalProperties":false,"type":"object","title":"NoteFilter","description":"日常笔记数据 —— 网页「日常笔记」区（近 30 天自然流量表现）。"},"NotesRateReq":{"properties":{"user_id":{"type":"string","title":"User Id","description":"博主用户ID","examples":["5c668b3e0000000012021605"]},"business":{"type":"integer","enum":[0,1],"title":"Business","description":"「日常笔记 / 合作笔记」页签：`0`=日常笔记（默认）`1`=合作笔记","default":0,"examples":[1]},"note_type":{"type":"integer","enum":[1,2,3],"title":"Note Type","description":"笔记类型：`3`=图文+视频（默认）`1`=图文 `2`=视频","default":3,"examples":[3]},"date_type":{"type":"integer","enum":[1,2],"title":"Date Type","description":"统计时间范围：`1`=近30日（默认）`2`=近90日","default":1,"examples":[1]},"advertise_switch":{"type":"integer","enum":[0,1],"title":"Advertise Switch","description":"流量类型：`1`=全部流量（默认）`0`=仅自然流量","default":1,"examples":[1]}},"additionalProperties":false,"type":"object","required":["user_id"],"title":"NotesRateReq","description":"数据表现查询：对应网页「笔记数据 → 数据表现」那一行的控件。"},"NotesReq":{"properties":{"user_id":{"type":"string","title":"User Id","description":"博主用户ID","examples":["5c668b3e0000000012021605"]},"page_number":{"type":"integer","maximum":1000.0,"minimum":1.0,"title":"Page Number","description":"页码，从 1 开始","default":1,"examples":[1]},"page_size":{"type":"integer","maximum":8.0,"minimum":1.0,"title":"Page Size","description":"每页数量，1-8（蒲公英网页固定 8，不可更大）","default":8,"examples":[8]},"note_type":{"type":"integer","enum":[1,2,3,4],"title":"Note Type","description":"「按笔记类型」：`4`=全部类型（默认，与网页一致）`3`=**合作笔记** `1`=图文笔记 `2`=视频笔记","default":4,"examples":[3]},"order_type":{"type":"integer","enum":[1,2,3],"title":"Order Type","description":"排序：`1`=最新发布（默认）`2`=阅读最多 `3`=互动最多","default":1,"examples":[1]},"advertise_switch":{"type":"integer","enum":[0,1],"title":"Advertise Switch","description":"「流量类型」：`1`=全部流量（默认）`0`=仅自然流量","default":1,"examples":[1]},"feature_tag":{"type":"string","maxLength":64,"title":"Feature Tag","description":"「按内容特征」：博主的内容特征标签，如 `韩系`；取值见 `/blogger/detail` 返回的 `featureTags`","default":"","examples":["韩系"]},"content_tag":{"type":"string","maxLength":64,"title":"Content Tag","description":"「按内容类目」：博主的内容类目，如 `美妆`；取值见 `/blogger/detail` 返回的 `contentTags`","default":"","examples":["美妆"]},"is_third_platform":{"type":"integer","enum":[0,1],"title":"Is Third Platform","description":"「仅展示跨域合作笔记」：`1`=只看跨域合作笔记，`0`=不限（默认）","default":0,"examples":[0]}},"additionalProperties":false,"type":"object","required":["user_id"],"title":"NotesReq","description":"笔记案例查询：对应网页「笔记数据 → 笔记案例」的全部筛选。"},"NotesV2Req":{"properties":{"user_id":{"type":"string","title":"User Id","description":"博主用户ID","examples":["5c668b3e0000000012021605"]},"page_number":{"type":"integer","maximum":1000.0,"minimum":1.0,"title":"Page Number","description":"页码，从 1 开始","default":1,"examples":[1]},"page_size":{"type":"integer","maximum":8.0,"minimum":1.0,"title":"Page Size","description":"每页数量，1-8（蒲公英网页固定 8，不可更大）","default":8,"examples":[8]},"note_type":{"type":"integer","enum":[0,1,2],"title":"Note Type","description":"「按笔记类型」：`0`=全部类型（默认）`1`=图文笔记 `2`=视频笔记","default":0,"examples":[0]},"order_type":{"type":"integer","enum":[1,2,3],"title":"Order Type","description":"排序：`1`=最新发布（默认）`2`=阅读最多 `3`=互动最多","default":1,"examples":[1]}},"additionalProperties":false,"type":"object","required":["user_id"],"title":"NotesV2Req","description":"笔记案例 v2 查询：覆盖范围更广（含跨域/跨平台笔记）的博主笔记案例。"},"PercentRange":{"properties":{"min":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Min","description":"最小值（含），百分点 0~100","examples":[20]},"max":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Max","description":"最大值（含），百分点 0~100；省略=不限"}},"additionalProperties":false,"type":"object","title":"PercentRange","description":"百分数区间：按 0~100 的百分点填，`40` 表示 40%（**不是 0.4**）。\n\n口径来自网页自己：千赞笔记比例的档位在 bundle 里写作 `{\"40%以上\": [40, null]}`、\n`{\"10%以下\": [null, 10]}` —— 发给上游的就是 40 / 10。\n\n**这个类能拦住什么、拦不住什么，说清楚免得误会**：\n* 拦得住「量纲大了」——填 200、9500（按万分比或原始条数填）会 422，\n  而通用 RangeFilter 的上限是 1e12，这类值原来是直接放行的。\n* **拦不住「量纲小了」**——填 0.4 仍然合法，因为 0.4% 本身是个正当取值，\n  没法靠类型区分「他想写 40% 却写成了 0.4」和「他真的要筛 0.4%」。\n  这个方向只能靠字段说明和 examples 讲清楚（两个字段都写了「填 20 表示 20%」）。"},"PriceFilter":{"properties":{"kind":{"type":"integer","enum":[1,2],"title":"Kind","description":"报价口径：1=图文笔记 2=视频笔记"},"range":{"$ref":"#/components/schemas/api__routers__pgy_content_filters__RangeFilter","description":"报价区间（元）"}},"additionalProperties":false,"type":"object","required":["kind","range"],"title":"PriceFilter","description":"网页「创作者报价」：图文和视频是两个独立口径，必须先选一个。"},"SimilarReq":{"properties":{"user_id":{"type":"string","title":"User Id","description":"目标博主用户ID，返回与其相似的博主","examples":["5c668b3e0000000012021605"]},"page_num":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Page Num","description":"页码，从 1 开始","default":1,"examples":[1]},"page_size":{"type":"integer","maximum":4.0,"minimum":1.0,"title":"Page Size","description":"每页数量，1-4（蒲公英网页固定 4，不可更大）","default":4,"examples":[4]}},"additionalProperties":false,"type":"object","required":["user_id"],"title":"SimilarReq"},"TopicInfoRequest":{"properties":{"page_id":{"type":"string","title":"Page Id"},"source":{"type":"string","title":"Source","default":"normal"},"note_id":{"type":"string","title":"Note Id","default":""}},"type":"object","required":["page_id"],"title":"TopicInfoRequest","description":"话题详情请求"},"UserIdReq":{"properties":{"user_id":{"type":"string","title":"User Id","description":"博主用户ID","examples":["5c668b3e0000000012021605"]}},"type":"object","required":["user_id"],"title":"UserIdReq"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"api__routers__pgy_content_filters__RangeFilter":{"properties":{"min":{"anyOf":[{"type":"integer","maximum":9999999.0,"minimum":0.0},{"type":"null"}],"title":"Min","description":"最小值（含）"},"max":{"anyOf":[{"type":"integer","maximum":9999999.0,"minimum":0.0},{"type":"null"}],"title":"Max","description":"最大值（含）；省略=不限"}},"additionalProperties":false,"type":"object","title":"RangeFilter","description":"数值区间。两端可省略其一，至少给一个。"},"api__routers__pgy_filters__FansFilter":{"properties":{"count":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「粉丝量」区间"},"age":{"anyOf":[{"type":"integer","enum":[0,1,2,3,4,5]},{"type":"null"}],"title":"Age","description":"「粉丝年龄」：0=不限 1=<18 2=18~24 3=25~34 4=35~44 5=>44 占比高","examples":[3]},"gender":{"anyOf":[{"type":"integer","enum":[0,1,2]},{"type":"null"}],"title":"Gender","description":"「粉丝性别」：0=不限 1=男性占比高 2=女性占比高","examples":[2]},"marital_status":{"anyOf":[{"type":"integer","enum":[-1,0,1]},{"type":"null"}],"title":"Marital Status","description":"「婚恋状态」：-1=不限 0=未婚 1=已婚"},"consumption_level":{"anyOf":[{"type":"integer","enum":[-1,0,1,2]},{"type":"null"}],"title":"Consumption Level","description":"「消费水平」：-1=不限 0=低消费 1=中消费 2=高消费"},"child_age":{"anyOf":[{"items":{"type":"integer","enum":[0,2,3,4,5,6,7,8]},"type":"array","maxItems":30},{"type":"null"}],"title":"Child Age","description":"「母婴阶段」：0=备孕 2=0-6月 3=7-12月 4=1-3岁 5=4-6岁 6=7-12岁 7=孕早期 8=孕晚期"},"device_price":{"anyOf":[{"items":{"type":"string","enum":["0-999","1000-1999","2000-2999","3000-3999","4000-4999","5000-5999","6000-6999","7000-7999","8000+"]},"type":"array","maxItems":30},{"type":"null"}],"title":"Device Price","description":"「手机价格」档位，如 3000-3999 / 8000+","examples":[["3000-3999"]]},"device_brand":{"anyOf":[{"items":{"type":"string","enum":["苹果","华为","OPPO","VIVO","荣耀","小米","一加","魅族","中兴","联想"]},"type":"array","maxItems":30},{"type":"null"}],"title":"Device Brand","description":"「手机品牌」","examples":[["苹果"]]},"location":{"anyOf":[{"items":{"type":"string","maxLength":64},"type":"array","maxItems":30},{"type":"null"}],"title":"Location","description":"「粉丝地域」：粉丝所在地。**直接填地名即可**（`[\"浙江\"]`、`[\"杭州\"]`），省和市可混填，多个之间是「或」；选整个省就填省名，**不用展开成它下面所有的市**。我们会自动补成上游要的完整路径（`浙江`→`中国 浙江`、`杭州`→`中国 浙江 杭州`）；省市同名的（如 `吉林`）会同时按省和市两条发出，也是「或」。也可以自己填完整路径 `\"中国 浙江 杭州\"`。**地名写错不报错、只返回 0 条**（`浙江省` 多一个「省」字就查不到）。注意这棵树**只到市**（没有区县），可选地名见 `/blogger/filter-options` 的 **fansAreas**","examples":[["浙江","杭州"]]}},"additionalProperties":false,"type":"object","title":"FansFilter","description":"粉丝画像 —— 网页「粉丝画像」区（粉丝量 / 年龄 / 性别 / 地域 / 婚恋 / 消费 / 母婴 / 手机）。"},"api__routers__pgy_filters__FlagFilter":{"properties":{"is_star":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Star","description":"「明星」：只看明星博主"},"new_high_quality":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"New High Quality","description":"「新锐博主」：平台按近期表现推荐的、**暂无商单经验**的高潜力新博主"},"high_quality":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"High Quality","description":"「优质博主」：平台标记的优质博主"},"note_and_live":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Note And Live","description":"「笔记+直播均可合作」：两种合作形式都开放的博主"},"filter_intention":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Filter Intention","description":"「意向行业匹配」：已明确表达与你所在行业合作意向的博主，建联成功率更高"},"activity_codes":{"anyOf":[{"items":{"type":"string","maxLength":64},"type":"array","maxItems":30},{"type":"null"}],"title":"Activity Codes","description":"「热门活动」：填 `/blogger/filter-options` 里 activities 每项的 code"},"exclude_low_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude Low Active","description":"「剔除低活博主」：剔除 App 端活跃天数低或邀约回复率低的博主（难联络）"},"exclude_fans_down":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude Fans Down","description":"「剔除掉粉博主」：剔除近 30 日粉丝量下降的博主"},"exclude_cooperated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude Cooperated","description":"「剔除已合作博主」：剔除近 30 日你的品牌已合作过的博主"},"exclude_invited":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude Invited","description":"「剔除已邀约博主」：剔除近 30 日你的品牌已邀约过的博主"},"industry_first":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Industry First","description":"「行业推荐博主」一级行业名（如 美妆个护）；平台会按该行业推荐专属博主","examples":["美妆个护"]},"industry_second":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Industry Second","description":"「行业推荐博主」二级行业名（配合 industry_first，取 `/blogger/filter-options` 里 industryTags 的 taxonomy2Tags）"}},"additionalProperties":false,"type":"object","title":"FlagFilter","description":"开关类 —— 网页「平台推荐」（精选博主/热门活动）+「常规剔除」（一键剔除）区。"},"api__routers__pgy_filters__LiveFilter":{"properties":{"live_count":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「近30天直播场次」：博主**近 30 天**的直播场次数（场）"},"avg_viewer":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「场均观播人数」：博主**近 90 天**直播的场均观播人数（人）。注意统计窗口是 90 天，与上面的直播场次（30 天）不同"},"avg_gmv":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_filters__RangeFilter"},{"type":"null"}],"description":"「场均销售额」：博主**近 90 天**直播的场均销售额（元）。统计窗口同样是 90 天，与直播场次（30 天）不同"}},"additionalProperties":false,"type":"object","title":"LiveFilter","description":"直播数据 —— 网页「直播数据」区。"},"api__routers__pgy_filters__RangeFilter":{"properties":{"min":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":0.0},{"type":"null"}],"title":"Min","description":"最小值（含）","examples":[10000]},"max":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":0.0},{"type":"null"}],"title":"Max","description":"最大值（含）；省略=不限","examples":[50000]}},"additionalProperties":false,"type":"object","title":"RangeFilter","description":"数值区间，对应网页筛选里的「自定义」输入框。\n\n- 两端都可省略：省略 `min` 视为 0，省略 `max` 视为不限\n- 至少要给一个端点，否则 422\n- ⚠️ `{\"min\": 0}` 等于「不限」（下限本来就是 0），**不是「筛出 0」**；\n  要卡 0 请写 `{\"max\": 0}`\n- 可以填小数 —— 单价类字段的真实量级就是个位数的元，见各字段说明"},"api__routers__pgy_live_filters__FansFilter":{"properties":{"count":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_live_filters__RangeFilter"},{"type":"null"}],"description":"粉丝量"},"age":{"anyOf":[{"type":"integer","enum":[0,1,2,3,4,5]},{"type":"null"}],"title":"Age","description":"粉丝年龄：0=不限 1=<18 2=18-24 3=25-34 4=35-44 5=>44 占比高"},"gender":{"anyOf":[{"type":"integer","enum":[0,1,2]},{"type":"null"}],"title":"Gender","description":"粉丝性别：0=不限 1=男性占比高 2=女性占比高"},"consumption":{"anyOf":[{"items":{"type":"string","enum":["high","middle","low"]},"type":"array","maxItems":3},{"type":"null"}],"title":"Consumption","description":"粉丝消费力：high / middle / low"}},"additionalProperties":false,"type":"object","title":"FansFilter","description":"粉丝购买力：粉丝量、年龄、性别、消费力。"},"api__routers__pgy_live_filters__FlagFilter":{"properties":{"actively_seeking":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Actively Seeking","description":"积极寻求合作中"},"high_reply_rate":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"High Reply Rate","description":"邀约回复率高"},"contact_visible":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Contact Visible","description":"可查看联系方式"},"cooperated_before":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Cooperated Before","description":"商单合作过"},"following":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Following","description":"你关注TA"},"follower":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Follower","description":"TA关注你"},"live_potential_high":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Live Potential High","description":"直播潜力高"},"daily_buyer":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Daily Buyer","description":"日播买手"},"is_star":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Star","description":"明星"}},"additionalProperties":false,"type":"object","title":"FlagFilter","description":"网页「平台推荐 → 精选博主」区（全部为勾选项）。"},"api__routers__pgy_live_filters__LiveFilter":{"properties":{"has_plan":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Plan","description":"有直播计划"},"plan_days":{"anyOf":[{"items":{"type":"string","pattern":"^\\d{8}$"},"type":"array","maxItems":60},{"type":"null"}],"title":"Plan Days","description":"直播计划日期，YYYYMMDD；配合 has_plan 使用，留空=全部时间"},"avg_viewer":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_live_filters__RangeFilter"},{"type":"null"}],"description":"场均观播人数"},"max_online":{"anyOf":[{"$ref":"#/components/schemas/api__routers__pgy_live_filters__RangeFilter"},{"type":"null"}],"description":"在线人数峰值"}},"additionalProperties":false,"type":"object","title":"LiveFilter","description":"网页「直播投入度」+「直播表现力」区。"},"api__routers__pgy_live_filters__RangeFilter":{"properties":{"min":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":0.0},{"type":"null"}],"title":"Min","description":"最小值（含）"},"max":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":0.0},{"type":"null"}],"title":"Max","description":"最大值（含）；省略=不限"}},"additionalProperties":false,"type":"object","title":"RangeFilter","description":"数值区间，对应网页筛选的档位或「自定义」输入框。两端可省略，至少给一个。"}},"securitySchemes":{"API Key":{"type":"apiKey","description":"在此输入 API Key (格式: sk-xxx)，所有 /api/v1/* 接口需要携带","in":"header","name":"X-API-Key"}}}}