做 GEO(Generative Engine Optimization)最头疼的问题不是怎么优化,而是怎么证明优化有效果。
传统 SEO 有 Google Search Console、Ahrefs 这些成熟工具,排名变化一目了然。但 AI 搜索没有统一的排名机制——ChatGPT、Perplexity、Gemini 每次回答都可能不一样,你怎么度量?
我花了半个月时间在自己的 SaaS 产品上做 GEO 优化实验,总结了一套可量化的度量方案。
核心问题:AI 搜索的"排名"是什么?
传统搜索引擎有明确的排名位置(#1、#2、#3),AI 搜索引擎的输出是自然语言段落。所以我们需要重新定义度量指标:
1. 品牌提及率(Brand Mention Rate)
最直观的指标:在同一类查询中,AI 多大概率会提到你的品牌?
interface MentionMetrics {
totalQueries: number; // 总查询数
mentionedCount: number; // 品牌被提及次数
mentionRate: number; // 提及率 = mentioned / total
avgPosition: number; // 平均出现位置(段落序号)
citationCount: number; // 带引用链接的次数
}
度量方法:设计 30-50 个目标用户可能搜索的 Prompt,每天跑一次,统计品牌出现频率。
const prompts = [
"推荐几个 AI 代码审查工具",
"2026年最好的代码质量检测方案",
"有什么工具能发现 AI 生成代码的问题",
"SaaS 产品的 SEO 怎么做",
// ... 更多变体
];
async function measureMentionRate(
brand: string,
prompts: string[],
engines: string[]
): Promise<MentionMetrics> {
let totalQueries = 0;
let mentionedCount = 0;
let positionSum = 0;
let citationCount = 0;
for (const prompt of prompts) {
for (const engine of engines) {
const response = await queryEngine(engine, prompt);
totalQueries++;
if (response.text.toLowerCase().includes(brand.toLowerCase())) {
mentionedCount++;
positionSum += findMentionPosition(response.text, brand);
}
if (response.citations?.some(c => c.includes(brand))) {
citationCount++;
}
}
}
return {
totalQueries,
mentionedCount,
mentionRate: mentionedCount / totalQueries,
avgPosition: mentionedCount > 0 ? positionSum / mentionedCount : -1,
citationCount,
};
}
2. 竞品对比指数(Competitive Share of Voice)
只看自己不够,还要和竞品比。类似传统 SEO 的 Share of Voice:
interface CompetitiveSOV {
brand: string;
mentionRate: number;
avgPosition: number;
sentimentScore: number; // -1 到 1,AI 提到时的情感倾向
}
// 示例输出
const results: CompetitiveSOV[] = [
{ brand: "GEO Boost", mentionRate: 0.34, avgPosition: 2.1, sentimentScore: 0.72 },
{ brand: "CompetitorA", mentionRate: 0.52, avgPosition: 1.3, sentimentScore: 0.65 },
{ brand: "CompetitorB", mentionRate: 0.28, avgPosition: 3.4, sentimentScore: 0.58 },
];
这个数据告诉你:竞品 A 在 52% 的查询中被提及且平均排第 1 位,你需要追赶的差距是多少。
3. 流量归因(Traffic Attribution)
GEO 优化最终要回到业务数据。问题是:AI 搜索带来的流量怎么追踪?
用户从 ChatGPT/Perplexity 点击链接到你的网站,Referrer 可能是:
chat.openai.comperplexity.aigemini.google.com- 空 Referrer(部分场景)
// 在你的 Analytics 中标记 AI 搜索来源
const AI_SEARCH_REFERRERS = [
'chat.openai.com',
'chatgpt.com',
'perplexity.ai',
'gemini.google.com',
'copilot.microsoft.com',
'you.com',
'phind.com',
];
function isAISearchTraffic(referrer: string): boolean {
return AI_SEARCH_REFERRERS.some(r => referrer.includes(r));
}
// UTM 方案:在被 AI 引用的页面加特殊标记
// 如果 AI 引用了你的 /pricing 页面,用户点进来后
// 通过 landing page + referrer 组合判断
function trackAISearchConversion(session: UserSession) {
if (isAISearchTraffic(session.referrer)) {
analytics.track('ai_search_visit', {
engine: extractEngine(session.referrer),
landingPage: session.landingPage,
convertedToTrial: session.events.includes('signup'),
convertedToPaid: session.events.includes('purchase'),
});
}
}
我的度量实践:半个月的数据
以下是我在自己产品上的实测数据(2026 年 3 月 8 日 - 3 月 22 日):
品牌提及率变化
| 时间段 | ChatGPT | Perplexity | Gemini | 平均 |
|---|---|---|---|---|
| 优化前(W1) | 8% | 12% | 5% | 8.3% |
| 优化后(W2) | 18% | 28% | 11% | 19% |
| 增长 | +125% | +133% | +120% | +129% |
关键发现
- Perplexity 最敏感:新内容发布后 2-3 天就能看到提及率变化,ChatGPT 需要 1-2 周
- 结构化数据有效:添加 Schema Markup 后,带引用链接的提及从 3% 涨到 15%
- 长尾 Prompt 比通用 Prompt 效果好:在"推荐 XX 工具"这类通用查询中很难排上去,但在"如何解决 AI 代码审查中的幻觉包问题"这种长尾场景,提及率可以到 40%+
ROI 计算
GEO 优化投入:
- 内容创建:约 20 小时(包含技术文章、文档优化)
- 监控系统搭建:约 8 小时
- API 调用成本:约 $15/月(用于定期查询 AI 引擎)
产出(半个月数据):
- AI 搜索来源访问量:+340 visits
- 注册转化:+23 signups
- 付费转化:+4 customers
- 新增 MRR:$196
ROI = ($196 - $15) / (28h * $50/h + $15) ≈ 12.7%(首月)
第一个月 ROI 不高,但这是一次性投入 + 持续收益的模式。内容和结构化数据一旦就位,后续只需维护监控成本。
自动化度量管道
手动跑查询太累,我搭了一个自动化 pipeline:
// 每日定时任务
async function dailyGEOAudit() {
const engines = ['chatgpt', 'perplexity', 'gemini'];
const prompts = await loadPromptSuite('./prompts/geo-audit.json');
const results = await measureMentionRate('GEO Boost', prompts, engines);
// 存储历史数据
await saveMetrics(results, new Date());
// 生成趋势报告
const trend = await generateTrendReport(7); // 最近 7 天
// 告警:如果提及率下降超过 20%
if (trend.mentionRateDelta < -0.2) {
await sendAlert(`⚠️ Brand mention rate dropped ${trend.mentionRateDelta}%`);
}
return trend;
}
完整的监控系统我之前写过一篇文章介绍(我用 Node.js 搭了一套 GEO 监控系统),这里不赘述。
几个踩坑经验
坑 1:样本量不够导致数据波动大
刚开始我只用了 10 个 Prompt,每天的提及率从 0% 到 30% 来回跳。后来扩展到 50 个 Prompt + 每个跑 3 次,数据才稳定下来。
建议:至少 30 个 Prompt × 3 次重复 × 3 个引擎 = 270 次查询/天。API 成本约 $0.5/天。
坑 2:Prompt 设计有偏差
如果你的 Prompt 都是"推荐最好的 XX 工具",你只度量了推荐型场景。实际用户可能搜索"怎么解决 XX 问题"、"XX 和 YY 哪个好"、"XX 的替代方案"等。
建议:按用户意图分类设计 Prompt:
- 推荐型(30%):推荐几个...
- 问题型(30%):怎么解决...
- 对比型(20%):A 和 B 哪个好...
- 教程型(20%):如何实现...
坑 3:忽略了负面提及
AI 有时候会提到你的品牌,但说的是缺点。这种"负面提及"不应该算作有效提及。
async function analyzeSentiment(text: string, brand: string): Promise<number> {
const context = extractBrandContext(text, brand, 200); // 品牌前后 200 字
const sentiment = await llm.analyze(`Rate the sentiment of this mention: ${context}`);
return sentiment.score; // -1 to 1
}
总结
GEO 度量的核心框架:
- 品牌提及率 — 你被 AI 推荐的概率(最核心指标)
- 竞品 SOV — 你在市场中的相对位置
- 流量归因 — AI 搜索实际带来的业务价值
- ROI 计算 — 投入产出比,指导资源分配
工具层面,我把度量逻辑集成到了 GEO Boost 里,支持定时监控 + 自动报告 + 竞品对比。如果你也在做 GEO 优化,可以参考这个度量框架,或者直接用工具省去自建监控的时间。
这是我 GEO 优化系列的第 8 篇。前面几篇从入门、实战、监控到 AI Agent 可见性,这篇补上了度量环节。有问题欢迎评论区讨论。