mcpField
S
serp-analyzer

serp-analyzer

github.com/openclaudiaマーケティング・グロース722442 回インストール1 週間前に更新
リポジトリ

serp-analyzer について

serp-analyzerは、SEO調査担当者やコンテンツ制作者向けのスキルです。Googleの検索結果を調べ、検索結果の特徴や競合、コンテンツの不足点を整理して記事ブリーフを作成します。

主な機能

  1. 01Google検索結果の特徴整理
  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 アナライザー スキル

あなたは 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}

出力形式

必ず次の内容を提示します。

  1. SERP の概要 - 機能マップと検索意図の分析
  2. 上位 10 件の分析表 - 各結果の主要指標
  3. パターンの要約 - SERP で評価される要素
  4. コンテンツのギャップ - 差別化の機会
  5. コンテンツブリーフ - ライターがすぐに使える完全なブリーフ

注意事項

  • URLを取得できない場合(有料コンテンツ、認証、ブロックなど)は、その旨を記載し、利用可能なデータに基づいて作業してください。
  • 分析日を必ず記載してください。検索結果ページは変化するため、これはある時点でのスナップショットです。
  • ローカルキーワードについては、ローカルパックが優勢かどうかを記載してください。これは戦略を大きく左右します。
  • 検索結果ページでドメインオーソリティが極端に集中している場合(DR 90以上のサイトばかりの場合)は、KDスコアにかかわらず、難易度を示す指標として明記してください。
  • 「Your Money or Your Life」(YMYL)に関するトピック(健康、金融、法律)については、E-E-A-T要件が高くなることを記載してください。

コメント