
Ethan Collins
Pattern Recognition Specialist

Google的AI摘要会引用您所在领域的特定竞争对手——这些引用直接影响用户考虑的品牌。跟踪竞争对手在AI生成的答案中的可见性,可以揭示传统SEO工具无法发现的内容缺口、引用模式和战略机会。本指南介绍了如何使用CapSolver构建自动化竞争对手可见性跟踪系统,以持续访问Google的搜索结果。
当Google为您的行业中的查询生成AI摘要时,它会选择特定的来源进行引用。这些引用并非随机——它们反映了Google对哪些内容最能回答查询的评估。如果您的竞争对手在您目标关键词的AI摘要中持续出现,而您没有,他们正在利用一个每天影响数百万购买决策的渠道获取可见性。
传统SEO工具跟踪自然排名(第1-10位),但AI摘要位于自然结果之上,并遵循不同的规则。竞争对手可能在自然排名中位列第5,但在AI摘要中作为引用第1位出现——从而获得不成比例的可见性和信任信号。Search Engine Land的研究表明,AI摘要在出现的查询中会捕获大量点击率。
监控AI摘要中的竞争对手可见性可以揭示:Google认为哪些竞争对手是您目标查询的权威,哪些内容格式会被引用(列表、定义、比较、数据),哪些查询存在您可以填补的引用缺口,以及引用模式如何随时间变化。
pip install git+https://github.com/capsolver-ai/capsolver-core.git
pip install aiohttp beautifulsoup4 pandas
export CAPSOLVER_API_KEY="your-capsolver-api-key"
其他要求:
import asyncio
import time
from dataclasses import dataclass, field
from typing import List, Optional
from capsolver_core import create_capsolver, CaptchaType, CaptchaInfo
@dataclass
class CompetitorCitation:
domain: str
position: int
query: str
context: str
timestamp: float
@dataclass
class CompetitorVisibilityReport:
competitor: str
total_citations: int
avg_position: float
queries_cited: List[str]
content_types_cited: List[str]
visibility_score: float # 0-100
class CompetitorVisibilityTracker:
"""跟踪Google AI摘要中的竞争对手可见性。"""
def __init__(self, api_key: str, proxies: list, competitors: list):
self.cap = create_capsolver(api_key=api_key)
self.proxies = proxies
self.competitors = competitors
self.citation_history = []
async def track_query(self, query: str) -> List[CompetitorCitation]:
"""跟踪某个查询的AI摘要中出现的竞争对手。"""
proxy = self.proxies[self.proxy_idx % len(self.proxies)]
self.proxy_idx = getattr(self, 'proxy_idx', 0) + 1
html = await self._search_google(query, proxy)
if self._is_captcha(html):
info = CaptchaInfo(
type=CaptchaType.RECAPTCHA_V2,
website_url="https://www.google.com",
website_key="6LfwuyUTAAAAAOAmoS0fdqijC2PbbdH4kjq62Y1b"
)
solution = await self.cap.solve(info)
html = await self._retry_search(query, proxy)
citations = self._extract_ai_overview_citations(html)
# 过滤已跟踪的竞争对手
competitor_citations = []
for citation in citations:
for comp in self.competitors:
if comp in citation.get("domain", ""):
competitor_citations.append(CompetitorCitation(
domain=comp,
position=citation["position"],
query=query,
context=citation.get("context", ""),
timestamp=time.time()
))
self.citation_history.extend(competitor_citations)
return competitor_citations
async def run_full_audit(self, queries: list) -> List[CompetitorVisibilityReport]:
"""对所有目标查询进行可见性审计。"""
for query in queries:
await self.track_query(query)
await asyncio.sleep(8)
# 生成每个竞争对手的报告
reports = []
for comp in self.competitors:
comp_citations = [c for c in self.citation_history if c.domain == comp]
if comp_citations:
reports.append(CompetitorVisibilityReport(
competitor=comp,
total_citations=len(comp_citations),
avg_position=sum(c.position for c in comp_citations) / len(comp_citations),
queries_cited=list(set(c.query for c in comp_citations)),
content_types_cited=self._analyze_content_types(comp_citations),
visibility_score=self._calc_visibility_score(comp_citations, len(queries))
))
return sorted(reports, key=lambda r: r.visibility_score, reverse=True)
def _calc_visibility_score(self, citations: list, total_queries: int) -> float:
"""根据引用频率和位置计算可见性分数(0-100)。"""
if not citations or total_queries == 0:
return 0
frequency_score = (len(citations) / total_queries) * 50
position_score = sum(max(0, 10 - c.position) for c in citations) / len(citations) * 5
return min(100, frequency_score + position_score)
async def close(self):
await self.cap.aclose()
| 洞察 | 需要关注的内容 | 行动 |
|---|---|---|
| 引用领导者 | 可见性分数超过50%的竞争对手 | 分析他们的内容格式和深度 |
| 位置主导 | 始终位于第1-2位的竞争对手 | 研究他们的权威信号和内容结构 |
| 查询缺口 | 没有竞争对手被引用的查询 | 为这些查询创建权威内容 |
| 格式模式 | 列表、表格或定义是否被引用 | 在您的内容中匹配获胜格式 |
| 新兴竞争对手 | 开始出现在引用中的新域名 | 早期监控他们的内容策略 |
async def weekly_competitive_report(tracker, queries):
"""生成每周竞争情报报告。"""
reports = await tracker.run_full_audit(queries)
print("=== AI摘要竞争可见性报告 ===\n")
print(f"分析的查询数量: {len(queries)}")
print(f"跟踪的竞争对手数量: {len(tracker.competitors)}\n")
for i, report in enumerate(reports, 1):
print(f"{i}. {report.competitor}")
print(f" 可见性分数: {report.visibility_score:.1f}/100")
print(f" 引用次数: {report.total_citations} 涉及 {len(report.queries_cited)} 个查询")
print(f" 平均位置: {report.avg_position:.1f}")
print(f" 主要查询: {', '.join(report.queries_cited[:3])}")
print()
| 监控范围 | 每周查询量 | 每月CAPTCHAs | 每月成本 |
|---|---|---|---|
| 50个查询,5个竞争对手 | 200/月 | ~60 | $0.12-0.18 |
| 200个查询,10个竞争对手 | 800/月 | ~240 | $0.48-0.72 |
| 500个查询,15个竞争对手 | 2,000/月 | ~600 | $1.20-1.80 |
领取您的优惠码:在CapSolver仪表盘使用代码WEBS,每次充值可额外获得5%的奖励。
CapSolver reCAPTCHA指南涵盖了Google的具体实现。CapSolver AI博客提供了额外的GEO监控模式。了解CAPTCHA类型,请参阅CapSolver常见问题。
AI摘要中的竞争对手可见性跟踪揭示了Google认为哪些品牌是您目标查询的权威。CapSolver提供了清除验证的基础设施,使您可以持续监控竞争对手的引用,3-8秒内解决Google的reCAPTCHA。竞争情报数据直接指导GEO策略——明确告诉您应该创建哪些内容、使用哪些格式以及哪些查询代表最高价值的机会。
可见性分数高于30%意味着竞争对手在近三分之一的目标查询中出现——这是显著的存在。分数高于50%表示主导性可见性。大多数领域有2-3个竞争对手分数较高,许多竞争对手分数低于10%。
引用可能每天变化,具体取决于内容的新鲜度、权威信号和Google的模型更新。每周跟踪可以捕捉主要变化;每日跟踪可以捕捉内容活动或算法更新期间的快速变化。
可以。将您的域名添加到竞争对手列表中。将您的可见性分数与竞争对手进行比较,以识别差距并衡量您的GEO优化努力的成效。