* 重构 publish tab 选择逻辑,把公共代码提取到同一个函数中 * feat: 为视频发布功能新增HTTP API接口和完善文档 - 新增 /api/v1/publish_video HTTP接口 - 添加 publishVideoHandler 处理函数 - 更新 API.md 增加视频发布接口文档 - 更新 README.md 和 README_EN.md 增加视频发布功能说明 - 在MCP工具列表中补充 publish_with_video 工具说明
9.0 KiB
小红书 MCP HTTP API 文档
概述
该项目提供了小红书 MCP (Model Context Protocol) 服务的 HTTP API 接口,同时支持 MCP 协议和标准的 HTTP REST API。本文档描述了 HTTP API 的使用方法。
Base URL: http://localhost:8080
注意: 以下响应示例仅展示主要字段结构,完整的字段信息请通过实际API调用查看。
通用响应格式
所有 API 响应都使用统一的 JSON 格式:
成功响应
{
"success": true,
"data": {},
"message": "操作成功消息"
}
错误响应
{
"error": "错误消息",
"code": "ERROR_CODE",
"details": "详细错误信息"
}
API 端点
1. 健康检查
检查服务状态。
请求
GET /health
响应
{
"success": true,
"data": {
"status": "healthy",
"service": "xiaohongshu-mcp",
"account": "ai-report",
"timestamp": "now"
},
"message": "服务正常"
}
2. 登录管理
2.1 检查登录状态
检查当前用户的登录状态。
请求
GET /api/v1/login/status
响应
{
"success": true,
"data": {
"is_logged_in": true,
"username": "用户名"
},
"message": "检查登录状态成功"
}
2.2 获取登录二维码
获取登录二维码,用于用户扫码登录。
请求
GET /api/v1/login/qrcode
响应
{
"success": true,
"data": {
"timeout": "300",
"is_logged_in": false,
"img": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
},
"message": "获取登录二维码成功"
}
响应字段说明:
timeout: 二维码过期时间(秒)is_logged_in: 当前是否已登录img: Base64 编码的二维码图片
3. 内容发布
3.1 发布图文内容
发布图文笔记内容到小红书。
请求
POST /api/v1/publish
Content-Type: application/json
请求体
{
"title": "笔记标题",
"content": "笔记内容",
"images": [
"http://example.com/image1.jpg",
"http://example.com/image2.jpg"
],
"tags": ["标签1", "标签2"]
}
请求参数说明:
title(string, required): 笔记标题content(string, required): 笔记内容images(array, required): 图片URL数组,至少包含一张图片tags(array, optional): 标签数组
响应
{
"success": true,
"data": {
"title": "笔记标题",
"content": "笔记内容",
"images": 2,
"status": "published",
"post_id": "64f1a2b3c4d5e6f7a8b9c0d1"
},
"message": "发布成功"
}
3.2 发布视频内容
发布视频内容到小红书(仅支持本地视频文件)。
请求
POST /api/v1/publish_video
Content-Type: application/json
请求体
{
"title": "视频标题",
"content": "视频内容描述",
"video": "/Users/username/Videos/video.mp4",
"tags": ["标签1", "标签2"]
}
请求参数说明:
title(string, required): 视频标题content(string, required): 视频内容描述video(string, required): 本地视频文件绝对路径tags(array, optional): 标签数组
响应
{
"success": true,
"data": {
"title": "视频标题",
"content": "视频内容描述",
"video": "/Users/username/Videos/video.mp4",
"status": "发布完成",
"post_id": "64f1a2b3c4d5e6f7a8b9c0d1"
},
"message": "视频发布成功"
}
注意事项:
- 仅支持本地视频文件路径,不支持 HTTP 链接
- 视频处理时间较长,请耐心等待
- 建议视频文件大小不超过 1GB
4. Feed 管理
4.1 获取 Feeds 列表
获取用户的 Feeds 列表。
请求
GET /api/v1/feeds/list
响应
{
"success": true,
"data": {
"feeds": [
{
"xsecToken": "security_token_value",
"id": "feed_id_1",
"modelType": "note",
"noteCard": {
"type": "normal",
"displayTitle": "笔记标题",
"user": {
"userId": "user_id_1",
"nickname": "用户昵称",
"avatar": "https://example.com/avatar.jpg"
},
"interactInfo": {
"likedCount": "100",
"commentCount": "50"
},
"cover": {
"url": "https://example.com/cover.jpg"
}
},
"index": 0
}
],
"count": 10
},
"message": "获取Feeds列表成功"
}
4.2 搜索 Feeds
根据关键词搜索 Feeds。
请求
GET /api/v1/feeds/search?keyword=搜索关键词
查询参数:
keyword(string, required): 搜索关键词
响应
{
"success": true,
"data": {
"feeds": [
{
"xsecToken": "security_token_value",
"id": "feed_id_1",
"modelType": "note",
"noteCard": {
"displayTitle": "相关笔记标题",
"user": {
"userId": "user_id_1",
"nickname": "用户昵称"
},
"interactInfo": {
"likedCount": "80",
"commentCount": "35"
}
},
"index": 0
}
],
"count": 5
},
"message": "搜索Feeds成功"
}
4.3 获取 Feed 详情
获取指定 Feed 的详细信息。
请求
POST /api/v1/feeds/detail
Content-Type: application/json
请求体
{
"feed_id": "64f1a2b3c4d5e6f7a8b9c0d1",
"xsec_token": "security_token_here"
}
请求参数说明:
feed_id(string, required): Feed IDxsec_token(string, required): 安全令牌
响应
{
"success": true,
"data": {
"feed_id": "64f1a2b3c4d5e6f7a8b9c0d1",
"data": {
"note": {
"noteId": "64f1a2b3c4d5e6f7a8b9c0d1",
"title": "笔记标题",
"desc": "笔记详细内容描述",
"user": {
"userId": "user_id_123",
"nickname": "作者昵称"
},
"interactInfo": {
"likedCount": "100",
"commentCount": "50"
},
"imageList": [
{
"urlDefault": "https://example.com/image1_default.jpg"
}
]
},
"comments": {
"list": [
{
"id": "comment_id_1",
"content": "评论内容",
"userInfo": {
"nickname": "评论者昵称"
}
}
],
"hasMore": true
}
}
},
"message": "获取Feed详情成功"
}
5. 用户信息
获取用户主页信息。
请求
POST /api/v1/user/profile
Content-Type: application/json
请求体
{
"user_id": "64f1a2b3c4d5e6f7a8b9c0d1",
"xsec_token": "security_token_here"
}
请求参数说明:
user_id(string, required): 用户IDxsec_token(string, required): 安全令牌
响应
{
"success": true,
"data": {
"data": {
"userBasicInfo": {
"nickname": "用户昵称",
"desc": "用户个人描述",
"redId": "xiaohongshu_id"
},
"interactions": [
{
"type": "follows",
"name": "关注",
"count": "1000"
},
{
"type": "fans",
"name": "粉丝",
"count": "5000"
}
],
"feeds": [
{
"id": "feed_id_1",
"noteCard": {
"displayTitle": "用户的笔记标题"
}
}
]
}
},
"message": "获取用户主页成功"
}
6. 评论管理
6.1 发表评论
对指定 Feed 发表评论。
请求
POST /api/v1/feeds/comment
Content-Type: application/json
请求体
{
"feed_id": "64f1a2b3c4d5e6f7a8b9c0d1",
"xsec_token": "security_token_here",
"content": "评论内容"
}
请求参数说明:
feed_id(string, required): Feed IDxsec_token(string, required): 安全令牌content(string, required): 评论内容
响应
{
"success": true,
"data": {
"feed_id": "64f1a2b3c4d5e6f7a8b9c0d1",
"success": true,
"message": "评论发表成功"
},
"message": "评论发表成功"
}
注意事项
-
认证: 部分 API 需要有效的登录状态,建议先调用登录状态检查接口确认登录。
-
安全令牌:
xsec_token是小红书的安全令牌,在调用需要该参数的接口时必须提供。 -
图片上传: 发布接口中的
images参数需要提供可访问的图片URL。 -
错误处理: 所有接口在出错时都会返回统一格式的错误响应,请根据
code字段进行相应的错误处理。 -
日志记录: 所有API调用都会被记录到服务日志中,包括请求方法、路径和状态码。
-
跨域支持: API 支持跨域请求 (CORS)。
MCP 协议支持
除了上述HTTP API,本服务同时支持 MCP (Model Context Protocol) 协议:
- MCP 端点:
/mcp和/mcp/*path - 协议类型: 支持 JSON 响应格式的 Streamable HTTP
- 用途: 可以通过MCP客户端调用相同的功能
更多MCP协议相关信息请参考 Model Context Protocol 官方文档。