问答
小红书 MCP 部署到云服务器上总是超时,能不能不开浏览器?
简短回答
能。容器里不必再跑 Chrome,让智能体连托管的 MCP 服务就行:okdata 的 https://api.okdata.online/mcp 只要请求头带上 API key,就以 JSON 返回小红书数据,服务器上不需要浏览器、不需要显示环境,也不需要登录。搜一页笔记 $0.02,读一篇完整笔记 $0.02,失败不扣费。
能,办法是把浏览器从链路里拿掉。自建的小红书 MCP 会在容器里跑一个完整的 Chrome,并登录你的账号,上云之后的问题基本都出在这儿:搜索卡到 60 秒超时、容器闲置一会儿自己退出、登录失效要重新扫码,机房 IP 在小红书眼里也比家里的宽带可疑。项目的 issue 里这几类问题都有人反复提。换成托管服务以后,你的机器只发一个 HTTPS 请求、拿回一段 JSON,1 核 1G 的小服务器、GitHub Actions 里的定时任务、Serverless 函数都跑得动。
两种接法
- 智能体本身支持 MCP。 把
https://api.okdata.online/mcp加成远程服务,请求头带Authorization: Bearer。智能体会拿到find、describe、call三个工具,除了小红书,其他平台也一并能用。各客户端的配置见 MCP 页。 - 只是定时任务,没有智能体。 直接调 HTTP 接口:小红书笔记搜索和笔记详情。下面这段脚本可以直接丢进 cron。
import os, time, uuid, requests
API = "https://api.okdata.online"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
def search(query, sort="latest", tries=3):
key = str(uuid.uuid4()) # 重试时用同一个 key,绝不会扣两次
for _ in range(tries):
r = requests.get(API + "/v1/xiaohongshu/notes/search",
headers={**H, "Idempotency-Key": key},
params={"query": query, "sort": sort,
"fields": "id,url,title,metrics.likes,published_at"},
timeout=90)
body = r.json()
if body["code"] == "ok":
return body["data"]["items"]
if body["retry"] in ("yes", "same_key"):
time.sleep(body.get("retry_after_seconds") or 5)
continue
raise RuntimeError(f"{body['code']}: {body['message']}")
raise RuntimeError("重试多次仍失败")
for note in search("露营装备"):
print(note["metrics"]["likes"], note["title"], note["url"])
定时跑一个月要多少钱
| 任务 | 调用次数 | 费用 |
|---|---|---|
| 20 个关键词,每天各搜第一页 | 每天 20 次 | 每天 $0.40 |
| 同样的任务跑 30 天 | 600 | $12.00 |
| 再加每天精读 10 篇新笔记,跑 30 天 | 300 | $6.00 |
服务器本身不用升级,它只是在等 HTTP 返回,原来那台机器就够。
容易踩的坑
- 客户端超时设到 60 秒以上。大多数调用很快,但平台偶尔慢一点,别在你这边先断开。
- 我们这边超时会返回
timeout,charged为 null。用同一个Idempotency-Key重发,要么拿到已存的结果,要么重新跑一次,不会重复扣费。所有错误码见错误码页。 - 多个关键词并发跑时留意
X-RateLimit-Remaining;被限流时返回的rate_limited会告诉你等几秒。 - 小红书不显示浏览量,
metrics.views永远是 null。
什么时候还该留着自建 MCP
如果智能体要以你的账号发笔记、回评论,基于浏览器的自建服务仍然是对的工具,而且放在家用宽带的机器上通常比机房虚拟机稳。可以让它只管“写”,“读”交给 API key。偶尔手动查几条的话,直接刷小红书 App 仍是最省钱的办法。
更新于