iflow-mcp_xhs-toolkit


Nameiflow-mcp_xhs-toolkit JSON
Version 1.2.1 PyPI version JSON
download
home_pageNone
Summary一个强大的小红书自动化工具包,支持通过MCP协议与AI客户端集成
upload_time2025-09-02 09:36:35
maintainerNone
docs_urlNone
authoraki66938
requires_python>=3.10
licenseMIT
keywords xiaohongshu mcp automation ai 小红书
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 📕 小红书创作者MCP工具包

[![许可证](https://img.shields.io/github/license/aki66938/xhs-toolkit)](LICENSE)
[![微信公众号](https://img.shields.io/badge/凯隐的无人化生产矩阵-公众号-bule?style=flat-square&logo=wechat)]((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/`

<!-- ![chrome版本](src/static/check_chrome_version.png) -->
![chrome版本](https://kayin-1253854796.cos.ap-shanghai.myqcloud.com/ownmedia/20250622022832077.png?imageSlim)

### 📥 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配置中添加

![Cherry Studio配置](https://kayin-1253854796.cos.ap-shanghai.myqcloud.com/ownmedia/20250622022940845.png?imageSlim)

**n8n**

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

![n8n的AI agent配置](https://kayin-1253854796.cos.ap-shanghai.myqcloud.com/ownmedia/20250622023033506.png?imageSlim)

## 🔧 主要功能

### 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结构
- **性能优化**:智能等待机制和并发处理,提升自动化效率

### 测试效果

![1.3.0](https://kayin-1253854796.cos.ap-shanghai.myqcloud.com/ownmedia/20250628032152894.gif?imageSlim)

---

<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[![\u8bb8\u53ef\u8bc1](https://img.shields.io/github/license/aki66938/xhs-toolkit)](LICENSE)\n[![\u5fae\u4fe1\u516c\u4f17\u53f7](https://img.shields.io/badge/\u51ef\u9690\u7684\u65e0\u4eba\u5316\u751f\u4ea7\u77e9\u9635-\u516c\u4f17\u53f7-bule?style=flat-square&logo=wechat)]((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<!-- ![chrome\u7248\u672c](src/static/check_chrome_version.png) -->\n![chrome\u7248\u672c](https://kayin-1253854796.cos.ap-shanghai.myqcloud.com/ownmedia/20250622022832077.png?imageSlim)\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![Cherry Studio\u914d\u7f6e](https://kayin-1253854796.cos.ap-shanghai.myqcloud.com/ownmedia/20250622022940845.png?imageSlim)\n\n**n8n**\n\n\u5728n8n\u7684AI agent\u8282\u70b9\u7684tool\u4e2d\u6dfb\u52a0\u914d\u7f6e\u914d\u7f6e\n\n![n8n\u7684AI agent\u914d\u7f6e](https://kayin-1253854796.cos.ap-shanghai.myqcloud.com/ownmedia/20250622023033506.png?imageSlim)\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![1.3.0](https://kayin-1253854796.cos.ap-shanghai.myqcloud.com/ownmedia/20250628032152894.gif?imageSlim)\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"
}
        
Elapsed time: 0.86742s