Files
ai_wht_wechat/backend/PUBLISH_FEATURE_SUMMARY.md

248 lines
6.0 KiB
Markdown
Raw Normal View History

2025-12-19 22:36:48 +08:00
# 小红书发布脚本 - 功能总结
## 🎉 最新更新v1.1.0
已成功增强发布脚本,现在支持**网络图片 URL**
## ✨ 核心功能
### 1. Cookie 认证
- 支持验证码登录
- 支持 Cookie 注入
- 自动验证登录状态
### 2. 内容发布
- ✅ 标题和正文
- ✅ 多图上传(最多 9 张)
- ✅ 标签自动添加
- ✅ 发布状态追踪
### 3. 图片支持(新增)
-**本地文件路径**(绝对/相对路径)
-**网络图片 URL**HTTP/HTTPS
-**混合使用**(本地 + 网络)
- ✅ **自动下载**网络图片
- ✅ **自动清理**临时文件
## 📝 使用示例
### 基础使用
```json
{
"cookies": [...],
"title": "笔记标题",
"content": "笔记内容",
"images": [
"https://picsum.photos/800/600?random=1",
"D:/local/image.jpg"
],
"tags": ["标签1", "标签2"]
}
```
### 命令行
```bash
# 安装依赖
pip install -r requirements.txt
# 从配置文件发布
python xhs_publish.py --config my_config.json
# 测试网络图片功能
python test_network_images.py
```
## 🔧 技术实现
### 图片处理流程
```python
1. 判断是否为网络 URL
↓ 是
2. 使用 aiohttp 下载图片
3. 保存到 temp_downloads/
4. 返回本地路径
5. 上传到小红书
6. 发布完成后清理临时文件
```
### 关键代码
```python
class XHSPublishService:
async def download_image(self, url: str) -> str:
"""下载网络图片"""
async with aiohttp.ClientSession() as session:
async with session.get(url, timeout=30) as response:
content = await response.read()
# 保存文件
return local_path
async def process_images(self, images: List[str]) -> List[str]:
"""处理图片列表(下载网络图片)"""
local_images = []
for img in images:
if self.is_url(img):
local_path = await self.download_image(img)
local_images.append(local_path)
else:
local_images.append(img)
return local_images
```
## 📦 文件结构
```
backend/
├── xhs_publish.py # 发布脚本(已增强)
├── xhs_login.py # 登录服务
├── xhs_cli.py # 命令行工具
├── test_publish.py # 基础测试
├── test_network_images.py # 网络图片测试(新增)
├── publish_config_example.json # 配置示例(已更新)
├── requirements.txt # 依赖列表(已更新)
├── temp_downloads/ # 临时下载目录(自动创建)
└── 文档/
├── XHS_PUBLISH_README.md # 发布脚本文档
├── NETWORK_IMAGE_SUPPORT.md # 网络图片文档(新增)
└── PUBLISH_FEATURE_SUMMARY.md # 功能总结(本文档)
```
## 🚀 快速开始
### 1. 安装依赖
```bash
cd backend
pip install -r requirements.txt
playwright install chromium
```
### 2. 获取 Cookie
```bash
python xhs_cli.py login 13800138000 123456
```
### 3. 准备配置文件
```bash
cp publish_config_example.json my_publish.json
# 编辑 my_publish.json填入实际数据
```
### 4. 执行发布
```bash
python xhs_publish.py --config my_publish.json
```
## 📊 性能指标
| 指标 | 数值 |
|------|------|
| 图片下载超时 | 30 秒/张 |
| 最大图片数 | 9 张 |
| 建议图片大小 | < 5MB |
| 临时文件清理 | 自动 |
## 🔍 实际应用
### 从数据库获取图片 URL 发布
```python
# 查询文章信息
article = db.query("SELECT * FROM ai_articles WHERE id = ?", article_id)
images = db.query("SELECT image_url FROM ai_article_images WHERE article_id = ?", article_id)
tags = db.query("SELECT coze_tag FROM ai_article_tags WHERE article_id = ?", article_id)
# 准备发布
publisher = XHSPublishService(cookies)
result = await publisher.publish(
title=article['title'],
content=article['content'],
images=[img['image_url'] for img in images], # 使用数据库中的 URL
tags=tags[0]['coze_tag'].split(',') if tags else []
)
```
### Go 后端调用示例
```go
func PublishArticle(articleID int) error {
// 1. 查询文章信息
article := db.GetArticle(articleID)
images := db.GetArticleImages(articleID)
// 2. 构造配置
config := map[string]interface{}{
"cookies": loadCookies(),
"title": article.Title,
"content": article.Content,
"images": images, // 直接使用 URL 数组
"tags": splitTags(article.Tags),
}
// 3. 保存配置文件
configFile := fmt.Sprintf("temp/publish_%d.json", articleID)
saveJSON(configFile, config)
// 4. 调用 Python 脚本
cmd := exec.Command("python", "backend/xhs_publish.py", "--config", configFile)
output, err := cmd.CombinedOutput()
// 5. 解析结果
var result map[string]interface{}
json.Unmarshal(output, &result)
return checkResult(result)
}
```
## ⚠️ 注意事项
### 1. 网络图片
- 确保 URL 可公开访问
- 避免使用需要认证的图片
- 注意图片服务器的访问速度
### 2. 临时文件
- 默认保存在 `temp_downloads/`
- 发布完成后自动清理
- 可设置 `cleanup=False` 保留文件
### 3. 错误处理
- 单张图片下载失败不影响其他图片
- 会跳过失败的图片继续发布
- 详细的错误日志输出
## 📚 相关文档
- [XHS_PUBLISH_README.md](XHS_PUBLISH_README.md) - 详细使用文档
- [NETWORK_IMAGE_SUPPORT.md](NETWORK_IMAGE_SUPPORT.md) - 网络图片支持文档
- [XHS_CLI_README.md](XHS_CLI_README.md) - 命令行工具文档
## 🐛 问题反馈
如遇到问题,请检查:
1. 是否安装了 `aiohttp`
2. 网络连接是否正常
3. Cookie 是否有效
4. 图片 URL 是否可访问
5. 磁盘空间是否充足
## 🎯 下一步计划
- [ ] 支持视频发布
- [ ] 批量发布功能
- [ ] 定时发布功能
- [ ] 发布结果追踪
- [ ] 图片压缩优化
- [ ] 并发下载优化