No description
  • Python 73.3%
  • HTML 26.7%
Find a file
2026-05-14 22:42:10 +08:00
.claude 功能P1,P2实装 2026-05-14 22:39:05 +08:00
.forgejo/workflows Initialize track repository 2026-05-01 15:09:40 +08:00
docs/plans docs: add GEO Monitor Wave 1 implementation plan 2026-05-13 01:42:39 +08:00
geo-monitor 功能P1,P2实装 2026-05-14 22:39:05 +08:00
.gitignore 功能P1,P2实装 2026-05-14 22:39:05 +08:00
CLAUDE.md feat: GEO Monitor Wave 1 prototype — full end-to-end pipeline 2026-05-13 10:25:48 +08:00
CONTRIBUTING.md Initialize track repository 2026-05-01 15:09:40 +08:00
README.md Fix 幻觉 2026-05-14 22:42:10 +08:00
SPECs.md 功能P1,P2实装 2026-05-14 22:39:05 +08:00
submissions.json Initialize track repository 2026-05-01 15:09:40 +08:00
SUBMISSIONS.md Initialize track repository 2026-05-01 15:09:40 +08:00
test.md 功能P1,P2实装 2026-05-14 22:39:05 +08:00

GEO Monitor — 生成式搜索优化监控系统

面向 ChatGPT / Google AI Overviews / Perplexity 的监控与评估平台,追踪品牌/产品在生成式答案中的可见度、推荐倾向、引用来源与风险,形成"发现 → 分析 → 优化 → 复测"闭环。

功能特性

  • 多平台采集 — Mock / ChatGPT / Perplexity / Google AI Overviews / 自定义 LLM 通道
  • AI 评估 — 通过 LLM 对答案进行结构化评估:提及、推荐、情感、事实一致性、风险
  • 关键词-查询关联 — 自动检测关键词与查询的关联,按查询展示 Mention Rate / Recommend Rate
  • LLM 查询生成 — 基于关键词自动生成评估用查询(支持选择意图类型和生成数量)
  • 语义提及检测 — 通过 LLM 检测关键词提及(含语义指代,如"这款产品"指代品牌名)
  • Dashboard 可视化 — 趋势图、风险告警、查询分析、按查询展开关键词详情
  • 关键词管理 — 增删改查、批量导入、类型筛选
  • 定时调度 — APScheduler 支持 cron 定时跑批
  • 告警通知 — P0/P1 风险自动检测 + Webhook 通知
  • 自定义 LLM — 支持任意 OpenAI 兼容 APIOllama、DeepSeek、自建节点等

快速开始

1. 安装

cd geo-monitor
pip install -e ".[dev]"

2. 配置

cp .env.example .env
# 编辑 .env 填入 LLM API Key 和自定义 API 地址

3. 初始化 & 运行

# 初始化数据库并加载示例数据
geo-monitor init

# 启动 API 服务 + Dashboard
geo-monitor serve --reload --port 8000

访问 http://localhost:8000/ 打开 Dashboard。

4. CLI 命令

geo-monitor init                          # 初始化 DB + 加载示例配置
geo-monitor keywords list                 # 查看关键词
geo-monitor keywords load -f keywords.yaml  # 从 YAML 加载关键词
geo-monitor queries list                  # 查看查询
geo-monitor queries load -f queries.yaml  # 从 YAML 加载查询
geo-monitor run -p mock -o report.md      # 跑一轮采集+评估+生成报告
geo-monitor serve --reload --port 8000    # 启动 API 服务

配置项

.env 文件或环境变量中设置(前缀 GEO_

变量 说明 默认值
GEO_LLM_API_KEY LLM API Key评估和查询生成必需 空(使用 Mock
GEO_LLM_API_BASE 自定义 API 地址 OpenAI 默认)
GEO_LLM_MODEL 模型名称 gpt-4o-mini
GEO_SCHEDULER_CRON 定时调度 cron 表达式 0 */6 * * *
GEO_SCHEDULER_PLATFORMS 定时调度平台(逗号分隔) mock
GEO_ALERT_WEBHOOK_URL 告警 Webhook URL 空(禁用)

自定义 LLM 示例:

# Ollama
GEO_LLM_API_BASE=http://localhost:11434
GEO_LLM_MODEL=ollama/llama3

# DeepSeek
GEO_LLM_API_BASE=https://api.deepseek.com
GEO_LLM_MODEL=deepseek/deepseek-chat

# 自建 OpenAI 兼容节点
GEO_LLM_API_BASE=https://your-node.com/v1
GEO_LLM_MODEL=gpt-4o-mini

API 端点

方法 路径 说明
GET /api/dashboard Dashboard 概览数据
GET /api/trends?days=30 趋势数据(按平台/日期)
GET /api/alerts?days=7 风险告警列表
GET /api/keywords 关键词列表(含关联查询数)
POST /api/keywords 新增关键词
PUT /api/keywords/{id} 编辑关键词
DELETE /api/keywords/{id} 删除关键词
GET /api/keywords/{id}/queries 关键词关联的查询
GET /api/queries 查询列表(含 mention/recommend rate + 关联关键词)
POST /api/queries 新增查询
DELETE /api/queries/{id} 删除查询
GET /api/queries/{id}/details 查询详情(关键词关联统计)
POST /api/queries/generate AI 生成查询(预览)
POST /api/queries/generate-and-save AI 生成并保存查询
POST /api/detect-mentions LLM 语义提及检测
GET /api/runs 采集运行历史
GET /api/runs/{id}/results 运行结果(含 keyword_mentions
POST /api/runs/trigger 触发新运行
GET /api/settings 查看 LLM 配置
PUT /api/settings 保存 LLM 配置

完整 API 文档:启动服务后访问 http://localhost:8000/docs

项目结构

geo-monitor/
├── app/
│   ├── main.py              # FastAPI 应用 + 27 个 API 端点
│   ├── cli.py               # Typer CLIinit/serve/run/keywords/queries
│   ├── config.py            # Pydantic Settings环境变量配置
│   ├── db.py                # SQLAlchemy 异步连接
│   ├── models.py            # 数据模型Keyword/Query/CollectionRun/RawAnswer/EvaluationResult/KeywordMention
│   ├── schemas.py           # Pydantic 输入/输出 schema
│   ├── services.py          # 核心服务(采集执行/查询生成/提及检测)
│   ├── loader.py            # YAML 配置加载
│   ├── reports.py           # Markdown 报告生成
│   ├── scheduler.py         # APScheduler 定时调度
│   ├── alerts.py            # 告警通知Webhook
│   ├── collectors/          # 平台采集器
│   │   ├── base.py          # 抽象基类
│   │   ├── mock.py          # Mock 采集器
│   │   ├── chatgpt.py       # ChatGPT / 自定义 LLM 采集器
│   │   ├── perplexity.py    # Perplexity 采集器
│   │   └── google_aio.py   # Google AI Overviews 采集器
│   ├── evaluators/          # AI 评估器
│   │   ├── llm_evaluator.py # LiteLLM 多模型评估
│   │   └── mock_evaluator.py# 规则引擎 Mock 评估
│   └── static/
│       └── index.html       # Dashboard 前端(单文件 SPA
├── config/
│   ├── keywords.yaml        # 示例关键词库
│   └── queries.yaml         # 示例问题集
├── tests/                   # 测试套件
├── pyproject.toml
└── .env.example             # 配置模板

技术栈

  • 后端: Python 3.11+, FastAPI, SQLAlchemy (async), Typer, LiteLLM
  • 前端: 原生 HTML/CSS/JS + Chart.js
  • 数据库: SQLite (aiosqlite)
  • 调度: APScheduler
  • LLM: 支持 OpenAI / Ollama / DeepSeek / 任意 OpenAI 兼容 API

备注

  • 本项目中的 GEO 指「生成式搜索优化Generative Engine Optimization不是地理空间相关含义