Files
geo/docs/geo-platform-prd-v1.md
T
root de30497f59 feat: add tenant and user management with migrations, handlers, and tests
- Implemented tenant and user management features including:
  - Tenant creation and management with associated migrations.
  - User creation and management with associated migrations.
  - Tenant membership management with associated migrations.
  - Platform user roles management with associated migrations.
  - Quota management with associated migrations.
  - Article and template management with associated migrations.
- Added HTTP handlers for templates and workspaces.
- Created tests for protected and public routes.
- Introduced a script to check tenant scope in SQL queries.
- Documented task plan for backend completion and frontend foundation.
2026-04-01 00:58:42 +08:00

1079 lines
22 KiB
Markdown
Raw 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.
# GEO 内容运营平台 PRD V1
## 1. 文档信息
| 项目 | 内容 |
| --- | --- |
| 文档名称 | GEO 内容运营平台 PRD V1 |
| 文档版本 | V1.0 |
| 文档状态 | 待评审 |
| 创建日期 | 2026-03-25 |
| 适用阶段 | V1 立项 / 设计 / 开发评审 |
| 关联文档 | `docs/media-binding-and-publish-v1.md` |
### 1.1 文档目标
本文档用于明确 GEO 内容运营平台 V1 的产品目标、范围边界、核心流程、页面功能、状态规则与验收标准,作为产品、设计、前后端、测试共同评审和执行的依据。
### 1.2 版本说明
- V1 聚焦打通内容生产、品牌知识沉淀、媒体账号绑定、手动发布、基础数据回看五条主链路。
- V1 不追求复杂的自动化编排、深度 BI、完整商业化计费和高阶团队协作。
## 2. 项目背景
### 2.1 背景说明
随着搜索结果页、AI 问答、内容推荐平台对结构化内容和专业内容的权重提升,品牌和运营团队需要围绕 GEO 场景持续生产高质量内容,并将内容分发到不同媒体平台,形成品牌曝光、搜索覆盖和 AI 可引用资产。
当前常见工作方式存在以下问题:
- 内容创作高度依赖人工,产出效率低,难以规模化。
- 内容质量不稳定,不同编辑产出的结构、语气、品牌表达不一致。
- 品牌资料、产品信息、常见问题分散在文档和网页中,难以复用。
- 多平台发布依赖人工登录和复制粘贴,容易出错,效率低。
- 发布后缺少统一的数据回看与效果追踪,无法持续优化。
### 2.2 目标用户
- 品牌运营团队
- 内容编辑团队
- 数字营销团队
- 需要进行品牌内容分发的中小企业或工作室
### 2.3 核心价值
- 降低内容生产门槛,提升文章生成效率。
- 基于品牌和知识库统一内容上下文,提升文章一致性。
- 将“生成”和“发布”串联成一条可执行链路。
- 沉淀平台账号、品牌资料、问题集和知识文档,形成长期资产。
- 支持基础 GEO 数据回看,为后续优化提供依据。
## 3. 产品目标与边界
### 3.1 业务目标
- 在 V1 完成从内容生成到手动发布的最小闭环。
- 建立品牌与知识资产沉淀能力,为后续内容生成提供输入。
- 打通至少 1 个媒体平台的绑定与发布能力。
### 3.2 用户目标
- 用户可以在平台上快速生成指定类型的内容。
- 用户可以维护品牌关键词、问题集、知识素材,提升内容质量。
- 用户可以绑定媒体账号并从后台发起发布。
- 用户可以查看文章状态、发布结果和基础数据概览。
### 3.3 成功指标
- 文章生成成功率 >= 90%
- 平台账号绑定成功率 >= 80%
- 单平台手动发布成功率 >= 80%
- 用户首次完成内容发布的时间 <= 30 分钟
- 品牌建档完成率 >= 60%
### 3.4 V1 范围
V1 包含:
- 工作台
- 模板创作
- 自定义生成
- 文章优化基础管理
- 媒体管理
- 品牌词库
- 数据详情基础看板
- 知识库基础管理
- 套餐额度展示
V1 不包含:
- 云端自动代发
- 自动定时发布到第三方媒体
- 团队成员管理与复杂权限
- 完整商业化计费系统
- 多维度 BI 自定义报表
- 自动采集全网竞品情报
## 4. 用户角色与权限
### 4.1 角色定义
#### 4.1.1 管理员
- 管理平台配置
- 查看并管理全部文章、品牌、知识库、媒体账号
- 可执行发布、删除、重试等高权限操作
#### 4.1.2 运营编辑
- 创建和编辑文章
- 创建优化任务
- 维护品牌资料与知识库
- 绑定媒体账号并发起发布
#### 4.1.3 只读成员
- 查看工作台、文章列表、数据详情
- 不允许生成、发布、删除或修改品牌资产
### 4.2 权限原则
- 数据按当前账号隔离。
- 删除、发布、重新绑定等操作仅管理员和运营编辑可用。
- 平台账号敏感信息不在服务端保存登录态。
## 5. 核心业务流程
### 5.1 主流程
1. 用户创建品牌或选择已有品牌。
2. 用户维护品牌关键词、问题集、知识文档。
3. 用户选择模板或使用自定义 Prompt 发起文章生成。
4. 系统生成文章草稿并保存到文章列表。
5. 用户可对草稿进行预览、复制、优化或删除。
6. 用户在媒体管理中绑定目标平台账号。
7. 用户从文章列表中对指定文章发起手动发布。
8. 浏览器插件执行真实发布动作并回传结果。
9. 系统保存发布记录并在工作台与数据详情页展示结果。
### 5.2 模板创作流程
1. 用户进入模板创作页。
2. 用户点击“选择模板创作”。
3. 用户选择模板类型,如 Top X、产品评测、研究报告。
4. 用户填写模板所需字段。
5. 用户选择立即生成或加入批量任务。
6. 系统创建生成任务并返回文章记录。
### 5.3 自定义生成流程
1. 用户进入自定义生成页。
2. 用户选择 Prompt 规则、品牌、媒体平台等上下文信息。
3. 用户发起即时任务或配置定时任务。
4. 系统根据规则生成文章并保存结果。
### 5.4 媒体绑定流程
1. 用户进入媒体管理页。
2. 用户选择目标平台,点击“去绑定”。
3. 系统通过浏览器插件打开平台登录页。
4. 用户完成平台登录。
5. 插件识别账号信息并回传后台。
6. 系统保存绑定关系并更新连接状态。
### 5.5 手动发布流程
1. 用户在文章列表或工作台点击“发布内容”。
2. 系统校验目标平台账号是否已绑定且状态正常。
3. 前端调用插件执行图片上传和文章发布。
4. 插件回传发布结果。
5. 系统记录发布状态、外部文章 ID、错误信息。
## 6. 信息架构
### 6.1 一级导航
- 工作台
- 文章创作
- 品牌管理
- 数据追踪
- 内容管理
### 6.2 二级导航
#### 6.2.1 文章创作
- 模板创作
- 自定义生成
- 文章优化
- 媒体管理
#### 6.2.2 品牌管理
- 品牌词库
#### 6.2.3 数据追踪
- 数据详情
#### 6.2.4 内容管理
- 知识库
## 7. 功能清单与优先级
| 模块 | 功能点 | 优先级 |
| --- | --- | --- |
| 工作台 | 模板入口、数据总览、最近生成、快捷操作、额度展示 | P0 |
| 模板创作 | 模板列表、选择模板、单次生成、批量生成、文章列表筛选 | P0 |
| 自定义生成 | 即时任务、定时任务、Prompt 规则、生成记录管理 | P0 |
| 文章优化 | 导入文章、新建优化任务、优化列表、待处理任务入口 | P1 |
| 媒体管理 | 平台列表、账号绑定、连接状态、发布入口、过滤 | P0 |
| 品牌词库 | 品牌卡片、关键词、问题集、竞品库基础结构 | P0 |
| 数据详情 | 基础趋势图、高频问题、平台引用排行 | P1 |
| 知识库 | 分组、上传内容、列表管理、AI 学习状态 | P0 |
| 套餐额度 | 免费版展示、额度进度、重置时间 | P1 |
## 8. 模块详细需求
## 8.1 工作台
### 8.1.1 页面目标
为用户提供平台概况、内容创作快捷入口和最近任务状态总览。
### 8.1.2 页面结构
页面包含以下区域:
- 顶部模板类型卡片区
- 右侧数据总览区
- 最近生成列表区
- 左下角套餐额度区
### 8.1.3 功能说明
#### A. 模板类型卡片
展示当前支持的文章模板类型:
- Top X 文章
- 产品评测文章
- 研究报告文章
- 模板持续扩展中
每张卡片包含:
- 模板名称
- 模板说明
- 按钮“立即生成”
点击“立即生成”后,跳转至对应的模板创建页或打开模板选择弹窗。
#### B. 数据总览
展示指标:
- 生成数
- 发布数
- 品牌数
- 媒体平台数
口径说明:
- 生成数:当前账号已生成的文章总数
- 发布数:已成功发布的记录数
- 品牌数:当前账号下创建的品牌数
- 媒体平台数:已绑定或支持的平台总数,最终口径以实现为准,需在开发前统一
#### C. 最近生成列表
字段包括:
- 文章标题
- 模板类型
- 生成状态
- 发布状态
- 字数
- 创建时间
- 生成来源标签
- 操作
操作按钮包括:
- 发布
- 优化
- 预览
- 复制
- 删除
#### D. 套餐额度
展示:
- 当前版本,如免费版
- 升级入口
- 文章生成配额
- 配额重置时间
### 8.1.4 状态规则
生成状态:
- 草稿
- 生成中
- 已完成
- 生成失败
发布状态:
- 未发布
- 发布中
- 发布成功
- 发布失败
- 待审核
### 8.1.5 验收标准
- 页面首次加载时可展示模板卡片、数据总览与最近生成列表。
- 列表操作按钮按状态正确展示。
- 点击模板入口可正常跳转或打开模板选择。
- 额度区展示当前套餐和剩余额度。
## 8.2 文章创作
## 8.2.1 模板创作
### 页面目标
帮助用户基于预设模板快速生产结构化 GEO 文章。
### 页面结构
- 顶部标题与操作区
- 筛选区
- 文章列表
- 选择模板弹窗
### 筛选项
- 模板类型
- 发布状态
- 生成时间
- 生成状态
- 标题关键字
### 操作区
- 批量生成文章
- 选择模板创作
- 重置筛选
### 文章列表字段
- 文章标题
- 模板类型
- 生成状态
- 发布状态
- 字数
- 创建时间
- 操作
### 模板类型
V1 支持:
- Top X 文章
- 产品评测文章
- 研究报告文章
### 模板输入字段
不同模板字段可不同,V1 建议统一抽象为:
- 品牌
- 产品名 / 主题
- 目标关键词
- 文章语气
- 目标平台
- 字数要求
- 补充说明
### 生成方式
- 单次生成
- 批量生成
### 业务规则
- 生成前需校验额度。
- 生成成功后落一篇新文章记录。
- 批量生成以任务形式存在,可在列表中查看状态。
### 验收标准
- 可通过弹窗选择模板并进入创建流程。
- 至少支持 1 个模板打通完整生成链路。
- 列表筛选、查看、删除功能可用。
## 8.2.2 自定义生成
### 页面目标
支持用户基于自定义 Prompt 规则灵活生成文章,覆盖标准模板之外的内容场景。
### 页面结构
- 顶部快速入口卡片
- Tab 区
- 筛选区
- 列表区
### 顶部卡片
- 即时生成内容
- 定时计划生成
点击卡片进入对应任务创建流程。
### Tabs
- 生成文章
- 即时任务
- 定时任务
- Prompt 规则
### 筛选项
- Prompt
- 定时任务
- 发布状态
- 标题
- 生成状态
- 生成时间
### 列表字段
- 文章标题
- 规则名称
- Prompt
- 发布平台
- 生成状态
- 发布状态
- 字数
- 操作
### 功能点
#### A. Prompt 规则管理
支持创建和维护规则,规则字段包括:
- 规则名称
- Prompt 内容
- 适用场景
- 默认语气
- 默认字数
- 是否启用
#### B. 即时任务
用户填写参数后立即生成文章。
#### C. 定时任务
用户配置执行频率、起止时间、目标平台与规则。
V1 说明:
- 可支持“定时生成文章”
- 不要求“自动定时发布到媒体平台”
- 生成和发布为两条独立链路
### 验收标准
- 用户可创建 Prompt 规则。
- 用户可发起即时生成任务。
- 用户可查看定时任务记录和生成结果。
## 8.2.3 文章优化
### 页面目标
为已生成或导入的文章提供二次加工能力,提升内容可读性、结构完整性和平台适配度。
### 页面结构
- 操作区
- 筛选区
- 优化文章列表
### 操作入口
- 导入已生成文章
- 新建文章优化
- 未完成优化任务
### 筛选项
- 发布状态
- 生成时间
- 生成状态
- 搜索文章
### 列表字段
- 作品标题/来源
- 字数
- 发布状态
- 最后修改时间
- 操作
### 功能点
- 选择已有文章创建优化任务
- 选择优化方向,如改写、扩写、精简、SEO/GEO 增强
- 保存优化版本
- 记录最后修改时间
### V1 边界
- V1 优先做“文章导入 + 优化任务管理 + 优化结果保存”
- 不要求完整的多人协作编辑器
- 不要求复杂版本 diff 对比
### 验收标准
- 可从已生成文章中选择文章创建优化任务。
- 优化后可保存新版本并返回列表。
- 空状态、未完成任务入口正常展示。
## 8.2.4 媒体管理
### 页面目标
统一管理媒体平台账号绑定、状态查看和手动发布能力。
### 页面结构
- 媒体绑定流程引导区
- 平台分类 Tabs
- 搜索与筛选区
- 平台卡片列表
### 顶部流程引导
展示三步:
1. 安装 GEO 插件
2. 登录媒体账号
3. 一键授权同步
### 平台分类
- UGC 媒体平台
- 企业自建站
- 第三方新闻源
V1 实际可先开放 UGC 平台,其他分类可先展示占位。
### 筛选条件
- 平台关键字搜索
- 全部
- 已连接
- 未连接
### 平台卡片字段
- 平台名称
- 平台类型
- 绑定状态
- 账号昵称
- 外部平台 ID
- 运行状态
- 操作按钮
### 操作按钮
- 去绑定
- 重新检测
- 发布内容
### 业务规则
- 绑定动作通过浏览器插件执行。
- 服务端不保存第三方平台 cookie 或登录态。
- 发布内容前必须校验账号状态为“运行正常”或“已连接”。
### 平台状态定义
- 未绑定
- 绑定中
- 已连接
- 已失效
- 需授权
### V1 平台策略
- 优先接入 1 个平台打通全链路
- 推荐优先级:知乎 -> 头条号 -> 百家号 -> 网易号
### 验收标准
- 用户可看到平台列表和绑定状态。
- 至少 1 个平台支持绑定成功。
- 至少 1 个平台支持从后台触发手动发布。
- 发布结果可回写为成功或失败。
## 8.3 品牌管理
## 8.3.1 品牌词库
### 页面目标
围绕品牌构建关键词、问题集和竞品信息,为内容生成提供统一上下文。
### 页面结构
- 品牌卡片区
- 标签页切换区
- 左侧关键词列表
- 右侧问题集列表
### 品牌卡片
展示:
- 品牌名称
- 品牌描述
- 新建品牌按钮
### Tab
- 关键词
- 竞品库
### 关键词模块
字段:
- 关键词名称
- 关键词数量
- 新建关键词
### 问题集字段
- 问题内容
- 创建时间
- 操作
操作包括:
- 查看数据
- 删除
### 竞品库
V1 建议以基础结构落地:
- 竞品名称
- 官网
- 竞品描述
- 重点产品线
### 业务规则
- 一个账号可有多个品牌。
- 一个品牌下可有多个关键词分类。
- 一个关键词下可有多个问题集。
- 生成文章时可选中品牌上下文,自动注入关键词和问题集。
### 验收标准
- 可创建品牌。
- 可维护关键词和问题集。
- 生成文章时可成功关联品牌信息。
## 8.4 数据追踪
## 8.4.1 数据详情
### 页面目标
向用户展示品牌或文章在 GEO 场景下的基础效果数据,支持趋势回看和高频问题分析。
### 页面结构
- 顶部指标卡
- 趋势图
- 高频问题区
- 引用排行榜
### 顶部指标
V1 建议至少包含:
- 提及率
- 自评提及率
- 自述推荐率
- 正面提及率
具体口径需在研发前统一,避免统计口径不一致。
### 趋势图
按日期展示 GEO 指标变化趋势。
### 高频问题
展示近期高频触发的问题列表。
### 引用排行榜
按模型平台统计:
- 模型平台名称
- 引用文章数
- 引用率
### V1 边界
- V1 可支持基础静态或任务计算后的数据展示
- 不要求实时流式数据回收
- 不要求复杂的筛选维度组合
### 验收标准
- 数据页可按时间展示基础趋势。
- 可展示高频问题列表。
- 可展示模型平台引用排行。
## 8.5 内容管理
## 8.5.1 知识库
### 页面目标
帮助用户上传和管理品牌相关资料,作为后续 AI 学习和文章生成的知识来源。
### 页面结构
- 新建内容按钮
- 左侧分组树
- 右侧列表
### 分组区
支持:
- 默认分组
- 新建分组
- 展开/收起分组
### 列表字段
- 名称
- 类型
- 大小
- AI 学习状态
- 上传时间
- 操作
### 新建内容方式
V1 支持以下来源:
- 文档上传
- 网站链接录入
- 手动文本录入
### AI 学习状态
- 未学习
- 学习中
- 已完成
- 失败
### 业务规则
- 知识条目上传后进入解析流程。
- 解析成功后可被生成模块使用。
- 删除知识条目后不再参与后续生成。
### 验收标准
- 用户可创建分组并上传内容。
- 内容可展示在列表中并有学习状态。
- 生成模块可选择是否使用知识库内容。
## 8.6 账号与套餐
### 页面目标
向用户展示当前版本、生成额度和升级入口。
### V1 范围
- 免费版展示
- 文章生成额度进度
- 重置时间
- 升级按钮占位
### 业务规则
- 发起生成前校验额度。
- 额度用尽后禁止继续生成,并提示升级或等待重置。
## 9. 通用交互规则
### 9.1 列表页通用规则
- 支持默认按创建时间倒序排列。
- 筛选条件变更后需显式点击搜索或自动刷新,交互方案需统一。
- 无数据时展示空状态图和引导文案。
### 9.2 删除规则
- 删除前弹出二次确认。
- 已发布文章删除时需提示“仅删除系统记录,不影响第三方平台内容”。
### 9.3 长任务处理
- 文章生成、知识学习、发布等异步任务需展示状态。
- 用户离开页面后,任务结果需可在列表中回看。
### 9.4 错误提示
- 错误提示应明确到动作级别,如“绑定失败”“发布失败”“知识解析失败”。
- 对可重试操作提供重试入口。
## 10. 状态定义
### 10.1 文章状态
| 状态 | 说明 |
| --- | --- |
| draft | 草稿 |
| generating | 生成中 |
| completed | 已完成 |
| failed | 生成失败 |
### 10.2 发布状态
| 状态 | 说明 |
| --- | --- |
| unpublished | 未发布 |
| publishing | 发布中 |
| success | 发布成功 |
| failed | 发布失败 |
| pending_review | 待审核 |
### 10.3 平台账号状态
| 状态 | 说明 |
| --- | --- |
| pending | 等待绑定 |
| active | 已连接 |
| invalid | 已失效 |
| expired | 登录过期 |
### 10.4 知识条目状态
| 状态 | 说明 |
| --- | --- |
| uploaded | 已上传 |
| parsing | 解析中 |
| learned | 学习完成 |
| failed | 处理失败 |
## 11. 数据对象定义
### 11.1 用户与权限
- User
- Role
- Plan
### 11.2 品牌资产
- Brand
- BrandKeyword
- BrandQuestion
- Competitor
### 11.3 内容资产
- Article
- ArticleVersion
- GenerationTask
- ScheduleTask
- OptimizationTask
### 11.4 媒体发布
- MediaPlatform
- PlatformAccount
- PublishRecord
### 11.5 知识库
- KnowledgeGroup
- KnowledgeItem
- KnowledgeParseTask
### 11.6 数据追踪
- AnalyticsSnapshot
- MentionRecord
- CitationRecord
## 12. 业务规则
### 12.1 生成与发布解耦
- 文章生成成功不代表自动发布。
- 发布操作必须由用户手动触发。
- 定时任务仅负责生成,不负责自动代发。
### 12.2 平台账号安全
- 第三方平台登录态由本地浏览器插件持有。
- 服务端仅保存平台 UID、昵称、头像、状态等非敏感资料。
### 12.3 品牌上下文注入
- 模板创作和自定义生成均可选择品牌。
- 若选择品牌,则自动注入品牌关键词、问题集及相关知识内容。
### 12.4 套餐限制
- 免费版限制文章生成次数。
- 后续可扩展平台绑定数、知识库容量、定时任务数量限制。
## 13. 非功能需求
### 13.1 性能
- 常规列表页首屏加载时间 <= 3 秒
- 文章生成任务提交响应时间 <= 2 秒
- 发布结果回写页面感知时间 <= 5 秒
### 13.2 稳定性
- 异步任务应具备失败记录能力。
- 插件执行失败时,后台需保留失败原因。
- 核心列表页需支持分页查询。
### 13.3 安全
- 所有接口必须鉴权。
- 插件与页面通信需校验来源域名和会话信息。
- 敏感数据不得明文落库。
### 13.4 可扩展性
- 媒体平台以 adapter 形式接入。
- 大模型供应商需可替换。
- 知识库解析与文章生成能力应支持异步任务扩展。
## 14. 埋点与数据统计
### 14.1 核心埋点事件
- 打开工作台
- 点击模板卡片
- 提交文章生成
- 文章生成成功
- 文章生成失败
- 创建优化任务
- 点击去绑定
- 绑定成功
- 绑定失败
- 点击发布
- 发布成功
- 发布失败
- 上传知识内容
- 新建品牌
### 14.2 指标口径待确认项
- 发布数按“文章维度”还是“发布记录维度”统计
- 媒体平台数按“支持平台”还是“已绑定平台”统计
- 引用率与提及率的采集和计算口径
## 15. 外部依赖与技术边界
### 15.1 外部依赖
- 大模型服务
- 文件存储服务
- 浏览器插件
- 第三方媒体平台
### 15.2 技术边界
- 媒体绑定与发布能力优先基于浏览器插件实现。
- V1 不采用服务端代持第三方平台登录态。
- 自动发布、远程执行器和多端调度不纳入 V1。
## 16. 验收标准
### 16.1 工作台
- 可展示模板入口、数据总览、最近生成列表和额度信息。
### 16.2 内容生成
- 至少支持 1 个模板完整生成文章。
- 支持自定义 Prompt 生成文章。
- 文章生成结果可在列表中查看和管理。
### 16.3 品牌与知识库
- 可创建品牌并维护关键词、问题集。
- 可上传至少一种知识内容并展示学习状态。
### 16.4 媒体管理
- 至少支持 1 个平台的账号绑定。
- 至少支持 1 个平台的后台手动发布。
- 发布结果可回写系统。
### 16.5 数据追踪
- 可展示至少一组基础趋势图和引用排行数据。
## 17. 里程碑建议
### 17.1 第一阶段
- 登录与基础框架
- 工作台
- 模板创作
- 品牌词库
- 知识库
### 17.2 第二阶段
- 自定义生成
- 媒体绑定
- 单平台手动发布
- 发布记录
### 17.3 第三阶段
- 文章优化
- 数据详情
- 批量生成与定时生成补齐
## 18. 风险与开放问题
### 18.1 主要风险
- 第三方平台页面结构变化会影响绑定和发布稳定性。
- 不同平台的内容格式要求存在差异,可能导致发布失败。
- 知识库内容质量直接影响生成效果。
- GEO 指标采集口径不明确会影响数据可信度。
### 18.2 待确认问题
- V1 首发平台最终选型是知乎还是头条号。
- 数据追踪页的数据来源是人工录入、定时采集还是模拟问答。
- 套餐与额度是否需要在 V1 即接入支付能力。
- 文章优化模块是否需要支持富文本在线编辑。
## 19. 附录
### 19.1 术语说明
- GEOGenerative Engine Optimization,面向生成式搜索和 AI 问答场景的内容优化。
- UGC 平台:用户生成内容平台,如知乎、头条号、百家号等。
- Prompt 规则:用于驱动大模型生成文章的模板化提示规则。
### 19.2 相关技术文档
- 媒体绑定与手动发布方案:`docs/media-binding-and-publish-v1.md`