165 lines
6.1 KiB
Markdown
165 lines
6.1 KiB
Markdown
# GEO - AI搜索引擎品牌曝光度优化平台
|
||
|
||
[](https://github.com/YOUR_USERNAME/GEO/actions/workflows/ci.yml)
|
||
[](https://github.com/YOUR_USERNAME/GEO/actions/workflows/pr-check.yml)
|
||
|
||
## 项目简介
|
||
|
||
GEO(Generative Engine Optimization)是一个SaaS平台,帮助品牌监测其在各大AI搜索引擎中的曝光度和引用情况。支持文心一言、Kimi、通义千问、豆包、讯飞星火、天工、清言等主流国内AI平台,以及通用搜索引擎。
|
||
|
||
## 核心功能
|
||
|
||
- **多平台品牌引用监测**:同时覆盖8个主流AI搜索平台
|
||
- **定时自动查询与即时查询**:支持按日/周频率自动执行,也可手动触发
|
||
- **品牌匹配分析**:精确匹配、别名匹配、模糊匹配三级策略
|
||
- **竞品引用检测**:监测竞争对手在同一查询中的引用情况
|
||
- **数据可视化**:引用趋势图、平台对比图等多维度图表
|
||
- **CSV/PDF报告导出**:一键生成专业数据报告
|
||
- **用户管理与权限控制**:JWT认证、邮箱验证、密码管理
|
||
- **订阅套餐管理**:基于套餐的查询词数量限制
|
||
- **管理后台**:系统级用户与数据管理
|
||
|
||
## 技术栈
|
||
|
||
| 组件 | 技术 |
|
||
|------|------|
|
||
| 前端 | Next.js 14, React 18, TailwindCSS, shadcn/ui, Recharts |
|
||
| 后端 | Python FastAPI, SQLAlchemy 2.0 (async), Pydantic v2 |
|
||
| 数据库 | PostgreSQL 15, Redis 7 |
|
||
| 认证 | JWT + NextAuth.js |
|
||
| 任务调度 | APScheduler |
|
||
| 浏览器自动化 | Playwright |
|
||
| 容器化 | Docker Compose |
|
||
|
||
## 快速开始
|
||
|
||
### Docker 方式(推荐)
|
||
|
||
```bash
|
||
# 1. 克隆仓库
|
||
git clone <repository-url>
|
||
cd GEO
|
||
|
||
# 2. 复制环境变量
|
||
cp .env.example .env
|
||
|
||
# 3. 启动所有服务
|
||
docker-compose up -d
|
||
|
||
# 4. 访问应用
|
||
# 前端: http://localhost:3000
|
||
# 后端 API: http://localhost:8000
|
||
# API 文档: http://localhost:8000/docs
|
||
```
|
||
|
||
### 本地开发
|
||
|
||
#### 后端
|
||
|
||
```bash
|
||
cd backend
|
||
python3 -m venv venv
|
||
source venv/bin/activate # Windows: venv\Scripts\activate
|
||
pip install -r requirements.txt
|
||
alembic upgrade head
|
||
uvicorn app.main:app --reload --port 8000
|
||
```
|
||
|
||
#### 前端
|
||
|
||
```bash
|
||
cd frontend
|
||
npm install
|
||
npm run dev
|
||
```
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
GEO/
|
||
├── backend/ # FastAPI 后端服务
|
||
│ ├── alembic/ # 数据库迁移脚本
|
||
│ ├── app/
|
||
│ │ ├── api/ # API 路由层
|
||
│ │ │ ├── auth.py # 认证接口
|
||
│ │ │ ├── queries.py # 查询词管理接口
|
||
│ │ │ ├── citations.py # 引用数据接口
|
||
│ │ │ ├── reports.py # 报告导出接口
|
||
│ │ │ └── deps.py # 依赖注入
|
||
│ │ ├── middleware/ # 中间件
|
||
│ │ │ ├── rate_limit.py # 限流中间件
|
||
│ │ │ └── logging_middleware.py
|
||
│ │ ├── models/ # SQLAlchemy 数据模型
|
||
│ │ │ ├── user.py
|
||
│ │ │ ├── query.py
|
||
│ │ │ ├── citation_record.py
|
||
│ │ │ ├── query_task.py
|
||
│ │ │ └── subscription.py
|
||
│ │ ├── schemas/ # Pydantic 数据校验
|
||
│ │ ├── services/ # 业务逻辑层
|
||
│ │ ├── workers/ # 任务调度与引擎
|
||
│ │ │ ├── scheduler.py # APScheduler 定时任务
|
||
│ │ │ ├── citation_engine.py
|
||
│ │ │ └── platforms/ # 各平台适配器
|
||
│ │ ├── config.py # 应用配置
|
||
│ │ ├── database.py # 数据库连接
|
||
│ │ └── main.py # 应用入口
|
||
│ ├── requirements.txt
|
||
│ └── Dockerfile
|
||
├── frontend/ # Next.js 前端应用
|
||
│ ├── app/
|
||
│ │ ├── (auth)/ # 认证相关页面
|
||
│ │ │ ├── login/
|
||
│ │ │ ├── register/
|
||
│ │ │ ├── forgot-password/
|
||
│ │ │ └── reset-password/
|
||
│ │ ├── (dashboard)/ # 仪表盘页面
|
||
│ │ │ └── dashboard/
|
||
│ │ │ ├── queries/
|
||
│ │ │ ├── citations/
|
||
│ │ │ ├── reports/
|
||
│ │ │ └── settings/
|
||
│ │ ├── api/auth/[...nextauth]/
|
||
│ │ ├── layout.tsx
|
||
│ │ └── page.tsx
|
||
│ ├── components/
|
||
│ │ ├── ui/ # shadcn/ui 组件
|
||
│ │ ├── charts/ # Recharts 图表组件
|
||
│ │ └── layout/ # 布局组件
|
||
│ ├── lib/ # 工具函数与API客户端
|
||
│ └── package.json
|
||
├── tests/ # 后端测试
|
||
├── docker-compose.yml
|
||
├── .env.example
|
||
└── README.md
|
||
```
|
||
|
||
## API 概览
|
||
|
||
| 模块 | 路径前缀 | 说明 |
|
||
|------|---------|------|
|
||
| 认证 | /api/v1/auth | 注册、登录、密码管理、邮箱验证、用户资料 |
|
||
| 查询管理 | /api/v1/queries | 查询词CRUD、立即查询 |
|
||
| 引用数据 | /api/v1/citations | 引用记录查询、统计分析 |
|
||
| 报告导出 | /api/v1/reports | CSV报告生成与下载 |
|
||
|
||
完整的 API 端点列表请参阅 [backend/README.md](backend/README.md)。
|
||
|
||
## 环境变量
|
||
|
||
| 变量名 | 说明 | 示例 |
|
||
|--------|------|------|
|
||
| `DATABASE_URL` | PostgreSQL 连接字符串 | `postgresql+asyncpg://postgres:postgres123@db:5432/geo_platform` |
|
||
| `REDIS_URL` | Redis 连接地址 | `redis://redis:6379/0` |
|
||
| `JWT_SECRET` | JWT 签名密钥 | `your-secret-key-change-in-production` |
|
||
| `JWT_EXPIRE_HOURS` | JWT 过期时间(小时) | `24` |
|
||
| `NEXT_PUBLIC_API_URL` | 前端调用后端 API 地址 | `http://localhost:8000` |
|
||
| `PLAYWRIGHT_BROWSERS_PATH` | Playwright 浏览器路径 | `/ms-playwright` |
|
||
| `ZHIPU_API_KEY` | 智谱AI API 密钥(可选) | - |
|
||
| `TONGYI_API_KEY` | 通义千问 API 密钥(可选) | - |
|
||
| `CORS_ORIGINS` | 允许的跨域来源 | `http://localhost:3000` |
|
||
|
||
## 许可证
|
||
|
||
MIT
|