给 AI

操作指南

怎么搜索小红书笔记并导出成 CSV 表格

两个接口:先用小红书笔记搜索并按游标翻页,再对需要全文和图片的笔记调小红书笔记详情。下面的示例一共 8 次调用,花费 $0.16;失败的调用不扣费。

更新于

要做的事:想把小红书上某个关键词下的内容整理成一张表格,有哪些笔记、谁写的、数据怎么样,再把其中最突出的几篇的完整正文和图片也拿下来。内容团队拿它给写手做 brief,产品团队拿它看用户怎么描述一个品类,分析师拿它按周追踪一个话题。搜索返回的是笔记卡片,详情返回的是整篇笔记。最后得到一张 CSV:搜索结果里的每篇笔记一行,排名前 5 的笔记再加上全文和所有图片链接。

整个过程不需要小红书账号,不用 Cookie,也不用处理 xsec_token。

分步操作

第一步:搜索,设好排序和类型

调用小红书笔记搜索,query 按用户的搜法写:露营、露营 装备清单、新手露营。有两个参数会改变结果:

  • sort:general(默认,小红书自己的综合排序)、latest(最新)或 popular(最热)。按时间追踪话题用 latest,想看“什么内容效果好”用 popular。
  • type:all(默认)、image(图文笔记)或 video(视频笔记)。

一次调用返回约 20 篇笔记,每次 $0.02。每张卡片有 id、url、type、title、author(昵称和 ID)、published_at、hashtags,以及 metrics:likes、favorites(收藏)、comments 和 shares。搜索卡片上的 text 只是正文开头一小段,images 通常也只有封面。

curl -G "https://api.okdata.online/v1/xiaohongshu/notes/search" \
  -H "Authorization: Bearer $OKDATA_API_KEY" \
  --data-urlencode 'query=露营' \
  --data-urlencode 'sort=latest' \
  --data-urlencode 'type=image'

第二步:翻页

要下一页,就把 page.next_cursor 原样作为 cursor 传回去,query、sort、type 保持不变。page.has_more 为 false 时停,或者够用了就停:每一页都是一次调用。越往后翻,结果离关键词越远,所以窄一点的词(露营 装备清单)翻几页,通常比宽泛的词(露营)翻很多页更有用。

第三步:给留下的笔记拉全文

小红书笔记详情接收 id(也可以用 url 传笔记链接或 xhslink 分享链接),返回整篇笔记,每次 $0.02:完整的 text、images 里的全部图片、hashtags,以及最新的 metrics。视频笔记只给封面图,不含视频文件。

curl -G "https://api.okdata.online/v1/xiaohongshu/notes/get" \
  -H "Authorization: Bearer $OKDATA_API_KEY" \
  --data-urlencode 'id=672a4f1d000000001b03c58e'

只给真正要读的笔记拉详情。搜索卡片上已经有各项数据,所以如果只要一张 60 篇笔记的点赞收藏表,根本不用调详情。

第四步:完整脚本

脚本读三页最新的“露营”图文笔记,挑出收藏最多的 5 篇拉全文,每篇笔记写一行 CSV。

import csv
import os
import requests

API = "https://api.okdata.online"
HEADERS = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
SEARCH_PAGES = 3  # 每页一次调用
FULL_NOTES = 5    # 拉全文的笔记数;每篇一次调用


def get(path, **params):
    body = requests.get(API + path, headers=HEADERS, params=params, timeout=60).json()
    if body["code"] != "ok":
        raise RuntimeError(f"{body['code']}: {body['message']} (charged: {body['charged']})")
    return body


notes, cursor = [], None
for _ in range(SEARCH_PAGES):
    params = {"query": "露营", "sort": "latest", "type": "image", **({"cursor": cursor} if cursor else {})}
    body = get("/v1/xiaohongshu/notes/search", **params)
    notes += body["data"]["items"]
    if not body["page"]["has_more"]:
        break
    cursor = body["page"]["next_cursor"]

notes = list({n["id"]: n for n in notes}.values())  # 去掉跨页重复
top = sorted(notes, key=lambda n: n["metrics"]["favorites"] or 0, reverse=True)[:FULL_NOTES]
full = {n["id"]: get("/v1/xiaohongshu/notes/get", id=n["id"])["data"]["item"] for n in top}

with open("xhs_notes.csv", "w", newline="", encoding="utf-8-sig") as f:
    out = csv.writer(f)
    out.writerow(["id", "title", "author", "published_at", "likes", "saves", "comments", "url", "full_text", "images"])
    for n in notes:
        d = full.get(n["id"])
        m = (d or n)["metrics"]
        out.writerow([n["id"], n["title"], n["author"]["name"], n["published_at"], m["likes"], m["favorites"],
                      m["comments"], n["url"], d["text"] if d else "", " ".join(d["images"] or []) if d else ""])

用 utf-8-sig 编码,Excel 打开中文不乱码。搜 10 页、拉 20 篇全文是 $0.60。

注意事项

  • 没有浏览量。 小红书不公开浏览数,所以 metrics.views 为 null,meta.unavailable 里的原因是 platform。收藏数(favorites)最能说明一篇笔记有没有人想留着看。
  • 时间是 UTC。 published_at 是 UTC 的 ISO 8601 格式,换成北京时间要加 8 小时。
  • 笔记链接。 url 是不带参数的 xiaohongshu.com/explore/<id>。不带 token 在浏览器里打开可能看不到内容,原因和办法见 xsec_token 那篇问答。
  • 删掉的不收钱。 搜索之后、拉详情之前被删的笔记返回 not_found,不扣费。
  • 重试不会重复扣费。 每次调用带一个 Idempotency-Key 请求头。24 小时内同样的请求配同样的 key,会直接拿回上次的结果,meta.replayed 为 true,不再扣费。
  • 图片是链接。 需要的图片跑完就下载下来,图片链接过一段时间可能失效。

搜索量大的时候怎么算钱,见小红书笔记搜索 API 多少钱。想继续看这些笔记下面读者说了什么,用小红书笔记评论读评论。

示例花费

按最新搜三页“露营”图文笔记,再给收藏最多的 5 篇拉全文和图片

接口调用次数单价小计
小红书笔记搜索3$0.02$0.06
小红书笔记详情5$0.02$0.10
合计8$0.16

按本页生成时的价格计算。失败的调用不扣费。

在你的 AI 里用(MCP)

先接好 MCP 服务,然后直接说你要什么。智能体会自己找到这些接口、看清价格,再用你的余额调用。

可以这样说在小红书按最新搜“露营”的图文笔记,搜三页。把每篇笔记的标题、作者、点赞、收藏、评论数和链接做成表,收藏最多的 5 篇再补上全文和图片链接。

智能体第一次调用 call 工具时发送的内容
{
  "endpoint": "xiaohongshu.notes.search",
  "params": {
    "query": "防晒霜 推荐"
  },
  "idempotency_key": "<新的 UUID>"
}

配置 MCP 服务 →

接上一次,以后直接问 AI。

新 key 自带 $0.10 试用额度。贴一句话,就能接进你的智能体。

免费开始
一句话接进你的 AI

把这句话发给你的智能体

读一下 https://okdata.online/zh/agents.md,帮我把 okdata 配好;我的 key 在环境变量 OKDATA_API_KEY 里。

Claude Code、Cursor、Codex 等能打开网址的智能体,读完会自己配好。

MCP 地址https://api.okdata.online/mcp