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

6.0 KiB
Raw Blame History

小红书发布脚本 - 功能总结

🎉 最新更新v1.1.0

已成功增强发布脚本,现在支持网络图片 URL

核心功能

  • 支持验证码登录
  • 支持 Cookie 注入
  • 自动验证登录状态

2. 内容发布

  • 标题和正文
  • 多图上传(最多 9 张)
  • 标签自动添加
  • 发布状态追踪

3. 图片支持(新增)

  • 本地文件路径(绝对/相对路径)
  • 网络图片 URLHTTP/HTTPS
  • 混合使用(本地 + 网络)
  • 自动下载网络图片
  • 自动清理临时文件

📝 使用示例

基础使用

{
  "cookies": [...],
  "title": "笔记标题",
  "content": "笔记内容",
  "images": [
    "https://picsum.photos/800/600?random=1",
    "D:/local/image.jpg"
  ],
  "tags": ["标签1", "标签2"]
}

命令行

# 安装依赖
pip install -r requirements.txt

# 从配置文件发布
python xhs_publish.py --config my_config.json

# 测试网络图片功能
python test_network_images.py

🔧 技术实现

图片处理流程

1. 判断是否为网络 URL
    
2. 使用 aiohttp 下载图片
   
3. 保存到 temp_downloads/
   
4. 返回本地路径
   
5. 上传到小红书
   
6. 发布完成后清理临时文件

关键代码

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. 安装依赖

cd backend
pip install -r requirements.txt
playwright install chromium
python xhs_cli.py login 13800138000 123456

3. 准备配置文件

cp publish_config_example.json my_publish.json
# 编辑 my_publish.json填入实际数据

4. 执行发布

python xhs_publish.py --config my_publish.json

📊 性能指标

指标 数值
图片下载超时 30 秒/张
最大图片数 9 张
建议图片大小 < 5MB
临时文件清理 自动

🔍 实际应用

从数据库获取图片 URL 发布

# 查询文章信息
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 后端调用示例

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. 错误处理

  • 单张图片下载失败不影响其他图片
  • 会跳过失败的图片继续发布
  • 详细的错误日志输出

📚 相关文档

🐛 问题反馈

如遇到问题,请检查:

  1. 是否安装了 aiohttp
  2. 网络连接是否正常
  3. Cookie 是否有效
  4. 图片 URL 是否可访问
  5. 磁盘空间是否充足

🎯 下一步计划

  • 支持视频发布
  • 批量发布功能
  • 定时发布功能
  • 发布结果追踪
  • 图片压缩优化
  • 并发下载优化