finding-content-gaps-from-google-serp
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseFinding Content Gaps from Google SERP
从Google SERP寻找内容缺口
Analyzes Google SERP results to identify where existing content is weak, outdated, or missing key information — these are the gaps where new content can rank quickly.
通过分析Google SERP结果,识别现有内容薄弱、过时或缺失关键信息的环节——这些正是新内容可快速获得排名的缺口。
Prerequisites
前提条件
- environment variable set
APIFY_TOKEN - Optional: Apify MCP server installed
- 已设置环境变量
APIFY_TOKEN - 可选:已安装Apify MCP服务器
Inputs
输入参数
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
| array | Optional | | Google search URLs |
| array | Optional | | Keywords to search on Google |
| string | Optional | | Country for Google search (e.g. |
| string | Optional | — | Language for results (e.g. |
| number | Optional | Unlimited | Maximum results to return across all queries |
| integer | Optional | | Maximum result pages per query |
| boolean | Optional | | Fetch mobile SERP layout |
| string | Optional | — | JavaScript function to transform each output object |
| 参数 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| 数组 | 可选 | | Google搜索URL |
| 数组 | 可选 | | 要在Google上搜索的关键词 |
| 字符串 | 可选 | | Google搜索的目标国家(例如 |
| 字符串 | 可选 | — | 搜索结果的语言(例如 |
| 数字 | 可选 | 无限制 | 所有查询返回的最大结果数 |
| 整数 | 可选 | | 每个查询的最大结果页数 |
| 布尔值 | 可选 | | 获取移动端SERP布局 |
| 字符串 | 可选 | — | 用于转换每个输出对象的JavaScript函数 |
Workflow
工作流程
Progress:
- [ ] Step 1: Run google-search-scraper for all keywords
- [ ] Step 2: Analyze SERP result quality signals
- [ ] Step 3: Score content gap opportunity per keyword
- [ ] Step 4: Cluster gaps by theme
- [ ] Step 5: Deliver prioritized content gap report进度:
- [ ] 步骤1:针对所有关键词运行google-search-scraper
- [ ] 步骤2:分析SERP结果质量信号
- [ ] 步骤3:为每个关键词的内容缺口机会打分
- [ ] 步骤4:按主题对缺口进行聚类
- [ ] 步骤5:交付优先级排序的内容缺口报告Step 1: Scrape SERPs
步骤1:爬取SERP
Recommended — run_actor.js (handles waiting, output, and file saving automatically):
bash
undefined推荐方式 — run_actor.js(自动处理等待、输出和文件保存):
bash
undefinedQuick answer (prints table to chat)
快速查看结果(在聊天中打印表格)
node scripts/run_actor.js
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
node scripts/run_actor.js
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
Save as CSV
保存为CSV格式
node scripts/run_actor.js
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
node scripts/run_actor.js
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
Save as JSON
保存为JSON格式
node scripts/run_actor.js
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.json --format json
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.json --format json
> `APIFY_TOKEN` must be set in environment or `.env` file.
**If Apify MCP is available:**Tool: apify:run-actor
Actor: "apidojo~google-search-scraper"
Input:
{
"queries": ["[KEYWORD_1]", "[KEYWORD_2]", "..."],
"maxPagesPerQuery": 1,
"countryCode": "US",
"includePeopleAlsoAsk": true
}
**REST API fallback:**
```bash
curl -X POST "https://api.apify.com/v2/acts/apidojo~google-search-scraper/runs?token=$APIFY_TOKEN" -H "Content-Type: application/json" -d '{"queries": ["[KEYWORD_1]", "[KEYWORD_2]"], "maxPagesPerQuery": 1}'node scripts/run_actor.js
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.json --format json
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.json --format json
> 必须在环境变量或`.env`文件中设置`APIFY_TOKEN`。
**如果Apify MCP可用:**工具: apify:run-actor
Actor: "apidojo~google-search-scraper"
输入:
{
"queries": ["[KEYWORD_1]", "[KEYWORD_2]", "..."],
"maxPagesPerQuery": 1,
"countryCode": "US",
"includePeopleAlsoAsk": true
}
**REST API备选方案:**
```bash
curl -X POST "https://api.apify.com/v2/acts/apidojo~google-search-scraper/runs?token=$APIFY_TOKEN" -H "Content-Type: application/json" -d '{"queries": ["[KEYWORD_1]", "[KEYWORD_2]"], "maxPagesPerQuery": 1}'Step 2: Score SERP Quality
步骤2:为SERP质量打分
For each keyword, assess the top 10 results:
Weakness signals (from title + URL):
stale_content = title or URL contains year < (current_year - 2)
low_authority_domain = not in [known authority list] (e.g. Wikipedia, Forbes, HubSpot, Moz, etc.)
thin_content_signal = page title is vague or generic (no specific angle)
forum_or_QA = result is from Reddit, Quora, AnswerThePublic (not editorial)gap_score = (stale_content_count / 10) * 0.30
+ (low_authority_count / 10) * 0.25
+ (forum_qa_count / 10) * 0.20
+ (no_featured_snippet ? 1 : 0) * 0.25Tier: HIGH OPPORTUNITY (score ≥ 0.60) | MODERATE (0.35–0.59) | LOW (< 0.35)
针对每个关键词,评估前10条搜索结果:
薄弱信号(来自标题+URL):
stale_content = 标题或URL包含的年份 < (当前年份 - 2)
low_authority_domain = 不在已知权威域名列表中(例如Wikipedia、Forbes、HubSpot、Moz等)
thin_content_signal = 页面标题模糊或通用(无特定视角)
forum_or_QA = 结果来自Reddit、Quora、AnswerThePublic(非编辑类内容)gap_score = (stale_content_count / 10) * 0.30
+ (low_authority_count / 10) * 0.25
+ (forum_qa_count / 10) * 0.20
+ (no_featured_snippet ? 1 : 0) * 0.25等级:高机会(得分≥0.60)| 中等机会(0.35–0.59)| 低机会(<0.35)
Step 3: Edge Cases
步骤3:边缘情况
- All top 10 results are from major authorities: Gap score will be low — this is accurate; don't recommend targeting this keyword without a unique angle
- SERP dominated by one domain: Note monopoly; this keyword may be unfairly dominated; consider long-tail variants
- Keyword returns mixed intent (informational + transactional): Separate the analysis — informational content has different gap criteria than product pages
- 前10条结果均来自主流权威域名:缺口得分会很低——这是准确的;若无独特视角,不建议针对该关键词创作内容
- SERP被单一域名主导:需注意垄断情况;该关键词可能被不公平地控制,可考虑长尾变体
- 关键词返回混合意图(信息类+交易类):分开分析——信息类内容的缺口标准与产品页面不同
Output Format
输出格式
undefinedundefinedContent Gap Analysis: [KEYWORD_SET]
内容缺口分析: [KEYWORD_SET]
Keywords analyzed: [N] | High opportunity: [N] | Moderate: [N] | Low: [N] | Date: [DATE]
分析的关键词数量: [N] | 高机会: [N] | 中等机会: [N] | 低机会: [N] | 日期: [DATE]
High-Opportunity Keywords (Best Investment)
高机会关键词(最佳投资方向)
| Keyword | Gap Score | Stale Results | Low Auth | No Snippet | Recommended Angle |
|---|---|---|---|---|---|
| [keyword] | [0.XX] | [N]/10 | [N]/10 | Yes | "[content angle]" |
| 关键词 | 缺口得分 | 过时结果数 | 低权威结果数 | 无特色片段 | 推荐视角 |
|---|---|---|---|---|---|
| [keyword] | [0.XX] | [N]/10 | [N]/10 | 是 | "[内容视角]" |
Content Brief Recommendations
内容 brief 推荐
1. "[Keyword]" (Gap Score: [X])
1. "[Keyword]"(缺口得分: [X])
Current top result: [title] ([year if stale]) from [domain]
Gap: [stale/thin/no snippet/forum-dominated]
Recommended content: [format + angle + target length]
undefined当前顶级结果: [标题](若过时则显示年份)来自[域名]
缺口: [过时/内容单薄/无特色片段/论坛主导]
推荐内容: [格式 + 视角 + 目标篇幅]
undefinedTroubleshooting
故障排除
All gaps score low: Target keywords may be well-served by existing content — pivot to long-tail variations or sub-topics.
Stale content from authority domains still ranks well: Google may not penalize age heavily for that topic; assess based on whether the content actually answers the user's question.
Gap analysis is subjective: The weakness signals are proxies; manually review the top 3 results for your top 5 keywords to validate before committing to content production.
所有缺口得分都很低:目标关键词可能已被现有内容充分覆盖——转向长尾变体或子主题。
权威域名的过时内容仍排名靠前:Google可能不会因内容年限对该主题进行严厉惩罚;需评估内容是否真正回答了用户的问题。
缺口分析存在主观性:薄弱信号只是替代指标;在投入内容创作前,手动查看前5个关键词的前3条结果以验证分析结果。