# KOL Insight - 产品需求文档 (PRD)
## 文档信息
| 项目 | 内容 |
|------|------|
| 版本 | v1.0 |
| 创建日期 | 2025-01-28 |
| 状态 | 草稿 |
## 1. 产品概述
### 1.1 产品背景
在 KOL 营销领域,运营人员需要频繁查询达人视频数据以评估投放效果、计算投放成本。现有的云图平台虽然提供了数据,但缺乏批量查询和成本预估能力,导致运营人员需要手动逐条查询和计算,效率低下。
KOL Insight 旨在解决这一痛点,提供批量数据查询和智能成本预估功能,帮助运营人员快速获取决策所需的数据。
### 1.2 产品定位
- **目标用户**:KOL 营销运营人员、投放优化师、品牌方
- **核心价值**:批量查询 KOL 视频数据,自动计算预估 CPM 和看后搜成本
- **差异化优势**:支持多种查询方式(星图ID/达人ID/昵称),自动计算关键成本指标
### 1.3 产品目标
| 目标 | 指标 | 衡量方式 |
|------|------|----------|
| 提升查询效率 | 单次可批量查询多个 KOL | 对比手动查询耗时 |
| 降低计算错误 | 自动计算预估指标准确率 100% | 人工抽检验证 |
| 提高数据可用性 | 支持数据导出 | 导出功能完整性 |
## 2. 用户故事
### 2.1 用户角色定义
| 角色 | 描述 | 核心目标 | 痛点 |
|------|------|----------|------|
| 运营人员 | 负责 KOL 投放执行与数据分析的一线人员 | 快速获取 KOL 视频表现数据 | 逐条查询效率低,成本计算繁琐 |
| 投放优化师 | 负责投放策略优化的专业人员 | 评估投放 ROI,优化投放策略 | 数据分散,难以横向对比 |
### 2.2 用户故事列表
#### P0 - 核心故事
| ID | 用户故事 | 验收标准 |
|----|----------|----------|
| US-001 | 作为运营人员,我想要批量输入星图ID查询KOL数据,以便快速获取多个达人的视频表现 | 1. 支持批量输入星图ID(换行分隔)
2. 精准匹配 star_id 字段
3. 返回完整视频数据列表 |
| US-002 | 作为运营人员,我想要通过达人unique_id查询数据,以便根据达人ID快速定位数据 | 1. 支持批量输入达人unique_id
2. 精准匹配 star_unique_id 字段
3. 返回对应视频数据 |
| US-003 | 作为运营人员,我想要通过达人昵称模糊搜索,以便在不知道精确ID时也能找到数据 | 1. 支持输入达人昵称
2. 模糊匹配 star_nickname 字段
3. 返回所有匹配结果 |
| US-004 | 作为运营人员,我想要看到预估自然CPM和看后搜人数成本,以便评估投放效果 | 1. 自动计算预估自然CPM
2. 自动计算预估自然看后搜人数
3. 自动计算预估自然看后搜人数成本
4. 数据展示在结果列表中 |
#### P1 - 重要故事
| ID | 用户故事 | 验收标准 |
|----|----------|----------|
| US-005 | 作为运营人员,我想要导出查询结果,以便在 Excel 中进一步分析或汇报 | 1. 支持导出为 Excel/CSV 格式
2. 导出数据包含所有查询字段
3. 中文列名清晰可读 |
| US-006 | 作为运营人员,我想要看到视频的完整数据指标,以便全面了解视频表现 | 1. 展示所有核心指标(曝光、互动、A3率等)
2. 数据格式清晰易读 |
#### P2 - 次要故事
| ID | 用户故事 | 验收标准 |
|----|----------|----------|
| US-007 | 作为运营人员,我想要点击视频链接直接跳转,以便快速查看原视频 | 1. 视频链接可点击
2. 新窗口打开视频页面 |
### 2.3 用户旅程
**核心用户旅程:批量查询 KOL 数据**
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 触发点 │ │ 输入查询条件 │ │ 查看结果 │ │ 导出数据 │
│ 需要KOL数据 │ ──▶ │ 批量输入ID/昵称 │ ──▶ │ 浏览数据列表 │ ──▶ │ 下载Excel/CSV │
└─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │ │
▼ ▼ ▼ ▼
"需要快速获取 "选择查询方式, "系统自动计算 "数据可用于
多个达人数据" 粘贴ID列表" CPM等指标" 汇报和分析"
```
用户从需要 KOL 数据开始,选择合适的查询方式(星图ID/达人ID/昵称),批量输入查询条件后提交查询。系统返回结果列表,自动计算预估 CPM 和看后搜成本等指标。用户可浏览数据,需要时导出为 Excel 或 CSV 文件。
## 3. 功能需求
### 3.1 功能架构
```
KOL Insight
├── 数据查询模块
│ ├── 星图ID精准查询
│ ├── 达人unique_id精准查询
│ └── 达人昵称模糊查询
├── 数据计算模块
│ ├── 预估自然CPM计算
│ ├── 预估自然看后搜人数计算
│ └── 预估自然看后搜人数成本计算
├── 数据展示模块
│ ├── 结果列表展示
│ └── 视频链接跳转
└── 数据导出模块
└── Excel/CSV导出
```
### 3.2 功能详情
#### 3.2.1 数据查询模块
| 功能点 | 描述 | 关联用户故事 | 优先级 | 验收标准 |
|--------|------|--------------|--------|----------|
| 星图ID查询 | 批量输入星图ID,精准匹配 star_id 字段 | US-001 | P0 | 支持批量输入,精准匹配,返回完整数据 |
| 达人ID查询 | 批量输入达人unique_id,精准匹配 star_unique_id 字段 | US-002 | P0 | 支持批量输入,精准匹配,返回完整数据 |
| 昵称模糊查询 | 输入达人昵称,模糊匹配 star_nickname 字段 | US-003 | P0 | 支持包含匹配,返回所有匹配结果 |
#### 3.2.2 数据计算模块
| 功能点 | 描述 | 关联用户故事 | 优先级 | 验收标准 |
|--------|------|--------------|--------|----------|
| 预估自然CPM | 公式:`estimated_video_cost / natural_play_cnt * 1000` | US-004 | P0 | 计算结果准确,单位为元/千次曝光 |
| 预估自然看后搜人数 | 公式:`natural_play_cnt / total_play_cnt * after_view_search_uv` | US-004 | P0 | 计算结果准确,单位为人数 |
| 预估自然看后搜人数成本 | 公式:`estimated_video_cost / 预估自然看后搜人数` | US-004 | P0 | 计算结果准确,单位为元/人 |
#### 3.2.3 数据展示模块
| 功能点 | 描述 | 关联用户故事 | 优先级 | 验收标准 |
|--------|------|--------------|--------|----------|
| 结果列表展示 | 展示查询结果的完整数据表格 | US-006 | P1 | 包含所有指标字段,格式清晰 |
| 视频链接跳转 | 点击视频链接跳转到原视频页面 | US-007 | P2 | 链接可点击,新窗口打开 |
#### 3.2.4 数据导出模块
| 功能点 | 描述 | 关联用户故事 | 优先级 | 验收标准 |
|--------|------|--------------|--------|----------|
| 数据导出 | 将查询结果导出为 Excel/CSV 格式 | US-005 | P1 | 文件可下载,数据完整,中文列名 |
## 4. 非功能需求
### 4.1 性能需求
| 指标 | 要求 | 说明 |
|------|------|------|
| 查询响应时间 | ≤ 3秒 | 100条以内的批量查询 |
| 页面加载时间 | ≤ 2秒 | 首页加载 |
| 导出响应时间 | ≤ 5秒 | 1000条以内的数据导出 |
### 4.2 安全需求
- 数据库连接使用安全凭证,不在代码中硬编码
- 查询输入需进行 SQL 注入防护
- 敏感配置通过环境变量管理
### 4.3 兼容性需求
| 平台/环境 | 支持版本 |
|-----------|----------|
| 浏览器 | Chrome/Edge/Firefox 最新版 |
| Python | 3.9+ 及以上 |
| PostgreSQL | 14.x 及以上 |
| Node.js(前端构建) | 18.x 及以上 |
### 4.4 可用性需求
- 系统可用性目标:99%(工作时间)
- 提供基本的错误提示,便于用户理解问题原因
## 5. 数据需求
### 5.1 数据模型
```
┌─────────────────────────────────────────────────────────────────┐
│ 视频数据表 (kol_videos) │
├─────────────────────────────────────────────────────────────────┤
│ 基础信息 │
│ item_id (视频ID) [主键] │
│ title (视频标题) │
│ star_id (星图ID) [索引] │
│ star_unique_id (达人unique_id) [索引] │
│ star_nickname (达人昵称) [索引] │
│ video_url (视频链接) │
│ publish_time (发布时间) │
├─────────────────────────────────────────────────────────────────┤
│ 曝光指标 │
│ natural_play_cnt (自然曝光数) ★ 计算用 │
│ heated_play_cnt (加热曝光数) │
│ total_play_cnt (总曝光数) ★ 计算用 │
├─────────────────────────────────────────────────────────────────┤
│ 互动指标 │
│ total_interact (总互动) │
│ like_cnt (点赞) │
│ share_cnt (转发) │
│ comment_cnt (评论) │
├─────────────────────────────────────────────────────────────────┤
│ 效果指标 │
│ new_a3_rate (新增A3率) │
│ after_view_search_uv (看后搜人数) ★ 计算用 │
│ return_search_cnt (回搜次数) │
├─────────────────────────────────────────────────────────────────┤
│ 商业信息 │
│ industry_id (合作行业ID) │
│ industry_name (合作行业) │
│ brand_id (合作品牌ID) → 需调用品牌API获取名称 │
│ estimated_video_cost (预估视频价格) ★ 计算用 │
└─────────────────────────────────────────────────────────────────┘
★ 标记字段为计算预估指标所需的关键字段
```
### 5.2 数据规范
| 字段 | 类型 | 说明 | 校验规则 |
|------|------|------|----------|
| star_id | string | 星图ID | 非空 |
| star_unique_id | string | 达人唯一标识 | 非空 |
| star_nickname | string | 达人昵称 | 非空 |
| item_id | string | 视频ID | 非空,唯一 |
| 曝光数 | integer | 各类曝光数据 | ≥ 0 |
| 互动数 | integer | 各类互动数据 | ≥ 0 |
| 预估视频价格 | decimal | 预估价格 | ≥ 0 |
## 6. 接口需求
### 6.1 外部接口
| 接口 | 用途 | 提供方 |
|------|------|--------|
| PostgreSQL | 数据存储与查询 | 自建数据库 |
| 品牌API | 根据品牌ID获取品牌名称 | 内部API (api.internal.intelligrow.cn) |
**品牌API详情**:
- 接口地址:`/v1/yuntu/brands/{brand_id}`
- 请求方式:GET
- 用途:根据合作品牌ID(brand_id)查询品牌名称
- 文档:https://api.internal.intelligrow.cn/docs#/云图
### 6.2 内部接口
| 接口 | 方法 | 用途 | 说明 |
|------|------|------|------|
| /api/v1/query | POST | 批量查询KOL视频数据 | FastAPI 后端服务提供 |
| /api/v1/export | GET | 导出查询结果为Excel/CSV | FastAPI 后端服务提供 |
**API 架构说明**:
- 后端采用 FastAPI 框架,提供 RESTful API
- 前端(Next.js)通过 HTTP 请求调用后端 API
- API 版本管理:使用 `/api/v1/` 前缀
- 跨域支持:FastAPI 配置 CORS 中间件
## 7. 约束与依赖
### 7.1 技术约束
| 约束 | 说明 | 影响 |
|------|------|------|
| 前端技术栈 | React + Next.js (App Router) | 前端技术选型固定 |
| 后端技术栈 | Python FastAPI + PostgreSQL | 后端技术选型固定,前后端分离部署 |
| 部署方式 | Docker(推荐) / PM2(前端) + Gunicorn/Uvicorn(后端) | 运维方式固定,需分别部署前后端服务 |
### 7.2 业务约束
- 数据来源于云图平台,需确保数据同步的及时性和准确性
- 查询功能仅用于内部运营分析,不对外开放
### 7.3 外部依赖
| 依赖 | 说明 |
|------|------|
| 云图数据源 | 视频数据需从云图平台同步 |
| PostgreSQL 数据库 | 依赖数据库服务可用性 |
| 品牌API | 依赖内部API服务获取品牌名称 |
## 8. 里程碑规划
```
Phase 1 - MVP Phase 2 - 优化
│ │
▼ ▼
┌──────────┐ ┌──────────┐
│ MVP │ ────────▶ │ v1.1 │
│ 核心查询 │ │ 性能优化 │
└──────────┘ └──────────┘
待定日期 待定日期
```
| 阶段 | 目标 | 交付物 |
|------|------|--------|
| MVP | 完成核心查询和计算功能 | 可用的批量查询系统,支持数据导出 |
| v1.1 | 性能优化和体验提升 | 更快的查询速度,更好的用户体验 |
## 9. 风险评估
| 风险 | 可能性 | 影响 | 应对措施 |
|------|--------|------|----------|
| 数据同步延迟 | 中 | 中 | 建立数据同步监控机制 |
| 大批量查询性能问题 | 中 | 中 | 设置批量查询上限,优化数据库索引 |
| 数据库连接不稳定 | 低 | 高 | 实现连接池和重试机制 |
| 品牌API不可用 | 低 | 中 | 缓存品牌数据,降级显示品牌ID |
## 附录
### A. 术语表
| 术语 | 定义 |
|------|------|
| KOL | Key Opinion Leader,关键意见领袖,即达人/网红 |
| 星图ID | 巨量星图平台的达人唯一标识 |
| unique_id | 达人在平台的唯一标识符 |
| CPM | Cost Per Mille,每千次曝光成本 |
| 看后搜 | 用户观看视频后进行搜索的行为 |
| A3率 | 用户深度互动率指标 |
| 自然曝光 | 非付费推广获得的曝光量 |
| 加热曝光 | 通过付费推广获得的曝光量 |
| natural_play_cnt | 自然曝光次数,用于计算预估自然CPM |
| total_play_cnt | 总曝光次数,包含自然+加热曝光 |
| estimated_video_cost | 预估视频价格,用于计算成本指标 |
| after_view_search_uv | 看后搜用户数,观看视频后进行搜索的独立用户数 |
### B. 输出字段完整列表
| 中文名 | 字段名 | 说明 |
|--------|--------|------|
| 视频ID | item_id | 主键 |
| 视频标题 | title | - |
| 爆文类型 | viral_type | - |
| 视频链接 | video_url | - |
| 新增A3率 | new_a3_rate | - |
| 看后搜人数 | after_view_search_uv | - |
| 回搜次数 | return_search_cnt | - |
| 自然曝光数 | natural_play_cnt | 计算用 |
| 加热曝光数 | heated_play_cnt | - |
| 总曝光数 | total_play_cnt | 计算用 |
| 总互动 | total_interact | - |
| 点赞 | like_cnt | - |
| 转发 | share_cnt | - |
| 评论 | comment_cnt | - |
| 合作行业ID | industry_id | - |
| 合作行业 | industry_name | - |
| 合作品牌ID | brand_id | 需调用品牌API |
| 合作品牌 | brand_name | 从品牌API获取 |
| 发布时间 | publish_time | - |
| 达人昵称 | star_nickname | 索引字段 |
| 达人unique_id | star_unique_id | 索引字段 |
| 预估视频价格 | estimated_video_cost | 计算用 |
| 预估自然CPM | (计算字段) | = estimated_video_cost / natural_play_cnt * 1000 |
| 预估自然看后搜人数 | (计算字段) | = natural_play_cnt / total_play_cnt * after_view_search_uv |
| 预估自然看后搜人数成本 | (计算字段) | = estimated_video_cost / 预估自然看后搜人数 |
### C. 参考文档
- RequirementsDoc.md