300 lines
7.5 KiB
Markdown
Raw Normal View History

2025-11-07 15:04:47 +08:00
# 小红书笔记发布工具
一个简单易用的小红书图文/视频笔记自动发布工具,支持自动登录、内容填充、标签添加、定时发布等功能。
## ✨ 特性
- 📸 **图文笔记发布**支持1-9张图片
- 🎬 **视频笔记发布**:支持视频笔记上传
- 🔐 **自动登录**扫码登录一次自动保存Cookie
- 🏷️ **智能标签**:自动添加话题标签
-**定时发布**:支持设置发布时间
- 🤖 **人类化操作**:模拟真实用户行为,降低风控风险
- 🚀 **简单易用**:几行代码即可完成发布
## 📦 安装
### 1. 环境要求
- Python 3.11+
- macOS / Windows / Linux
### 2. 安装依赖
```bash
# 克隆或下载项目
cd xiaohongshu_note_publisher
# 安装Python依赖
pip install playwright loguru
# 安装浏览器驱动
playwright install chromium
```
## 🚀 快速开始
### 发布图文笔记
```python
import asyncio
from publisher import XiaoHongShuImageNote
async def main():
# 创建图文笔记上传器
note = XiaoHongShuImageNote(
title="周末去哪玩 ✨",
content="今天天气真好,推荐大家去公园走走~",
tags=["#广州", "#周末", "#出游"],
image_paths=["photo1.jpg", "photo2.jpg"],
publish_date=0, # 0表示立即发布
account_file="cookies/account.json"
)
# 执行发布
await note.main()
print("✅ 发布成功!")
if __name__ == "__main__":
asyncio.run(main())
```
### 发布视频笔记
```python
import asyncio
from publisher import XiaoHongShuVideoNote
async def main():
# 创建视频笔记上传器
note = XiaoHongShuVideoNote(
title="分享日常 vlog",
content="今天的生活记录~",
tags=["#vlog", "#日常"],
video_path="my_video.mp4",
publish_date=0,
account_file="cookies/account.json"
)
await note.main()
print("✅ 发布成功!")
if __name__ == "__main__":
asyncio.run(main())
```
## 📖 详细使用
### 参数说明
#### XiaoHongShuImageNote图文笔记
| 参数 | 类型 | 必填 | 说明 | 示例 |
|------|------|------|------|------|
| `title` | str | ✅ | 笔记标题最多30字 | "周末去哪玩" |
| `content` | str | ✅ | 笔记正文最多1000字 | "今天天气真好..." |
| `tags` | List[str] | ✅ | 话题标签最多3个 | ["#广州", "#周末"] |
| `image_paths` | List[str] | ✅ | 图片路径列表1-9张 | ["1.jpg", "2.jpg"] |
| `publish_date` | int/datetime | ✅ | 发布时间0表示立即发布 | 0 或 datetime对象 |
| `account_file` | str | ✅ | Cookie文件路径 | "cookies/account.json" |
| `location` | str | ❌ | 地理位置 | "广州塔" |
| `cover_index` | int | ❌ | 封面图索引0-8 | 0 |
| `filter_name` | str | ❌ | 滤镜名称 | "自然" |
| `headless` | bool | ❌ | 是否无头模式 | False |
#### XiaoHongShuVideoNote视频笔记
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `title` | str | ✅ | 笔记标题 |
| `content` | str | ✅ | 笔记正文 |
| `tags` | List[str] | ✅ | 话题标签 |
| `video_path` | str | ✅ | 视频文件路径 |
| `publish_date` | int/datetime | ✅ | 发布时间 |
| `account_file` | str | ✅ | Cookie文件路径 |
| `location` | str | ❌ | 地理位置 |
| `headless` | bool | ❌ | 是否无头模式 |
### 定时发布示例
```python
from datetime import datetime, timedelta
# 设置明天下午3点发布
tomorrow_3pm = datetime.now() + timedelta(days=1)
tomorrow_3pm = tomorrow_3pm.replace(hour=15, minute=0, second=0)
note = XiaoHongShuImageNote(
title="明天见~",
content="提前准备好的内容",
tags=["#生活"],
image_paths=["photo.jpg"],
publish_date=tomorrow_3pm, # 使用datetime对象
account_file="cookies/account.json"
)
```
### 添加地理位置
```python
note = XiaoHongShuImageNote(
title="打卡广州塔",
content="来广州必打卡的地标!",
tags=["#广州", "#旅行"],
image_paths=["guangzhou_tower.jpg"],
publish_date=0,
account_file="cookies/account.json",
location="广州塔" # 添加地理位置
)
```
## 🔐 首次使用获取Cookie
第一次运行时,工具会自动打开浏览器:
1. 🖥️ 浏览器自动打开小红书登录页面
2. 📱 使用小红书App扫描二维码登录
3. ✅ 登录成功后Cookie自动保存
4. 🎉 下次使用直接读取Cookie无需重复登录
```python
# 首次运行会自动打开浏览器让你扫码
# Cookie会保存到指定路径
await note.main() # 自动处理登录流程
```
## 📁 项目结构
```
xiaohongshu_note_publisher/
├── README.md # 本文件
├── publisher.py # 主程序
├── utils.py # 工具函数
├── requirements.txt # 依赖列表
├── example_image.py # 图文笔记示例
├── example_video.py # 视频笔记示例
├── quick_test.py # 快速测试脚本
└── cookies/ # Cookie存储目录
└── account.json
```
## 🔍 常见问题
### 1. Cookie失效怎么办
删除Cookie文件重新运行程序会自动打开浏览器让你重新登录
```bash
rm cookies/account.json
python example_image.py # 重新运行
```
### 2. 上传失败怎么办?
- 检查网络连接
- 确认Cookie有效
- 查看错误截图(自动保存)
- 确认图片/视频文件存在
### 3. 如何批量发布?
```python
import asyncio
from publisher import XiaoHongShuImageNote
async def batch_publish():
posts = [
{"title": "标题1", "images": ["1.jpg"], "tags": ["#tag1"]},
{"title": "标题2", "images": ["2.jpg"], "tags": ["#tag2"]},
]
for post in posts:
note = XiaoHongShuImageNote(
title=post["title"],
content=post["title"],
tags=post["tags"],
image_paths=post["images"],
publish_date=0,
account_file="cookies/account.json"
)
await note.main()
await asyncio.sleep(30) # 每次发布间隔30秒避免风控
asyncio.run(batch_publish())
```
### 4. 支持多账号吗?
支持为每个账号准备不同的Cookie文件
```python
# 账号1
note1 = XiaoHongShuImageNote(
...,
account_file="cookies/account1.json"
)
# 账号2
note2 = XiaoHongShuImageNote(
...,
account_file="cookies/account2.json"
)
```
## ⚠️ 注意事项
1. **发布频率**建议每次发布间隔30秒以上避免触发平台风控
2. **内容质量**:确保发布内容符合小红书社区规范
3. **图片要求**支持jpg、png格式建议分辨率1080x1080以上
4. **视频要求**支持mp4格式建议1080P以上
5. **Cookie安全**妥善保管Cookie文件不要泄露给他人
## 🛠️ 高级功能
### 使用有头模式(推荐新手)
```python
note = XiaoHongShuImageNote(
...,
headless=False # 可以看到浏览器操作过程
)
```
### 自定义封面
```python
note = XiaoHongShuImageNote(
...,
image_paths=["img1.jpg", "img2.jpg", "img3.jpg"],
cover_index=1 # 使用第2张图片作为封面索引从0开始
)
```
## 📝 更新日志
### v1.0.0 (2025-11-07)
- ✨ 首次发布
- 📸 支持图文笔记发布
- 🎬 支持视频笔记发布
- 🔐 自动Cookie管理
- ⏰ 支持定时发布
- 🤖 人类化操作
## 📄 许可
MIT License
## 🤝 贡献
欢迎提交Issue和Pull Request
## 💬 联系方式
如有问题欢迎通过Issue联系。
---
**⚡ 快速开始:** 运行 `python quick_test.py` 立即体验!