# 📕 小红书创作者MCP工具包
[](LICENSE)
[]((https://kayin-1253854796.cos.ap-shanghai.myqcloud.com/ownmedia/20250622023225261.jpg?imageSlim))
一个强大的小红书自动化工具包,支持通过MCP协议与AI客户端(如Claude Desktop等)集成,实现与AI对话即可进行内容创作、发布及创作者数据分析。
## ✨ 主要特性
- 🍪 **Cookie管理**: 安全获取、验证和管理小红书登录凭证
- 🤖 **MCP协议支持**: 与Claude Desktop、CherryStudio等AI客户端无缝集成
- 📝 **自动发布**: 支持图文和视频笔记的自动化发布
- 🖼️ **多样化图片支持**: 支持本地图片、网络URL
- ⏰ **定时任务**: 支持cron表达式的定时数据采集
- 📊 **数据采集**: 自动采集创作者中心仪表板、内容分析、粉丝数据
- 🧠 **AI数据分析**: 中文表头数据,AI可直接理解和分析
- 💾 **数据存储**: 支持csv本地存储(sql目前保留,暂不开发)
- 🎯 **统一接口**: 一个工具解决llm操作小红书自动化需求
## 📋 功能清单
### 登录
- [x] **登录** - 支持传统的命令行登录和通过与AI对话完成登录
### 内容发布
- [x] **图文发布** - 支持发布图文笔记
- [x] **视频发布** - 支持发布视频笔记
- [x] **话题标签** - 支持自动添加话题标签,提升内容曝光度
- [ ] **内容搜索** - 支持指定搜索(开发计划中)
### 数据采集
- [x] **仪表板数据** - 采集账号概览数据(粉丝数、获赞数等)
- [x] **内容分析数据** - 采集笔记表现数据(浏览量、点赞数等)
- [x] **粉丝数据** - 采集粉丝增长和分析数据
- [x] **定时采集** - 支持cron表达式的自动定时采集
- [x] **数据存储** - CSV本地存储(默认)
## 📋 环境要求
### 🌐 浏览器环境
- **Google Chrome 浏览器** (最新版本推荐)
- **ChromeDriver** (版本必须与Chrome版本完全匹配)
### 🔍 查看Chrome版本
在Chrome浏览器中访问:`chrome://version/`
<!--  -->

### 📥 ChromeDriver安装方式
#### 方法一:自动下载(推荐)
```bash
# 使用webdriver-manager自动管理
pip install webdriver-manager
```
#### 方法二:手动下载
1. 📋 访问官方下载页面:[Chrome for Testing](https://googlechromelabs.github.io/chrome-for-testing/)
2. 🎯 选择与您Chrome版本完全匹配的ChromeDriver
3. 📁 下载后解压到合适位置(如 `/usr/local/bin/` 或 `C:\tools\`)
4. ⚙️ 在 `.env` 文件中配置正确路径
#### 方法三:包管理器安装
```bash
# macOS (Homebrew)
brew install --cask chromedriver
# Windows (Chocolatey)
choco install chromedriver
# Linux (Ubuntu/Debian)
sudo apt-get install chromium-chromedriver
```
> ⚠️ **重要提示**:版本不匹配是最常见的问题原因,请确保ChromeDriver版本与Chrome浏览器版本完全一致!
### 🌐 远程浏览器连接
支持连接到已运行的远程Chrome实例,提高性能和支持远程部署场景。
#### 🔧 配置方法
在 `.env` 文件中添加以下配置:
```bash
# 启用远程浏览器连接
ENABLE_REMOTE_BROWSER=true
REMOTE_BROWSER_HOST=http://xx.xx.xx.xx
REMOTE_BROWSER_PORT=xxxx
```
#### 🚀 启动远程Chrome
- 如果报错没有权限,请检查 `./chrome-data` 目录是否存在切查看是否有读写权限,如果没有读写权限,请按照下面的步骤修复
1. `docker run --rm selenium/standalone-chrome id seluser` 获取seluser的uid,例如返回 `uid=1200(seluser) gid=1200(seluser) groups=1200(seluser)`
2. `sudo chown -R 1200:1200 ./chrome-data` 赋予seluser的读写权限,1200是seluser的uid
3. 重新执行 `docker-compose up --force-recreate` 启动容器
```bash
version: '3.8'
services:
selenium-chrome:
image: selenium/standalone-chrome:latest
container_name: selenium-chrome
ports:
- "54444:4444"
- "57900:7900"
shm_size: 2g
environment:
- SE_VNC_NO_PASSWORD=1
volumes:
- ./chrome-data:/home/seluser # 更换挂载路径,确保权限
restart: unless-stopped
command: >
bash -c "mkdir -p /home/seluser/.config/google-chrome &&
touch /home/seluser/.config/google-chrome/test.txt &&
/opt/bin/entry_point.sh"
```
#### 💡 使用场景
- **远程部署**:在服务器上运行Chrome,本地连接使用
- **性能优化**:复用已运行的Chrome实例,避免重复启动
- **开发调试**:连接到已登录的Chrome实例,保持会话状态
- **Docker环境**:在容器间共享Chrome实例
#### ⚠️ 注意事项
- 远程连接时不会启动新的Chrome实例
- 确保目标Chrome实例已开启远程调试功能
- 某些操作(如窗口大小调整)在远程模式下可能不支持
## 🚀 快速开始
### 💡 极简使用方式
```bash
# 克隆项目
git clone https://github.com/aki66938/xhs-toolkit.git
cd xhs-toolkit
# 运行(会自动安装依赖)
./xhs # Mac/Linux
xhs.bat # Windows
# 或使用 Python
python install_deps.py # 安装依赖向导
./xhs # 启动程序
```
### 🎮 交互式菜单
运行 `./xhs` 后会显示友好的菜单界面:
```
╭─────────────────────────────────────────╮
│ 小红书MCP工具包 v1.3.0 │
│ 快速操作菜单系统 │
╰─────────────────────────────────────────╯
【主菜单】
1. 🔄 数据收集
2. 🌐 浏览器操作
3. 📊 数据管理
4. 🍪 Cookie管理
5. 🚀 MCP服务器
6. ⚙️ 系统工具
0. 退出
```
### 🛠️ 从源码运行
#### 方法一:uv (推荐 ⚡)
```bash
# 克隆项目
git clone https://github.com/aki66938/xhs-toolkit.git
cd xhs-toolkit
# 使用uv安装依赖并运行
uv sync
uv run python xhs_toolkit.py status ## 验证工具是否可用
```
> 💡 **uv使用提示**:文档中所有 `python` 命令都可以用 `uv run python` 替代,享受更快的依赖管理体验!
#### 方法二:pip (传统方式)
```bash
# 克隆项目
git clone https://github.com/aki66938/xhs-toolkit.git
cd xhs-toolkit
# 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
python xhs_toolkit.py status ## 验证工具是否可用
```
## 🛠️ 使用指南
### 1. 创建配置文件
复制并编辑配置文件:
```bash
cp env_example .env
vim .env # 编辑配置
```
**必需配置**:
```bash
# Chrome浏览器路径
CHROME_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
# ChromeDriver路径
WEBDRIVER_CHROME_DRIVER="/opt/homebrew/bin/chromedriver"
```
### 2. 获取登录凭证
```bash
# 方式一:使用交互式菜单
./xhs
# 选择 4 -> Cookie管理 -> 1 -> 获取新的Cookies
# 方式二:直接命令
./xhs cookie save
```
在弹出的浏览器中, 如果是连接的远程浏览器,可以访问 http://ip:57900 访问vnc界面,然后执行下面的步骤:
1. 登录小红书创作者中心
2. 确保能正常访问创作者中心功能
3. 完成后按回车键保存
### 3. 启动MCP服务器
```bash
# 方式一:使用交互式菜单
./xhs
# 选择 5 -> MCP服务器 -> 1 -> 启动服务器
# 方式二:直接命令
./xhs server start
```
### 4. 客户端配置
**Claude Desktop**
#### 使用 uv(推荐)
在 `~/Library/Application Support/Claude/claude_desktop_config.json` 中添加:
```json
{
"mcpServers": {
"xhs-toolkit": {
"command": "uv",
"args": [
"--directory",
"/path/to/xhs-toolkit",
"run",
"python",
"-m",
"src.server.mcp_server",
"--stdio"
]
}
}
}
```
#### 使用系统 Python
如果不使用 uv,可以配置为:
```json
{
"mcpServers": {
"xhs-toolkit": {
"command": "python3",
"args": [
"-m",
"src.server.mcp_server",
"--stdio"
],
"cwd": "/path/to/xhs-toolkit",
"env": {
"PYTHONPATH": "/path/to/xhs-toolkit"
}
}
}
}
```
**注意**:
- 需要将 `/path/to/xhs-toolkit` 替换为实际的项目路径
- macOS 用户配置文件位置:`~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows 用户配置文件位置:`%APPDATA%\Claude\claude_desktop_config.json`
- 修改配置后需要重启 Claude Desktop
**cherry studio**
在MCP配置中添加

**n8n**
在n8n的AI agent节点的tool中添加配置配置

## 🔧 主要功能
### MCP工具列表
| 工具名称 | 功能说明 | 参数 | 备注 |
|---------|----------|------|------|
| `test_connection` | 测试MCP连接 | 无 | 连接状态检查 |
| `smart_publish_note` | 发布小红书笔记 ⚡ | title, content, images, videos, tags, topics | 支持本地路径、网络URL、话题标签 |
| `check_task_status` | 检查发布任务状态 | task_id | 查看任务进度 |
| `get_task_result` | 获取已完成任务的结果 | task_id | 获取最终发布结果 |
| `login_xiaohongshu` | 智能登录小红书 | force_relogin, quick_mode | MCP专用无交互登录 |
| `get_creator_data_analysis` | 获取创作者数据用于分析 | 无 | AI数据分析专用 |
### 💬 AI对话式操作指南
通过与AI对话即可完成登录、发布、数据分析等操作,无需学习复杂命令。
#### 🔐 智能登录
```
用户:"登录小红书"
```
**重要提示**:
- 🚨 首次使用请不要更改`headless`参数,获取到cookies后再更改为无头模式
- 🌐 AI调用登录工具后会拉起浏览器,首次登录需要手动输入验证码或扫码
- 🍪 成功后会自动保存cookies到本地,下次就免登录了
#### 📝 内容发布
**图文发布(本地图片)**:
```
请发布一篇小红书笔记,标题:"今日分享",内容:"...",图片路径:"/User/me/xhs/poster.png"
```
**图文发布(网络图片)**:
```
请发布一篇小红书笔记,标题:"美食分享",内容:"今天的美食",使用这个网络图片:https://example.com/food.jpg
```
**视频发布**:
```
请发布一篇小红书视频,标题:"今日vlog",内容:"...",视频路径:"/User/me/xhs/video.mp4"
```
**带话题标签发布**:
```
请发布一篇小红书笔记,标题:"AI学习心得",内容:"今天学习了机器学习基础",话题:"AI,人工智能,学习心得",图片:"/path/to/image.jpg"
```
#### 📊 数据分析
```
请分析我的小红书账号数据,给出内容优化建议
```
#### 🔧 发布原理
手工上传过程中,浏览器会弹窗让用户选中文件路径,AI会将用户提供的路径参数传递给MCP工具,自动完成上传动作。
#### ⚡ 智能等待机制
- **📷 图片上传**:快速上传,无需等待
- **🎬 视频上传**:轮询检测上传进度,等待"上传成功"标识出现
- **⏱️ 超时保护**:最长等待2分钟,避免MCP调用超时
- **📊 状态监控**:DEBUG模式显示视频文件大小和时长信息
- **🔄 高效轮询**:每2秒检查一次,精确文本匹配
### 📊 数据采集与AI分析功能
自动采集小红书创作者数据,支持定时任务和AI智能分析。
#### 🧠 AI数据分析特性
- **中文表头**: CSV文件使用中文表头,AI可直接理解数据含义
- **智能分析**: 通过 `get_creator_data_analysis` MCP工具获取完整数据
- **数据驱动**: AI基于真实数据提供内容优化建议
- **趋势分析**: 分析账号表现趋势和粉丝增长情况
#### 采集的数据类型
1. **仪表板数据**: 粉丝数、获赞数、浏览量等账号概览数据
2. **内容分析数据**: 笔记表现数据,包括浏览量、点赞数、评论数等
3. **粉丝数据**: 粉丝增长趋势、粉丝画像分析等
#### 定时任务示例
采用cron语法,写入配置文件.env
```bash
# 每6小时采集一次
COLLECTION_SCHEDULE=0 */6 * * *
# 工作日上午9点采集
COLLECTION_SCHEDULE=0 9 * * 1-5
# 每月1号凌晨2点采集
COLLECTION_SCHEDULE=0 2 1 * *
```
### 🎯 手动操作工具
新增交互式菜单和手动操作工具,提供更便捷的操作体验:
#### 主要功能
- **🔄 数据收集**: 手动触发数据采集,支持选择数据类型和时间维度
- **🌐 浏览器操作**: 快速打开已登录的小红书各页面
- **📊 数据管理**: 导出Excel/JSON、分析数据趋势、备份恢复
- **🍪 Cookie管理**: 获取、查看、验证Cookies状态
#### 使用示例
```bash
# 启动交互式菜单
./xhs
# 或使用命令行
./xhs manual collect --type all # 收集所有数据
./xhs manual browser --page publish # 打开发布页面
./xhs manual export --format excel # 导出Excel
./xhs manual analyze # 分析数据趋势
```
---
## 🚀 更新日志 - v1.3.0
### 🎯 重要功能更新
#### 🏷️ 话题标签自动化功能(完整实现)
- **全新话题自动化系统**:基于严谨的Playwright验证测试,实现真正有效的小红书话题标签添加
- **智能输入机制**:使用Actions类逐字符输入和JavaScript事件模拟,完美模拟真实用户操作
- **完整DOM验证**:支持检测`data-topic`属性和隐藏标识,确保话题获得平台流量推荐
- **多重备用方案**:多种输入方式和验证机制,提供99%+的成功率保障
#### 🔧 话题架构重构升级
- **术语统一**:全面从"标签"重构为"话题",符合小红书平台术语
- **组件化设计**:新增`topic_automation.py`专用模块,提供基础和高级自动化功能
- **接口统一**:更新所有模型、接口和服务器代码,保持向后兼容性
#### 🧪 基于实测的关键修复
- **输入方式修复**:解决直接`send_keys`无法触发下拉菜单的问题
- **验证机制改进**:多层验证确保话题转换成功,包含完整的元数据检查
- **容错处理增强**:即使某个环节失败也有多个备用方案,确保功能稳定性
### 使用示例
```python
# 新的话题功能使用(MCP工具中自动支持)
smart_publish_note(
title="AI学习心得",
content="分享一些人工智能学习经验",
topics=["AI", "人工智能", "学习心得"], # 新增话题参数
images=["image.jpg"]
)
```
### 技术细节
- **验证测试覆盖率**:基于3次严谨的Playwright验证测试
- **DOM结构适配**:完全适配小红书真实的话题标签DOM结构
- **性能优化**:智能等待机制和并发处理,提升自动化效率
### 测试效果

---
<details>
<summary>📜 点击查看 v1.2.5 更新日志</summary>
## 🚀 更新日志 - v1.2.5
### 新增功能
#### 🎮 交互式菜单系统
- 统一入口 `./xhs`,无需记忆复杂命令
- 数字选择菜单,操作更直观
- 实时状态显示,了解系统状态
- 支持Windows(xhs.bat)和Unix系统
#### 🛠️ 手动操作工具集
- **manual collect**: 手动数据收集,支持选择类型和维度
- **manual browser**: 打开已登录浏览器,快速访问各页面
- **manual export**: 导出数据为Excel或JSON格式
- **manual analyze**: 分析数据趋势,查看最佳笔记
- **manual backup/restore**: 数据备份和恢复功能
#### 🔧 改进的依赖管理
- 智能检测uv/pip环境
- 自动选择最佳Python环境
- 新增 `install_deps.py` 安装向导
- 同时支持uv和pip安装方式
### 优化改进
- 简化启动命令,统一使用 `./xhs`
- 改进Windows支持,提供bat和PowerShell脚本
- 优化代码结构,拆分模块避免单文件过大
- 增强错误处理和用户提示
</details>
---
<details>
<summary>📜 点击查看 v1.2.4 更新日志</summary>
## 🚀 更新日志 - v1.2.4
### 新增功能
#### 🌐 网络图片支持
- 支持 HTTP/HTTPS 图片链接直接发布
- 自动下载网络图片到本地临时目录
- 支持常见图片格式(jpg、png、gif、webp)
#### 📁 改进的图片处理
- 新增 `ImageProcessor` 模块统一处理各种图片输入
- 支持混合输入:`["local.jpg", "https://example.com/img.jpg"]`
- 更灵活的输入格式支持
### 使用示例
```python
# 网络图片
smart_publish_note(
title="美食分享",
content="今天的美食",
images=["https://example.com/food.jpg"]
)
# 混合使用
smart_publish_note(
title="旅行记录",
content="风景很美",
images=["/local/photo.jpg", "https://example.com/view.jpg"]
)
```
### 其他优化
- 改进文本处理,保留换行符
- 更新文档说明
</details>
---
<details>
<summary>📜 点击查看 v1.2.3 更新日志</summary>
## 🚀 更新日志 - v1.2.3
### 🔧 重要修复
#### 🖥️ 无头模式优化
- **修复无头模式失效问题**:增强Chrome无头模式配置,添加多重保险参数
- **优化浏览器启动逻辑**:使用`--headless=new`和`--headless`双重无头模式配置
- **优化配置验证**:确保所有模块都使用统一的HEADLESS配置,避免配置不一致问题
### 💡 细节
- 添加了`--disable-gpu-compositing`、`--disable-notifications`等多个Chrome参数
- 改进了MCP服务器启动时的异步初始化逻辑
- 增强了Windows环境下的兼容性和稳定性
</details>
---
<details>
<summary>📜 点击查看 v1.2.2 更新日志</summary>
## 🚀 更新日志 - v1.2.2
### 🆕 新增功能
#### 🔐 智能登录系统
- 新增自动化登录检测机制,支持MCP模式下的无交互登录
- 实现四重检测机制:URL状态、页面元素、身份验证、错误状态检测
- 添加智能等待机制,自动监测登录完成状态
- 优化cookies保存逻辑,区分交互模式和自动化模式
#### 🧠 智能路径解析系统
- 新增智能文件路径识别功能,支持多种输入格式自动解析
- 新增 `smart_parse_file_paths()` 函数,使用JSON解析、ast.literal_eval等多种解析方式
- 适配LLM对话场景和dify等平台的数组数据传递
**支持的输入格式**:
- 逗号分隔:`"a.jpg,b.jpg,c.jpg"`
- 数组字符串:`"[a.jpg,b.jpg,c.jpg]"`
- JSON数组:`'["a.jpg","b.jpg","c.jpg"]'`
- 真实数组:`["a.jpg", "b.jpg", "c.jpg"]`
- 混合格式:`"[a.jpg,'b.jpg',\"c.jpg\"]"`
#### 🛠️ 代码架构优化
- 重构登录相关模块,提升代码可维护性
- 优化异常处理机制,增强系统稳定性
### 🔧 修复功能
#### 📝 路径处理优化
- 解决用户反馈的多张图片上传格式识别问题
- 智能区分字符串和数组格式,避免数据类型判断错误
- 支持从不同平台(dify、LLM对话等)传递的各种数据格式
- 增强容错能力,即使格式不标准也能尽量解析
</details>
---
## 🚀 开发路线图
### 📋 待开发功能
#### 🔥 高优先级
- **🔐 无头模式登录** - 完善无头模式下的自动登录流程,提升自动化体验
#### 🔮 长期规划
- **🤖 AI创作声明** - 智能检测AI生成内容,自动添加创作声明标识
- **👥 多账号管理** - 支持多账号切换发布(遵循平台政策,单IP限制3个账号)
- **🌐 代理模式支持** - 配合多账号功能,支持代理网络访问
- **🐳 Docker容器化** - 提供容器化部署方案,便于多实例管理和部署
- **🔍 内容审核机制** - 敏感词提醒或过滤
## 🔧 故障排除
### ChromeDriver常见问题
#### ❌ 问题:版本不匹配错误
```
selenium.common.exceptions.SessionNotCreatedException: session not created: This version of ChromeDriver only supports Chrome version XX
```
**✅ 解决方案**:
1. 🔍 检查Chrome版本:访问 `chrome://version/`
2. 📥 下载对应版本的ChromeDriver:[Chrome for Testing](https://googlechromelabs.github.io/chrome-for-testing/)
3. ⚙️ 更新 `.env` 文件中的路径配置
#### ❌ 问题:ChromeDriver找不到
```
selenium.common.exceptions.WebDriverException: 'chromedriver' executable needs to be in PATH
```
**✅ 解决方案**:
1. 确认ChromeDriver已下载并解压
2. 方案A:将ChromeDriver添加到系统PATH
3. 方案B:在 `.env` 中配置完整路径:`WEBDRIVER_CHROME_DRIVER="/path/to/chromedriver"`
4. Linux/macOS: 确保文件有执行权限 `chmod +x chromedriver`
#### ❌ 问题:Chrome浏览器路径错误
```
selenium.common.exceptions.WebDriverException: unknown error: cannot find Chrome binary
```
**✅ 解决方案**:在 `.env` 文件中配置正确的Chrome路径
```bash
# macOS
CHROME_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
# Windows
CHROME_PATH="C:\Program Files\Google\Chrome\Application\chrome.exe"
# Linux
CHROME_PATH="/usr/bin/google-chrome"
```
### 其他常见问题
#### ❌ 问题:MCP连接失败
**✅ 解决方案**:
1. 确认服务器已启动:`python xhs_toolkit.py server start`
2. 检查端口8000是否被占用
3. 重启Claude Desktop或其他MCP客户端
#### ❌ 问题:登录失败
**✅ 解决方案**:
1. 清除旧的cookies:删除 `xhs_cookies.json` 文件
2. 重新获取cookies:`python xhs_toolkit.py cookie save`
3. 确保使用正确的小红书创作者中心账号
---
## 🙏 贡献者
感谢所有为项目做出贡献的人!
<a href="https://github.com/aki66938/xhs-toolkit/graphs/contributors">
<img src="https://contrib.rocks/image?repo=aki66938/xhs-toolkit" />
</a>
如果您也想为项目做出贡献,欢迎提交 Pull Request 或 Issue!
## 📄 许可证
本项目基于 [MIT许可证](LICENSE) 开源。
## 🔐 安全承诺
- ✅ **本地存储**: 所有数据仅保存在本地
- ✅ **开源透明**: 代码完全开源,可审计
- ✅ **用户控制**: 您完全控制自己的数据
<div align="center">
Made with ❤️ for content creators
</div>
Raw data
{
"_id": null,
"home_page": null,
"name": "iflow-mcp_xhs-toolkit",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "xiaohongshu, mcp, automation, ai, \u5c0f\u7ea2\u4e66",
"author": "aki66938",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/a1/db/6573a064164aeb990d677f7fc2c5d487309121f1bf813d6e9ddf6331107a/iflow_mcp_xhs_toolkit-1.2.1.tar.gz",
"platform": null,
"description": "# \ud83d\udcd5 \u5c0f\u7ea2\u4e66\u521b\u4f5c\u8005MCP\u5de5\u5177\u5305\n\n[](LICENSE)\n[]((https://kayin-1253854796.cos.ap-shanghai.myqcloud.com/ownmedia/20250622023225261.jpg?imageSlim))\n\n\u4e00\u4e2a\u5f3a\u5927\u7684\u5c0f\u7ea2\u4e66\u81ea\u52a8\u5316\u5de5\u5177\u5305\uff0c\u652f\u6301\u901a\u8fc7MCP\u534f\u8bae\u4e0eAI\u5ba2\u6237\u7aef\uff08\u5982Claude Desktop\u7b49\uff09\u96c6\u6210\uff0c\u5b9e\u73b0\u4e0eAI\u5bf9\u8bdd\u5373\u53ef\u8fdb\u884c\u5185\u5bb9\u521b\u4f5c\u3001\u53d1\u5e03\u53ca\u521b\u4f5c\u8005\u6570\u636e\u5206\u6790\u3002\n\n## \u2728 \u4e3b\u8981\u7279\u6027\n\n- \ud83c\udf6a **Cookie\u7ba1\u7406**: \u5b89\u5168\u83b7\u53d6\u3001\u9a8c\u8bc1\u548c\u7ba1\u7406\u5c0f\u7ea2\u4e66\u767b\u5f55\u51ed\u8bc1\n- \ud83e\udd16 **MCP\u534f\u8bae\u652f\u6301**: \u4e0eClaude Desktop\u3001CherryStudio\u7b49AI\u5ba2\u6237\u7aef\u65e0\u7f1d\u96c6\u6210\n- \ud83d\udcdd **\u81ea\u52a8\u53d1\u5e03**: \u652f\u6301\u56fe\u6587\u548c\u89c6\u9891\u7b14\u8bb0\u7684\u81ea\u52a8\u5316\u53d1\u5e03\n- \ud83d\uddbc\ufe0f **\u591a\u6837\u5316\u56fe\u7247\u652f\u6301**: \u652f\u6301\u672c\u5730\u56fe\u7247\u3001\u7f51\u7edcURL\n- \u23f0 **\u5b9a\u65f6\u4efb\u52a1**: \u652f\u6301cron\u8868\u8fbe\u5f0f\u7684\u5b9a\u65f6\u6570\u636e\u91c7\u96c6\n- \ud83d\udcca **\u6570\u636e\u91c7\u96c6**: \u81ea\u52a8\u91c7\u96c6\u521b\u4f5c\u8005\u4e2d\u5fc3\u4eea\u8868\u677f\u3001\u5185\u5bb9\u5206\u6790\u3001\u7c89\u4e1d\u6570\u636e\n- \ud83e\udde0 **AI\u6570\u636e\u5206\u6790**: \u4e2d\u6587\u8868\u5934\u6570\u636e\uff0cAI\u53ef\u76f4\u63a5\u7406\u89e3\u548c\u5206\u6790\n- \ud83d\udcbe **\u6570\u636e\u5b58\u50a8**: \u652f\u6301csv\u672c\u5730\u5b58\u50a8\uff08sql\u76ee\u524d\u4fdd\u7559\uff0c\u6682\u4e0d\u5f00\u53d1\uff09\n- \ud83c\udfaf **\u7edf\u4e00\u63a5\u53e3**: \u4e00\u4e2a\u5de5\u5177\u89e3\u51b3llm\u64cd\u4f5c\u5c0f\u7ea2\u4e66\u81ea\u52a8\u5316\u9700\u6c42\n\n## \ud83d\udccb \u529f\u80fd\u6e05\u5355\n\n### \u767b\u5f55\n- [x] **\u767b\u5f55** - \u652f\u6301\u4f20\u7edf\u7684\u547d\u4ee4\u884c\u767b\u5f55\u548c\u901a\u8fc7\u4e0eAI\u5bf9\u8bdd\u5b8c\u6210\u767b\u5f55\n\n### \u5185\u5bb9\u53d1\u5e03\n- [x] **\u56fe\u6587\u53d1\u5e03** - \u652f\u6301\u53d1\u5e03\u56fe\u6587\u7b14\u8bb0\n- [x] **\u89c6\u9891\u53d1\u5e03** - \u652f\u6301\u53d1\u5e03\u89c6\u9891\u7b14\u8bb0\n- [x] **\u8bdd\u9898\u6807\u7b7e** - \u652f\u6301\u81ea\u52a8\u6dfb\u52a0\u8bdd\u9898\u6807\u7b7e\uff0c\u63d0\u5347\u5185\u5bb9\u66dd\u5149\u5ea6\n- [ ] **\u5185\u5bb9\u641c\u7d22** - \u652f\u6301\u6307\u5b9a\u641c\u7d22\uff08\u5f00\u53d1\u8ba1\u5212\u4e2d\uff09\n\n### \u6570\u636e\u91c7\u96c6 \n- [x] **\u4eea\u8868\u677f\u6570\u636e** - \u91c7\u96c6\u8d26\u53f7\u6982\u89c8\u6570\u636e\uff08\u7c89\u4e1d\u6570\u3001\u83b7\u8d5e\u6570\u7b49\uff09\n- [x] **\u5185\u5bb9\u5206\u6790\u6570\u636e** - \u91c7\u96c6\u7b14\u8bb0\u8868\u73b0\u6570\u636e\uff08\u6d4f\u89c8\u91cf\u3001\u70b9\u8d5e\u6570\u7b49\uff09\n- [x] **\u7c89\u4e1d\u6570\u636e** - \u91c7\u96c6\u7c89\u4e1d\u589e\u957f\u548c\u5206\u6790\u6570\u636e\n- [x] **\u5b9a\u65f6\u91c7\u96c6** - \u652f\u6301cron\u8868\u8fbe\u5f0f\u7684\u81ea\u52a8\u5b9a\u65f6\u91c7\u96c6\n- [x] **\u6570\u636e\u5b58\u50a8** - CSV\u672c\u5730\u5b58\u50a8\uff08\u9ed8\u8ba4\uff09\n\n## \ud83d\udccb \u73af\u5883\u8981\u6c42\n\n### \ud83c\udf10 \u6d4f\u89c8\u5668\u73af\u5883\n- **Google Chrome \u6d4f\u89c8\u5668** (\u6700\u65b0\u7248\u672c\u63a8\u8350)\n- **ChromeDriver** (\u7248\u672c\u5fc5\u987b\u4e0eChrome\u7248\u672c\u5b8c\u5168\u5339\u914d)\n\n### \ud83d\udd0d \u67e5\u770bChrome\u7248\u672c\n\u5728Chrome\u6d4f\u89c8\u5668\u4e2d\u8bbf\u95ee\uff1a`chrome://version/`\n\n<!--  -->\n\n\n### \ud83d\udce5 ChromeDriver\u5b89\u88c5\u65b9\u5f0f\n\n#### \u65b9\u6cd5\u4e00\uff1a\u81ea\u52a8\u4e0b\u8f7d\uff08\u63a8\u8350\uff09\n```bash\n# \u4f7f\u7528webdriver-manager\u81ea\u52a8\u7ba1\u7406\npip install webdriver-manager\n```\n\n#### \u65b9\u6cd5\u4e8c\uff1a\u624b\u52a8\u4e0b\u8f7d\n1. \ud83d\udccb \u8bbf\u95ee\u5b98\u65b9\u4e0b\u8f7d\u9875\u9762\uff1a[Chrome for Testing](https://googlechromelabs.github.io/chrome-for-testing/)\n2. \ud83c\udfaf \u9009\u62e9\u4e0e\u60a8Chrome\u7248\u672c\u5b8c\u5168\u5339\u914d\u7684ChromeDriver\n3. \ud83d\udcc1 \u4e0b\u8f7d\u540e\u89e3\u538b\u5230\u5408\u9002\u4f4d\u7f6e\uff08\u5982 `/usr/local/bin/` \u6216 `C:\\tools\\`\uff09\n4. \u2699\ufe0f \u5728 `.env` \u6587\u4ef6\u4e2d\u914d\u7f6e\u6b63\u786e\u8def\u5f84\n\n#### \u65b9\u6cd5\u4e09\uff1a\u5305\u7ba1\u7406\u5668\u5b89\u88c5\n```bash\n# macOS (Homebrew)\nbrew install --cask chromedriver\n\n# Windows (Chocolatey) \nchoco install chromedriver\n\n# Linux (Ubuntu/Debian)\nsudo apt-get install chromium-chromedriver\n```\n\n> \u26a0\ufe0f **\u91cd\u8981\u63d0\u793a**\uff1a\u7248\u672c\u4e0d\u5339\u914d\u662f\u6700\u5e38\u89c1\u7684\u95ee\u9898\u539f\u56e0\uff0c\u8bf7\u786e\u4fddChromeDriver\u7248\u672c\u4e0eChrome\u6d4f\u89c8\u5668\u7248\u672c\u5b8c\u5168\u4e00\u81f4\uff01\n\n### \ud83c\udf10 \u8fdc\u7a0b\u6d4f\u89c8\u5668\u8fde\u63a5\n\n\u652f\u6301\u8fde\u63a5\u5230\u5df2\u8fd0\u884c\u7684\u8fdc\u7a0bChrome\u5b9e\u4f8b\uff0c\u63d0\u9ad8\u6027\u80fd\u548c\u652f\u6301\u8fdc\u7a0b\u90e8\u7f72\u573a\u666f\u3002\n\n#### \ud83d\udd27 \u914d\u7f6e\u65b9\u6cd5\n\n\u5728 `.env` \u6587\u4ef6\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u914d\u7f6e\uff1a\n\n```bash\n# \u542f\u7528\u8fdc\u7a0b\u6d4f\u89c8\u5668\u8fde\u63a5\nENABLE_REMOTE_BROWSER=true\nREMOTE_BROWSER_HOST=http://xx.xx.xx.xx\nREMOTE_BROWSER_PORT=xxxx\n```\n\n#### \ud83d\ude80 \u542f\u52a8\u8fdc\u7a0bChrome\n- \u5982\u679c\u62a5\u9519\u6ca1\u6709\u6743\u9650\uff0c\u8bf7\u68c0\u67e5 `./chrome-data` \u76ee\u5f55\u662f\u5426\u5b58\u5728\u5207\u67e5\u770b\u662f\u5426\u6709\u8bfb\u5199\u6743\u9650\uff0c\u5982\u679c\u6ca1\u6709\u8bfb\u5199\u6743\u9650\uff0c\u8bf7\u6309\u7167\u4e0b\u9762\u7684\u6b65\u9aa4\u4fee\u590d\n 1. `docker run --rm selenium/standalone-chrome id seluser` \u83b7\u53d6seluser\u7684uid\uff0c\u4f8b\u5982\u8fd4\u56de `uid=1200(seluser) gid=1200(seluser) groups=1200(seluser)`\n 2. `sudo chown -R 1200:1200 ./chrome-data` \u8d4b\u4e88seluser\u7684\u8bfb\u5199\u6743\u9650\uff0c1200\u662fseluser\u7684uid\n 3. \u91cd\u65b0\u6267\u884c `docker-compose up --force-recreate` \u542f\u52a8\u5bb9\u5668\n\n```bash\nversion: '3.8'\n\nservices:\n selenium-chrome:\n image: selenium/standalone-chrome:latest\n container_name: selenium-chrome\n ports:\n - \"54444:4444\"\n - \"57900:7900\"\n shm_size: 2g\n environment:\n - SE_VNC_NO_PASSWORD=1\n volumes:\n - ./chrome-data:/home/seluser # \u66f4\u6362\u6302\u8f7d\u8def\u5f84\uff0c\u786e\u4fdd\u6743\u9650\n restart: unless-stopped\n command: >\n bash -c \"mkdir -p /home/seluser/.config/google-chrome &&\n touch /home/seluser/.config/google-chrome/test.txt &&\n /opt/bin/entry_point.sh\"\n```\n\n#### \ud83d\udca1 \u4f7f\u7528\u573a\u666f\n\n- **\u8fdc\u7a0b\u90e8\u7f72**\uff1a\u5728\u670d\u52a1\u5668\u4e0a\u8fd0\u884cChrome\uff0c\u672c\u5730\u8fde\u63a5\u4f7f\u7528\n- **\u6027\u80fd\u4f18\u5316**\uff1a\u590d\u7528\u5df2\u8fd0\u884c\u7684Chrome\u5b9e\u4f8b\uff0c\u907f\u514d\u91cd\u590d\u542f\u52a8\n- **\u5f00\u53d1\u8c03\u8bd5**\uff1a\u8fde\u63a5\u5230\u5df2\u767b\u5f55\u7684Chrome\u5b9e\u4f8b\uff0c\u4fdd\u6301\u4f1a\u8bdd\u72b6\u6001\n- **Docker\u73af\u5883**\uff1a\u5728\u5bb9\u5668\u95f4\u5171\u4eabChrome\u5b9e\u4f8b\n\n#### \u26a0\ufe0f \u6ce8\u610f\u4e8b\u9879\n\n- \u8fdc\u7a0b\u8fde\u63a5\u65f6\u4e0d\u4f1a\u542f\u52a8\u65b0\u7684Chrome\u5b9e\u4f8b\n- \u786e\u4fdd\u76ee\u6807Chrome\u5b9e\u4f8b\u5df2\u5f00\u542f\u8fdc\u7a0b\u8c03\u8bd5\u529f\u80fd\n- \u67d0\u4e9b\u64cd\u4f5c\uff08\u5982\u7a97\u53e3\u5927\u5c0f\u8c03\u6574\uff09\u5728\u8fdc\u7a0b\u6a21\u5f0f\u4e0b\u53ef\u80fd\u4e0d\u652f\u6301\n\n## \ud83d\ude80 \u5feb\u901f\u5f00\u59cb\n\n### \ud83d\udca1 \u6781\u7b80\u4f7f\u7528\u65b9\u5f0f\n\n```bash\n# \u514b\u9686\u9879\u76ee\ngit clone https://github.com/aki66938/xhs-toolkit.git\ncd xhs-toolkit\n\n# \u8fd0\u884c\uff08\u4f1a\u81ea\u52a8\u5b89\u88c5\u4f9d\u8d56\uff09\n./xhs # Mac/Linux\nxhs.bat # Windows\n\n# \u6216\u4f7f\u7528 Python\npython install_deps.py # \u5b89\u88c5\u4f9d\u8d56\u5411\u5bfc\n./xhs # \u542f\u52a8\u7a0b\u5e8f\n```\n\n### \ud83c\udfae \u4ea4\u4e92\u5f0f\u83dc\u5355\n\n\u8fd0\u884c `./xhs` \u540e\u4f1a\u663e\u793a\u53cb\u597d\u7684\u83dc\u5355\u754c\u9762\uff1a\n\n```\n\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 \u5c0f\u7ea2\u4e66MCP\u5de5\u5177\u5305 v1.3.0 \u2502\n\u2502 \u5feb\u901f\u64cd\u4f5c\u83dc\u5355\u7cfb\u7edf \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\n\u3010\u4e3b\u83dc\u5355\u3011\n1. \ud83d\udd04 \u6570\u636e\u6536\u96c6\n2. \ud83c\udf10 \u6d4f\u89c8\u5668\u64cd\u4f5c\n3. \ud83d\udcca \u6570\u636e\u7ba1\u7406\n4. \ud83c\udf6a Cookie\u7ba1\u7406\n5. \ud83d\ude80 MCP\u670d\u52a1\u5668\n6. \u2699\ufe0f \u7cfb\u7edf\u5de5\u5177\n0. \u9000\u51fa\n```\n\n### \ud83d\udee0\ufe0f \u4ece\u6e90\u7801\u8fd0\u884c\n\n#### \u65b9\u6cd5\u4e00\uff1auv (\u63a8\u8350 \u26a1)\n\n```bash\n# \u514b\u9686\u9879\u76ee\ngit clone https://github.com/aki66938/xhs-toolkit.git\ncd xhs-toolkit\n\n# \u4f7f\u7528uv\u5b89\u88c5\u4f9d\u8d56\u5e76\u8fd0\u884c\nuv sync\nuv run python xhs_toolkit.py status ## \u9a8c\u8bc1\u5de5\u5177\u662f\u5426\u53ef\u7528\n```\n\n> \ud83d\udca1 **uv\u4f7f\u7528\u63d0\u793a**\uff1a\u6587\u6863\u4e2d\u6240\u6709 `python` \u547d\u4ee4\u90fd\u53ef\u4ee5\u7528 `uv run python` \u66ff\u4ee3\uff0c\u4eab\u53d7\u66f4\u5feb\u7684\u4f9d\u8d56\u7ba1\u7406\u4f53\u9a8c\uff01\n\n#### \u65b9\u6cd5\u4e8c\uff1apip (\u4f20\u7edf\u65b9\u5f0f)\n\n```bash\n# \u514b\u9686\u9879\u76ee\ngit clone https://github.com/aki66938/xhs-toolkit.git\ncd xhs-toolkit\n\n# \u521b\u5efa\u865a\u62df\u73af\u5883\uff08\u63a8\u8350\uff09\npython -m venv venv\nsource venv/bin/activate # Windows: venv\\Scripts\\activate\n\n# \u5b89\u88c5\u4f9d\u8d56\npip install -r requirements.txt\npython xhs_toolkit.py status ## \u9a8c\u8bc1\u5de5\u5177\u662f\u5426\u53ef\u7528\n```\n\n\n\n## \ud83d\udee0\ufe0f \u4f7f\u7528\u6307\u5357\n\n### 1. \u521b\u5efa\u914d\u7f6e\u6587\u4ef6\n\n\u590d\u5236\u5e76\u7f16\u8f91\u914d\u7f6e\u6587\u4ef6\uff1a\n\n```bash\ncp env_example .env\nvim .env # \u7f16\u8f91\u914d\u7f6e\n```\n\n**\u5fc5\u9700\u914d\u7f6e**\uff1a\n```bash\n# Chrome\u6d4f\u89c8\u5668\u8def\u5f84\nCHROME_PATH=\"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome\"\n\n# ChromeDriver\u8def\u5f84 \nWEBDRIVER_CHROME_DRIVER=\"/opt/homebrew/bin/chromedriver\"\n```\n\n### 2. \u83b7\u53d6\u767b\u5f55\u51ed\u8bc1\n\n```bash\n# \u65b9\u5f0f\u4e00\uff1a\u4f7f\u7528\u4ea4\u4e92\u5f0f\u83dc\u5355\n./xhs\n# \u9009\u62e9 4 -> Cookie\u7ba1\u7406 -> 1 -> \u83b7\u53d6\u65b0\u7684Cookies\n\n# \u65b9\u5f0f\u4e8c\uff1a\u76f4\u63a5\u547d\u4ee4\n./xhs cookie save\n```\n\n\u5728\u5f39\u51fa\u7684\u6d4f\u89c8\u5668\u4e2d, \u5982\u679c\u662f\u8fde\u63a5\u7684\u8fdc\u7a0b\u6d4f\u89c8\u5668\uff0c\u53ef\u4ee5\u8bbf\u95ee http://ip:57900 \u8bbf\u95eevnc\u754c\u9762\uff0c\u7136\u540e\u6267\u884c\u4e0b\u9762\u7684\u6b65\u9aa4\uff1a\n1. \u767b\u5f55\u5c0f\u7ea2\u4e66\u521b\u4f5c\u8005\u4e2d\u5fc3\n2. \u786e\u4fdd\u80fd\u6b63\u5e38\u8bbf\u95ee\u521b\u4f5c\u8005\u4e2d\u5fc3\u529f\u80fd\n3. \u5b8c\u6210\u540e\u6309\u56de\u8f66\u952e\u4fdd\u5b58\n\n### 3. \u542f\u52a8MCP\u670d\u52a1\u5668\n\n```bash\n# \u65b9\u5f0f\u4e00\uff1a\u4f7f\u7528\u4ea4\u4e92\u5f0f\u83dc\u5355\n./xhs\n# \u9009\u62e9 5 -> MCP\u670d\u52a1\u5668 -> 1 -> \u542f\u52a8\u670d\u52a1\u5668\n\n# \u65b9\u5f0f\u4e8c\uff1a\u76f4\u63a5\u547d\u4ee4\n./xhs server start\n```\n\n### 4. \u5ba2\u6237\u7aef\u914d\u7f6e\n**Claude Desktop**\n\n#### \u4f7f\u7528 uv\uff08\u63a8\u8350\uff09\n\u5728 `~/Library/Application Support/Claude/claude_desktop_config.json` \u4e2d\u6dfb\u52a0\uff1a\n\n```json\n{\n \"mcpServers\": {\n \"xhs-toolkit\": {\n \"command\": \"uv\",\n \"args\": [\n \"--directory\",\n \"/path/to/xhs-toolkit\",\n \"run\",\n \"python\",\n \"-m\",\n \"src.server.mcp_server\",\n \"--stdio\"\n ]\n }\n }\n}\n```\n\n#### \u4f7f\u7528\u7cfb\u7edf Python\n\u5982\u679c\u4e0d\u4f7f\u7528 uv\uff0c\u53ef\u4ee5\u914d\u7f6e\u4e3a\uff1a\n\n```json\n{\n \"mcpServers\": {\n \"xhs-toolkit\": {\n \"command\": \"python3\",\n \"args\": [\n \"-m\",\n \"src.server.mcp_server\",\n \"--stdio\"\n ],\n \"cwd\": \"/path/to/xhs-toolkit\",\n \"env\": {\n \"PYTHONPATH\": \"/path/to/xhs-toolkit\"\n }\n }\n }\n}\n```\n\n**\u6ce8\u610f**\uff1a\n- \u9700\u8981\u5c06 `/path/to/xhs-toolkit` \u66ff\u6362\u4e3a\u5b9e\u9645\u7684\u9879\u76ee\u8def\u5f84\n- macOS \u7528\u6237\u914d\u7f6e\u6587\u4ef6\u4f4d\u7f6e\uff1a`~/Library/Application Support/Claude/claude_desktop_config.json`\n- Windows \u7528\u6237\u914d\u7f6e\u6587\u4ef6\u4f4d\u7f6e\uff1a`%APPDATA%\\Claude\\claude_desktop_config.json`\n- \u4fee\u6539\u914d\u7f6e\u540e\u9700\u8981\u91cd\u542f Claude Desktop\n\n**cherry studio**\n\n\u5728MCP\u914d\u7f6e\u4e2d\u6dfb\u52a0\n\n\n\n**n8n**\n\n\u5728n8n\u7684AI agent\u8282\u70b9\u7684tool\u4e2d\u6dfb\u52a0\u914d\u7f6e\u914d\u7f6e\n\n\n\n## \ud83d\udd27 \u4e3b\u8981\u529f\u80fd\n\n### MCP\u5de5\u5177\u5217\u8868\n\n| \u5de5\u5177\u540d\u79f0 | \u529f\u80fd\u8bf4\u660e | \u53c2\u6570 | \u5907\u6ce8 |\n|---------|----------|------|------|\n| `test_connection` | \u6d4b\u8bd5MCP\u8fde\u63a5 | \u65e0 | \u8fde\u63a5\u72b6\u6001\u68c0\u67e5 |\n| `smart_publish_note` | \u53d1\u5e03\u5c0f\u7ea2\u4e66\u7b14\u8bb0 \u26a1 | title, content, images, videos, tags, topics | \u652f\u6301\u672c\u5730\u8def\u5f84\u3001\u7f51\u7edcURL\u3001\u8bdd\u9898\u6807\u7b7e |\n| `check_task_status` | \u68c0\u67e5\u53d1\u5e03\u4efb\u52a1\u72b6\u6001 | task_id | \u67e5\u770b\u4efb\u52a1\u8fdb\u5ea6 |\n| `get_task_result` | \u83b7\u53d6\u5df2\u5b8c\u6210\u4efb\u52a1\u7684\u7ed3\u679c | task_id | \u83b7\u53d6\u6700\u7ec8\u53d1\u5e03\u7ed3\u679c |\n| `login_xiaohongshu` | \u667a\u80fd\u767b\u5f55\u5c0f\u7ea2\u4e66 | force_relogin, quick_mode | MCP\u4e13\u7528\u65e0\u4ea4\u4e92\u767b\u5f55 |\n| `get_creator_data_analysis` | \u83b7\u53d6\u521b\u4f5c\u8005\u6570\u636e\u7528\u4e8e\u5206\u6790 | \u65e0 | AI\u6570\u636e\u5206\u6790\u4e13\u7528 |\n\n\n\n### \ud83d\udcac AI\u5bf9\u8bdd\u5f0f\u64cd\u4f5c\u6307\u5357\n\n\u901a\u8fc7\u4e0eAI\u5bf9\u8bdd\u5373\u53ef\u5b8c\u6210\u767b\u5f55\u3001\u53d1\u5e03\u3001\u6570\u636e\u5206\u6790\u7b49\u64cd\u4f5c\uff0c\u65e0\u9700\u5b66\u4e60\u590d\u6742\u547d\u4ee4\u3002\n\n#### \ud83d\udd10 \u667a\u80fd\u767b\u5f55\n```\n\u7528\u6237\uff1a\"\u767b\u5f55\u5c0f\u7ea2\u4e66\"\n```\n\n**\u91cd\u8981\u63d0\u793a**\uff1a\n- \ud83d\udea8 \u9996\u6b21\u4f7f\u7528\u8bf7\u4e0d\u8981\u66f4\u6539`headless`\u53c2\u6570\uff0c\u83b7\u53d6\u5230cookies\u540e\u518d\u66f4\u6539\u4e3a\u65e0\u5934\u6a21\u5f0f\n- \ud83c\udf10 AI\u8c03\u7528\u767b\u5f55\u5de5\u5177\u540e\u4f1a\u62c9\u8d77\u6d4f\u89c8\u5668\uff0c\u9996\u6b21\u767b\u5f55\u9700\u8981\u624b\u52a8\u8f93\u5165\u9a8c\u8bc1\u7801\u6216\u626b\u7801\n- \ud83c\udf6a \u6210\u529f\u540e\u4f1a\u81ea\u52a8\u4fdd\u5b58cookies\u5230\u672c\u5730\uff0c\u4e0b\u6b21\u5c31\u514d\u767b\u5f55\u4e86\n\n#### \ud83d\udcdd \u5185\u5bb9\u53d1\u5e03\n\n**\u56fe\u6587\u53d1\u5e03\uff08\u672c\u5730\u56fe\u7247\uff09**\uff1a\n```\n\u8bf7\u53d1\u5e03\u4e00\u7bc7\u5c0f\u7ea2\u4e66\u7b14\u8bb0\uff0c\u6807\u9898\uff1a\"\u4eca\u65e5\u5206\u4eab\"\uff0c\u5185\u5bb9\uff1a\"...\"\uff0c\u56fe\u7247\u8def\u5f84\uff1a\"/User/me/xhs/poster.png\"\n```\n\n**\u56fe\u6587\u53d1\u5e03\uff08\u7f51\u7edc\u56fe\u7247\uff09**\uff1a\n```\n\u8bf7\u53d1\u5e03\u4e00\u7bc7\u5c0f\u7ea2\u4e66\u7b14\u8bb0\uff0c\u6807\u9898\uff1a\"\u7f8e\u98df\u5206\u4eab\"\uff0c\u5185\u5bb9\uff1a\"\u4eca\u5929\u7684\u7f8e\u98df\"\uff0c\u4f7f\u7528\u8fd9\u4e2a\u7f51\u7edc\u56fe\u7247\uff1ahttps://example.com/food.jpg\n```\n\n\n**\u89c6\u9891\u53d1\u5e03**\uff1a\n```\n\u8bf7\u53d1\u5e03\u4e00\u7bc7\u5c0f\u7ea2\u4e66\u89c6\u9891\uff0c\u6807\u9898\uff1a\"\u4eca\u65e5vlog\"\uff0c\u5185\u5bb9\uff1a\"...\"\uff0c\u89c6\u9891\u8def\u5f84\uff1a\"/User/me/xhs/video.mp4\"\n```\n\n**\u5e26\u8bdd\u9898\u6807\u7b7e\u53d1\u5e03**\uff1a\n```\n\u8bf7\u53d1\u5e03\u4e00\u7bc7\u5c0f\u7ea2\u4e66\u7b14\u8bb0\uff0c\u6807\u9898\uff1a\"AI\u5b66\u4e60\u5fc3\u5f97\"\uff0c\u5185\u5bb9\uff1a\"\u4eca\u5929\u5b66\u4e60\u4e86\u673a\u5668\u5b66\u4e60\u57fa\u7840\"\uff0c\u8bdd\u9898\uff1a\"AI\uff0c\u4eba\u5de5\u667a\u80fd\uff0c\u5b66\u4e60\u5fc3\u5f97\"\uff0c\u56fe\u7247\uff1a\"/path/to/image.jpg\"\n```\n\n\n#### \ud83d\udcca \u6570\u636e\u5206\u6790\n```\n\u8bf7\u5206\u6790\u6211\u7684\u5c0f\u7ea2\u4e66\u8d26\u53f7\u6570\u636e\uff0c\u7ed9\u51fa\u5185\u5bb9\u4f18\u5316\u5efa\u8bae\n```\n\n#### \ud83d\udd27 \u53d1\u5e03\u539f\u7406\n\n\u624b\u5de5\u4e0a\u4f20\u8fc7\u7a0b\u4e2d\uff0c\u6d4f\u89c8\u5668\u4f1a\u5f39\u7a97\u8ba9\u7528\u6237\u9009\u4e2d\u6587\u4ef6\u8def\u5f84\uff0cAI\u4f1a\u5c06\u7528\u6237\u63d0\u4f9b\u7684\u8def\u5f84\u53c2\u6570\u4f20\u9012\u7ed9MCP\u5de5\u5177\uff0c\u81ea\u52a8\u5b8c\u6210\u4e0a\u4f20\u52a8\u4f5c\u3002\n\n#### \u26a1 \u667a\u80fd\u7b49\u5f85\u673a\u5236\n\n- **\ud83d\udcf7 \u56fe\u7247\u4e0a\u4f20**\uff1a\u5feb\u901f\u4e0a\u4f20\uff0c\u65e0\u9700\u7b49\u5f85\n- **\ud83c\udfac \u89c6\u9891\u4e0a\u4f20**\uff1a\u8f6e\u8be2\u68c0\u6d4b\u4e0a\u4f20\u8fdb\u5ea6\uff0c\u7b49\u5f85\"\u4e0a\u4f20\u6210\u529f\"\u6807\u8bc6\u51fa\u73b0\n- **\u23f1\ufe0f \u8d85\u65f6\u4fdd\u62a4**\uff1a\u6700\u957f\u7b49\u5f852\u5206\u949f\uff0c\u907f\u514dMCP\u8c03\u7528\u8d85\u65f6 \n- **\ud83d\udcca \u72b6\u6001\u76d1\u63a7**\uff1aDEBUG\u6a21\u5f0f\u663e\u793a\u89c6\u9891\u6587\u4ef6\u5927\u5c0f\u548c\u65f6\u957f\u4fe1\u606f\n- **\ud83d\udd04 \u9ad8\u6548\u8f6e\u8be2**\uff1a\u6bcf2\u79d2\u68c0\u67e5\u4e00\u6b21\uff0c\u7cbe\u786e\u6587\u672c\u5339\u914d \n\n### \ud83d\udcca \u6570\u636e\u91c7\u96c6\u4e0eAI\u5206\u6790\u529f\u80fd\n\n\u81ea\u52a8\u91c7\u96c6\u5c0f\u7ea2\u4e66\u521b\u4f5c\u8005\u6570\u636e\uff0c\u652f\u6301\u5b9a\u65f6\u4efb\u52a1\u548cAI\u667a\u80fd\u5206\u6790\u3002\n\n#### \ud83e\udde0 AI\u6570\u636e\u5206\u6790\u7279\u6027\n- **\u4e2d\u6587\u8868\u5934**: CSV\u6587\u4ef6\u4f7f\u7528\u4e2d\u6587\u8868\u5934\uff0cAI\u53ef\u76f4\u63a5\u7406\u89e3\u6570\u636e\u542b\u4e49\n- **\u667a\u80fd\u5206\u6790**: \u901a\u8fc7 `get_creator_data_analysis` MCP\u5de5\u5177\u83b7\u53d6\u5b8c\u6574\u6570\u636e\n- **\u6570\u636e\u9a71\u52a8**: AI\u57fa\u4e8e\u771f\u5b9e\u6570\u636e\u63d0\u4f9b\u5185\u5bb9\u4f18\u5316\u5efa\u8bae\n- **\u8d8b\u52bf\u5206\u6790**: \u5206\u6790\u8d26\u53f7\u8868\u73b0\u8d8b\u52bf\u548c\u7c89\u4e1d\u589e\u957f\u60c5\u51b5\n\n\n#### \u91c7\u96c6\u7684\u6570\u636e\u7c7b\u578b\n\n1. **\u4eea\u8868\u677f\u6570\u636e**: \u7c89\u4e1d\u6570\u3001\u83b7\u8d5e\u6570\u3001\u6d4f\u89c8\u91cf\u7b49\u8d26\u53f7\u6982\u89c8\u6570\u636e\n2. **\u5185\u5bb9\u5206\u6790\u6570\u636e**: \u7b14\u8bb0\u8868\u73b0\u6570\u636e\uff0c\u5305\u62ec\u6d4f\u89c8\u91cf\u3001\u70b9\u8d5e\u6570\u3001\u8bc4\u8bba\u6570\u7b49\n3. **\u7c89\u4e1d\u6570\u636e**: \u7c89\u4e1d\u589e\u957f\u8d8b\u52bf\u3001\u7c89\u4e1d\u753b\u50cf\u5206\u6790\u7b49\n\n\n#### \u5b9a\u65f6\u4efb\u52a1\u793a\u4f8b\n\n\u91c7\u7528cron\u8bed\u6cd5\uff0c\u5199\u5165\u914d\u7f6e\u6587\u4ef6.env\n```bash\n# \u6bcf6\u5c0f\u65f6\u91c7\u96c6\u4e00\u6b21\nCOLLECTION_SCHEDULE=0 */6 * * *\n\n# \u5de5\u4f5c\u65e5\u4e0a\u53489\u70b9\u91c7\u96c6\nCOLLECTION_SCHEDULE=0 9 * * 1-5\n\n# \u6bcf\u67081\u53f7\u51cc\u66682\u70b9\u91c7\u96c6\nCOLLECTION_SCHEDULE=0 2 1 * *\n```\n### \ud83c\udfaf \u624b\u52a8\u64cd\u4f5c\u5de5\u5177\n\n\u65b0\u589e\u4ea4\u4e92\u5f0f\u83dc\u5355\u548c\u624b\u52a8\u64cd\u4f5c\u5de5\u5177\uff0c\u63d0\u4f9b\u66f4\u4fbf\u6377\u7684\u64cd\u4f5c\u4f53\u9a8c\uff1a\n\n#### \u4e3b\u8981\u529f\u80fd\n- **\ud83d\udd04 \u6570\u636e\u6536\u96c6**: \u624b\u52a8\u89e6\u53d1\u6570\u636e\u91c7\u96c6\uff0c\u652f\u6301\u9009\u62e9\u6570\u636e\u7c7b\u578b\u548c\u65f6\u95f4\u7ef4\u5ea6\n- **\ud83c\udf10 \u6d4f\u89c8\u5668\u64cd\u4f5c**: \u5feb\u901f\u6253\u5f00\u5df2\u767b\u5f55\u7684\u5c0f\u7ea2\u4e66\u5404\u9875\u9762\n- **\ud83d\udcca \u6570\u636e\u7ba1\u7406**: \u5bfc\u51faExcel/JSON\u3001\u5206\u6790\u6570\u636e\u8d8b\u52bf\u3001\u5907\u4efd\u6062\u590d\n- **\ud83c\udf6a Cookie\u7ba1\u7406**: \u83b7\u53d6\u3001\u67e5\u770b\u3001\u9a8c\u8bc1Cookies\u72b6\u6001\n\n#### \u4f7f\u7528\u793a\u4f8b\n```bash\n# \u542f\u52a8\u4ea4\u4e92\u5f0f\u83dc\u5355\n./xhs\n\n# \u6216\u4f7f\u7528\u547d\u4ee4\u884c\n./xhs manual collect --type all # \u6536\u96c6\u6240\u6709\u6570\u636e\n./xhs manual browser --page publish # \u6253\u5f00\u53d1\u5e03\u9875\u9762\n./xhs manual export --format excel # \u5bfc\u51faExcel\n./xhs manual analyze # \u5206\u6790\u6570\u636e\u8d8b\u52bf\n```\n\n---\n## \ud83d\ude80 \u66f4\u65b0\u65e5\u5fd7 - v1.3.0\n\n### \ud83c\udfaf \u91cd\u8981\u529f\u80fd\u66f4\u65b0\n\n#### \ud83c\udff7\ufe0f \u8bdd\u9898\u6807\u7b7e\u81ea\u52a8\u5316\u529f\u80fd\uff08\u5b8c\u6574\u5b9e\u73b0\uff09\n- **\u5168\u65b0\u8bdd\u9898\u81ea\u52a8\u5316\u7cfb\u7edf**\uff1a\u57fa\u4e8e\u4e25\u8c28\u7684Playwright\u9a8c\u8bc1\u6d4b\u8bd5\uff0c\u5b9e\u73b0\u771f\u6b63\u6709\u6548\u7684\u5c0f\u7ea2\u4e66\u8bdd\u9898\u6807\u7b7e\u6dfb\u52a0\n- **\u667a\u80fd\u8f93\u5165\u673a\u5236**\uff1a\u4f7f\u7528Actions\u7c7b\u9010\u5b57\u7b26\u8f93\u5165\u548cJavaScript\u4e8b\u4ef6\u6a21\u62df\uff0c\u5b8c\u7f8e\u6a21\u62df\u771f\u5b9e\u7528\u6237\u64cd\u4f5c\n- **\u5b8c\u6574DOM\u9a8c\u8bc1**\uff1a\u652f\u6301\u68c0\u6d4b`data-topic`\u5c5e\u6027\u548c\u9690\u85cf\u6807\u8bc6\uff0c\u786e\u4fdd\u8bdd\u9898\u83b7\u5f97\u5e73\u53f0\u6d41\u91cf\u63a8\u8350\n- **\u591a\u91cd\u5907\u7528\u65b9\u6848**\uff1a\u591a\u79cd\u8f93\u5165\u65b9\u5f0f\u548c\u9a8c\u8bc1\u673a\u5236\uff0c\u63d0\u4f9b99%+\u7684\u6210\u529f\u7387\u4fdd\u969c\n\n#### \ud83d\udd27 \u8bdd\u9898\u67b6\u6784\u91cd\u6784\u5347\u7ea7\n- **\u672f\u8bed\u7edf\u4e00**\uff1a\u5168\u9762\u4ece\"\u6807\u7b7e\"\u91cd\u6784\u4e3a\"\u8bdd\u9898\"\uff0c\u7b26\u5408\u5c0f\u7ea2\u4e66\u5e73\u53f0\u672f\u8bed\n- **\u7ec4\u4ef6\u5316\u8bbe\u8ba1**\uff1a\u65b0\u589e`topic_automation.py`\u4e13\u7528\u6a21\u5757\uff0c\u63d0\u4f9b\u57fa\u7840\u548c\u9ad8\u7ea7\u81ea\u52a8\u5316\u529f\u80fd\n- **\u63a5\u53e3\u7edf\u4e00**\uff1a\u66f4\u65b0\u6240\u6709\u6a21\u578b\u3001\u63a5\u53e3\u548c\u670d\u52a1\u5668\u4ee3\u7801\uff0c\u4fdd\u6301\u5411\u540e\u517c\u5bb9\u6027\n\n#### \ud83e\uddea \u57fa\u4e8e\u5b9e\u6d4b\u7684\u5173\u952e\u4fee\u590d\n- **\u8f93\u5165\u65b9\u5f0f\u4fee\u590d**\uff1a\u89e3\u51b3\u76f4\u63a5`send_keys`\u65e0\u6cd5\u89e6\u53d1\u4e0b\u62c9\u83dc\u5355\u7684\u95ee\u9898\n- **\u9a8c\u8bc1\u673a\u5236\u6539\u8fdb**\uff1a\u591a\u5c42\u9a8c\u8bc1\u786e\u4fdd\u8bdd\u9898\u8f6c\u6362\u6210\u529f\uff0c\u5305\u542b\u5b8c\u6574\u7684\u5143\u6570\u636e\u68c0\u67e5\n- **\u5bb9\u9519\u5904\u7406\u589e\u5f3a**\uff1a\u5373\u4f7f\u67d0\u4e2a\u73af\u8282\u5931\u8d25\u4e5f\u6709\u591a\u4e2a\u5907\u7528\u65b9\u6848\uff0c\u786e\u4fdd\u529f\u80fd\u7a33\u5b9a\u6027\n\n### \u4f7f\u7528\u793a\u4f8b\n\n```python\n# \u65b0\u7684\u8bdd\u9898\u529f\u80fd\u4f7f\u7528\uff08MCP\u5de5\u5177\u4e2d\u81ea\u52a8\u652f\u6301\uff09\nsmart_publish_note(\n title=\"AI\u5b66\u4e60\u5fc3\u5f97\",\n content=\"\u5206\u4eab\u4e00\u4e9b\u4eba\u5de5\u667a\u80fd\u5b66\u4e60\u7ecf\u9a8c\",\n topics=[\"AI\", \"\u4eba\u5de5\u667a\u80fd\", \"\u5b66\u4e60\u5fc3\u5f97\"], # \u65b0\u589e\u8bdd\u9898\u53c2\u6570\n images=[\"image.jpg\"]\n)\n```\n\n### \u6280\u672f\u7ec6\u8282\n- **\u9a8c\u8bc1\u6d4b\u8bd5\u8986\u76d6\u7387**\uff1a\u57fa\u4e8e3\u6b21\u4e25\u8c28\u7684Playwright\u9a8c\u8bc1\u6d4b\u8bd5\n- **DOM\u7ed3\u6784\u9002\u914d**\uff1a\u5b8c\u5168\u9002\u914d\u5c0f\u7ea2\u4e66\u771f\u5b9e\u7684\u8bdd\u9898\u6807\u7b7eDOM\u7ed3\u6784\n- **\u6027\u80fd\u4f18\u5316**\uff1a\u667a\u80fd\u7b49\u5f85\u673a\u5236\u548c\u5e76\u53d1\u5904\u7406\uff0c\u63d0\u5347\u81ea\u52a8\u5316\u6548\u7387\n\n### \u6d4b\u8bd5\u6548\u679c\n\n\n\n---\n\n<details>\n<summary>\ud83d\udcdc \u70b9\u51fb\u67e5\u770b v1.2.5 \u66f4\u65b0\u65e5\u5fd7</summary>\n## \ud83d\ude80 \u66f4\u65b0\u65e5\u5fd7 - v1.2.5\n\n### \u65b0\u589e\u529f\u80fd\n\n#### \ud83c\udfae \u4ea4\u4e92\u5f0f\u83dc\u5355\u7cfb\u7edf\n- \u7edf\u4e00\u5165\u53e3 `./xhs`\uff0c\u65e0\u9700\u8bb0\u5fc6\u590d\u6742\u547d\u4ee4\n- \u6570\u5b57\u9009\u62e9\u83dc\u5355\uff0c\u64cd\u4f5c\u66f4\u76f4\u89c2\n- \u5b9e\u65f6\u72b6\u6001\u663e\u793a\uff0c\u4e86\u89e3\u7cfb\u7edf\u72b6\u6001\n- \u652f\u6301Windows\uff08xhs.bat\uff09\u548cUnix\u7cfb\u7edf\n\n#### \ud83d\udee0\ufe0f \u624b\u52a8\u64cd\u4f5c\u5de5\u5177\u96c6\n- **manual collect**: \u624b\u52a8\u6570\u636e\u6536\u96c6\uff0c\u652f\u6301\u9009\u62e9\u7c7b\u578b\u548c\u7ef4\u5ea6\n- **manual browser**: \u6253\u5f00\u5df2\u767b\u5f55\u6d4f\u89c8\u5668\uff0c\u5feb\u901f\u8bbf\u95ee\u5404\u9875\u9762\n- **manual export**: \u5bfc\u51fa\u6570\u636e\u4e3aExcel\u6216JSON\u683c\u5f0f\n- **manual analyze**: \u5206\u6790\u6570\u636e\u8d8b\u52bf\uff0c\u67e5\u770b\u6700\u4f73\u7b14\u8bb0\n- **manual backup/restore**: \u6570\u636e\u5907\u4efd\u548c\u6062\u590d\u529f\u80fd\n\n#### \ud83d\udd27 \u6539\u8fdb\u7684\u4f9d\u8d56\u7ba1\u7406\n- \u667a\u80fd\u68c0\u6d4buv/pip\u73af\u5883\n- \u81ea\u52a8\u9009\u62e9\u6700\u4f73Python\u73af\u5883\n- \u65b0\u589e `install_deps.py` \u5b89\u88c5\u5411\u5bfc\n- \u540c\u65f6\u652f\u6301uv\u548cpip\u5b89\u88c5\u65b9\u5f0f\n\n### \u4f18\u5316\u6539\u8fdb\n- \u7b80\u5316\u542f\u52a8\u547d\u4ee4\uff0c\u7edf\u4e00\u4f7f\u7528 `./xhs`\n- \u6539\u8fdbWindows\u652f\u6301\uff0c\u63d0\u4f9bbat\u548cPowerShell\u811a\u672c\n- \u4f18\u5316\u4ee3\u7801\u7ed3\u6784\uff0c\u62c6\u5206\u6a21\u5757\u907f\u514d\u5355\u6587\u4ef6\u8fc7\u5927\n- \u589e\u5f3a\u9519\u8bef\u5904\u7406\u548c\u7528\u6237\u63d0\u793a\n</details>\n\n---\n\n<details>\n<summary>\ud83d\udcdc \u70b9\u51fb\u67e5\u770b v1.2.4 \u66f4\u65b0\u65e5\u5fd7</summary>\n## \ud83d\ude80 \u66f4\u65b0\u65e5\u5fd7 - v1.2.4\n\n### \u65b0\u589e\u529f\u80fd\n\n#### \ud83c\udf10 \u7f51\u7edc\u56fe\u7247\u652f\u6301\n- \u652f\u6301 HTTP/HTTPS \u56fe\u7247\u94fe\u63a5\u76f4\u63a5\u53d1\u5e03\n- \u81ea\u52a8\u4e0b\u8f7d\u7f51\u7edc\u56fe\u7247\u5230\u672c\u5730\u4e34\u65f6\u76ee\u5f55\n- \u652f\u6301\u5e38\u89c1\u56fe\u7247\u683c\u5f0f\uff08jpg\u3001png\u3001gif\u3001webp\uff09\n\n#### \ud83d\udcc1 \u6539\u8fdb\u7684\u56fe\u7247\u5904\u7406\n- \u65b0\u589e `ImageProcessor` \u6a21\u5757\u7edf\u4e00\u5904\u7406\u5404\u79cd\u56fe\u7247\u8f93\u5165\n- \u652f\u6301\u6df7\u5408\u8f93\u5165\uff1a`[\"local.jpg\", \"https://example.com/img.jpg\"]`\n- \u66f4\u7075\u6d3b\u7684\u8f93\u5165\u683c\u5f0f\u652f\u6301\n\n### \u4f7f\u7528\u793a\u4f8b\n\n```python\n# \u7f51\u7edc\u56fe\u7247\nsmart_publish_note(\n title=\"\u7f8e\u98df\u5206\u4eab\",\n content=\"\u4eca\u5929\u7684\u7f8e\u98df\",\n images=[\"https://example.com/food.jpg\"]\n)\n\n# \u6df7\u5408\u4f7f\u7528\nsmart_publish_note(\n title=\"\u65c5\u884c\u8bb0\u5f55\",\n content=\"\u98ce\u666f\u5f88\u7f8e\",\n images=[\"/local/photo.jpg\", \"https://example.com/view.jpg\"]\n)\n```\n\n### \u5176\u4ed6\u4f18\u5316\n- \u6539\u8fdb\u6587\u672c\u5904\u7406\uff0c\u4fdd\u7559\u6362\u884c\u7b26\n- \u66f4\u65b0\u6587\u6863\u8bf4\u660e\n</details>\n---\n\n<details>\n<summary>\ud83d\udcdc \u70b9\u51fb\u67e5\u770b v1.2.3 \u66f4\u65b0\u65e5\u5fd7</summary>\n## \ud83d\ude80 \u66f4\u65b0\u65e5\u5fd7 - v1.2.3\n\n### \ud83d\udd27 \u91cd\u8981\u4fee\u590d\n\n#### \ud83d\udda5\ufe0f \u65e0\u5934\u6a21\u5f0f\u4f18\u5316\n- **\u4fee\u590d\u65e0\u5934\u6a21\u5f0f\u5931\u6548\u95ee\u9898**\uff1a\u589e\u5f3aChrome\u65e0\u5934\u6a21\u5f0f\u914d\u7f6e\uff0c\u6dfb\u52a0\u591a\u91cd\u4fdd\u9669\u53c2\u6570\n- **\u4f18\u5316\u6d4f\u89c8\u5668\u542f\u52a8\u903b\u8f91**\uff1a\u4f7f\u7528`--headless=new`\u548c`--headless`\u53cc\u91cd\u65e0\u5934\u6a21\u5f0f\u914d\u7f6e\n- **\u4f18\u5316\u914d\u7f6e\u9a8c\u8bc1**\uff1a\u786e\u4fdd\u6240\u6709\u6a21\u5757\u90fd\u4f7f\u7528\u7edf\u4e00\u7684HEADLESS\u914d\u7f6e\uff0c\u907f\u514d\u914d\u7f6e\u4e0d\u4e00\u81f4\u95ee\u9898\n\n### \ud83d\udca1 \u7ec6\u8282\n- \u6dfb\u52a0\u4e86`--disable-gpu-compositing`\u3001`--disable-notifications`\u7b49\u591a\u4e2aChrome\u53c2\u6570\n- \u6539\u8fdb\u4e86MCP\u670d\u52a1\u5668\u542f\u52a8\u65f6\u7684\u5f02\u6b65\u521d\u59cb\u5316\u903b\u8f91\n- \u589e\u5f3a\u4e86Windows\u73af\u5883\u4e0b\u7684\u517c\u5bb9\u6027\u548c\u7a33\u5b9a\u6027\n</details>\n---\n\n<details>\n<summary>\ud83d\udcdc \u70b9\u51fb\u67e5\u770b v1.2.2 \u66f4\u65b0\u65e5\u5fd7</summary>\n\n## \ud83d\ude80 \u66f4\u65b0\u65e5\u5fd7 - v1.2.2\n\n### \ud83c\udd95 \u65b0\u589e\u529f\u80fd\n\n#### \ud83d\udd10 \u667a\u80fd\u767b\u5f55\u7cfb\u7edf\n- \u65b0\u589e\u81ea\u52a8\u5316\u767b\u5f55\u68c0\u6d4b\u673a\u5236\uff0c\u652f\u6301MCP\u6a21\u5f0f\u4e0b\u7684\u65e0\u4ea4\u4e92\u767b\u5f55\n- \u5b9e\u73b0\u56db\u91cd\u68c0\u6d4b\u673a\u5236\uff1aURL\u72b6\u6001\u3001\u9875\u9762\u5143\u7d20\u3001\u8eab\u4efd\u9a8c\u8bc1\u3001\u9519\u8bef\u72b6\u6001\u68c0\u6d4b\n- \u6dfb\u52a0\u667a\u80fd\u7b49\u5f85\u673a\u5236\uff0c\u81ea\u52a8\u76d1\u6d4b\u767b\u5f55\u5b8c\u6210\u72b6\u6001\n- \u4f18\u5316cookies\u4fdd\u5b58\u903b\u8f91\uff0c\u533a\u5206\u4ea4\u4e92\u6a21\u5f0f\u548c\u81ea\u52a8\u5316\u6a21\u5f0f\n\n#### \ud83e\udde0 \u667a\u80fd\u8def\u5f84\u89e3\u6790\u7cfb\u7edf\n- \u65b0\u589e\u667a\u80fd\u6587\u4ef6\u8def\u5f84\u8bc6\u522b\u529f\u80fd\uff0c\u652f\u6301\u591a\u79cd\u8f93\u5165\u683c\u5f0f\u81ea\u52a8\u89e3\u6790\n- \u65b0\u589e `smart_parse_file_paths()` \u51fd\u6570\uff0c\u4f7f\u7528JSON\u89e3\u6790\u3001ast.literal_eval\u7b49\u591a\u79cd\u89e3\u6790\u65b9\u5f0f\n- \u9002\u914dLLM\u5bf9\u8bdd\u573a\u666f\u548cdify\u7b49\u5e73\u53f0\u7684\u6570\u7ec4\u6570\u636e\u4f20\u9012\n\n**\u652f\u6301\u7684\u8f93\u5165\u683c\u5f0f**\uff1a\n- \u9017\u53f7\u5206\u9694\uff1a`\"a.jpg,b.jpg,c.jpg\"`\n- \u6570\u7ec4\u5b57\u7b26\u4e32\uff1a`\"[a.jpg,b.jpg,c.jpg]\"`\n- JSON\u6570\u7ec4\uff1a`'[\"a.jpg\",\"b.jpg\",\"c.jpg\"]'`\n- \u771f\u5b9e\u6570\u7ec4\uff1a`[\"a.jpg\", \"b.jpg\", \"c.jpg\"]`\n- \u6df7\u5408\u683c\u5f0f\uff1a`\"[a.jpg,'b.jpg',\\\"c.jpg\\\"]\"`\n\n#### \ud83d\udee0\ufe0f \u4ee3\u7801\u67b6\u6784\u4f18\u5316\n- \u91cd\u6784\u767b\u5f55\u76f8\u5173\u6a21\u5757\uff0c\u63d0\u5347\u4ee3\u7801\u53ef\u7ef4\u62a4\u6027\n- \u4f18\u5316\u5f02\u5e38\u5904\u7406\u673a\u5236\uff0c\u589e\u5f3a\u7cfb\u7edf\u7a33\u5b9a\u6027\n\n### \ud83d\udd27 \u4fee\u590d\u529f\u80fd\n\n#### \ud83d\udcdd \u8def\u5f84\u5904\u7406\u4f18\u5316\n- \u89e3\u51b3\u7528\u6237\u53cd\u9988\u7684\u591a\u5f20\u56fe\u7247\u4e0a\u4f20\u683c\u5f0f\u8bc6\u522b\u95ee\u9898\n- \u667a\u80fd\u533a\u5206\u5b57\u7b26\u4e32\u548c\u6570\u7ec4\u683c\u5f0f\uff0c\u907f\u514d\u6570\u636e\u7c7b\u578b\u5224\u65ad\u9519\u8bef\n- \u652f\u6301\u4ece\u4e0d\u540c\u5e73\u53f0\uff08dify\u3001LLM\u5bf9\u8bdd\u7b49\uff09\u4f20\u9012\u7684\u5404\u79cd\u6570\u636e\u683c\u5f0f\n- \u589e\u5f3a\u5bb9\u9519\u80fd\u529b\uff0c\u5373\u4f7f\u683c\u5f0f\u4e0d\u6807\u51c6\u4e5f\u80fd\u5c3d\u91cf\u89e3\u6790\n\n</details>\n\n---\n\n\n## \ud83d\ude80 \u5f00\u53d1\u8def\u7ebf\u56fe\n\n### \ud83d\udccb \u5f85\u5f00\u53d1\u529f\u80fd\n\n#### \ud83d\udd25 \u9ad8\u4f18\u5148\u7ea7\n- **\ud83d\udd10 \u65e0\u5934\u6a21\u5f0f\u767b\u5f55** - \u5b8c\u5584\u65e0\u5934\u6a21\u5f0f\u4e0b\u7684\u81ea\u52a8\u767b\u5f55\u6d41\u7a0b\uff0c\u63d0\u5347\u81ea\u52a8\u5316\u4f53\u9a8c\n \n\n#### \ud83d\udd2e \u957f\u671f\u89c4\u5212\n- **\ud83e\udd16 AI\u521b\u4f5c\u58f0\u660e** - \u667a\u80fd\u68c0\u6d4bAI\u751f\u6210\u5185\u5bb9\uff0c\u81ea\u52a8\u6dfb\u52a0\u521b\u4f5c\u58f0\u660e\u6807\u8bc6\n- **\ud83d\udc65 \u591a\u8d26\u53f7\u7ba1\u7406** - \u652f\u6301\u591a\u8d26\u53f7\u5207\u6362\u53d1\u5e03\uff08\u9075\u5faa\u5e73\u53f0\u653f\u7b56\uff0c\u5355IP\u9650\u52363\u4e2a\u8d26\u53f7\uff09\n- **\ud83c\udf10 \u4ee3\u7406\u6a21\u5f0f\u652f\u6301** - \u914d\u5408\u591a\u8d26\u53f7\u529f\u80fd\uff0c\u652f\u6301\u4ee3\u7406\u7f51\u7edc\u8bbf\u95ee\n- **\ud83d\udc33 Docker\u5bb9\u5668\u5316** - \u63d0\u4f9b\u5bb9\u5668\u5316\u90e8\u7f72\u65b9\u6848\uff0c\u4fbf\u4e8e\u591a\u5b9e\u4f8b\u7ba1\u7406\u548c\u90e8\u7f72\n- **\u200b\ud83d\udd0d \u5185\u5bb9\u5ba1\u6838\u673a\u5236** - \u654f\u611f\u8bcd\u63d0\u9192\u6216\u8fc7\u6ee4\n\n## \ud83d\udd27 \u6545\u969c\u6392\u9664\n\n### ChromeDriver\u5e38\u89c1\u95ee\u9898\n\n#### \u274c \u95ee\u9898\uff1a\u7248\u672c\u4e0d\u5339\u914d\u9519\u8bef\n```\nselenium.common.exceptions.SessionNotCreatedException: session not created: This version of ChromeDriver only supports Chrome version XX\n```\n\n**\u2705 \u89e3\u51b3\u65b9\u6848**\uff1a\n1. \ud83d\udd0d \u68c0\u67e5Chrome\u7248\u672c\uff1a\u8bbf\u95ee `chrome://version/`\n2. \ud83d\udce5 \u4e0b\u8f7d\u5bf9\u5e94\u7248\u672c\u7684ChromeDriver\uff1a[Chrome for Testing](https://googlechromelabs.github.io/chrome-for-testing/)\n3. \u2699\ufe0f \u66f4\u65b0 `.env` \u6587\u4ef6\u4e2d\u7684\u8def\u5f84\u914d\u7f6e\n\n#### \u274c \u95ee\u9898\uff1aChromeDriver\u627e\u4e0d\u5230\n```\nselenium.common.exceptions.WebDriverException: 'chromedriver' executable needs to be in PATH\n```\n\n**\u2705 \u89e3\u51b3\u65b9\u6848**\uff1a\n1. \u786e\u8ba4ChromeDriver\u5df2\u4e0b\u8f7d\u5e76\u89e3\u538b\n2. \u65b9\u6848A\uff1a\u5c06ChromeDriver\u6dfb\u52a0\u5230\u7cfb\u7edfPATH\n3. \u65b9\u6848B\uff1a\u5728 `.env` \u4e2d\u914d\u7f6e\u5b8c\u6574\u8def\u5f84\uff1a`WEBDRIVER_CHROME_DRIVER=\"/path/to/chromedriver\"`\n4. Linux/macOS: \u786e\u4fdd\u6587\u4ef6\u6709\u6267\u884c\u6743\u9650 `chmod +x chromedriver`\n\n#### \u274c \u95ee\u9898\uff1aChrome\u6d4f\u89c8\u5668\u8def\u5f84\u9519\u8bef\n```\nselenium.common.exceptions.WebDriverException: unknown error: cannot find Chrome binary\n```\n\n**\u2705 \u89e3\u51b3\u65b9\u6848**\uff1a\u5728 `.env` \u6587\u4ef6\u4e2d\u914d\u7f6e\u6b63\u786e\u7684Chrome\u8def\u5f84\n```bash\n# macOS\nCHROME_PATH=\"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome\"\n\n# Windows\nCHROME_PATH=\"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe\"\n\n# Linux\nCHROME_PATH=\"/usr/bin/google-chrome\"\n```\n\n### \u5176\u4ed6\u5e38\u89c1\u95ee\u9898\n\n#### \u274c \u95ee\u9898\uff1aMCP\u8fde\u63a5\u5931\u8d25\n**\u2705 \u89e3\u51b3\u65b9\u6848**\uff1a\n1. \u786e\u8ba4\u670d\u52a1\u5668\u5df2\u542f\u52a8\uff1a`python xhs_toolkit.py server start`\n2. \u68c0\u67e5\u7aef\u53e38000\u662f\u5426\u88ab\u5360\u7528\n3. \u91cd\u542fClaude Desktop\u6216\u5176\u4ed6MCP\u5ba2\u6237\u7aef\n\n#### \u274c \u95ee\u9898\uff1a\u767b\u5f55\u5931\u8d25\n**\u2705 \u89e3\u51b3\u65b9\u6848**\uff1a\n1. \u6e05\u9664\u65e7\u7684cookies\uff1a\u5220\u9664 `xhs_cookies.json` \u6587\u4ef6\n2. \u91cd\u65b0\u83b7\u53d6cookies\uff1a`python xhs_toolkit.py cookie save`\n3. \u786e\u4fdd\u4f7f\u7528\u6b63\u786e\u7684\u5c0f\u7ea2\u4e66\u521b\u4f5c\u8005\u4e2d\u5fc3\u8d26\u53f7\n\n---\n\n## \ud83d\ude4f \u8d21\u732e\u8005\n\n\u611f\u8c22\u6240\u6709\u4e3a\u9879\u76ee\u505a\u51fa\u8d21\u732e\u7684\u4eba\uff01\n\n<a href=\"https://github.com/aki66938/xhs-toolkit/graphs/contributors\">\n <img src=\"https://contrib.rocks/image?repo=aki66938/xhs-toolkit\" />\n</a>\n\n\u5982\u679c\u60a8\u4e5f\u60f3\u4e3a\u9879\u76ee\u505a\u51fa\u8d21\u732e\uff0c\u6b22\u8fce\u63d0\u4ea4 Pull Request \u6216 Issue\uff01\n\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\n\n\u672c\u9879\u76ee\u57fa\u4e8e [MIT\u8bb8\u53ef\u8bc1](LICENSE) \u5f00\u6e90\u3002\n\n## \ud83d\udd10 \u5b89\u5168\u627f\u8bfa\n\n- \u2705 **\u672c\u5730\u5b58\u50a8**: \u6240\u6709\u6570\u636e\u4ec5\u4fdd\u5b58\u5728\u672c\u5730\n- \u2705 **\u5f00\u6e90\u900f\u660e**: \u4ee3\u7801\u5b8c\u5168\u5f00\u6e90\uff0c\u53ef\u5ba1\u8ba1\n- \u2705 **\u7528\u6237\u63a7\u5236**: \u60a8\u5b8c\u5168\u63a7\u5236\u81ea\u5df1\u7684\u6570\u636e\n\n\n<div align=\"center\">\nMade with \u2764\ufe0f for content creators\n</div> \n",
"bugtrack_url": null,
"license": "MIT",
"summary": "\u4e00\u4e2a\u5f3a\u5927\u7684\u5c0f\u7ea2\u4e66\u81ea\u52a8\u5316\u5de5\u5177\u5305\uff0c\u652f\u6301\u901a\u8fc7MCP\u534f\u8bae\u4e0eAI\u5ba2\u6237\u7aef\u96c6\u6210",
"version": "1.2.1",
"project_urls": null,
"split_keywords": [
"xiaohongshu",
" mcp",
" automation",
" ai",
" \u5c0f\u7ea2\u4e66"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "1fe6d16a62dad987c7e4da5a9c666c050e2683955ef248fa5a8d11484de8511e",
"md5": "998d95dd3521cfc6538e0662ba81cb1b",
"sha256": "c738e8e445fbaf3273ff1a4b2b230af23f2bf4019ba609bb80183e8740ef3852"
},
"downloads": -1,
"filename": "iflow_mcp_xhs_toolkit-1.2.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "998d95dd3521cfc6538e0662ba81cb1b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 121566,
"upload_time": "2025-09-02T09:36:34",
"upload_time_iso_8601": "2025-09-02T09:36:34.166315Z",
"url": "https://files.pythonhosted.org/packages/1f/e6/d16a62dad987c7e4da5a9c666c050e2683955ef248fa5a8d11484de8511e/iflow_mcp_xhs_toolkit-1.2.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a1db6573a064164aeb990d677f7fc2c5d487309121f1bf813d6e9ddf6331107a",
"md5": "c4c08f0f59bed3ae5f31166c4f4b3d58",
"sha256": "bb58e08fc98fed4e8fa72b39b720b7670a1c4a808e388d3a69d49eb4c0b880da"
},
"downloads": -1,
"filename": "iflow_mcp_xhs_toolkit-1.2.1.tar.gz",
"has_sig": false,
"md5_digest": "c4c08f0f59bed3ae5f31166c4f4b3d58",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 100803,
"upload_time": "2025-09-02T09:36:35",
"upload_time_iso_8601": "2025-09-02T09:36:35.748274Z",
"url": "https://files.pythonhosted.org/packages/a1/db/6573a064164aeb990d677f7fc2c5d487309121f1bf813d6e9ddf6331107a/iflow_mcp_xhs_toolkit-1.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-02 09:36:35",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "iflow-mcp_xhs-toolkit"
}