# 快速开始指南

## 问题说明

如果您在使用 `xhs_publish.py` 时遇到 JSON 解析错误：

```bash
python xhs_publish.py --cookies '[...]' --title "标题" --content "内容"
# 错误: JSON解析失败: Expecting property name enclosed in double quotes
```

这是因为命令行中的 JSON 字符串转义问题。

## 解决方案

我们提供了 **3 种简单的使用方式**：

---

## 方式 1：快速发布脚本（推荐）⭐

使用 `quick_publish.py`，无需处理 JSON 转义。

### 用法

```bash
python quick_publish.py "标题" "内容" "图片1,图片2,图片3" "标签1,标签2"
```

### Windows PowerShell 用法

**在 Windows PowerShell 中，强烈推荐使用此方式，避免 JSON 转义问题：**

```powershell
python quick_publish.py "测试笔记" "这是测试内容" "https://picsum.photos/800/600,https://picsum.photos/800/600" "测试,自动化"
```

### 参数说明

1. **标题**（必需）
2. **内容**（必需）
3. **图片**（可选）- 用逗号分隔，支持本地路径和网络 URL
4. **标签**（可选）- 用逗号分隔

### 示例

**1. 发布纯文字**
```bash
python quick_publish.py "测试笔记" "这是测试内容" "" "测试,自动化"
```

**2. 使用网络图片**
```bash
python quick_publish.py "测试笔记" "这是测试内容" "https://picsum.photos/800/600,https://picsum.photos/800/600" "测试,图片"
```

**3. 使用本地图片**
```bash
python quick_publish.py "测试笔记" "这是测试内容" "D:/image1.jpg,D:/image2.jpg" "测试"
```

**4. 混合使用**
```bash
python quick_publish.py "测试笔记" "这是测试内容" "https://picsum.photos/800/600,D:/local.jpg" "测试"
```

### Cookie 文件

脚本默认从 `cookies.json` 读取 Cookie。

如果 Cookie 在其他文件，可以指定：
```bash
python quick_publish.py "标题" "内容" "图片" "标签" "my_cookies.json"
```

---

## 方式 2：配置文件发布

### 步骤 1：准备 Cookie 文件

将您的 Cookie 保存为 `test_cookies.json`（已为您创建）。

### 步骤 2：创建配置文件

创建 `my_publish.json`：

```json
{
  "cookies": "@test_cookies.json",
  "title": "💧夏日必备！2元一杯的柠檬水竟然这么好喝？",
  "content": "今天给大家分享一个超级实惠的夏日饮品！",
  "images": [
    "https://picsum.photos/800/600?random=1",
    "https://picsum.photos/800/600?random=2"
  ],
  "tags": ["夏日清爽", "饮品", "柠檬水"]
}
```

### 步骤 3：执行发布

```bash
python xhs_publish.py --config my_publish.json
```

---

## 方式 3：使用命令行参数（支持Cookie文件）⭐

### 用法

```bash
# Cookie 使用文件路径（推荐）
python xhs_publish.py --cookies test_cookies.json --title "标题" --content "内容" --images '["https://picsum.photos/800/600"]' --tags '["标签1"]'

# Cookie 使用 JSON 字符串（需要转义，不推荐）
python xhs_publish.py --cookies '[{...}]' --title "标题" --content "内容"
```

### 参数说明

- `--cookies`: **Cookie JSON 字符串 或 Cookie 文件路径**（推荐使用文件路径）
- `--title`: 标题
- `--content`: 内容
- `--images`: 图片列表的 JSON 字符串（可选）
- `--tags`: 标签列表的 JSON 字符串（可选）

### 示例

**1. 使用 Cookie 文件（推荐）**
```bash
python xhs_publish.py --cookies test_cookies.json --title "测试笔记" --content "这是测试内容" --images '["https://picsum.photos/800/600"]' --tags '["测试","自动化"]'
```

**2. 只发布文字**
```bash
python xhs_publish.py --cookies test_cookies.json --title "纯文字笔记" --content "这是一条纯文字笔记"
```

## 方式 4：Python 脚本调用

```python
import asyncio
import json
from xhs_publish import XHSPublishService

async def publish_my_note():
    # 读取 Cookie
    with open('test_cookies.json', 'r') as f:
        cookies = json.load(f)
    
    # 创建发布服务
    publisher = XHSPublishService(cookies)
    
    # 发布笔记
    result = await publisher.publish(
        title="测试笔记",
        content="这是测试内容",
        images=[
            "https://picsum.photos/800/600?random=1",
            "https://picsum.photos/800/600?random=2"
        ],
        tags=["测试", "自动化"]
    )
    
    print(json.dumps(result, ensure_ascii=False, indent=2))

# 运行
asyncio.run(publish_my_note())
```

---

## 完整示例

### 使用您提供的 Cookie

Cookie 已保存到 `test_cookies.json`，现在可以直接发布：

```bash
# 方式 1：快速发布（推荐）
cd backend
python quick_publish.py "测试笔记" "这是一条测试笔记，使用网络图片自动发布" "https://picsum.photos/800/600,https://picsum.photos/800/600" "测试,自动化" test_cookies.json
```

### 输出示例

```
==================================================
快速发布小红书笔记
==================================================
标题: 测试笔记
内容: 这是一条测试笔记，使用网络图片自动发布
图片: 2 张
  1. https://picsum.photos/800/600
  2. https://picsum.photos/800/600
标签: ['测试', '自动化']
Cookie: test_cookies.json
==================================================

正在处理 2 张图片...
  正在下载图片 [1]: https://picsum.photos/800/600
  ✅ 下载成功: image_0_xxx.jpg (45.2KB)
  正在下载图片 [2]: https://picsum.photos/800/600
  ✅ 下载成功: image_1_xxx.jpg (52.8KB)

成功处理 2/2 张图片

1. 初始化浏览器...
浏览器初始化成功

2. 验证登录状态...
✅ 登录状态有效

3. 开始发布笔记...
[...]

==================================================
发布结果:
{
  "success": true,
  "message": "笔记发布成功",
  "url": "https://www.xiaohongshu.com/explore/..."
}
==================================================

✅ 发布成功！
📎 笔记链接: https://www.xiaohongshu.com/explore/...
```

---

## 常见问题

### Q: 为什么会出现 JSON 解析错误？

A: 在命令行中直接使用 JSON 字符串时，Shell 会对引号进行特殊处理，导致解析失败。建议使用：
- **方式 1**：`quick_publish.py`（无需处理 JSON）
- **方式 2**：配置文件（JSON 在文件中）

### Q: Cookie 从哪里获取？

A: 三种方式：
1. 使用 `xhs_cli.py login` 登录获取
2. 从浏览器开发者工具复制
3. 使用现有的 Cookie JSON

### Q: 图片支持哪些格式？

A: 
- **本地文件**：JPG、PNG、GIF、WEBP
- **网络 URL**：HTTP/HTTPS 链接
- **混合使用**：可以同时使用本地和网络图片

### Q: 如何验证 Cookie 是否有效？

A: 使用快速发布脚本，会自动验证：
```bash
python quick_publish.py "测试" "测试内容" "" ""
```

如果 Cookie 失效，会提示：
```
❌ 发布失败: Cookie已失效或未登录
```

---

## 进阶使用

### 批量发布

创建脚本 `batch_publish.py`：

```python
import asyncio
from quick_publish import quick_publish

async def main():
    articles = [
        {
            "title": "文章1",
            "content": "内容1",
            "images": ["https://picsum.photos/800/600"],
            "tags": ["标签1"]
        },
        {
            "title": "文章2",
            "content": "内容2",
            "images": ["https://picsum.photos/800/600"],
            "tags": ["标签2"]
        }
    ]
    
    for article in articles:
        result = await quick_publish(**article)
        print(f"发布结果: {result['success']}")
        await asyncio.sleep(60)  # 间隔60秒

asyncio.run(main())
```

---

## 总结

✅ **推荐使用 `quick_publish.py`**
- 无需处理 JSON 转义
- 参数简单直观
- 自动读取 Cookie 文件

现在您可以尝试使用快速发布脚本了！🚀
