seo-sxo について
seo-sxoは、ページが検索結果の傾向やユーザーのニーズにどれだけ合うかを評価するCodex SEOスキルです。SERP分析、ページ種別の照合、ギャップ採点、ペルソナ別の改善提案を行います。
主な機能
- 01SERP分析と傾向判定
- 02ページ種別の不一致検出
- 037項目のギャップ採点
- 04ペルソナ別の改善提案
- 05任意のワイヤーフレーム生成
活用シーン
- 01対象キーワードに対するページ評価
- 02上位ページ形式との不一致の特定
- 03コンテンツとUX改善の優先順位付け
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ agricidaniel/ codex-seo --skill seo-sxoインストール後、Claude Code で/seo-sxoを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/page-type-taxonomy.mdpersona-scoring.mduser-story-framework.mdwireframe-templates.md詳細
検索体験最適化(SXO)
共有データキャッシュ
ステップ 0 -- 共有データキャッシュを確認する:
情報収集を始める前に、関連する SEO スキルから再利用できるコンテキストがないか、.seo-cache/ を確認します。
スキーマと依存関係マップについては、../seo/references/shared-data-cache.md を参照してください。
以下のキャッシュファイルが存在する場合は確認します。
-
.seo-cache/site-meta.json:ドメイン、ビジネスタイプ、業界、クロールのコンテキスト -
.seo-cache/audit-scores.json:以前のフル監査での優先事項 -
.seo-cache/pages/{url-slug}/page-analysis.json:URL が指定されている場合のページ単位のコンテキスト -
見つかった場合:明らかに有効なフィールドを解析して使用します(「[日付]の[X]をキャッシュから使用」と記録します)
-
見つからない場合、破損している場合、または無関係な場合:新しい根拠をもとに続行します
-
ユーザーが「refresh」または「re-run」と指示した場合:キャッシュの読み取りを無視し、書き込み時に上書きします
SXO は、SEO(Google が評価するもの)と UX(ユーザーが必要とするもの)の隔たりを埋めます。 従来の SEO 監査では技術的な健全性を確認します。SXO では、次のように問いかけます。「Google が SERP で実際に評価している内容に照らして、このページはこのキーワードでランクインするに値するでしょうか?」
核心的な洞察
技術的な SEO で 100 点中 95 点を獲得しても、そのキーワードに対してページの種類が適切でないために、ランクインできないことがあります。対象キーワードの検索結果に商品ページが 8 件、比較ページが 2 件表示されている場合、どれだけ最適化しても、ブログ記事が上位に食い込むことはありません。
コマンド
| コマンド | 目的 |
|---|---|
/seo sxo <url> | SXO の全分析(ページからキーワードを自動検出) |
/seo sxo <url> <keyword> | 特定のキーワードを対象とした SXO の全分析 |
/seo sxo wireframe <url> | 具体的なプレースホルダーを含む IST/SOLL ワイヤーフレームを生成 |
/seo sxo personas <url> | ペルソナのみをスコアリング(SERP 分析を省略) |
実行パイプライン
ステップ 1:対象の取得
scripts/fetch_page.pyを使って対象の URL を取得します(SSRF 対策済み)scripts/parse_html.pyで解析し、タイトル、H1、メタディスクリプション、見出し階層、単語数、スキーママークアップ、CTA、メディア要素を抽出します- キーワードが指定されていない場合は、タイトルタグと H1 の共通部分から主要キーワードを抽出します
- 次に進む前に、キーワードが空でないことを検証します
ステップ 2:SERP の逆方向分析
分類ルールについては、references/page-type-taxonomy.md を参照してください。
- 対象キーワードを Google で検索します(WebSearch)
- オーガニック検索結果の上位 10 件それぞれについて、以下を記録します。
- URL とドメイン権威性の区分(ブランド/ニッチ分野の権威/不明)
- ページの種類(分類体系を使って分類)
- コンテンツ形式(長文、リスト記事、ハウツー、比較、ツール、動画)
- 単語数の推定値(スニペットの長さとページ構成から)
- 使用されているスキーマの種類(評価、FAQ、HowTo などの SERP 機能から)
- メディアのシグナル(動画カルーセル、画像パック、サムネイルの有無)
- 表示されている SERP 機能を記録します。
- 強調スニペット(段落/リスト/表/動画)
- 他の人はこちらも質問(表示されている質問をすべて抽出)
- 広告(上部と下部の件数を数え、広告文のテーマを分析)
- 関連検索(すべて抽出)
- ナレッジパネル/ローカルパック/ショッピング結果
- AI Overview の有無とソースの種類
- SERP のコンセンサスを算出します。
- 優勢なページの種類(60% 超=強いコンセンサス、40~60%=混在、40% 未満=分散)
- コンテンツの深さに対する期待(平均単語数の区分)
- スキーマに対する期待(最も一般的な構造化データの種類)
- メディアに対する期待(動画が必須か、画像が重要か)
ステップ 3:ページタイプの不一致の検出
これは SXO の中核となる洞察です。対象ページのタイプを、SERP で多数を占めるタイプと比較します。
不一致の深刻度レベル:
| 対象のタイプ | SERP が期待するタイプ | 深刻度 | 推奨事項 |
|---|---|---|---|
| ブログ記事 | 商品ページ | 重大 | 専用の商品ページを作成する |
| ブログ記事 | 比較 | 高 | マトリクスを含む比較ページに再構成する |
| 商品 | 情報提供 | 高 | 教育コンテンツのレイヤーを追加する |
| ランディングページ | ツール/計算機 | 高 | インタラクティブなツールコンポーネントを作成する |
| サービスページ | ローカル検索結果 | 中 | 地域を示すシグナルとローカル向けスキーマを追加する |
| いずれかのタイプが一致 | - | 一致 | コンテンツの深さと UX に注力する |
分類ルール:
references/page-type-taxonomy.mdを使用して対象ページを分類する- 同じタクソノミーを使用して各 SERP 結果を分類する
- 対象のタイプが SERP で多数を占めるタイプと異なる場合、不一致としてマークする
- SERP にまとまりがない場合(多数を占めるタイプがない場合)、差別化の機会を記録する
ステップ 4:ユーザーストーリーの導出
完全なフレームワークについては、references/user-story-framework.md を参照してください。
SERP のシグナルから、ユーザーストーリーを導出します。
- PAA の質問から、知識の不足や懸念が明らかになります
- 広告コピーのテーマから、購買のきっかけや価値提案が明らかになります
- 関連検索から、検索の過程(その前後に何があるか)が明らかになります
- 強調スニペットの形式から、期待される回答の構成が明らかになります
- AI Overviewから、Google が決定的な回答と見なす内容が明らかになります
シグナルの各クラスターについて、ユーザーストーリーを作成します。
As a [persona derived from signal],
I want to [goal derived from query intent],
because [emotional driver from ad copy / PAA tone],
but I'm blocked by [barrier derived from PAA questions / related searches].
主要な検索意図を網羅するユーザーストーリーを 3~5 件作成します。
ステップ 5:ギャップ分析
SERP の期待に照らして、対象ページを 7 つの観点で比較します。
| 観点 | 比較する内容 | スコア |
|---|---|---|
| ページタイプ | 対象のタイプと SERP で多数を占めるタイプの比較 | 0-15 |
| コンテンツの深さ | 単語数、見出しの階層、トピックの網羅性 | 0-15 |
| UX シグナル | CTA の明確さ、ファーストビューのコンテンツ、モバイルレイアウト | 0-15 |
| スキーママークアップ | 期待される構造化データの種類が含まれているか | 0-15 |
| メディアの充実度 | 画像、動画、インタラクティブ要素と SERP の標準との比較 | 0-15 |
| 権威性のシグナル | E-E-A-T の指標、ソーシャルプルーフ、資格 | 0-15 |
| 鮮度 | 最終更新日、日付のシグナル、コンテンツの新しさ | 0-10 |
合計:SXO ギャップスコア 0~100(低いほどギャップが大きく、高いほど一致度が高い)
ステップ 6:ペルソナベースのスコアリング
方法については、references/persona-scoring.md を参照してください。
- SERP の検索意図シグナルから、4~7 個のペルソナを導出します。
- PAA の質問をテーマごとにグループ化する
- 広告コピーを対象ユーザーごとに分類する
- 関連検索を検索行動の段階に対応付ける
- 各ペルソナについて、4 つの観点(各 25 点)で対象ページを採点します。
- 関連性:ページはこのペルソナのニーズに応えていますか?
- 明確さ:このペルソナは 10 秒以内に回答を見つけられますか?
- 信頼性:このペルソナに十分な信頼のシグナルがありますか?
- 行動:このペルソナに明確な次のステップが示されていますか?
- スコアと具体的な改善提案を含むペルソナカードを出力します
- 最も弱いペルソナを先頭にして、提案を並べ替えます(最大の機会)
ステップ 7:ワイヤーフレームの生成(任意)
/seo sxo wireframe が呼び出された場合にのみ実行します。
テンプレートについては、references/wireframe-templates.md を参照してください。
- 解析したページ構造から IST(現状)のワイヤーフレームを生成します
- 以下に基づいて SOLL(目標状態)のワイヤーフレームを生成します。
- SERP で多数を占めるページタイプ
- ギャップ分析の結果
- ペルソナスコアリングで弱かった点
- 非常に具体的なプレースホルダーを使用します。
- 不可:「ここに CTA を追加」
- 可:「ヒーローの下に、年間割引バッジ付きの料金 CTA を追加し、/pricing#enterprise にリンクする」
- 注釈付きのセマンティック HTML セクション構成として出力します
DataForSEO との統合
DataForSEO MCP ツールが利用可能な場合:
- API を呼び出す前に必ず、コストを見積もり、ユーザーの確認を得てください
- 正確な SERP データ(順位、機能、スニペット)には
google_organic_serpを使用してください - 検索ボリュームと競合指標には
keyword_dataを使用してください - DataForSEO が利用できない場合は WebSearch に切り替え、出力の精度が低下することを明記してください
SXO スコアと SEO ヘルススコア
SXO スコアは、メインの SEO ヘルススコアとは別のスコアです。
- SEO ヘルススコア = 技術的な準拠状況(クロール可能性、速度、スキーマなど)
- SXO ギャップスコア = ページと SERP の期待値との整合性
- ページの SEO スコアが 95、SXO スコアが 30 になることもあります。つまり、技術的には完璧でも、戦略的には不整合です
- 両方のスコアを取得できる場合は、併せて報告してください
スキル間の参照
| 検出事項 | 引き継ぎ先 |
|---|---|
| ペルソナスコアリングにおける E-E-A-T のギャップ | 詳細な E-E-A-T 監査は /seo content |
| 不足しているスキーマタイプ | 生成は /seo schema |
| SERP で検出されたローカル検索意図 | GBP 分析は /seo local |
| コンテンツの深さに関するギャップ | 詳細なページ分析は /seo page |
| ページ取得時に見つかった技術的な問題 | 完全な監査は /seo technical |
| 画像/メディアのギャップ | 最適化は /seo images |
出力形式
SXO 分析の全容
## SXO Analysis: [URL]
### Target Keyword: [keyword]
### 1. SERP Landscape
- Dominant page type: [type] ([confidence]% consensus)
- SERP features: [list]
- Content depth norm: [word count range]
- Schema expectation: [types]
### 2. Page-Type Alignment
- Your page type: [type]
- SERP expects: [type]
- Verdict: [ALIGNED | MISMATCH (severity)]
- Impact: [explanation]
### 3. User Stories (derived from SERP signals)
[3-5 user stories with source signals]
### 4. Gap Analysis (SXO Score: XX/100)
[7-dimension breakdown table]
### 5. Persona Scores
[4-7 persona cards with 4-dimension scores]
### 6. Priority Actions
[Ranked list: fix mismatch first, then weakest persona gaps]
### 7. Limitations
[What could not be assessed, data source notes]
エラー処理
| エラー | 対応 |
|---|---|
| URL の取得に失敗 | エラーを報告し、URL にアクセスできるか確認するよう提案する |
| キーワードが指定されていない、または検出されない | 対象キーワードを指定するようユーザーに依頼する |
| WebSearch の結果が 5 件未満 | 利用可能なデータで進め、サンプルが限られていることを明記する |
| SERP にオーガニック検索結果がなく、すべて広告 | 商業性が非常に高い SERP であることを明記し、広告コピーのみを分析する |
| 対象ページが JavaScript でレンダリングされている | 制約を明記し、利用可能な HTML コンテンツを使用する |
| DataForSEO のコストがしきい値を超える | WebSearch に切り替え、ユーザーに通知する |
品質チェックリスト
結果を提出する前に、以下を確認してください。
- 対象 URL を、生の curl/fetch ではなく
scripts/fetch_page.py経由で取得した - ページタイプの分類に、参考資料の分類体系を使用した
- 5 件以上の SERP 結果を分析した
- ユーザーストーリーの根拠として、具体的な SERP シグナルを示した
- ペルソナスコアに、具体的な改善提案を含めた
- SXO スコアが SEO ヘルススコアとは別であることを明確に示した
- 制約事項のセクションを設け、正直に記載した
- 該当する場合、スキル間の推奨事項を含めた
共有データキャッシュへの書き込み
すべての作業を完了した後、ワークフローで長期的に活用できる知見が得られた場合は、簡潔な JSON サマリーを .seo-cache/ に書き込んでください。
../seo/references/shared-data-cache.md のスキーマと命名規則に従い、少なくとも cache_type、analyzed_at、ソース URL/ドメイン、主な検出事項、問題、推奨事項、ツールの制約を含めてください。.gitignore に .seo-cache/ がない場合は追加してください。