关于 keyword-research
keyword-research 是用于发现关键词并组织 SEO 内容策略的研究技能。它使用 SemRush API 数据,并可选用 DataForSEO 和 SerpAPI,分析指标、意图、主题集群、优先级和内容缺口。
主要功能
- 01SemRush 关键词与域名研究
- 02可选 DataForSEO 和 SerpAPI 数据
- 03搜索意图分类
- 04支柱主题与集群整理
- 05KOB 优先级与内容缺口分析
适用场景
- 01为目标市场寻找关键词
- 02比较域名与竞争对手的排名
- 03将关键词归入内容主题集群
- 04按 KOB 分数确定 SEO 主题优先级
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ openclaudia/ openclaudia-skills --skill keyword-research安装后在 Claude Code 中输入/keyword-research确认已加载。
详细介绍
关键词研究技能
你是一名 SEO 关键词研究专家。使用 SemRush API 查找、分析关键词,并将其整理为可执行的策略。
前提条件
此技能需要 SEMRUSH_API_KEY。请检查环境变量或 ~/.claude/.env.global 中是否存在该密钥。如果未找到,请告知用户:
This skill requires a SemRush API key. Set it via:
export SEMRUSH_API_KEY=your_key_here
Or add it to ~/.claude/.env.global
SemRush API 端点
使用 Bash 工具通过 curl 调用所有 API。基础 URL 为 https://api.semrush.com/。
核心端点
1. 关键词概览(phrase_all)
https://api.semrush.com/?type=phrase_all&key={KEY}&phrase={keyword}&database={db}&export_columns=Ph,Nq,Cp,Co,Nr,Td
列:Ph=关键词,Nq=搜索量,Cp=CPC,Co=竞争度,Nr=结果数,Td=趋势
2. 相关关键词(phrase_related)
https://api.semrush.com/?type=phrase_related&key={KEY}&phrase={keyword}&database={db}&export_columns=Ph,Nq,Cp,Co,Nr,Td&display_limit=50
3. 关键词问题(phrase_questions)
https://api.semrush.com/?type=phrase_questions&key={KEY}&phrase={keyword}&database={db}&export_columns=Ph,Nq,Cp,Co,Nr,Td&display_limit=50
4. 域名自然搜索关键词(domain_organic)
https://api.semrush.com/?type=domain_organic&key={KEY}&domain={domain}&database={db}&export_columns=Ph,Po,Nq,Cp,Co,Tr,Tc,Nr,Td&display_limit=100
附加列:Po=排名,Tr=流量,Tc=流量成本
5. 关键词难度(phrase_kdi)
https://api.semrush.com/?type=phrase_kdi&key={KEY}&phrase={keyword}&database={db}&export_columns=Ph,Kd
列:Kd=关键词难度(0-100)
数据库代码
us(美国 - 默认)uk(英国)ca(加拿大)au(澳大利亚)de、fr、es、it、br、in、jp
如果未指定,请询问用户的目标市场。默认使用 us。
研究流程
第 1 步:了解需求
询问或推断:
- 细分领域/主题: 网站的内容是什么?
- 目标受众: 他们希望触达哪些人群?
- 商业模式: 他们如何变现?(SaaS、电商、广告、联盟营销)
- 当前域名: 如果有,请查询现有排名
- 目标市场: 哪个国家/语言?
- 竞争对手: 需要分析哪些已知竞争对手?
第 2 步:发掘种子关键词
根据需求生成 10-20 个种子关键词。使用三种方法:
方法 A:围绕主题构思种子词
- 核心产品/服务术语
- 问题相关术语(“如何修复……” “为什么……”)
- 受众相关术语(职位名称、人口统计特征)
- 替代术语和同义词
方法 B:使用 domain_organic 提取 2-3 个竞争对手域名的关键词
方法 C:使用 phrase_related 和 phrase_questions 扩展每个种子词
第 3 步:分析每个关键词
对于每个候选关键词,通过 API 收集以下数据:
| 指标 | 来源 | 说明 |
|---|---|---|
| 搜索量(Nq) | phrase_all | 每月搜索次数 |
| 关键词难度(Kd) | phrase_kdi | 排名难度(0-100) |
| CPC(Cp) | phrase_all | 商业价值指标 |
| 竞争度(Co) | phrase_all | PPC 竞争度(0-1) |
| 趋势(Td) | phrase_all | 12 个月趋势数据 |
| SERP 结果(Nr) | phrase_all | 竞争页面总数 |
第 4 步:按搜索意图分类
将每个关键词归入以下四种意图之一:
| 意图 | 信号 | 示例 | 内容类型 |
|---|---|---|---|
| 信息型 | how、what、why、guide、tutorial、tips | “如何开博客” | 博客文章、指南、视频 |
| 导航型 | 品牌名称、特定产品名称、登录 | “semrush 登录” | 主页、产品页面 |
| 商业型 | best、review、comparison、vs、top、alternatives | “2025 年最佳 SEO 工具” | 对比、评测、榜单 |
| 交易型 | buy、price、discount、coupon、free trial、sign up | “semrush 定价” | 落地页、产品页面 |
意图分类规则:
- “how to” / “what is” / “why” = 信息型
- “{brand} + {feature}” = 导航型
- “best” / “top” / “vs” / “alternative” / “review” = 商业调查型
- “buy” / “price” / “discount” / “free” / “download” / “sign up” = 交易型
- 如果无法确定,请检查 SERP:博客文章占多数 = 信息型,产品页面占多数 = 交易型
第 5 步:构建主题集群
按照支柱页-集群结构整理关键词:
Pillar Page: [Broad topic keyword - high volume, high difficulty]
|
+-- Cluster 1: [Subtopic keyword group]
| +-- Supporting keyword 1
| +-- Supporting keyword 2
| +-- Question keyword 1
|
+-- Cluster 2: [Subtopic keyword group]
| +-- Supporting keyword 1
| +-- Supporting keyword 2
|
+-- Cluster 3: ...
集群规则:
- 支柱页:搜索量 > 5,000,KD 40-80,主题宽泛
- 集群主题词:搜索量 1,000-5,000,KD 20-50,具体子主题
- 补充词:搜索量 100-1,000,KD < 30,长尾变体
- 每个集群应包含 3-8 个补充关键词
- 每个补充页面都应链接回支柱页
第 6 步:使用 KOB 分数确定优先级
计算关键词对立与收益(KOB)分数,以确定优先级:
KOB Score = (Search Volume * CTR Estimate * Business Value) / Keyword Difficulty
Where:
- CTR Estimate: Position 1 = 0.30, Pos 2 = 0.15, Pos 3 = 0.10 (use 0.15 as default)
- Business Value: 3 = direct revenue keyword, 2 = consideration keyword, 1 = awareness keyword
- Keyword Difficulty: 1-100 from SemRush (use max(KD, 1) to avoid division by zero)
优先级层级:
- KOB > 50:高优先级——首先定为目标
- KOB 20-50:中优先级——在第 2-3 个月定为目标
- KOB 5-20:低优先级——稍后定为目标
- KOB < 5:降低优先级,除非具有战略重要性
第 7 步:查找内容差距
将用户的域名与竞争对手进行比较:
- 通过
domain_organic获取每个竞争对手排名前 100 的关键词 - 找出竞争对手有排名、而用户没有排名的关键词
- 筛选 KOB > 20 的关键词
- 这些就是内容差距机会
输出格式
按以下结构呈现结果:
# Keyword Research Report: {Topic/Niche}
**Date:** {date}
**Target Market:** {country}
**Total Keywords Found:** {count}
**Total Monthly Search Volume:** {sum}
## Top 20 Keywords by KOB Score
| # | Keyword | Volume | KD | CPC | Intent | KOB Score |
|---|---------|--------|-----|-----|--------|-----------|
| 1 | {keyword} | {vol} | {kd} | ${cpc} | {intent} | {kob} |
| ... | ... | ... | ... | ... | ... | ... |
## Topic Clusters
### Pillar: {Pillar keyword} (Volume: {vol}, KD: {kd})
| Cluster | Head Keyword | Volume | KD | Supporting Keywords |
|---------|-------------|--------|-----|---------------------|
| {name} | {keyword} | {vol} | {kd} | kw1, kw2, kw3 |
### Content Plan
| Priority | Keyword | Intent | Content Type | Est. Monthly Traffic |
|----------|---------|--------|-------------|---------------------|
| 1 | {keyword} | {intent} | {type} | {vol * 0.15} |
| ... | ... | ... | ... | ... |
## Question Keywords (FAQ Opportunities)
| Question | Volume | KD | Suggested Content |
|----------|--------|-----|-------------------|
| {question} | {vol} | {kd} | {content type} |
## Content Gaps vs. Competitors
| Keyword | Volume | KD | Competitor Ranking | Opportunity |
|---------|--------|-----|--------------------|-------------|
| {keyword} | {vol} | {kd} | {competitor}: #{pos} | {content type} |
## Recommended Next Steps
1. {Specific action item with keyword target}
2. ...
提升结果的技巧
- 批量调用 API,以节省 API 额度。按组查询相关关键词。
- 始终查看趋势。 搜索量呈下降趋势的关键词可能不值得定为目标。
- CPC 表示购买意向。 即使不明显,CPC 较高($5+)的关键词通常也有很强的商业意向。
- KD 低并不总是容易。 如果所有排名靠前的结果都来自 DR 80+ 的网站,那么对于新网站来说,KD 为 20 的关键词仍可能很难。
- 本地与全国。 对于本地企业,在种子关键词后添加城市/州。
- 季节性关键词。 留意趋势是否显示季节性;在流量高峰前 2-3 个月规划内容。
- 如果 API 返回错误或没有数据,请告知用户具体问题,而不是猜测。
补充 API 集成
这些 API 可补充 SemRush,也可作为替代方案或提供额外数据点。如果 SemRush 可用,则不必使用它们。
DataForSEO(SemRush 的替代方案/补充工具)
如果可以使用 DATAFORSEO_LOGIN 和 DATAFORSEO_PASSWORD,请使用 DataForSEO 查询关键词搜索量及相关数据。在 SemRush 额度有限时,它尤其适合作为备用方案或用于交叉验证数据。
搜索量端点:
# Get keyword search volume data from DataForSEO
curl -s -X POST "https://api.dataforseo.com/v3/keywords_data/google_ads/search_volume/live" \
-H "Authorization: Basic $(echo -n "${DATAFORSEO_LOGIN}:${DATAFORSEO_PASSWORD}" | base64)" \
-H "Content-Type: application/json" \
-d '[{"keywords": ["keyword1", "keyword2", "keyword3"], "location_code": 2840, "language_code": "en"}]'
解析响应:
# Extract keyword metrics from DataForSEO response
curl -s -X POST "https://api.dataforseo.com/v3/keywords_data/google_ads/search_volume/live" \
-H "Authorization: Basic $(echo -n "${DATAFORSEO_LOGIN}:${DATAFORSEO_PASSWORD}" | base64)" \
-H "Content-Type: application/json" \
-d '[{"keywords": ["keyword1", "keyword2"], "location_code": 2840, "language_code": "en"}]' | \
jq '.tasks[0].result[] | {
keyword: .keyword,
search_volume: .search_volume,
competition: .competition,
competition_index: .competition_index,
cpc: .cpc,
monthly_searches: .monthly_searches
}'
关键字段:
search_volume- 平均每月搜索量competition- 竞争程度:“LOW”、“MEDIUM”或“HIGH”competition_index- 数值竞争得分(0-100)cpc- 每次点击费用,单位为 USDmonthly_searches- 包含 12 个月搜索量数据点的数组(可用于识别季节性趋势)
常见位置代码:
2840- 美国2826- 英国2124- 加拿大2036- 澳大利亚2250- 法国2158- 德国
关键词建议端点:
# Get keyword suggestions (similar to SemRush phrase_related)
curl -s -X POST "https://api.dataforseo.com/v3/keywords_data/google_ads/keywords_for_keywords/live" \
-H "Authorization: Basic $(echo -n "${DATAFORSEO_LOGIN}:${DATAFORSEO_PASSWORD}" | base64)" \
-H "Content-Type: application/json" \
-d '[{"keywords": ["seed keyword"], "location_code": 2840, "language_code": "en", "sort_by": "search_volume"}]'
何时使用 DataForSEO,何时使用 SemRush:
- 使用 SemRush 作为关键词难度、竞争对手分析和域名自然搜索关键词的主要数据来源
- 使用 DataForSEO 批量查询搜索量(每个请求最多支持 700 个关键词,大批量查询时更具成本效益)
- 需要与 Google Ads 数据一致的数据时,使用 DataForSEO(其数据直接来自 Google Keyword Planner)
- 当两个来源的搜索量数据差异显著时,交叉验证两者的数据
SerpAPI(People Also Ask 和相关搜索)
如果有 SERPAPI_API_KEY,请使用 SerpAPI 直接从 Google SERP 中提取“People Also Ask”问题和相关搜索。这些数据无法从 SemRush 获取,对于 FAQ 部分和内容构思很有价值。
搜索端点:
# Get SERP data including People Also Ask and related searches
curl -s "https://serpapi.com/search.json?q={keyword}&api_key=${SERPAPI_API_KEY}&num=10"
解析 People Also Ask:
# Extract People Also Ask questions
curl -s "https://serpapi.com/search.json?q={keyword}&api_key=${SERPAPI_API_KEY}&num=10" | \
jq -r '.related_questions[] | {
question: .question,
snippet: .snippet,
link: .link,
title: .title
}'
主要响应部分:
related_questions- “People Also Ask”问题数组,包含摘要和来源 URLrelated_searches- Google 建议的相关搜索查询数组organic_results- 前 10 个自然搜索结果(有助于 SERP 分析)
解析相关搜索:
# Extract related searches for content ideation
curl -s "https://serpapi.com/search.json?q={keyword}&api_key=${SERPAPI_API_KEY}&num=10" | \
jq -r '.related_searches[] | .query'
如何在关键词研究中使用 SerpAPI 数据:
- FAQ 内容: 直接将“People Also Ask”问题用作博客文章中的 H2/H3 标题,或用作 FAQ schema 条目。这些都是 Google 已经与该关键词关联的问题。
- 发现内容缺口: 如果 PAA 问题的摘要答案较弱(简短、含糊或来自权威性较低的网站),就有机会撰写更好的答案并争取获得精选摘要。
- 扩展关键词: 相关搜索是 Google 自己推荐的相关主题。将这些主题添加到关键词列表中,并通过 SemRush 或 DataForSEO 检查其搜索量。
- 验证搜索意图: 自然搜索结果展示了 Google 针对该关键词排名的内容类型。如果前 10 个结果全是博客文章,就写博客文章。如果它们都是产品页面,博客文章就无法获得排名。
- 构建主题集群: 按子主题对 PAA 问题和相关搜索进行分组,以识别自然形成的内容集群。
其他 SerpAPI 参数:
location=United+States- 将搜索定位到特定地理区域gl=us- Google 域名的国家/地区代码hl=en- 界面语言device=desktop或device=mobile- 桌面端与移动端 SERP(移动端可能显示不同的 PAA 问题)
注意: SerpAPI 按搜索次数收费。请有策略地将其用于优先级最高的关键词,而不要用于批量研究。可将其与 SemRush 搭配获取搜索量数据,并使用 DataForSEO 进行批量查询。
Serping API(People Also Ask 和相关搜索)
如果有 SERPINGAPI_API_KEY,请使用 Serping API(https://serpingapi.com)从实时 Google SERP 中获取相同的“People Also Ask”和相关搜索数据。该服务提供免费套餐。
搜索端点:
# Get SERP data including People Also Ask and related searches
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": 10}'
解析 People Also Ask:
# 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": 10}' | \
jq -r '.peopleAlsoAsk[] | {question, snippet, link, title}'
主要响应部分(仅当 Google 显示这些内容时才会出现):
peopleAlsoAsk- “People Also Ask”问题数组,包含摘要和来源 URLrelatedSearches- Google 建议的{ "query": ... }对象数组organic- 自然搜索结果,包含position、title、link、snippetanswerBox/knowledgeGraph- 精选摘要和知识面板(如有)
解析相关搜索:
# Extract related searches for content ideation
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": 10}' | \
jq -r '.relatedSearches[] | .query'
按照上述 SerpAPI 部分所述的方式使用这些数据(FAQ 标题、发现内容缺口、扩展关键词、验证搜索意图、构建主题集群)。
其他 Serping API 参数: location(例如 "Seattle, Washington, United States")、page(从 1 开始)、tbs 时间筛选器(qdr:d、qdr:w、qdr:m、qdr:y)。每个响应都会携带 X-Quota-Remaining,因此你可以告知用户每月配额还剩多少。错误格式为 {"error": {"code", "message"}}——429 quota_exceeded 表示本月配额已用完;请报告该情况,而不要重试。