Install
openclaw skills install xhs-search小红书内容搜索技能。通过 MCP 协议调用 xiaohongshu-mcp 工具,搜索小红书笔记、用户主页、评论等。支持关键词搜索、热度排序、内容详情提取。当用户说"搜一下小红书"、"分析小红书"、"查找小红书帖子"、"生成小红书报告"时触发此技能。
openclaw skills install xhs-search小红书内容搜索技能。使用已登录的小红书账号,通过 MCP 服务搜索和提取小红书内容。
# 下载 macOS amd64 版本(其他系统替换文件名)
curl -L -o ~/Downloads/xhs-mcp.tar.gz \
"https://github.com/xpzouying/xiaohongshu-mcp/releases/latest/download/xiaohongshu-mcp-darwin-amd64.tar.gz"
cd ~/Downloads && tar -xzf xhs-mcp.tar.gz
mkdir -p ~/.local/bin
mv xiaohongshu-login xiaohongshu-mcp ~/.local/bin/
chmod +x ~/.local/bin/xiaohongshu-*
在 Mac/有显示器的 Linux 上运行:
~/.local/bin/xiaohongshu-login -bin "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
~/.local/bin/xiaohongshu-mcp -bin "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" -port ":18060"
服务常驻后台,开机自动启动(可加入 launchd/systemd)。
用户提供关键词 → 调用 MCP search_feeds → 返回结果
| 工具名 | 用途 |
|---|---|
check_login_status | 检查登录状态 |
search_feeds | 关键词搜索笔记 |
list_feeds | 获取首页推荐 |
get_feed_detail | 获取帖子详情(需 feed_id + xsec_token) |
user_profile | 获取用户主页(需 user_id) |
like_feed | 点赞/取消点赞 |
favorite_feed | 收藏/取消收藏 |
publish_content | 发布图文笔记 |
import urllib.request, json
MCP_URL = "http://localhost:18060/mcp"
def mcp_init():
payload = json.dumps({"jsonrpc":"2.0","id":1,"method":"initialize",
"params":{"protocolVersion":"2024-11-05","capabilities":{},
"clientInfo":{"name":"agent","version":"1.0"}}}).encode()
req = urllib.request.Request(MCP_URL, data=payload,
headers={"Content-Type":"application/json","Accept":"application/json, text/event-stream"})
sid = urllib.request.urlopen(req, timeout=30).headers.get("Mcp-Session-Id","")
# 发送 initialized 通知
notif = json.dumps({"jsonrpc":"2.0","method":"notifications/initialized","params":{}}).encode()
nr = urllib.request.Request(MCP_URL, data=notif,
headers={"Content-Type":"application/json","Accept":"application/json, text/event-stream","Mcp-Session-Id":sid})
urllib.request.urlopen(nr, timeout=10)
return sid
def mcp_call(tool, args, sid):
payload = json.dumps({"jsonrpc":"2.0","id":2,"method":"tools/call",
"params":{"name":tool,"arguments":args}}).encode()
req = urllib.request.Request(MCP_URL, data=payload,
headers={"Content-Type":"application/json","Accept":"application/json, text/event-stream","Mcp-Session-Id":sid})
resp = urllib.request.urlopen(req, timeout=60)
return json.loads(resp.read().decode())
# 使用
sid = mcp_init()
r = mcp_call("search_feeds", {"keyword":"关键词","filters":{"sort_by":"最新"}}, sid)
feeds = json.loads(r["result"]["content"][0]["text"])["feeds"]
每个笔记包含:
| 字段 | 说明 |
|---|---|
id | 笔记ID(用于获取详情) |
noteCard.displayTitle | 标题 |
noteCard.user.nickName | 作者昵称 |
noteCard.interactInfo.likedCount | 点赞数 |
noteCard.interactInfo.collectedCount | 收藏数 |
noteCard.interactInfo.commentCount | 评论数 |
xsecToken | 访问令牌(获取详情时需要) |
最新(其他值会返回错误)