如何使用实时 SERP 数据自动化内容差距分析
Advanced Data Extraction Specialist
TL;DR:
- 自动化内容差距分析从你已经拥有的查询开始。 搜索控制台导出显示了现有页面可见但未满足意图的地方。
- 实时SERP是比较集。 在提取任何页面之前,捕获结果类型、排名URL、标题和摘要。
- 竞争页面是结构证据,而不是复制来源。 比较标题、主题实体、问题和内容格式,而不重用文字或图表。
- 差距矩阵需要来源。 每个缺失的主题应指向产生它的查询、结果URL、页面标题和收集时间。
- 内容简报是最终的数据产品。 优先级、推荐格式、所需部分、常见问题候选者和验证说明使分析具有可操作性。
- 免费开始。 新的Scrapeless账户包括测试搜索和页面获取阶段的免费运行时。
内容差距分析在搜索结果或竞争页面变化后会迅速过时。一次组装的电子表格仍然可以指导编辑,但无法显示证据上周是否发生变化,或排名URL现在是否服务于不同的页面。
自动化工作流程通过将分析视为一个小型数据管道来解决这个问题。它从第一方查询数据开始,捕获当前搜索环境,提取定义意图的页面,规范化结构信号,并将这些信号转化为编辑可以审阅的简报。
Pipeline at a Glance
自动化内容差距分析有六个阶段:
| 阶段 | 输入 | 输出 | 主要验证 |
|---|---|---|---|
| 1. 选择 | 搜索控制台查询页面行 | 候选关键字 | 查询映射到正确的拥有页面 |
| 2. 搜索 | 候选关键字和地区 | 实时结果集 | 结果类型和最终URL存在 |
| 3. 获取 | 排名URL | HTML或Markdown | 页面身份和所需内容匹配 |
| 4. 规范化 | 页面标题和文本 | 可比较的主题记录 | 删除重复和模板标题 |
| 5. 评分 | 拥有页面和SERP记录 | 差距矩阵 | 每个缺口保留证据 |
| 6. 简报 | 优先差距 | 编辑简报 | 推荐与搜索意图匹配 |
该工作流程使用 Deep SerpApi 处理结构化搜索结果,以及 Universal Scraping API 用于需要管理获取的公共排名页面。这些API解决不同的工作,因此在模式中保持输出分开。
Stage 1 — Choose Keywords From First-Party Data
最佳的起始查询已经与你的网站有关系。搜索控制台行可以揭示一个为某个查询获得展示,但点击率较低的页面,一个针对多个相邻意图排名的页面,或一个表现下降的主题。
搜索分析查询方法 返回分组的搜索表现数据。只导出优先级所需的字段,并将源页面保存在每个查询旁边。
一个有用的候选记录包含:
queryowned_urlcountrydeviceclicksimpressionsposition- 用于导出的报告窗口
不要仅通过一个指标对候选者进行排名。一个高曝光的术语可能与页面无关,而一个较小的术语可以代表一个有价值的商业或技术决策。在管道在查询上花费请求之前,添加手动意图适配检查。
Stage 2 — Capture the Live SERP
实时SERP定义了搜索引擎当前认为相关的内容。记录有机结果、回答模块、视频或图像密集的布局,以及作为独立结果类型的重复域名。
注意:下面的认证请求需要一个读者拥有的
SCRAPELESS_API_KEY。请求的形状和行为者是根据当前的Deep SerpApi文档确认的;此环境未执行被凭证限制的调用。
python
import os
import requests
response = requests.post(
"https://api.scrapeless.com/api/v1/scraper/request",
headers={"x-api-token": os.environ["SCRAPELESS_API_KEY"]},
json={
"actor": "scraper.google.search",
"input": {
"q": "content gap analysis",
"gl": "us",
"hl": "en",
"google_domain": "google.com"
}
},
timeout=60
)
response.raise_for_status()
if response.status_code != 200:
raise RuntimeError("The task did not return a direct result")
serp = response.json()
在转换之前保存原始响应。Deep SerpApi返回结构化搜索数据,但管道仍应保留原始有效载荷,以便审阅者可以稍后检查任何解析器假设。
对于每个有机结果,保持排名、标题、URL、摘要、结果类型、查询、地区和收集时间。搜索层不应决定某个标题是否缺失;它仅提供页面获取的候选者。
Stage 3 — Acquire Ranking Pages Without Losing Identity
单靠排名URL并不足够。获取阶段必须确认最终URL、页面标题和主内容描述了在第2阶段中选择的结果。
HTTP状态只是检查的一部分。HTTP语义规范 定义了响应状态和表示元数据,但成功的响应仍然可以包含同意屏幕、通用索引或挑战页面。
当直接HTTP未返回所需的公共内容时,请使用环球抓取API。当前的JavaScript渲染方式接受 unlocker.webunlocker 作为目标URL和响应类型(如HTML或Markdown)。
注意:此获取模块还需要
SCRAPELESS_API_KEY;这是一项有文档记录的前提条件,而不是声称的实时结果。
python
page = requests.post(
"https://api.scrapeless.com/api/v2/unlocker/request",
headers={"x-api-token": os.environ["SCRAPELESS_API_KEY"]},
json={
"actor": "unlocker.webunlocker",
"proxy": {"country": "ANY"},
"input": {
"url": "https://example.com/ranking-page",
"jsRender": {
"enabled": True,
"response": {"type": "markdown"}
}
}
},
timeout=60
)
page.raise_for_status()
payload = page.json()
if payload.get("code") != 200:
raise RuntimeError("The page response was not accepted")
markdown = payload["data"]
遵循 机器人排除协议、网站条款和适用法律。内容差距分析需要公共编辑结构,而不是私人页面、仅限帐户的内容或个人记录。
使用Scrapeless开始爬取
使用Scrapeless提升您的网站抓取和自动化工作流程!
今天注册并获得 5美元的免费信用 — 无需信用卡。立即在 Scrapeless仪表板 领取您的免费信用。
阶段4 — 规范标题、主题和问题
规范化是将不同标记的页面转换为可比记录。提取标题、H1、H2和H3文本、可见问题标题、内容类型以及一小组主题短语。删除导航标签、重复的页脚文本和空标题。
模式应保持无趣且明确:
json
{
"query": "content gap analysis",
"ownedUrl": "https://example.com/owned-page",
"resultUrl": "https://example.org/ranking-page",
"resultType": "organic",
"rank": 3,
"contentType": "tutorial",
"headings": ["What a content gap is", "Build a gap matrix"],
"questions": ["How often should the analysis run?"],
"topics": ["search intent", "page structure", "content brief"],
"collectedAt": "illustrative timestamp"
}
这是一个示意记录格式。生产值来自保存的搜索响应和获取的页面,而不是生成的散文。
阶段5 — 建构差距矩阵
差距矩阵比较信号,而不是句子。当拥有的页面解决了相同读者需求时,主题算作被覆盖,即使它使用不同的措辞。
对每个候选项目进行评分:
- SERP出现率: 有多少个独立排名页面覆盖该主题;
- 意图契合度: 该主题是否属于拥有的页面;
- 拥有的覆盖度: 缺失、薄弱、过时或已经足够;
- 证据质量: 标题级别的证据强于过于简单的短语;
- 商业价值: 本部分帮助读者完成的决定或任务。
这个确定性的示例按照规范化的主题集对差距进行排名:
python
from collections import Counter
owned_topics = {"definition", "keyword gaps"}
ranking_pages = [
{"search intent", "keyword gaps", "content brief"},
{"search intent", "topic gaps", "content brief"},
{"search intent", "content brief", "faq questions"},
]
frequency = Counter(topic for page in ranking_pages for topic in page)
gaps = [
{"topic": topic, "pageCount": count, "priority": "high" if count >= 2 else "review"}
for topic, count in frequency.most_common()
if topic not in owned_topics
]
print(gaps)
输出是可重复的,因为它将收集的证据与编辑判断分开。审查者可以更改意图契合度或商业价值的决定,而无需重新运行搜索和获取。
阶段6 — 生成可审核的内容简报
简报应说明需要更改的内容及原因。一个有用的输出包括:
- 推荐的内容类型和读者工作;
- 现有部分需要保留、合并或扩展;
- 按优先级排序的缺失主题;
- 需要直接回答的常见问题;
- 供内部审核的证据网址;
- 需要主要权威来源的声明验证笔记;
- 明确指示不得复制竞争对手措辞、示例或数字的说明。
该页面还可以公开与 文章词汇 对应的文章元数据,但结构化数据并不能替代有用的部分或经过验证的声明。
围绕决策安排工作流程
当证据能够改变决策时运行工作流程:在重大刷新之前、在有意义的排名变化之后,或在高价值页面的计划中。不要在没有编辑消费者的情况下连续爬取相同的SERP和页面。
将原始响应与规范化记录分开存储。对差距矩阵和简报进行版本控制,然后比较每次运行,以便编辑者看到哪些主题出现、消失或更改了优先级。
结论
自动内容差距分析是一个六阶段证据流程:选择查询、捕获实时SERP、获取排名页面、规范化结构、评分差距并生成可审核的简报。困难的部分并不是生成更多的想法,而是在将变化的网络证据转化为编辑决策时保持来源的真实性。
使用Deep SerpApi进行搜索结构,使用环球抓取API进行页面获取,并使用确定性的矩阵进行比较。将最终内容决定留给编辑。
构建一个可重复的SEO研究工作流程
查看如何通过 竞争定价管道 在不同阶段保留证据,比较 当前定价,并创建一个 Scrapeless 账户。加入在 Discord 或 Telegram 上构建公共网络数据工作流的开发者团队。
常见问题解答
问:什么是内容差距分析?
内容差距分析识别出观众需要但现有内容集未能很好覆盖的主题、问题或意图。
问:首先应该自动化什么?
首先自动化可重复的收集和标准化;保持意图契合、商业价值和最终编辑决策可由人员审阅。
问:管道应该从排名页面复制标题吗?
不应该。排名页面提供有关读者需求反复出现的结构性证据,而不是可复制的语言。
问:为什么要将搜索数据与页面提取结合?
搜索数据识别当前结果集定义的页面,而页面提取揭示这些页面实际覆盖的主题和问题。
问:内容差距分析应该多久运行一次?
当更新的证据可能影响刷新或发布决策时运行,根据页面的商业价值和 SERP 波动性匹配节奏。
问:自动化竞争内容分析合法吗?
使用公开可用的页面,遵守访问控制和适用网站条款,最小化收集,并为相关司法管辖区和用例获取法律建议。
在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。




