# 通过 MCP 服务 API 发布内容
## 概述
现在可以完全通过 **MCP 服务的 API** 来完成发布,不需要单独的脚本。服务会管理浏览器实例和登录态。
## API 端点
### 1. 检查主站登录状态
```bash
GET /api/v1/login/status
```
### 2. 检查创作中心登录状态
```bash
GET /api/v1/login/creator/status
```
### 3. 初始化创作中心登录
```bash
POST /api/v1/login/creator/init
```
- 会打开创作中心登录页面
- 等待 60 秒供用户登录
- 登录成功后自动保存状态
### 4. 发布图文内容
```bash
POST /api/v1/publish
Content-Type: application/json
{
"title": "标题",
"content": "内容",
"images": ["/path/to/image.jpg"],
"tags": ["标签1", "标签2"]
}
```
## 完整流程
### 方式 1:使用测试脚本(推荐)
```bash
python test_mcp_publish.py
```
这个脚本会:
1. ✅ 检查服务状态
2. ✅ 检查主站登录状态
3. ✅ 检查创作中心登录状态
4. ✅ 如果未登录,自动初始化登录(等待你在浏览器中登录)
5. ✅ 调用发布 API
### 方式 2:手动调用 API
```bash
# 1. 检查主站登录
curl http://localhost:18060/api/v1/login/status
# 2. 检查创作中心登录
curl http://localhost:18060/api/v1/login/creator/status
# 3. 如果创作中心未登录,初始化登录
curl -X POST http://localhost:18060/api/v1/login/creator/init
# 此时浏览器窗口会显示登录页面,完成登录后 API 会返回成功
# 4. 发布内容
curl -X POST http://localhost:18060/api/v1/publish \
-H "Content-Type: application/json" \
-d '{
"title": "我家的小猫咪太可爱了!🐱",
"content": "今天给我家的小橘猫拍了几张照片...",
"images": ["/Users/xxx/Pictures/cat.jpg"],
"tags": ["宠物", "猫咪", "萌宠"]
}'
```
## 关键点
### ✅ 服务管理浏览器
- 服务启动时创建浏览器实例
- 浏览器实例在服务运行期间一直存在
- 登录态自动保存到 `storage_state.json`
### ✅ 非无头模式
- 服务配置为 `HEADLESS=false`
- 可以看到浏览器窗口
- 方便在需要时手动登录
### ✅ 自动保存登录态
- 每次 API 调用后自动保存 cookies 和 localStorage
- 服务重启后自动加载登录态
- 不需要重复登录
### ✅ 创作中心登录
- 主站和创作中心需要分别登录
- 通过 `/api/v1/login/creator/init` 初始化创作中心登录
- 只需要登录一次,以后自动保持
## 示例:完整的发布流程
```python
import requests
base_url = "http://localhost:18060"
# 1. 检查创作中心登录状态
response = requests.get(f"{base_url}/api/v1/login/creator/status")
if not response.json()['logged_in']:
# 2. 初始化登录(会打开浏览器窗口)
print("请在浏览器窗口中完成登录...")
response = requests.post(f"{base_url}/api/v1/login/creator/init", timeout=90)
print(response.json()['message'])
# 3. 发布内容
publish_data = {
"title": "我家的小猫咪太可爱了!🐱",
"content": "今天给我家的小橘猫拍了几张照片...",
"images": ["/Users/xxx/Pictures/cat.jpg"],
"tags": ["宠物", "猫咪", "萌宠"]
}
response = requests.post(f"{base_url}/api/v1/publish", json=publish_data, timeout=180)
print(response.json())
```
## 注意事项
1. **服务必须运行在非无头模式**
- 配置文件 `.env` 中设置 `HEADLESS=false`
- 这样才能看到浏览器窗口进行登录
2. **图片路径必须有效**
- 使用绝对路径
- 确保文件存在
- 至少需要 1 张图片
3. **登录态有效期**
- 小红书的登录态有有效期
- 过期后需要重新调用 `/api/v1/login/creator/init`
4. **API 超时设置**
- 发布操作可能需要 1-2 分钟
- 建议设置 180 秒超时
## 故障排查
### 问题 1:服务未启动
```bash
python main.py
```
### 问题 2:创作中心需要登录
```bash
curl -X POST http://localhost:18060/api/v1/login/creator/init
# 在浏览器窗口中完成登录
```
### 问题 3:看不到浏览器窗口
检查 `.env` 文件:
```bash
HEADLESS=false # 必须是 false
```
### 问题 4:登录态丢失
```bash
# 重新初始化登录
curl -X POST http://localhost:18060/api/v1/login/creator/init
```
## 总结
✅ **现在的工作流程:**
1. 启动服务:`python main.py`
2. 初始化创作中心登录(一次性):`POST /api/v1/login/creator/init`
3. 通过 API 发布内容:`POST /api/v1/publish`
4. 登录态自动保存,服务重启后自动加载
✅ **不再需要:**
- ❌ 单独的登录脚本
- ❌ 手动管理浏览器
- ❌ 每次都重新登录
- ❌ 担心登录态丢失
所有操作都通过 MCP 服务的 API 完成!