关于 serp-analyzer
serp-analyzer 是面向 SEO 研究人员和内容作者的技能,可分析目标关键词的 Google 搜索结果,并据此生成内容简报。它结合网页搜索与可选 SEO 数据 API,梳理搜索结果特征、竞争页面和内容缺口。
主要功能
- 01梳理 Google 搜索结果特征
- 02分析排名靠前的页面
- 03归纳内容模式与缺口
- 04评估竞争对手定位
- 05生成可执行的内容简报
适用场景
- 01围绕目标关键词规划文章
- 02查找尚未回答的搜索问题
- 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_linkrelated_questions- “People Also Ask”问题,包含question、snippet、title、linkknowledge_graph- 知识面板数据,包含title、description、entity_type和属性shopping_results- 产品列表(如有),包含title、price、link、sourcelocal_results- 本地 Pack 列表(如有),包含title、address、rating、reviewsinline_images- 图片 Pack 结果answer_box- 精选摘要内容,包含type(段落、列表、表格)、snippet、titlerelated_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、linkanswerBox- 精选摘要/直接答案knowledgeGraph- 知识面板数据,包含title、type、description、attributesrelatedSearches- 相关搜索查询,格式为{ "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}
输出格式
始终提供:
- SERP 概览 - 特性图谱与意图分析
- 排名前 10 结果分析表 - 每个结果的关键指标
- 规律总结 - SERP 青睐的内容
- 内容缺口 - 实现差异化的机会
- 内容简报 - 可直接交给撰稿人的完整简报
备注
- 如果无法获取某个 URL(付费墙、需要身份验证或受到屏蔽),请注明,并使用可用数据开展分析。
- 始终注明分析日期。搜索结果页(SERP)会变化;此处内容仅代表某一时点的情况。
- 对于本地关键词,请注明本地商家包(Local Pack)是否占主导地位(这会显著影响策略)。
- 如果搜索结果页(SERP)显示域名权威度高度集中(所有网站的 DR 均为 90+),无论 KD 分数如何,都要将其标记为难度指标。
- 对于「金钱或生命」(YMYL)主题(健康、金融、法律),请注明其 E-E-A-T 要求较高。