# 诊断模块

## 概述

诊断模块是GEO平台的核心功能，提供**传统SEO诊断**和**GEO诊断**两种能力，帮助用户全面了解网站和品牌在AI时代的搜索可见性。

## SEO诊断 vs GEO诊断

### 核心区别

| 维度 | SEO诊断 | GEO诊断 |
|------|---------|---------|
| **优化目标** | 网页排名 | 品牌被AI引用 |
| **诊断对象** | 网站 | 品牌实体+内容 |
| **成功指标** | 排名、流量、点击率 | 引用频率、AI声量占比 |
| **用户路径** | 点击链接访问网站 | AI直接推荐品牌 |
| **见效周期** | 3-6个月 | 2周-1个月 |

---

## SEO诊断

传统SEO诊断评估网站对搜索引擎的优化程度，包含以下维度：

### 1. 技术SEO诊断

| 诊断项 | 说明 | 工具/方法 |
|--------|------|----------|
| 索引状态 | 网站是否被搜索引擎正确索引 | site:domain.com、Search Console |
| 爬取错误 | 404、5xx、重定向链 | 爬虫工具 |
| Core Web Vitals | LCP<2.5s、FID<100ms、CLS<0.1 | PageSpeed Insights |
| URL结构 | 规范化、重复URL | 爬虫分析 |
| robots.txt | 是否阻止重要页面 | 文件检查 |
| sitemap | 站点地图完整性 | XML验证 |

### 2. 页面SEO诊断

| 诊断项 | 说明 |
|--------|------|
| Title/Meta标签 | 是否完整、是否关键词堆砌 |
| H标签结构 | 层级是否清晰 |
| 关键词密度 | 是否合理分布 |
| 内链结构 | 是否有死链、锚文本是否相关 |
| 图片Alt | 是否添加描述性Alt文本 |

### 3. 内容质量诊断

| 诊断项 | 说明 |
|--------|------|
| 可读性 | 内容是否易于理解 |
| 信息深度 | 是否全面覆盖主题 |
| E-E-A-T | 经验、专业性、权威性、可信度 |
| 内容新鲜度 | 是否定期更新 |
| 重复内容 | 是否有大量重复页面 |

### 4. 外链分析

| 诊断项 | 说明 |
|--------|------|
| 反向链接质量 | 链接来源权威性 |
| 毒性信号 | 是否有垃圾链接 |
| 锚文本分布 | 是否自然多样 |

### 5. 用户体验诊断

| 诊断项 | 说明 |
|--------|------|
| 移动适配 | 移动端显示是否正常 |
| 页面速度 | 加载时间是否达标 |
| 转化路径 | 用户操作是否顺畅 |

---

## GEO诊断

GEO诊断评估品牌在AI生成式引擎中的被引用能力，包含以下维度：

### 1. 内容可提取性诊断

AI需要能够轻松提取和理解内容：

| 诊断项 | 说明 | 优先级 |
|--------|------|--------|
| 直接回答块 | 页面首段是否有简洁明确的答案 | P0 |
| 问答式标题 | H2/H3是否采用问题形式 | P0 |
| 列表和表格 | 是否使用结构化数据展示 | P0 |
| 内链到子意图页 | 是否链接到相关深度内容 | P1 |
| 内容新鲜度 | 是否有更新日期和作者信息 | P1 |

### 2. 实体清晰度诊断

AI需要能够理解品牌是什么：

| 诊断项 | 说明 | 验证标准 |
|--------|------|----------|
| 品牌定义 | 是否清晰说明品牌做什么 | AI理解准确率≥95% |
| 目标受众 | 是否明确服务谁 | 实体识别准确率≥90% |
| 差异化价值 | 为什么选择这个品牌 | 独特性评分≥80 |
| 行业分类 | 品牌属于什么行业 | 分类准确率≥95% |

### 3. E-E-A-T信号诊断

AI需要验证品牌的可信度：

| 诊断项 | 说明 | 验证标准 |
|--------|------|----------|
| 作者资质 | 内容作者是否有专业背景 | 作者简介完整度≥90% |
| 专业认证 | 是否有行业认证/奖项 | 认证展示率≥80% |
| 数据来源 | 是否引用可靠数据 | 引用权威源≥70% |
| 专家背书 | 是否有行业专家认可 | 背书数量≥3 |

### 4. Schema标记诊断

结构化数据帮助AI理解内容：

| Schema类型 | 适用场景 | 优先级 | 实施难度 |
|-----------|---------|--------|---------|
| Organization | 企业主页 | P0必须 | ⭐ 简单 |
| Product | 产品页 | P0必须 | ⭐⭐ 中等 |
| Article/BlogPosting | 博客文章 | P0必须 | ⭐ 简单 |
| FAQPage | 常见问题 | P1推荐 | ⭐ 简单 |
| HowTo | 操作指南 | P1推荐 | ⭐⭐ 中等 |
| BreadcrumbList | 导航结构 | P1推荐 | ⭐ 简单 |
| Review/Rating | 评价评分 | P2可选 | ⭐⭐ 中等 |

### 5. 主题权威诊断

AI需要验证品牌在特定领域的权威性：

| 诊断项 | 说明 | 验证标准 |
|--------|------|----------|
| 内容深度 | 是否全面覆盖主题 | 内容质量QScore≥4.6/5 |
| 话题覆盖度 | 是否覆盖相关子话题 | 话题覆盖率≥80% |
| 实体信号一致性 | 各页面实体信号是否一致 | 一致性评分≥85% |
| 内链网络 | 是否形成主题内容集群 | 集群完整度≥70% |

### 6. 引用就绪度诊断

评估品牌在AI回答中被引用的可能性：

| 诊断项 | 说明 | 验证标准 |
|--------|------|----------|
| 引用频率 | 品牌在AI回答中被提及的频率 | AOR（Answer Ownership Rate）≥50% |
| 引用质量 | 引用内容是否准确完整 | 引用准确率≥90% |
| AI声量占比 | 品牌在AI回答中的占比 | AI SOV≥30% |
| 竞品对比 | 与竞品在AI回答中的表现 | 差距≤10pp |

---

## 诊断流程

### SEO诊断流程

```
1. 网站爬取 → 2. 技术分析 → 3. 内容分析 → 4. 外链分析 → 5. 生成报告
```

### GEO诊断流程

```
1. 品牌信息输入 → 2. 内容可提取性检测 → 3. 实体清晰度检测 → 4. E-E-A-T信号检测
   → 5. Schema标记检测 → 6. 主题权威检测 → 7. AI平台引用检测 → 8. 生成诊断报告
```

---

## 诊断报告输出

### SEO诊断报告

包含以下内容：
- 技术SEO评分
- 页面SEO评分
- 内容质量评分
- 外链质量评分
- 用户体验评分
- 综合评分
- 优先修复建议

### GEO诊断报告

包含以下内容：
- 内容可提取性评分
- 实体清晰度评分
- E-E-A-T信号评分
- Schema标记完整性
- 主题权威评分
- AI平台引用率
- 综合评分
- 优先优化建议

---

## 技术实现

### API端点

| 端点 | 方法 | 描述 | 状态 |
|------|------|------|------|
| `GET /api/v1/diagnosis/seo/{brand_id}` | GET | 获取品牌的SEO诊断结果 | ✅ 已完成 |
| `GET /api/v1/diagnosis/geo/{brand_id}` | GET | 获取品牌的GEO诊断结果 | ✅ 已完成 |
| `GET /api/v1/diagnosis/combined/{brand_id}` | GET | 获取品牌的SEO+GEO综合诊断结果 | ✅ 已完成 |

### API响应示例

#### SEO诊断响应

```json
{
  "success": true,
  "data": {
    "brand_id": "brand_123",
    "diagnosis_type": "seo",
    "overall_score": 78,
    "dimensions": {
      "technical_seo": {
        "score": 85,
        "status": "good",
        "issues": []
      },
      "page_seo": {
        "score": 72,
        "status": "needs_improvement",
        "issues": [
          {
            "type": "missing_meta_description",
            "severity": "medium",
            "description": "部分页面缺少Meta描述",
            "affected_pages": 12
          }
        ]
      },
      "content_quality": {
        "score": 80,
        "status": "good",
        "issues": []
      },
      "backlinks": {
        "score": 65,
        "status": "needs_improvement",
        "issues": []
      },
      "user_experience": {
        "score": 88,
        "status": "excellent",
        "issues": []
      }
    },
    "recommendations": [
      {
        "priority": "high",
        "action": "补充缺失的Meta描述",
        "impact": "提升页面相关性评分"
      }
    ],
    "diagnosed_at": "2024-01-15T10:30:00Z"
  }
}
```

#### GEO诊断响应

```json
{
  "success": true,
  "data": {
    "brand_id": "brand_123",
    "diagnosis_type": "geo",
    "overall_score": 72,
    "dimensions": {
      "content_extractability": {
        "score": 75,
        "status": "good",
        "metrics": {
          "direct_answer_blocks": 85,
          "qa_headings": 70,
          "structured_data": 80
        }
      },
      "entity_clarity": {
        "score": 80,
        "status": "good",
        "metrics": {
          "brand_definition_accuracy": 95,
          "target_audience_clarity": 85,
          "differentiation_score": 75
        }
      },
      "eeat_signals": {
        "score": 68,
        "status": "needs_improvement",
        "metrics": {
          "author_credentials": 60,
          "certifications": 70,
          "data_sources": 75,
          "expert_endorsements": 50
        }
      },
      "schema_markup": {
        "score": 70,
        "status": "good",
        "coverage": {
          "organization": true,
          "product": true,
          "article": true,
          "faq": false,
          "howto": false
        }
      },
      "topic_authority": {
        "score": 74,
        "status": "good",
        "metrics": {
          "content_depth": 80,
          "topic_coverage": 72,
          "entity_consistency": 85,
          "internal_linking": 65
        }
      },
      "citation_readiness": {
        "score": 65,
        "status": "needs_improvement",
        "metrics": {
          "citation_frequency": 60,
          "citation_accuracy": 75,
          "ai_sov": 55,
          "competitor_gap": -8
        }
      }
    },
    "recommendations": [
      {
        "priority": "high",
        "action": "增强E-E-A-T信号",
        "impact": "提升AI对品牌可信度的评估"
      }
    ],
    "diagnosed_at": "2024-01-15T10:30:00Z"
  }
}
```

#### 综合诊断响应

```json
{
  "success": true,
  "data": {
    "brand_id": "brand_123",
    "diagnosis_type": "combined",
    "seo_score": 78,
    "geo_score": 72,
    "combined_score": 75,
    "seo_summary": {
      "strengths": ["技术SEO基础良好", "用户体验优秀"],
      "weaknesses": ["外链质量需提升", "部分页面Meta描述缺失"]
    },
    "geo_summary": {
      "strengths": ["实体清晰度高", "内容结构化良好"],
      "weaknesses": ["E-E-A-T信号不足", "AI引用率偏低"]
    },
    "priority_actions": [
      {
        "type": "seo",
        "action": "建设高质量外链",
        "expected_impact": "提升域名权威性"
      },
      {
        "type": "geo",
        "action": "添加专家背书和认证",
        "expected_impact": "提升AI引用率"
      }
    ],
    "diagnosed_at": "2024-01-15T10:30:00Z"
  }
}
```

### 后端实现

| 组件 | 文件 | 职责 |
|------|------|------|
| SEO诊断服务 | `backend/app/services/seo_diagnosis.py` | 执行SEO诊断分析 |
| GEO诊断服务 | `backend/app/services/geo_diagnosis.py` | 执行GEO诊断分析 |
| 引用检测Agent | `backend/app/agent_framework/agents/citation_detector.py` | 检测AI平台引用情况 |
| 诊断报告生成 | `backend/app/services/diagnosis_report.py` | 生成诊断报告 |
| 诊断路由 | `backend/app/api/routes/diagnosis.py` | API端点定义 |

### 前端实现

| 页面 | 路径 | 说明 | 状态 |
|------|------|------|------|
| SEO诊断 | `/dashboard/seo-diagnosis` | SEO诊断入口和报告展示 | ✅ 已完成 |
| GEO诊断 | `/dashboard/geo-diagnosis` | GEO诊断入口和报告展示 | ✅ 已完成 |
| 综合诊断 | `/dashboard/diagnosis` | SEO+GEO综合诊断报告 | ✅ 已完成 |

前端实现包括：
- 诊断任务触发和进度展示
- 多维度评分可视化（雷达图、进度条）
- 问题列表和修复建议
- 历史诊断记录对比
- 诊断报告导出功能

---

## 改进建议

### 当前问题

| 问题 | 说明 | 优先级 | 状态 |
|------|------|--------|------|
| 诊断定义不完整 | 仅实现引用检测，缺少完整GEO诊断 | P0 | ✅ 已解决 |
| SEO诊断缺失 | 未实现传统SEO诊断能力 | P1 | ✅ 已解决 |
| 前后端断裂 | 诊断页面是占位页面 | P0 | ✅ 已解决 |

### 改进计划

| 阶段 | 目标 | 时间 | 状态 |
|------|------|------|------|
| Phase 1 | 完善GEO诊断（补充6大维度） | 2周 | ✅ 已完成 |
| Phase 2 | 新增SEO诊断能力 | 2周 | ✅ 已完成 |
| Phase 3 | 整合SEO+GEO诊断报告 | 1周 | ✅ 已完成 |
| Phase 4 | 前端诊断页面实现 | 1周 | ✅ 已完成 |

### 后续优化

| 阶段 | 目标 | 预计时间 |
|------|------|----------|
| Phase 5 | 诊断报告导出（PDF/Excel） | 1周 |
| Phase 6 | 历史诊断趋势分析 | 2周 |
| Phase 7 | 竞品诊断对比功能 | 2周 |
