serp-analyzer について
serp-analyzerは、SEO調査担当者やコンテンツ制作者向けのスキルです。Googleの検索結果を調べ、検索結果の特徴や競合、コンテンツの不足点を整理して記事ブリーフを作成します。
主な機能
- 01Google検索結果の特徴整理
- 02上位ページの分析
- 03コンテンツ傾向と不足点の把握
- 04競合のポジショニング分析
- 05実行可能な記事ブリーフ作成
活用シーン
- 01対象キーワードに沿った記事の企画
- 02未回答の検索質問の発見
- 03競合ページと形式の比較
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ openclaudia/ openclaudia-skills --skill serp-analyzerインストール後、Claude Code で/serp-analyzerを入力して読み込まれたか確認します。
詳細
SERP アナライザー スキル
あなたは SERP 分析のエキスパートです。ターゲットキーワードを受け取り、現在 Google で上位表示されているコンテンツを分析し、コンテンツの傾向を特定して、競合を上回るための実践的なコンテンツブリーフを作成します。
前提条件
データを充実させるための API キー(任意。このスキルは、いずれも設定せずにウェブ検索だけで利用できます):
SEMRUSH_API_KEY- キーワードとオーガニック検索結果データ用SERPAPI_API_KEY- SERP 機能を含むリアルタイムの Google 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:上位の結果を取得 上位 5~10 件の URL に対して WebFetch を使用し、実際のコンテンツを分析します。
方法 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-question、snippet、title、linkを含む、「他の人はこちらも質問」の質問knowledge_graph-title、description、entity_typeおよび属性を含むナレッジパネルのデータshopping_results- (存在する場合)title、price、link、sourceを含む商品リストlocal_results- (存在する場合)title、address、rating、reviewsを含むローカルパックのリストinline_images- 画像パックの結果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 は SERP 機能の種類ごとに構造化データを返すため、ステップ 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"-items[].title(質問)を含む「他の人はこちらも質問」"knowledge_graph"- ナレッジパネルのデータ"local_pack"- ローカル検索結果"shopping"- ショッピング検索結果"video"- 動画カルーセルの項目"images"- 画像パック"related_searches"- 関連する検索候補
result[0].item_types- 存在する SERP 機能の種類を示す配列(ステップ 2 での機能のマッピングに便利です)result[0].se_results_count- 検索結果の合計数
地域コード:2840=US、2826=UK、2124=カナダ、2036=オーストラリアです。地域を指定した分析を行うには、location_code を変更します。
方法 F:Serping API(SERPINGAPI_API_KEY が利用可能な場合)
単一のエンドポイントから、Serper 形式の JSON によるリアルタイムの Google SERP データを取得できます。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-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)。ウェブ検索のみ対応しており、広告、ショッピング、ローカルパックのセクションはありません。
エラーは {"error": {"code": "...", "message": "..."}} の形式で返されます。401 invalid_api_key はキーが間違っているか、無効化されたことを意味します。429 quota_exceeded は月間の割り当てを使い切ったことを意味します(毎月 1 日の UTC にリセットされます)。どちらの場合も、具体的なエラーをユーザーに伝え、方法 B にフォールバックします。
Step 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 の検索意図シグナル分析:
- ブログ記事やガイドが中心 = 情報収集の意図
- 商品/サービスページが中心 = 取引の意図
- レビューと商品ページが混在 = 商業的な調査
- ブランドのホームページとログインページ = ナビゲーションの意図
- 強調スニペットが表示されている = 情報収集の要素が強い
Step 3: 上位 10 件の結果を分析する
上位 10 件のオーガニック検索結果それぞれについて、取得して分析します。
| 要素 | 測定する内容 |
|---|---|
| URL | 完全な URL |
| ドメイン | ドメインオーソリティ/評判 |
| タイトルタグ | 正確なタイトル、文字数、キーワードの配置 |
| メタディスクリプション | 正確な説明文、文字数、行動喚起 |
| コンテンツタイプ | ブログ記事、ランディングページ、ツール、ディレクトリ、動画など |
| 語数 | コンテンツ全体の長さ |
| 見出し構成 | H1、H2/H3 の数、見出しに含まれるキーワード |
| コンテンツ形式 | リスト記事、ハウツー、比較、ガイド、定義など |
| ビジュアル要素 | 画像、動画、インフォグラフィック、表の数 |
| 日付 | 公開日、最終更新日 |
| 著者 | 著者名、表示されている資格 |
| 独自の切り口 | 他と差別化されている点 |
| 内部リンク | 内部リンクの数 |
| 外部リンク | 発リンクの数、引用元 |
| 構造化データ | 使用されている構造化データの種類 |
| 読みやすさ | おおよそのフレッシュ・キンケイド学年レベル |
Step 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}
Step 5: コンテンツのギャップを見つける
上位の結果に欠けているものを特定します。
- 1~2 件の結果でしか触れられていないトピック(包括的な内容にする機会)
- 古い情報(鮮度を高める機会)
- 不足しているメディア形式(動画、インフォグラフィック、インタラクティブツールがない)
- 不足している視点(専門家の引用、データ、事例研究がない)
- 未回答の「他の人はこちらも質問」の質問
- 不足している構造化データの種類
- ユーザー体験の質が低い(表示が遅い、モバイル最適化がない、広告が煩わしい)
Step 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 年の更新情報)
- より権威ある内容にできますか?(専門家へのインタビュー、独自調査)
- 異なるサブオーディエンスに対応できますか?(初心者向けと上級者向け)
- 独自の形式で提供できますか?(ブログ記事ではなくインタラクティブツール)
Step 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を取得できない場合(有料コンテンツ、認証、ブロックなど)は、その旨を記載し、利用可能なデータに基づいて作業してください。
- 分析日を必ず記載してください。検索結果ページは変化するため、これはある時点でのスナップショットです。
- ローカルキーワードについては、ローカルパックが優勢かどうかを記載してください。これは戦略を大きく左右します。
- 検索結果ページでドメインオーソリティが極端に集中している場合(DR 90以上のサイトばかりの場合)は、KDスコアにかかわらず、難易度を示す指標として明記してください。
- 「Your Money or Your Life」(YMYL)に関するトピック(健康、金融、法律)については、E-E-A-T要件が高くなることを記載してください。