xhs_factory/README.md
zhoujie 2ba87c8f6e
Some checks failed
CI / Lint (ruff) (push) Has been cancelled
CI / Import Check (push) Has been cancelled
📝 docs(project): 添加开源社区标准文档与 CI 工作流
- 新增 GitHub Issue 模板(Bug 报告、功能请求)和 Pull Request 模板
- 新增 Code of Conduct(贡献者行为准则)和 Security Policy(安全政策)
- 新增 CI 工作流(GitHub Actions),包含 ruff 代码检查和导入验证
- 新增开发依赖文件 requirements-dev.txt

📦 build(ci): 配置 GitHub Actions 持续集成

- 在 push 到 main 分支和 pull request 时自动触发 CI
- 添加 lint 任务执行 ruff 代码风格检查
- 添加 import-check 任务验证核心服务模块导入

♻️ refactor(structure): 重构项目目录结构

- 将根目录的 6 个服务模块迁移至 services/ 包
- 更新所有相关文件的导入语句(main.py、ui/、services/)
- 根目录仅保留 main.py 作为唯一 Python 入口文件

🔧 chore(config): 调整配置和资源文件路径

- 将 config.json 移至 config/ 目录,更新相关引用
- 将个人头像图片移至 assets/faces/ 目录,更新 .gitignore
- 更新 Dockerfile 和 docker-compose.yml 中的配置路径

📝 docs(readme): 完善 README 文档

- 添加项目状态徽章(Python 版本、License、CI)
- 更新项目结构图反映实际目录布局
- 修正使用指南中的 Tab 名称和操作路径
- 替换 your-username 占位符为格式提示

🗑️ chore(cleanup): 清理冗余文件

- 删除旧版备份文件、测试脚本、临时记录和运行日志
- 删除散落的个人图片文件(已归档至 assets/faces/)
2026-02-27 22:12:39 +08:00

451 lines
17 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p align="center">
<h1 align="center">🍒 小红书 AI 爆文生产工坊 V2.5</h1>
<p align="center">
<strong>全自动小红书内容创作 & 智能运营工具</strong><br>
灵感 → 文案 → 绘图 → 排期 → 发布 → 运营 → 学习,全闭环 AI 驱动
</p>
<p align="center">
<a href="#功能特性">功能特性</a>
<a href="#快速开始">快速开始</a>
<a href="#使用指南">使用指南</a>
<a href="#配置说明">配置说明</a>
<a href="#人设系统">人设系统</a>
<a href="#常见问题">FAQ</a>
<a href="#贡献指南">贡献</a>
</p>
<p align="center">
<img src="https://img.shields.io/badge/python-3.10+-blue" alt="Python">
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
<img src="https://github.com/<your-github-username>/xhs-autobot/actions/workflows/ci.yml/badge.svg" alt="CI">
</p>
</p>
---
## ✨ 功能特性
### 📝 内容创作Tab 1
- **AI 文案生成** — 输入主题即可生成小红书爆款标题、正文、话题标签
- **AI 绘图** — 集成 Stable Diffusion WebUI支持 3 款模型智能适配
- **人设视觉优化** — 9 种人设专属视觉方案,自动注入风格提示词
- **ReActor 换脸** — 上传头像一键换脸,保持角色一致性
- **质量模式** — 快速/标准/精细三档,灵活平衡速度与画质
- **反 AI 检测** — 8 层文案人格化 + 7 步图片后处理,绕过 AI 内容检测
- **一键导出** — 文案 + 图片打包导出到本地文件夹
### 🔥 热点探测Tab 2
- **关键词搜索** — 搜索小红书热门笔记,支持多维度排序
- **AI 趋势分析** — 分析热门标题套路、内容结构,给出模仿建议
- **一键借鉴创作** — 参考热门笔记风格生成原创内容
### 💬 评论管家Tab 3
- **主动评论引流** — 浏览笔记 → AI 智能生成评论 → 一键发送
- **自动回复粉丝** — 加载笔记评论 → AI 生成回复 → 发送
### 🔐 账号管理Tab 4
- **扫码登录** — 小红书二维码登录,自动获取 Token
- **多 LLM 提供商** — 支持 DeepSeek、OpenAI、通义千问等所有兼容接口
### 📊 数据看板Tab 5
- **账号概览** — 粉丝数、获赞数等核心指标可视化
- **笔记排行** — 点赞排行图表分析
- **笔记详情** — 全部笔记数据明细表
### 🧠 智能学习Tab 6
- **数据采集** — 自动采集已发布笔记的互动数据(点赞、评论、收藏)
- **多维权重** — 主题权重、风格权重、标签权重、标题模式权重
- **AI 深度分析** — LLM 分析笔记表现规律,生成内容策略建议
- **定时学习** — 后台自动采集 + 分析1-48 小时可配置)
- **加权发布** — 自动发布时根据笔记表现权重智能选择高互动主题
### 🤖 自动运营Tab 7无人值守
- **一键评论** — 自动搜索高赞笔记 + AI 生成评论 + 发送
- **一键点赞** — 批量随机点赞,提升账号活跃度
- **一键回复** — 自动扫描我的笔记 + AI 回复粉丝评论
- **一键发布** — 自动生成文案 + SD 生图 + 发布到小红书
- **随机定时** — 评论/点赞/回复/发布全自动定时执行,随机间隔模拟真人
- **每日限额** — 评论/点赞/收藏/发布/回复独立限额,防封号
- **错误冷却** — 连续错误自动暂停,避免异常操作
### 📅 内容排期Tab 8
- **批量生成** — 一键批量生成多篇内容(文案 + 图片)加入队列
- **队列管理** — 草稿 → 审核 → 排期 → 发布,全流程状态管理
- **定时发布** — SQLite 队列 + 后台 Publisher 线程自动定时发布
- **队列处理器** — 启动/停止后台自动发布引擎
---
## 📸 截图预览
> 启动后在浏览器中打开 `http://127.0.0.1:7860`
---
## 🚀 快速开始
### 环境要求
| 依赖 | 要求 | 说明 |
|------|------|------|
| **Python** | >= 3.10 | 推荐 3.11+ |
| **xiaohongshu-mcp** | 运行中 | 小红书 MCP 服务(默认端口 18060 |
| **Stable Diffusion WebUI** | 可选 | 本地 AI 绘图(默认端口 7860 |
| **LLM API** | 必须 | 任意 OpenAI 兼容接口 |
### 安装步骤
```bash
# 1. 克隆项目
git clone https://github.com/<your-github-username>/xhs-autobot.git
cd xhs-autobot
# 2. 创建虚拟环境(推荐)
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate
# 3. 安装依赖
pip install -r requirements.txt
# 4. 复制配置文件并填写你的 API Key
cp config/config.example.json config/config.json
# 编辑 config/config.json填写 api_key、base_url 等
# 5. 启动!
python main.py
```
启动后会自动打开浏览器,访问 `http://127.0.0.1:7860`
### 🐳 Docker 部署(推荐)
使用 Docker Compose 一键启动所有服务,无需手动安装 Python 环境:
```bash
# 1. 克隆项目
git clone https://github.com/<your-github-username>/xhs-autobot.git
cd xhs-autobot
# 2. 准备配置文件
cp config/config.example.json config/config.json
# 编辑 config/config.json填写 api_key、base_url 等
# ⚠️ mcp_url 改为容器网络地址:
# "mcp_url": "http://xhs-mcp:18060/mcp"
# 3. 一键启动
docker compose up -d
# 4. 查看日志
docker compose logs -f xhs-autobot
```
启动后访问 `http://localhost:7860`
#### Docker 服务说明
| 服务 | 容器名 | 端口 | 说明 |
|------|--------|------|------|
| `xhs-autobot` | xhs-autobot | 7860 | 主应用Gradio UI |
| `xhs-mcp` | xhs-mcp | 18060 | 小红书 MCP 服务 |
| `sd-webui` | sd-webui | 7861 | SD WebUI可选需 GPU |
#### 常用命令
```bash
# 停止所有服务
docker compose down
# 重新构建(代码更新后)
docker compose up -d --build
# 查看运行状态
docker compose ps
# 进入主容器调试
docker compose exec xhs-autobot bash
```
#### 启用 Stable Diffusion需要 NVIDIA GPU
编辑 `docker-compose.yml`,取消 `sd-webui` 部分的注释,并将 `config/config.json` 中的 `sd_url` 改为:
```json
"sd_url": "http://sd-webui:7860"
```
---
### 前置服务
#### xiaohongshu-mcp必须
本项目通过 [xiaohongshu-mcp](https://github.com/punkpeye/xiaohongshu-mcp) 与小红书交互(搜索、发布、评论等),请先启动 MCP 服务:
```bash
# 按照 xiaohongshu-mcp 文档启动,默认端口 18060
npx xiaohongshu-mcp
```
#### Stable Diffusion WebUI可选用于 AI 绘图)
推荐使用 [AUTOMATIC1111/stable-diffusion-webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui),启动时开启 API
```bash
python launch.py --api
```
推荐模型:
| 模型 | 架构 | 风格 | 推荐场景 |
|------|------|------|---------|
| [JuggernautXL](https://civitai.com/models/133005) | SDXL | 电影大片风 | 通用首选,高质量写真 |
| [majicmixRealistic](https://civitai.com/models/43331) | SD 1.5 | 东亚网红风 | 亚洲博主、日韩风 |
| [Realistic Vision](https://civitai.com/models/4201) | SD 1.5 | 纪实摄影风 | 生活场景、街拍 |
---
## 📖 使用指南
### 首次使用流程
1. **配置 LLM** — 切换到「⚙️ 配置」 Tab添加 LLM 提供商API Key + Base URL点击「连接 LLM」
2. **连接 SD**(可选)— 在「⚙️ 配置」 Tab 填写 SD WebUI URL点击「连接 SD」
3. **检查 MCP** — 点击「检查 MCP」确认小红书服务正常
4. **登录小红书** — 切换到「🔐 账号登录」 Tab扫码登录
5. **选择人设** — 在「⚙️ 配置」 Tab 的人设下拉框选择博主人设(影响文案风格 + 图片视觉)
6. **开始创作** — 切换到「✨ 内容创作」Tab输入主题一键生成
### 自动化运营
切换到「🤖 自动运营」Tab
- **一键操作** — 手动触发单次评论/点赞/回复/发布
- **定时调度** — 勾选需要的功能,设置间隔时间,点击「▶️ 启动定时」
- **查看日志** — 点击「🔄 刷新日志」查看实时执行记录
- **每日统计** — 自动跟踪今日操作量,超限自动暂停
### 内容排期
切换到「📅 内容排期」Tab
1. **批量生成** — 点击「📋 批量生成 → 加入队列」,自动生成多篇内容存入队列
2. **审核内容** — 在队列列表中预览、编辑或驳回草稿
3. **设定时间** — 为已审核内容设置发布时间
4. **启动发布** — 点击「▶ 启动队列处理」,后台自动在预定时间发布
### 智能学习
切换到「🧠 智能学习」Tab
1. **采集数据** — 点击「📊 立即采集」收集笔记互动数据
2. **分析权重** — 系统自动计算主题/风格/标签权重
3. **启用加权** — 开启后自动发布时优先选择高互动主题
4. **定时学习** — 设置自动采集间隔,持续优化内容策略
---
## ⚙️ 配置说明
配置文件 `config/config.json` 会在运行时自动创建和保存。首次使用请从 `config/config.example.json` 复制:
```json
{
"api_key": "你的LLM API Key",
"base_url": "https://api.deepseek.com/v1",
"sd_url": "http://127.0.0.1:7860",
"mcp_url": "http://localhost:18060/mcp",
"model": "deepseek-chat",
"persona": "赛博AI虚拟博主住在2077年的数码女孩...",
"my_user_id": "你的小红书userId(24位)"
}
```
| 字段 | 说明 | 必填 |
|------|------|------|
| `api_key` | LLM API 密钥 | ✅ |
| `base_url` | LLM API 地址OpenAI 兼容) | ✅ |
| `sd_url` | Stable Diffusion WebUI 地址 | 绘图需要 |
| `mcp_url` | xiaohongshu-mcp 服务地址 | ✅ |
| `model` | 默认使用的 LLM 模型名 | ✅ |
| `persona` | 博主人设(影响文案风格 + SD 视觉风格) | 可选 |
| `my_user_id` | 你的小红书 userId24 位十六进制) | 数据看板/自动回复需要 |
| `llm_providers` | 多 LLM 提供商配置数组 | 通过 UI 管理 |
### 获取 userId
1. 浏览器打开你的小红书主页
2. 网址格式为 `xiaohongshu.com/user/profile/xxxxxxxx`
3. `profile/` 后面的就是 userId
---
## 📁 项目结构
```
xhs-autobot/
├── main.py # 主程序入口 (Gradio UI + 事件绑定)
├── config/ # 配置文件目录
│ ├── config.json # 运行时配置 (gitignore)
│ └── config.example.json # 配置模板
├── logs/ # 运行日志 (gitignore)
│ └── autobot.log
├── docs/ # 参考文档
│ └── mcp.md # xiaohongshu-mcp 参考文档
├── scripts/ # 运行时生成的启动脚本 (gitignore)
│ ├── _autostart.bat
│ └── _autostart.vbs
├── requirements.txt # Python 依赖
├── requirements-dev.txt # 开发工具依赖 (ruff 等)
├── Dockerfile # Docker 镜像构建
├── docker-compose.yml # Docker Compose 编排
├── services/ # 业务逻辑层
│ ├── config_manager.py # 配置管理模块 (单例、自动保存)
│ ├── llm_service.py # LLM 服务封装 (文案生成、热点分析等)
│ ├── sd_service.py # Stable Diffusion 服务封装 (3 模型适配、9 人设视觉方案)
│ ├── mcp_client.py # 小红书 MCP 客户端 (搜索、发布、评论、点赞)
│ ├── analytics_service.py # 笔记数据分析 & 权重学习服务
│ ├── publish_queue.py # 内容排期队列 (SQLite + 后台 Publisher)
│ ├── scheduler.py # 自动化运营调度器
│ ├── content.py # 文案生成、图片生成、导出、发布
│ ├── hotspot.py # 热点探测、热点生成、笔记缓存
│ ├── engagement.py # 评论管家:手动评论、回复、互动
│ ├── profile.py # 小红书账号 Profile 解析与可视化
│ ├── persona.py # 人设管理:常量、关键词池、主题池
│ ├── connection.py # LLM/SD/MCP/XHS 连接管理
│ ├── queue_ops.py # 发布队列操作
│ ├── rate_limiter.py # 频率控制、每日限额、冷却管理
│ └── autostart.py # Windows 开机自启管理
├── ui/ # Gradio UI 层
│ ├── app.py # 主界面构建函数(全部 Tab UI + 事件绑定)
│ └── tab_create.py # Tab 1「✨ 内容创作」组件定义
├── assets/
│ └── faces/ # 头像文件目录 (gitignore)
└── xhs_workspace/ # 导出的文案和图片 (gitignore)
├── publish_queue.db # 排期队列数据库
├── analytics_data.json # 笔记表现数据
└── content_weights.json # 内容权重数据
```
---
## 🎭 人设系统
项目内置 **28 种博主人设**,每种人设拥有:
- **专属主题池** — 匹配人设的内容方向(如健身博主自动抽健身主题)
- **评论关键词** — 搜索和评论时使用与人设相关的关键词
- **SD 视觉方案** — 9 种人设拥有专属视觉优化prompt_boost + 风格词 + 负面词)
- **LLM 指导词** — LLM 生成 SD Prompt 时收到人设专属的视觉风格引导
### 内置人设视觉方案
| 人设 | 视觉风格 |
|------|----------|
| 赛博AI虚拟博主 | 科幻/赛博朋克,发光特效,极致完美面容 |
| 性感福利主播 | 暖金色调,闺房/泳池,魅力摄影 |
| 身材管理健身美女 | 健身房/运动场,活力运动风 |
| 温柔知性时尚博主 | 法式优雅,时装杂志质感 |
| 文艺青年摄影师 | 胶片颗粒Kodak Portra 怀旧色调 |
| 二次元coser | 动漫灵感Cosplay鲜艳色彩 |
| 汉服爱好者 | 水墨画风,丝绸流动,古典意境 |
| 独居女孩 | 温馨烛光Hygge 风格 |
| 资深美妆博主 | 环形灯棚拍,完美妆容特写 |
选择「🎲 随机人设」可每次自动切换,增加账号内容多样性。
---
## ❓ 常见问题
<details>
<summary><b>Q: LLM API 报错 400 json_object</b></summary>
某些 API 在使用 `response_format: json_object` 时要求消息中包含 "json" 一词。本项目已自动处理,如仍遇到请升级到最新版本。
</details>
<details>
<summary><b>Q: 评论发送成功但 App 上看不到</b></summary>
小红书有内容审核机制,评论可能需要 1-5 分钟显示。部分评论可能被风控(仅自己可见)。查看自动化日志中的 MCP 响应可排查。
</details>
<details>
<summary><b>Q: SD WebUI 连接失败</b></summary>
确保启动 SD WebUI 时加了 `--api` 参数,且端口匹配。本项目默认连接 `http://127.0.0.1:7860`
</details>
<details>
<summary><b>Q: xiaohongshu-mcp 是什么?怎么启动?</b></summary>
这是一个开源的小红书 MCP 服务端,提供搜索、发布、评论等 API。详见 [xiaohongshu-mcp 项目](https://github.com/punkpeye/xiaohongshu-mcp)。
</details>
<details>
<summary><b>Q: 支持哪些 LLM</b></summary>
支持所有 OpenAI 兼容接口包括但不限于DeepSeek、GPT-4o、通义千问、Gemini通过中转、Claude通过中转等。
</details>
<details>
<summary><b>Q: 反 AI 检测是怎么实现的?</b></summary>
**文案层面**8 层人格化口语化改写、插入不完美表达、随机错别字、方言词汇、不规律标点、emoji 混入、段落长度随机化、句式打乱。
**图片层面**7 步后处理微旋转裁剪、轻微色偏、随机噪点、JPEG 二次压缩(质量 82-92、EXIF 清除、局部模糊/锐化、微位移。
</details>
<details>
<summary><b>Q: 如何添加自定义人设?</b></summary>
在人设下拉框中直接输入自定义人设描述即可(支持自由输入)。如需配套主题池和关键词,需在 `services/persona.py``PERSONA_POOL_MAP` 中添加对应条目。如需配套 SD 视觉方案,需在 `services/sd_service.py``PERSONA_SD_PROFILES` 中添加。
</details>
<details>
<summary><b>Q: 支持哪些 SD 模型?</b></summary>
内置适配 3 款模型majicmixRealisticSD 1.5、Realistic VisionSD 1.5、Juggernaut XLSDXL。系统会自动检测当前模型并匹配最佳参数。未知模型自动回退到 SDXL 默认档案。
</details>
---
## 🤝 贡献指南
欢迎贡献代码!请查看 [CONTRIBUTING.md](CONTRIBUTING.md) 了解详情。
简要流程:
1. Fork 本项目
2. 创建特性分支 (`git checkout -b feature/amazing-feature`)
3. 提交更改 (`git commit -m 'feat: add amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 发起 Pull Request
---
## 📋 更新日志
详见 [CHANGELOG.md](CHANGELOG.md)。
---
## ⚠️ 免责声明
- 本项目仅供学习和研究目的,请遵守小红书平台的使用规范和服务条款
- 过度使用自动化功能可能导致账号被限制,请合理设置操作间隔
- 用户需为自己发布的内容和使用行为承担全部责任
- 本项目不保存、不传输任何用户的账号密码信息
---
## 📄 许可证
本项目使用 [MIT License](LICENSE) 开源。
---
## 🌟 Star History
如果这个项目对你有帮助,请点亮 ⭐ Star