mcpField
S
serp-analyzer

serp-analyzer

github.com/openclaudia营销与增长722442 次安装1 周前更新
代码仓库

关于 serp-analyzer

serp-analyzer 是面向 SEO 研究人员和内容作者的技能,可分析目标关键词的 Google 搜索结果,并据此生成内容简报。它结合网页搜索与可选 SEO 数据 API,梳理搜索结果特征、竞争页面和内容缺口。

主要功能

  1. 01梳理 Google 搜索结果特征
  2. 02分析排名靠前的页面
  3. 03归纳内容模式与缺口
  4. 04评估竞争对手定位
  5. 05生成可执行的内容简报

适用场景

  1. 01围绕目标关键词规划文章
  2. 02查找尚未回答的搜索问题
  3. 03比较竞争页面及其内容形式

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/openclaudia/openclaudia-skills --skill serp-analyzer

安装后在 Claude Code 中输入/serp-analyzer确认已加载。

详细介绍

SERP 分析 Skill

你是一名 SERP 分析专家。给定一个目标关键词,分析当前在 Google 中排名靠前的内容,找出内容模式,并生成可用于超越竞争对手的行动指南。

先决条件

可选的 API 密钥,用于获取增强数据(此 Skill 无需这些密钥也能通过网络搜索正常运行):

  • SEMRUSH_API_KEY - 用于获取关键词和自然搜索结果数据
  • SERPAPI_API_KEY - 用于获取实时 Google SERP 数据,包括 SERP 功能
  • DATAFORSEO_LOGIN 和 DATAFORSEO_PASSWORD - 用于获取高级 SERP 数据
  • SERPINGAPI_API_KEY - 用于获取实时 Google SERP 数据(提供免费套餐)

分析流程

步骤 1:收集 SERP 数据

使用多个数据源,全面了解 SERP:

方法 A:SemRush API(如果可用)

# Get organic results for keyword
https://api.semrush.com/?type=phrase_organic&key={KEY}&phrase={keyword}&database=us&export_columns=Dn,Ur,Fk,Fp&display_limit=20

列:Dn=域名,Ur=URL,Fk=SERP 功能,Fp=排名

方法 B:网页搜索(务必执行) 使用 WebSearch 工具搜索确切的关键词。这能提供实时 SERP 数据。

方法 C:抓取排名靠前的结果 使用 WebFetch 抓取排名前 5–10 位的 URL,分析实际内容。

方法 D:SerpAPI(如果有 SERPAPI_API_KEY)

包含结构化 SERP 功能的实时 Google SERP 数据:

# Real-time Google SERP data via SerpAPI
curl -s "https://serpapi.com/search.json?q={keyword}&api_key=${SERPAPI_API_KEY}&num=20&gl=us&hl=en"

JSON 响应包含:

  • organic_results - 自然搜索结果数组,包含 position、title、link、snippet、displayed_link
  • related_questions - “People Also Ask”问题,包含 question、snippet、title、link
  • knowledge_graph - 知识面板数据,包含 title、description、entity_type 和属性
  • shopping_results - 产品列表(如有),包含 title、price、link、source
  • local_results - 本地 Pack 列表(如有),包含 title、address、rating、reviews
  • inline_images - 图片 Pack 结果
  • answer_box - 精选摘要内容,包含 type(段落、列表、表格)、snippet、title
  • related_searches - 相关搜索查询

解析示例:

# Extract organic results
curl -s "https://serpapi.com/search.json?q={keyword}&api_key=${SERPAPI_API_KEY}&num=20&gl=us&hl=en" | \
  jq '.organic_results[] | {position, title, link, snippet}'

# Extract People Also Ask questions
curl -s "https://serpapi.com/search.json?q={keyword}&api_key=${SERPAPI_API_KEY}&num=20&gl=us&hl=en" | \
  jq '.related_questions[] | {question, snippet}'

# Check for knowledge graph
curl -s "https://serpapi.com/search.json?q={keyword}&api_key=${SERPAPI_API_KEY}&num=20&gl=us&hl=en" | \
  jq '.knowledge_graph | {title, description, entity_type}'

SerpAPI 特别适用于步骤 2 中的 SERP 功能映射,因为它会为每种功能类型返回结构化数据。

方法 E:DataForSEO(如果有 DATAFORSEO_LOGIN 和 DATAFORSEO_PASSWORD)

包含详细项目类型和排名指标的高级 SERP 数据:

# DataForSEO SERP API
curl -s -X POST "https://api.dataforseo.com/v3/serp/google/organic/live/advanced" \
  -H "Authorization: Basic $(echo -n '${DATAFORSEO_LOGIN}:${DATAFORSEO_PASSWORD}' | base64)" \
  -H "Content-Type: application/json" \
  -d '[{"keyword": "{keyword}", "location_code": 2840, "language_code": "en"}]'

响应提供:

  • result[0].items - 所有 SERP 项目的数组,每项都包含 type 字段:
    • "organic" - 标准自然搜索结果,包含 url、title、description、rank_group、rank_absolute
    • "featured_snippet" - 精选摘要,包含 description、url、type(段落/列表/表格)
    • "people_also_ask" - PAA 问题,包含 items[].title(问题)
    • "knowledge_graph" - 知识面板数据
    • "local_pack" - 本地结果
    • "shopping" - 购物结果
    • "video" - 视频轮播项目
    • "images" - 图片 Pack
    • "related_searches" - 相关搜索建议
  • result[0].item_types - 列出存在的 SERP 功能类型的数组(可用于步骤 2 的功能映射)
  • result[0].se_results_count - 搜索结果总数

位置代码:2840 = 美国,2826 = 英国,2124 = 加拿大,2036 = 澳大利亚。更改 location_code 可进行地理定位分析。

方法 F:Serping API(如果有 SERPINGAPI_API_KEY)

通过单一端点获取实时 Google SERP 数据,返回 Serper 风格的 JSON。在 https://serpingapi.com 获取密钥(提供免费套餐),并设置 SERPINGAPI_API_KEY。

# Real-time Google SERP data via Serping API (POST, JSON body)
curl -s -X POST "https://api.serpingapi.com/v1/search" \
  -H "X-API-Key: ${SERPINGAPI_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{"q": "{keyword}", "gl": "us", "hl": "en", "num": 20}'

JSON 响应包含以下内容(仅当 Google 返回相应内容时才会出现):

  • organic - 自然搜索结果数组,包含 position、title、link、snippet(有时还包含 sitelinks、date、rating)
  • peopleAlsoAsk - “People Also Ask”问题,包含 question、snippet、title、link
  • answerBox - 精选摘要/直接答案
  • knowledgeGraph - 知识面板数据,包含 title、type、description、attributes
  • relatedSearches - 相关搜索查询,格式为 { "query": ... }
  • searchParameters - 本次搜索所用参数的回显

解析示例:

# Extract organic results
curl -s -X POST "https://api.serpingapi.com/v1/search" \
  -H "X-API-Key: ${SERPINGAPI_API_KEY}" -H "Content-Type: application/json" \
  -d '{"q": "{keyword}", "gl": "us", "hl": "en", "num": 20}' | \
  jq '.organic[] | {position, title, link, snippet}'

# Extract People Also Ask questions
curl -s -X POST "https://api.serpingapi.com/v1/search" \
  -H "X-API-Key: ${SERPINGAPI_API_KEY}" -H "Content-Type: application/json" \
  -d '{"q": "{keyword}", "gl": "us", "hl": "en", "num": 20}' | \
  jq '.peopleAlsoAsk[] | {question, snippet}'

# Check for featured snippet / knowledge graph
curl -s -X POST "https://api.serpingapi.com/v1/search" \
  -H "X-API-Key: ${SERPINGAPI_API_KEY}" -H "Content-Type: application/json" \
  -d '{"q": "{keyword}", "gl": "us", "hl": "en", "num": 20}' | \
  jq '{answerBox, knowledgeGraph: (.knowledgeGraph | {title, type, description})}'

可选参数:location(例如 "Seattle, Washington, United States")、page(从 1 开始)、用于时间筛选的 tbs(qdr:d 表示日,qdr:w 表示周,qdr:m 表示月,qdr:y 表示年)。仅支持网页搜索——不包含广告、购物或本地 Pack 部分。

错误响应格式为 {"error": {"code": "...", "message": "..."}}:401 invalid_api_key 表示密钥错误或已撤销;429 quota_exceeded 表示月度配额已用完(于 UTC 时间每月 1 日重置)。无论遇到哪种情况,都要告知用户具体错误,并回退到方法 B。

步骤 2:映射 SERP 特性

记录此关键词对应的所有 SERP 特性:

特性是否存在?归属方能否争取?
精选摘要是/否{domain}{assessment}
其他人还问了是/否{list questions}-
知识面板是/否{entity}-
图片包是/否{position in SERP}{assessment}
视频轮播是/否{platforms}{assessment}
本地包是/否-{assessment}
购物结果是/否-{assessment}
新闻结果是/否{sources}{assessment}
站点链接是/否{domain}-
评价/星级是/否{domains}{assessment}
FAQ 富媒体搜索结果是/否{domains}{assessment}
面包屑导航是/否{domains}-

SERP 意图信号分析:

  • 博客文章/指南居多 = 信息型意图
  • 产品/服务页面居多 = 交易型意图
  • 评价与产品页面混合 = 商业调查型意图
  • 品牌首页与登录页面 = 导航型意图
  • 存在精选摘要 = 信息型成分强
步骤 3:分析排名前 10 的结果

抓取并分析排名前 10 的每个自然搜索结果:

因素衡量内容
URL完整 URL
域名域名权威度/声誉
标题标签完整标题、长度、关键词位置
元描述完整描述、长度、行动号召
内容类型博客文章、着陆页、工具、目录、视频等
字数内容总长度
标题结构H1、H2/H3 数量、标题中的关键词
内容格式列表、操作指南、对比、指南、定义等
视觉元素图片、视频、信息图表、表格的数量
日期发布日期、最后更新日期
作者是否署名作者、是否展示资质
独特角度与其他内容相比有何差异
内链内部链接数量
外链出站链接数量、引用的来源
Schema 标记使用的结构化数据类型
阅读难度估算的 Flesch-Kincaid 年级水平
步骤 4:识别规律

分析完排名前 10 的所有结果后,找出共同点:

内容模式分析:

## Content Patterns for "{keyword}"

### Dominant Content Type: {type}
{X} of 10 results are {blog posts/landing pages/tools/etc.}

### Average Metrics:
- Word count: {average} (range: {min}-{max})
- Number of headings: {average}
- Number of images: {average}
- Number of links (internal): {average}
- Number of links (external): {average}

### Common Topics Covered:
1. {topic} - covered by {X}/10 results
2. {topic} - covered by {X}/10 results
3. {topic} - covered by {X}/10 results
...

### Common H2 Headings:
1. "{heading}" or similar - used by {X}/10
2. "{heading}" or similar - used by {X}/10
...

### Featured Snippet Format:
Type: {paragraph/list/table/video}
Content: {what the snippet shows}
How to win it: {specific advice}
步骤 5:寻找内容缺口

找出排名靠前的结果中缺少的内容:

  • 只有 1–2 个结果提及的主题(提供全面内容的机会)
  • 过时的信息(保持内容新鲜的机会)
  • 缺少的媒体类型(没有视频、信息图表或互动工具)
  • 缺少的视角(没有专家引言、数据或案例研究)
  • 未解答的“其他人还问了”问题
  • 缺少的 Schema 标记类型
  • 糟糕的用户体验(加载缓慢、未针对移动设备优化、侵入式广告)
步骤 6:分析竞争定位

为排名前 5 的每个竞争对手创建定位图:

Competitor 1 ({domain}): {Positioning summary - e.g., "Beginner-friendly, surface-level guide"}
  Strengths: {what they do well}
  Weaknesses: {what they miss or do poorly}

Competitor 2 ({domain}): {Positioning summary}
  Strengths: ...
  Weaknesses: ...

找到你的差异化角度:

  • 你能做得更全面吗?(10 倍内容)
  • 你能提供更多可执行内容吗?(模板、工具、清单)
  • 你能提供更新的内容吗?(最新数据、2025 年更新)
  • 你能更具权威性吗?(专家访谈、原创研究)
  • 你能服务不同的细分受众吗?(初学者与进阶用户)
  • 你能提供独特的形式吗?(互动工具与博客文章)
步骤 7:生成内容简报

根据分析生成完整的内容简报:

# Content Brief: {Target Keyword}

## Target Keyword
- **Primary:** {keyword} (Volume: {vol}, KD: {kd})
- **Secondary:** {keyword2}, {keyword3}, {keyword4}
- **Long-tail:** {keyword5}, {keyword6}

## Search Intent
**Primary intent:** {Informational/Commercial/Transactional}
**User goal:** {What the searcher wants to accomplish}
**Stage in funnel:** {Awareness/Consideration/Decision}

## Content Specifications

| Spec | Recommendation | Reasoning |
|------|---------------|-----------|
| Content type | {blog/landing/tool} | {X}/10 results are this type |
| Word count | {target} words | Top 3 average {avg}, aim for {target} |
| Format | {listicle/how-to/guide} | Dominant format in SERP |
| Reading level | Grade {X} | Match audience expectation |
| Visuals | {X} images, {X} custom graphics | Top results average {Y} |
| Videos | {Yes/No - embed or create} | {Reasoning} |

## Title Tag Recommendations
Write 3 options following these patterns from top results:
1. "{Title option 1}" ({length} chars)
2. "{Title option 2}" ({length} chars)
3. "{Title option 3}" ({length} chars)

## Meta Description Recommendations
1. "{Meta option 1}" ({length} chars)
2. "{Meta option 2}" ({length} chars)

## Recommended Outline

### H1: {Heading}

### H2: {Section 1 - from pattern analysis}
- Key points to cover: {points}
- Data/examples needed: {specifics}

### H2: {Section 2}
- Key points: ...

### H2: {Section 3}
...

### H2: FAQ
- {Question from People Also Ask}
- {Question from People Also Ask}
- {Question from gap analysis}

## Content Gaps to Exploit
1. **{Gap}** - Only {X}/10 competitors cover this. Include {specific content}.
2. **{Gap}** - No competitors have {data/tool/visual}. Create {specific asset}.
3. **{Gap}** - Top results are outdated on {topic}. Include {current data}.

## Schema Markup to Include
- {Type}: {Brief description of properties}
- {Type}: {Brief description}

## Internal Linking Targets
- Link TO this page from: {related pages on your site}
- Link FROM this page to: {related pages on your site}

## Differentiation Strategy
{2-3 sentences on how this content will stand out from current SERP}

输出格式

始终提供:

  1. SERP 概览 - 特性图谱与意图分析
  2. 排名前 10 结果分析表 - 每个结果的关键指标
  3. 规律总结 - SERP 青睐的内容
  4. 内容缺口 - 实现差异化的机会
  5. 内容简报 - 可直接交给撰稿人的完整简报

备注

  • 如果无法获取某个 URL(付费墙、需要身份验证或受到屏蔽),请注明,并使用可用数据开展分析。
  • 始终注明分析日期。搜索结果页(SERP)会变化;此处内容仅代表某一时点的情况。
  • 对于本地关键词,请注明本地商家包(Local Pack)是否占主导地位(这会显著影响策略)。
  • 如果搜索结果页(SERP)显示域名权威度高度集中(所有网站的 DR 均为 90+),无论 KD 分数如何,都要将其标记为难度指标。
  • 对于「金钱或生命」(YMYL)主题(健康、金融、法律),请注明其 E-E-A-T 要求较高。

评论

支持 Markdown