seo-sxo について
seo-sxoは、対象キーワードの検索体験とページのずれを診断するスキルです。SEO担当者やコンテンツチーム向けにSERPの傾向を分類し、4つのペルソナでページを評価します。ページタイプが合わない場合はワイヤーフレームも提案します。
主な機能
- 01キーワードの検索結果とSERP要素を取得
- 02上位10件をページタイプ別に分類
- 03SERPの主流パターンを特定
- 044つのユーザーペルソナでページを評価
- 05ページタイプ不一致時にワイヤーフレームを提案
活用シーン
- 01検索意図に対するページ構成を診断
- 02対象ページと上位結果を比較
- 03ページタイプ変更時の構成方針を決定
MCP 対応
検索結果と関連データの取得には、接続済みのSE Ranking MCPサーバーが必要です。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ seranking/ seo-skills --skill seo-sxoインストール後、Claude Code で/seo-sxoを入力して読み込まれたか確認します。
同梱ファイルreferences/page-type-patterns.mdreferences/persona-rubrics.md
詳細
SEO SXO — 検索体験の最適化
「十分に最適化された」ページがなぜ上位表示されないのかを診断します。対象キーワードの実際のSERPを読み込み、Googleが評価しているページタイプを推測し、複数のペルソナの視点から候補ページをそのパターンに照らして評価し、SERPで勝てるページ形式を提案します。
謝辞: SXOをスキルとして扱うフレームワークは、AgriciDanielによる
claude-seoで生まれたものです(元のコンセプトはFlorian Schmitz、Pro Hub Challengeによるものです)。どちらの方向もMITライセンスです。この実装は独立したものですが、枠組みは彼らのものです。
前提条件
- SE Ranking MCP サーバーが接続されていること。
- Claudeの
WebFetchツールが利用できること。 - ユーザーが以下を指定していること:(a)対象ページのURL、(b)そのページが上位表示を目指す対象キーワード、任意で(c)対象国(デフォルトは
us)。
プロセス
-
入力を検証します。 URLとキーワードの両方が必須です。キーワードがない場合は、推測せずユーザーに確認してください。
-
SERPを取得します
DATA_getSerpResultsおよびDATA_getSerpTaskAdvancedResults- オーガニック検索結果の上位10件(URL、タイトル、スニペット)。
- SERP機能:AI Overviewの有無、People Also Ask、画像カルーセル、動画カルーセル、ショッピング枠、Twitter枠、強調スニペットなど。
- モードの選択(コスト要因 — 必ず読んでください)。 SERP機能のデータ(AIO/PAA/カルーセル)は、
result_type=advancedでタスクを実行した場合にのみ返されます。これは、このスキルで最もコストの高い単一の呼び出しでもあります(2026-04の検証実行では、検索ボリュームの多いキーワードで約700クレジット)。- デフォルト —
mode=full:result_type=advancedで実行します。SERP機能とオーガニック検索結果が返されます。ペルソナ評価でPAA/AIO/枠のシグナルが必要な場合(ほとんどのケース)に使用します。 mode=lite(result_type=standard): オーガニック検索結果の上位10件のみで、SERP機能は含まれません。約50~100クレジットです。(a)SERP機能が判断の重要な要素ではなく、ユーザーが多くのキーワードをスクリーニングしている場合、(b)クレジットに制約がある場合、(c)ユーザーが明示的に低コストでの調査を依頼した場合に使用します。ペルソナ評価は引き続き実行されますが、SXO-REPORT.mdのSERP機能の行には(skipped — lite mode)と表示され、支配的なパターンの検出はURLとタイトルのヒューリスティクスのみに基づきます。- 選択したモードと推定コストを最初に提示します。ユーザーが指定しておらず、キーワードが広告の多い分野や商業性の高い大量検索キーワードに見える場合は、まず
mode=liteを推奨し、支配的なパターンの確信度が低い場合にのみmode=fullで再実行します。
- デフォルト —
-
AIOのコンテキストを取得します
DATA_getAiOverview- キーワードにAIOが表示される場合は、回答テキストと引用リストを取得します。
- オーガニック検索結果の上位10件のうち、AIOでも引用されているものを記録します。
-
ユーザーのページと上位 3 件の勝者を取得
WebFetch(必須)+mcp__firecrawl-mcp__firecrawl_scrape(利用可能な場合)- 最初に WebFetch(無料):ユーザーのページと上位 3 件の勝者の Markdown を取得します。
<title>、すべての H タグ、主要なコンテンツ構成(番号付きリスト/表/文章/Q&A)、単語数、画像への言及、比較表の有無、CTA への言及を抽出します。 - 次に Firecrawl(通常 4 Firecrawl クレジット — 1 ページあたり 1 クレジット)。WebFetch で取得できない情報を補います。
- ページごとの JSON-LD
@type(Product、FAQPage、BreadcrumbList、Article、Review、ItemList など)。これらはステップ 5 のページタイプ分類を左右する重要な情報です。WebFetch の Markdown ではスキーマを確認できません。 metadataのog:title/og:image/twitter:card。- 実際の
<title>の長さ(Markdown の先頭見出しが誤っている場合があります)。
- ページごとの JSON-LD
--screenshotsフラグ(任意、Firecrawl クレジットを 4 追加): 指定された場合は、ユーザーのページと上位 3 件の勝者に対してformats: ["screenshot"]を指定してfirecrawl_scrapeも呼び出します。screenshots/{page}.pngとして保存します。テキストの概要だけでなく視覚的なレイアウトに基づいて改善案を提示できるよう、ワイヤーフレーム(ステップ 8)で参照します。- Firecrawl が利用できない場合(または
--no-firecrawlが指定された場合): WebFetch の処理は実行します。ステップ 5 のページタイプ分類は URL/タイトルのヒューリスティクスとコンテンツ構成のヒューリスティクスのみに基づき、スキーマに基づく分類はスキップします。02-page-type-classification.mdにSchema-based classification: skipped — Firecrawl required.と記載します。それに応じて、優勢なパターンの検出に対する確信度は下がります。
- 最初に WebFetch(無料):ユーザーのページと上位 3 件の勝者の Markdown を取得します。
-
上位 10 件の結果をページタイプ別に分類
references/page-type-patterns.mdのヒューリスティクスを使用します。- 各結果に、{comparison, alternatives, listicle, how-to, definition, product, editorial, forum, video} のいずれかを割り当てます。
- 分類の根拠となったシグナル(URL パターン、タイトルパターン、スキーマ、コンテンツ構成)を記録します。
-
優勢なパターンを検出
- 上位 10 件のタイプを数えます。1 つのタイプが 6 件以上なら、それが優勢なパターンです。
- 2 つのタイプが 4 対 4 で並んだ場合、SERP は「検索意図が分かれている」状態です。どちらも有効であり、どちらを選ぶかは商用寄りか情報提供寄りかという切り口で決まります。
- SERP の機能と照合します。動画カルーセルがある場合は動画の結果が 2 件以上、PAA がある場合は情報提供を目的とした結果、ショッピング枠がある場合は商用意図が優勢、AIO がある場合は情報提供に関するコンセンサスが見込まれます。
-
優勢なパターン × 4 つのペルソナに照らしてユーザーのページを採点
references/persona-rubrics.mdの評価基準を使用します。- 4 つのペルソナ:Skimmer、Researcher、Buyer、Validator。
- 各ペルソナを 0~10 点で採点します。意図の重み付けプロファイル(同じく persona-rubrics.md に記載)を適用し、単一の 0~100 の SXO スコアを算出します。
-
評価とワイヤーフレームをまとめる
- ユーザーのページタイプが優勢なパターンと一致する場合:SXO スコアは、そのパターンをどれだけ効果的に実現しているかを反映します。特定のペルソナを対象とした具体的な改善案を提示します。
- ユーザーのページタイプが優勢なパターンと一致しない場合:これは「ページタイプの不一致」に該当します。上位 3 件の勝者から確認できるパターンを根拠に、優勢なページタイプのワイヤーフレームを出力します。
SXO-REPORT.mdを作成します。
出力形式
次のフォルダーを作成します:seo-sxo-{target-slug}-{YYYYMMDD}/
seo-sxo-{target-slug}-{YYYYMMDD}/
├── 01-serp-snapshot.md (top 10 + features + AIO)
├── 02-page-type-classification.md (each top-10 result classified)
├── 03-user-page-fingerprint.md (the candidate page's structure)
├── 04-persona-scores.md (4 personas × current page)
├── 05-recommendation.md (verdict + page-type-winning wireframe)
├── screenshots/ (only if --screenshots ran: candidate.png + winner-1/2/3.png)
└── SXO-REPORT.md (executive summary deliverable)
SXO-REPORT.md の形式:
# SXO Report: {URL} for keyword "{keyword}"
> Snapshot dated {YYYY-MM-DD} · Country: {country}
## SERP profile
- Top 10 page types: {comparison: 4, listicle: 3, editorial: 2, video: 1}
- Dominant pattern: **{pattern}** ({n} of 10)
- SERP features: AIO ✓ ({n} citations), PAA ✓ ({n} questions), Image carousel ✗, Video carousel ✗, Shopping pack ✗
- Intent: {informational | commercial-investigation | transactional | navigational}
## Your page
- Page type: **{detected type}**
- Page-type match with dominant: **{✓ match | ✗ MISMATCH — see Verdict}**
- Word count: {n}
- Primary content structure: {prose | numbered-list | table | step-blocks | Q&A | mixed}
## SXO score: **{score}/100**
| Persona | Weight | Score | Notes |
|---|---|---|---|
| Skimmer | {%} | {n}/10 | {1-line note} |
| Researcher | {%} | {n}/10 | {1-line note} |
| Buyer | {%} | {n}/10 | {1-line note} |
| Validator | {%} | {n}/10 | {1-line note} |
## Verdict
{One paragraph. If page type matches: "Your page is the right type for this SERP. The score gap is {X} points — see persona-specific gaps below." If MISMATCH: "Your page is a {your type} but the SERP rewards {dominant type}. No amount of on-page optimization will close the gap; ship a {dominant type} page instead. Wireframe below."}
## If MISMATCH — wireframe for the winning page type
\`\`\`
{Page title pattern — e.g., "{Brand A} vs {Brand B}: 2026 Comparison"}
[Hero / TL;DR — first 200 words answer the comparative question]
[Comparison table — must be visually dominant]
[Section per dimension — each with H2 named after the dimension]
[Verdict / recommendation — explicit, justified]
[FAQ — top 3–5 PAA questions]
[Schema — Product (×2) + BreadcrumbList + FAQPage]
\`\`\`
## If MATCH — top 3 changes by persona
1. {Skimmer}: {specific change}
2. {Researcher}: {specific change}
3. {Buyer or Validator}: {specific change}
## Raw data
- 02-page-type-classification.md — every top-10 result, classified
- 03-user-page-fingerprint.md — your page's signals
- 04-persona-scores.md — full persona-by-persona breakdown
ヒント
- レート制限を守ってください:10 req/sec。ステップ 2/3 の SERP 呼び出しは高速です。レイテンシの大部分を占めるのは API ではなく、ステップ 4 の WebFetch 呼び出しです。
- コストはモードによって異なります。
mode=fullは実行ごとに約 750~900 SE Ranking クレジットです(SERP-advanced 呼び出しが大部分を占めます)。mode=liteは約 80~150 SE Ranking クレジットです。実行前に必ずDATA_getCreditBalanceを呼び出し、残高に対する見積もりを提示してください。ステップ 4 では、Firecrawl が利用可能な場合は Firecrawl クレジットが 4 追加され、--screenshotsを渡すとさらに 4 追加されます。どちらもスキップするには--no-firecrawlを渡してください。 - AIO/PAA/パックデータを取得する唯一の方法は
result_type=advancedです。 標準の SERP エンドポイントが返すのはオーガニック結果のみです。オーガニック結果から SERP 機能を再構成しようとしないでください。ユーザーが費用を払っているのはそのためです。 - ページタイプの分類はヒューリスティックです。
references/page-type-patterns.mdにシグナルが記載されているため、ユーザーは上書きできます。ヒューリスティックによる判定が誤っている場合は、修正内容をそのファイルに加えてください。 - 4 つのペルソナには明確な立場があります。フレームワークの元のソースに由来するものなので、十分な理由がない限り、むやみに増やさないでください。
- SXO スコアは方向性を示すものです。85/100 だからといってランキングを保証するものではありません。35/100 なら、ページが成果を上げられない可能性が高いことを強く示唆します。予測ではなく、診断として扱ってください。
- 優勢なパターンがインテント分割(4-4)の場合は、1 ページで両方のインテントに対応させようとせず、インテントごとに 1 ページずつ、2 ページを公開してください。Google の SERP がこの分割を示しているのには理由があります。
- MISMATCH モードのワイヤーフレームは出発点です。コンテンツはユーザーが作成する必要があります。このスキルは診断を行い、
seo-content-briefはライター向けの完成版ブリーフを作成します。