Files
ai_wht_wechat/backend/XHS_PUBLISH_README.md
2025-12-19 22:36:48 +08:00

314 lines
6.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 小红书笔记发布脚本使用说明
## 功能介绍
`xhs_publish.py` 是一个用于自动发布小红书笔记的 Python 脚本,支持通过 Cookie 认证,自动完成图文笔记发布。
## 环境准备
### 1. 安装依赖
```bash
cd backend
pip install -r requirements.txt
```
主要依赖:
- playwright (浏览器自动化)
- asyncio (异步处理)
### 2. 安装浏览器驱动
```bash
playwright install chromium
```
## 使用方式
### 方式一:使用配置文件(推荐)
#### 1. 准备配置文件
复制 `publish_config_example.json` 并修改为实际参数:
```json
{
"cookies": [
{
"name": "a1",
"value": "your_cookie_value_here",
"domain": ".xiaohongshu.com",
"path": "/",
"expires": -1,
"httpOnly": false,
"secure": false,
"sameSite": "Lax"
}
],
"title": "笔记标题",
"content": "笔记内容",
"images": [
"D:/path/to/image1.jpg",
"D:/path/to/image2.jpg"
],
"tags": [
"标签1",
"标签2"
]
}
```
#### 2. 执行发布
```bash
python xhs_publish.py --config publish_config.json
```
### 方式二:命令行参数
```bash
python xhs_publish.py \
--cookies '[{"name":"a1","value":"xxx","domain":".xiaohongshu.com"}]' \
--title "笔记标题" \
--content "笔记内容" \
--images '["D:/image1.jpg","D:/image2.jpg"]' \
--tags '["标签1","标签2"]'
```
## 参数说明
### cookies (必需)
Cookie 数组,每个 Cookie 对象包含以下字段:
- `name`: Cookie 名称
- `value`: Cookie 值
- `domain`: 域名(通常为 `.xiaohongshu.com`
- `path`: 路径(通常为 `/`
- `expires`: 过期时间(-1 表示会话 Cookie
- `httpOnly`: 是否仅 HTTP
- `secure`: 是否安全
- `sameSite`: 同站策略Lax/Strict/None
**重要 Cookie必需**
- `a1`: 用户身份认证
- `webId`: 设备标识
- `web_session`: 会话信息
### title (必需)
笔记标题,字符串类型。
**示例:**
```
"💧夏日必备2元一杯的柠檬水竟然这么好喝"
```
### content (必需)
笔记正文内容,字符串类型,支持换行符 `\n`
**示例:**
```
"今天给大家分享一个超级实惠的夏日饮品!\n\n蜜雪冰城的柠檬水只要2元一杯性价比真的太高了"
```
### images (可选)
图片文件路径数组,支持本地绝对路径。
**要求:**
- 图片必须是本地文件
- 支持 jpg、png、gif 等格式
- 最多上传 9 张图片
- 建议尺寸800x600 或更高
**示例:**
```json
[
"D:/project/Work/ai_xhs/backend/temp_uploads/image1.jpg",
"D:/project/Work/ai_xhs/backend/temp_uploads/image2.jpg"
]
```
### tags (可选)
标签数组,会自动添加 `#` 前缀。
**示例:**
```json
["夏日清爽", "饮品", "柠檬水"]
```
## 获取 Cookie 的方法
### 方法一:使用登录脚本
```bash
python xhs_cli.py login <手机号> <验证码>
```
登录成功后会自动保存 Cookie 到 `cookies.json` 文件。
### 方法二:浏览器手动获取
1. 在浏览器中登录小红书网页版
2. 打开开发者工具F12
3. 切换到 Network网络标签
4. 刷新页面
5. 找到任意请求,查看 Request Headers
6. 复制 Cookie 字段内容
7. 使用在线工具或脚本转换为 JSON 格式
### 方法三:使用 Cookie 注入验证
```bash
python xhs_cli.py inject_cookies '<cookies_json>'
```
## 返回结果
### 成功示例
```json
{
"success": true,
"message": "笔记发布成功",
"url": "https://www.xiaohongshu.com/explore/xxxx"
}
```
### 失败示例
```json
{
"success": false,
"error": "Cookie已失效或未登录"
}
```
## 注意事项
### 1. Cookie 有效期
- Cookie 会在一段时间后失效
- 需要定期重新登录获取新 Cookie
- 建议使用 Cookie 注入验证接口检查状态
### 2. 图片上传
- 确保图片文件存在且可访问
- 图片路径使用绝对路径
- Windows 系统路径使用 `/``\\` 分隔符
### 3. 发布限制
- 小红书可能有发布频率限制
- 建议控制发布间隔,避免被限流
- 内容需符合小红书社区规范
### 4. 错误处理
常见错误及解决方法:
- **"Cookie已失效"**: 重新登录获取新 Cookie
- **"图片文件不存在"**: 检查图片路径是否正确
- **"未找到发布按钮"**: 小红书页面结构可能变化,需要更新选择器
- **"输入内容失败"**: 等待时间不足,增加延迟时间
## 与 Go 后端集成
在 Go 后端中调用此脚本:
```go
import (
"os/exec"
"encoding/json"
)
// 发布笔记
func PublishNote(cookies []Cookie, title, content string, images, tags []string) error {
// 构造配置文件
config := map[string]interface{}{
"cookies": cookies,
"title": title,
"content": content,
"images": images,
"tags": tags,
}
// 保存到临时文件
configFile := "temp_publish_config.json"
data, _ := json.Marshal(config)
ioutil.WriteFile(configFile, data, 0644)
// 调用 Python 脚本
cmd := exec.Command("python", "backend/xhs_publish.py", "--config", configFile)
output, err := cmd.CombinedOutput()
if err != nil {
return err
}
// 解析结果
var result map[string]interface{}
json.Unmarshal(output, &result)
if !result["success"].(bool) {
return errors.New(result["error"].(string))
}
return nil
}
```
## 开发调试
### 启用浏览器可视模式
修改 `xhs_login.py` 中的 `headless` 参数:
```python
self.browser = await self.playwright.chromium.launch(
headless=False, # 改为 False 可以看到浏览器操作过程
args=['--disable-blink-features=AutomationControlled']
)
```
### 查看详细日志
脚本会在控制台输出详细的执行日志,包括:
- 浏览器初始化
- 登录状态验证
- 图片上传进度
- 内容输入状态
- 发布结果
## 常见问题
### Q: 为什么上传图片后没有显示?
A: 可能是图片上传时间较长,脚本已经增加了等待时间。如果仍有问题,可以调整 `xhs_login.py` 中的等待时间。
### Q: 如何批量发布多条笔记?
A: 准备多个配置文件,使用循环调用脚本:
```bash
for config in publish_config_*.json; do
python xhs_publish.py --config "$config"
sleep 60 # 间隔60秒
done
```
### Q: Cookie 多久失效?
A: 小红书 Cookie 通常在 7-30 天后失效,具体取决于 Cookie 的过期时间设置。
## 技术支持
如有问题,请查看:
1. 脚本执行日志
2. 小红书页面结构是否变化
3. Cookie 是否有效
4. 图片文件是否存在