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

248 lines
6.0 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.

# 小红书发布脚本 - 功能总结
## 🎉 最新更新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. 磁盘空间是否充足
## 🎯 下一步计划
- [ ] 支持视频发布
- [ ] 批量发布功能
- [ ] 定时发布功能
- [ ] 发布结果追踪
- [ ] 图片压缩优化
- [ ] 并发下载优化