# AITool **Repository Path**: yangege_307/aitool ## Basic Information - **Project Name**: AITool - **Description**: Ai领域的一些工具 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-10 - **Last Updated**: 2025-10-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AI Crawlers - AI推荐营销分析系统 > 基于浏览器插件的多AI平台数据采集与分析系统 ## 📋 项目简介 本系统通过Chrome浏览器插件自动从多个AI平台(DeepSeek、元宝、豆包)采集产品咨询数据,为营销分析提供数据支持。 ### 核心功能 - 🤖 **多平台采集**:同时从DeepSeek、元宝、豆包三个AI平台采集数据 - 📊 **任务管理**:可视化任务创建、执行、进度跟踪 - 🎯 **智能筛选**:按产品、类别灵活筛选问句 - 📈 **数据分析**:产品对比、竞品分析、趋势统计 - 💾 **数据管理**:产品、问句、类别、竞品信息维护 --- ## 🚀 快速开始 ### 1. 环境要求 - **Java**: JDK 8+ - **数据库**: MySQL 5.7+ - **Node.js**: (可选,用于前端开发) - **浏览器**: Chrome/Edge (用于安装插件) ### 2. 数据库初始化 ```sql -- 创建数据库 CREATE DATABASE ai_crawlers DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 执行数据库脚本 mysql -u root -p ai_crawlers < src/main/resources/db/schema-v4-final.sql ``` ### 3. 配置文件 编辑 `src/main/resources/application.yml`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/ai_crawlers?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: your_password server: port: 8080 ``` ### 4. 启动后端服务 ```bash # 使用Maven启动 mvn spring-boot:run # 或构建后运行 mvn clean package java -jar target/aicrawlers-0.0.1-SNAPSHOT.jar ``` 访问: http://localhost:8080 ### 5. 安装浏览器插件 1. 打开Chrome浏览器,访问 `chrome://extensions/` 2. 开启右上角"开发者模式" 3. 点击"加载已解压的扩展程序" 4. 选择项目的 `extension` 目录 5. 插件安装成功! --- ## 📚 使用指南 ### 后台管理系统 访问 http://localhost:8080 进入管理后台。 #### 1. 基础数据管理 **产品管理** - 维护产品信息(名称、品牌、型号、价格等) - 关联产品类别 - 设置竞品关系 **问句管理** - 添加/编辑咨询问句 - 关联产品和类别 - 批量导入问句 **类别管理** - 维护产品类别(手机、电脑、家电等) - 层级分类结构 **竞品管理** - 定义竞品关系 - 设置竞品权重 #### 2. 采集任务 **创建任务** 1. 点击"任务管理" → "创建任务" 2. 输入任务名称和描述 3. 选择采集平台(DeepSeek/元宝/豆包) 4. 筛选问句: - 按产品筛选 - 按类别筛选 - 或全选所有问句 5. 点击"创建任务" **执行任务** 1. 确保浏览器已登录各AI平台 2. 打开浏览器插件 3. 点击"刷新任务" 4. 从列表中选择要执行的任务 5. 点击"执行任务" 6. 任务在后台自动执行,可关闭popup窗口 #### 3. 查看结果 **采集结果** - 查看每个问句在各平台的回答 - 对比不同平台的回答内容 - 查看执行状态和时间 **数据分析** - 产品推荐频率统计 - 不同平台推荐对比 - 问句覆盖率分析 --- ### 浏览器插件 #### 功能说明 1. **平台状态** - 显示DeepSeek、元宝、豆包的登录状态 - 绿色:已登录,红色:未登录 2. **快速发送** - 手动输入问题 - 选择目标平台 - 快速发送到AI平台 3. **批量任务** - 批量输入多个问题 - 自动依次发送到各平台 4. **采集任务** - 刷新待执行任务列表 - 选择要执行的任务 - 查看任务进度 5. **设置** - 配置后端服务地址 - 自动采集开关 - 等待稳定时间 - 平台切换延迟 #### 使用技巧 - **首次使用**:确保已在各AI平台登录账号 - **任务执行**:选中任务后,popup可以关闭,任务会在后台继续执行 - **查看日志**: - Popup日志:右键popup → 检查 - Background日志:扩展管理页面 → Service Worker → 检查 --- ## 🔧 技术架构 ### 后端技术栈 - **框架**: Spring Boot 2.5.9 - **数据库**: MySQL 5.7+ / MyBatis - **数据迁移**: Flyway - **日志**: Logback - **API文档**: 内置Swagger (可选) ### 前端技术栈 - **管理后台**: jQuery + Bootstrap + DataTables - **架构**: SPA单页应用 - **图表**: Chart.js (可选) ### 浏览器插件 - **架构**: Chrome Extension Manifest V3 - **Background**: Service Worker (持久化任务执行) - **Content Script**: 注入AI平台页面,实现DOM操作 - **Popup**: 用户交互界面 --- ## 📁 项目结构 ``` AiCrawlers/ ├── src/ │ ├── main/ │ │ ├── java/com/company/aicrawlers/ │ │ │ ├── controller/ # 控制器 │ │ │ ├── service/ # 业务逻辑 │ │ │ ├── mapper/ # MyBatis Mapper │ │ │ ├── model/ # 数据模型 │ │ │ ├── config/ # 配置类 │ │ │ └── AiCrawlersApplication.java │ │ └── resources/ │ │ ├── db/ │ │ │ ├── migration/ # Flyway迁移脚本 │ │ │ └── schema-v4-final.sql # 完整数据库脚本 │ │ ├── mapper/ # MyBatis XML │ │ ├── static/ # 前端资源 │ │ │ ├── index.html │ │ │ ├── pages/ # 页面HTML │ │ │ └── assets/ # JS/CSS │ │ ├── application.yml │ │ └── application.properties │ └── test/ # 测试代码 ├── extension/ # 浏览器插件 │ ├── manifest.json # 插件配置 │ ├── popup/ # 弹出窗口 │ │ ├── popup.html │ │ ├── popup.js │ │ └── popup.css │ ├── background/ # 后台脚本 │ │ └── service-worker.js │ ├── content/ # 内容脚本 │ │ ├── deepseek.js │ │ ├── yuanbao.js │ │ └── doubao.js │ ├── utils/ │ │ └── common.js │ ├── icons/ │ └── README.md ├── pom.xml ├── README.md # 本文档 └── 产品需求文档_AI推荐营销分析系统.md ``` --- ## 📊 数据库设计 ### 核心表 - **ai_product**: 产品信息 - **ai_question**: 问句库 - **ai_product_category_dict**: 产品类别字典 - **ai_product_competitor**: 竞品关系 - **ai_question_product**: 问句-产品关联 - **ai_question_category**: 问句-类别关联 - **collect_task**: 采集任务 - **collect_task_question**: 任务-问句关联 - **collect_task_platform**: 任务-平台关联 - **collect_task_question_platform**: 任务执行明细 - **collect_result**: 采集结果 详细设计见:`src/main/resources/db/schema-v4-final.sql` --- ## 🔌 API接口 ### 产品相关 ``` GET /api/products # 产品列表 GET /api/products/{id} # 产品详情 POST /api/products # 创建产品 PUT /api/products/{id} # 更新产品 DELETE /api/products/{id} # 删除产品 ``` ### 问句相关 ``` GET /api/questions # 问句列表 GET /api/questions/{id} # 问句详情 POST /api/questions # 创建问句 PUT /api/questions/{id} # 更新问句 DELETE /api/questions/{id} # 删除问句 ``` ### 任务相关 ``` GET /api/collect-tasks # 任务列表 GET /api/collect-tasks/{id} # 任务详情 POST /api/collect-tasks # 创建任务 GET /api/collect-tasks/{id}/pending-questions # 待执行问句(断点续传) POST /api/collect-tasks/{taskId}/questions/{questionId}/platforms/{platform}/status # 更新执行状态 ``` ### 采集相关 ``` POST /api/collect/submit # 提交采集结果 GET /api/collect/results # 采集结果列表 ``` --- ## ⚙️ 配置说明 ### 后端配置 (application.yml) ```yaml # 服务器配置 server: port: 8080 # 数据源配置 spring: datasource: url: jdbc:mysql://localhost:3306/ai_crawlers username: root password: your_password driver-class-name: com.mysql.cj.jdbc.Driver # MyBatis配置 mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.company.aicrawlers.model configuration: map-underscore-to-camel-case: true # Flyway配置 flyway: enabled: true locations: classpath:db/migration baseline-on-migrate: true ``` ### 插件配置 打开插件popup → 设置: - **后端服务地址**: http://localhost:8080 - **自动采集**: 开启/关闭自动采集功能 - **同步到后端**: 是否将数据同步到后端 - **等待稳定时间**: 2-3秒(AI平台回答稳定后采集) - **平台切换延迟**: 6-10秒(切换平台前等待时间) --- ## 🐛 常见问题 ### 1. 数据库连接失败 **问题**: `Could not create connection to database server` **解决**: - 检查MySQL是否启动 - 确认数据库已创建 - 检查用户名密码是否正确 - 检查`application.yml`中的数据库配置 ### 2. 插件无法加载 **问题**: 插件安装失败或无法启用 **解决**: - 确保Chrome版本 88+ - 检查manifest.json格式是否正确 - 查看扩展管理页面的错误信息 - 重新加载插件 ### 3. 任务执行失败 **问题**: 任务无法执行或中途停止 **解决**: - 确保已登录各AI平台 - 检查平台标签页是否打开 - 查看background console日志 - 检查网络连接 ### 4. 采集数据为空 **问题**: 执行任务后没有采集到数据 **解决**: - 确保AI平台已返回回答 - 检查content script是否正确注入 - 查看浏览器console的错误信息 - 增加等待稳定时间 ### 5. CORS错误 **问题**: `Access to fetch has been blocked by CORS policy` **解决**: - 检查后端CORS配置(WebConfig.java) - 确认后端服务已启动 - 检查请求的URL是否正确 --- ## 📖 开发指南 ### 添加新的AI平台 1. 创建content script: `extension/content/newplatform.js` 2. 继承`DataCollector`基类 3. 实现平台特定的DOM选择器和逻辑 4. 在`manifest.json`中注册content script 5. 在`service-worker.js`中添加平台URL映射 6. 在数据库添加平台配置 ### 自定义采集字段 1. 修改数据库表结构(collect_result) 2. 更新MyBatis Mapper XML 3. 修改后端Model和Service 4. 更新content script的数据提取逻辑 5. 修改前端显示页面 ### 扩展API 1. 在`controller`包下创建新的Controller 2. 在`service`包下实现业务逻辑 3. 在`mapper`包下定义数据访问接口 4. 在`resources/mapper`下创建MyBatis XML 5. 更新本文档的API说明 --- ## 📝 更新日志 ### v1.2.0 (2025-01-15) - DeepSeek采集模块重大修复版本 **🎉 重大修复** - ✅ **彻底解决多轮对话消息匹配问题**:修复了非第一个问句总是采集到第一个问句答案的关键bug - ✅ **增强错误处理机制**:完善了错误消息检测和处理逻辑 - ✅ **优化等待策略**:改进了AI回答生成等待机制 - ✅ **提升调试能力**:新增多个调试工具,便于问题定位和排查 **技术细节** - ✅ 修复策略0(内容匹配)逻辑:从后往前遍历AI消息,确保找到最新的AI回复 - ✅ 增强策略验证:在任务采集模式下进行多重验证,确保选择真正的新AI消息 - ✅ 修复错误检测:移除长度限制,基于关键词检测错误消息 - ✅ 修复等待逻辑:监控DOM消息数量变化,等待新AI消息出现 - ✅ 优化错误处理:检测到错误消息后继续等待新的AI回答,设置合理超时 ### v1.0.0 (2025-10-11) **核心功能** - ✅ 多平台数据采集(DeepSeek、元宝、豆包) - ✅ 任务管理系统 - ✅ 产品、问句、类别、竞品管理 - ✅ 浏览器插件(Manifest V3) - ✅ 断点续传支持 - ✅ 任务选择功能 - ✅ 后台执行(Background Script) - ✅ 数据去重(唯一索引) - ✅ 智能等待(MutationObserver) **技术优化** - ✅ SPA架构,避免脚本冲突 - ✅ CORS支持 - ✅ Axios响应拦截器 - ✅ Flyway数据库迁移 - ✅ 完整的API文档 **详细更新记录**:请查看 [CHANGELOG.md](CHANGELOG.md) --- ## 🤝 贡献指南 欢迎提交Issue和Pull Request! 1. Fork本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启Pull Request --- ## 📄 许可证 本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。 --- ## 📞 联系方式 如有问题或建议,欢迎联系: - 项目主页: https://github.com/yourname/AiCrawlers - 邮箱: your.email@example.com - 问题反馈: [GitHub Issues](https://github.com/yourname/AiCrawlers/issues) --- ## 🙏 致谢 感谢以下开源项目: - [Spring Boot](https://spring.io/projects/spring-boot) - [MyBatis](https://mybatis.org/) - [DataTables](https://datatables.net/) - [Bootstrap](https://getbootstrap.com/) - [jQuery](https://jquery.com/) --- **Happy Coding! 🚀**