seo-technical について
seo-technicalは、クロールやインデックス、セキュリティ、URL、モバイル対応、パフォーマンス、構造化データ、JavaScriptレンダリングを調べる技術SEO監査スキルです。SEO担当者向けに課題を優先度順にまとめ、DataForSEOやGoogle APIのデータも任意で利用します。
主な機能
- 01技術SEOのカテゴリ別チェック
- 02AIクローラー向けrobots.txtの指針
- 03DataForSEOとGoogle APIの任意データ利用
- 04優先度付き監査レポートと共有キャッシュ
活用シーン
- 01クロールとインデックスの問題調査
- 02Core Web Vitalsとセキュリティの確認
- 03AIクローラーのアクセス規則の評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ agricidaniel/ codex-seo --skill seo-technicalインストール後、Claude Code で/seo-technicalを入力して読み込まれたか確認します。
同梱ファイルLICENSE.txt
詳細
テクニカル SEO 監査
共有データキャッシュ
ステップ 0 -- 共有データキャッシュを確認:
情報を収集する前に、関連する SEO スキルから再利用できるコンテキストが .seo-cache/ にあるか確認します。
スキーマと依存関係マップについては、../seo/references/shared-data-cache.md を参照してください。
以下のキャッシュファイルがある場合は確認します:
-
.seo-cache/site-meta.jsonで、ドメイン、ビジネスタイプ、業界、クロールのコンテキストを確認 -
.seo-cache/audit-scores.jsonで、以前の完全監査の優先項目を確認 -
URL が指定されている場合は、
.seo-cache/pages/{url-slug}/page-analysis.jsonでページ単位のコンテキストを確認 -
見つかった場合:明らかに有効なフィールドを解析して使用します(「[日付] の [X] をキャッシュから使用」と記録します)
-
見つからない、破損している、または関連性がない場合:新たな根拠を収集して続行します
-
ユーザーが「refresh」または「re-run」と指示した場合:キャッシュの読み取りを無視し、書き込み時に上書きします
カテゴリ
1. クロール可能性
- robots.txt:存在し、有効で、重要なリソースをブロックしていない
- XML サイトマップ:存在し、robots.txt で参照され、有効な形式である
- Noindex タグ:意図的な設定か、誤った設定かを確認
- クロール深度:重要なページがホームページから 3 クリック以内にある
- JavaScript のレンダリング:重要なコンテンツの表示に JS の実行が必要か確認
- クロールバジェット:大規模サイト(>10k ページ)では効率が重要
AI クローラーの管理
2025~2026 年現在、AI 企業はモデルのトレーニングや AI 検索の提供を目的に、積極的にウェブをクロールしています。robots.txt を使ってこれらのクローラーを管理することは、テクニカル SEO において重要な考慮事項です。
既知の AI クローラー:
| クローラー | 会社 | robots.txt トークン | 目的 |
|---|---|---|---|
| GPTBot | OpenAI | GPTBot | モデルのトレーニング |
| ChatGPT-User | OpenAI | ChatGPT-User | リアルタイムのブラウジング |
| ClaudeBot | Anthropic | ClaudeBot | モデルのトレーニング |
| PerplexityBot | Perplexity | PerplexityBot | 検索インデックス+トレーニング |
| Bytespider | ByteDance | Bytespider | モデルのトレーニング |
| Google-Extended | Google-Extended | Gemini のトレーニング(検索には使用されません) | |
| CCBot | Common Crawl | CCBot | オープンデータセット |
主な違い:
Google-Extendedをブロックすると Gemini のトレーニングへの利用は防げますが、Google 検索のインデックス登録や AI Overviews には影響しません(これらはGooglebotを使用します)GPTBotをブロックすると OpenAI のトレーニングへの利用は防げますが、ブラウジング(ChatGPT-User)を通じて ChatGPT がコンテンツを引用することは防げません- 現在、約 3~5% のウェブサイトが AI 専用の robots.txt ルールを使用しています
例:AI クローラーを選択的にブロックする場合:
# Allow search indexing, block AI training crawlers
User-agent: GPTBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: Bytespider
Disallow: /
# Allow all other crawlers (including Googlebot for search)
User-agent: *
Allow: /
推奨事項: ブロックする前に、AI における可視性戦略を検討してください。AI システムに引用されることで、ブランド認知度が高まり、参照トラフィックが増加します。AI 可視性の最適化について詳しくは、seo-geo スキルも参照してください。
2. インデックス登録可能性
- Canonical タグ:自己参照であり、noindex と競合していない
- 重複コンテンツ:類似ページ、パラメーター付き URL、www と non-www
- 内容の薄いコンテンツ:ページタイプごとの最低語数に満たないページ
- ページネーション:rel=next/prev または「さらに読み込む」パターン
- Hreflang:多言語/多地域サイトに対して正しく設定されている
- インデックスの肥大化:クロールバジェットを消費する不要なページ
3. セキュリティ
- HTTPS:強制され、有効な SSL 証明書があり、混在コンテンツがない
- セキュリティヘッダー:
- Content-Security-Policy (CSP)
- Strict-Transport-Security (HSTS)
- X-Frame-Options
- X-Content-Type-Options
- Referrer-Policy
- HSTS preload:セキュリティ要件の高いサイトでは、プリロードリストへの登録を確認
4. URL 構造
- クリーンな URL:内容が分かる説明的な URL で、ハイフン区切りとし、コンテンツにクエリパラメーターを使用しない
- 階層構造:サイトアーキテクチャを反映した論理的なフォルダー構造
- リダイレクト:チェーンがなく(最大 1 回の転送)、恒久的な移動には 301 を使用
- URL の長さ:100 文字を超えるものを指摘
- 末尾のスラッシュ:一貫して使用
5. モバイル最適化
- レスポンシブデザイン:viewport メタタグとレスポンシブ CSS
- タッチターゲット:最小 48x48px、間隔は 8px
- フォントサイズ:ベースサイズは最小 16px
- 水平方向のスクロールがない
- モバイルファーストインデックス:Google はモバイル版をインデックス登録します。モバイルファーストインデックスへの移行は 2024 年 7 月 5 日時点で 100% 完了しています。 Google は現在、すべてのウェブサイトをモバイル版 Googlebot のユーザーエージェントのみでクロールし、インデックス登録しています。
6. Core Web Vitals
- LCP (Largest Contentful Paint): 目標 <2.5s
- INP (Interaction to Next Paint): 目標 <200ms
- INP は 2024 年 3 月 12 日に FID を置き換えました。FID は 2024 年 9 月 9 日にすべての Chrome ツール(CrUX API、PageSpeed Insights、Lighthouse)から完全に削除されました。FID をどこでも参照しないでください。
- CLS (Cumulative Layout Shift): 目標 <0.1
- 評価には実ユーザーデータの 75 パーセンタイルを使用します
- MCP が利用可能な場合は、PageSpeed Insights API または CrUX データを使用してください
7. 構造化データ
- 検出: JSON-LD(推奨)、Microdata、RDFa
- Google がサポートする型に対する検証
- 完全な分析については seo-schema スキルを参照してください
8. JavaScript レンダリング
- コンテンツが初期 HTML で表示されるか、JS が必要かを確認する
- クライアントサイドレンダリング (CSR) とサーバーサイドレンダリング (SSR) を識別する
- インデックス登録の問題を引き起こす可能性がある SPA フレームワーク(React、Vue、Angular)にフラグを立てる
- 該当する場合は動的レンダリングの設定を検証する
JavaScript SEO: カノニカルとインデックス登録のガイダンス(2025 年 12 月)
Google は 2025 年 12 月に JavaScript SEO ドキュメントを更新し、重要な明確化を行いました:
- カノニカルの競合: 生の HTML 内のカノニカルタグが JavaScript によって挿入されたものと異なる場合、Google はいずれか一方を使用する可能性があります。サーバーレンダリングされた HTML と JS レンダリングされた出力でカノニカルタグが同一であることを確認してください。
- JavaScript による noindex: 生の HTML に
<meta name="robots" content="noindex">が含まれているが JavaScript がそれを削除する場合、Google は生の HTML の noindex を依然として尊重する可能性があります。初期 HTML レスポンスで正しい robots ディレクティブを配信してください。 - 非 200 ステータスコード: Google は、非 200 HTTP ステータスコードを返すページでは JavaScript をレンダリングしません。エラーページで JS 経由で挿入されたコンテンツやメタタグは、Googlebot からは見えません。
- JavaScript 内の構造化データ: JS 経由で挿入された Product、Article、その他の構造化データは、処理が遅延する可能性があります。時間に敏感な構造化データ(特に e コマースの Product マークアップ)については、初期のサーバーレンダリング HTML に含めてください。
ベストプラクティス: 重要な SEO 要素(カノニカル、meta robots、構造化データ、title、meta description)は、JavaScript の挿入に頼るのではなく、初期のサーバーレンダリング HTML で配信してください。
9. IndexNow プロトコル
- サイトが Bing、Yandex、Naver 向けの IndexNow をサポートしているか確認する
- Google 以外の検索エンジンでサポートされています
- Google 以外のエンジンでのインデックス登録を高速化するための実装を推奨します
出力
テクニカルスコア: XX/100
カテゴリ別内訳
| カテゴリ | ステータス | スコア |
|---|---|---|
| クロール可能性 | pass/warn/fail | XX/100 |
| インデックス可能性 | pass/warn/fail | XX/100 |
| セキュリティ | pass/warn/fail | XX/100 |
| URL 構造 | pass/warn/fail | XX/100 |
| モバイル | pass/warn/fail | XX/100 |
| Core Web Vitals | pass/warn/fail | XX/100 |
| 構造化データ | pass/warn/fail | XX/100 |
| JS レンダリング | pass/warn/fail | XX/100 |
| IndexNow | pass/warn/fail | XX/100 |
重大な問題(直ちに修正)
優先度: 高(1 週間以内に修正)
優先度: 中(1 か月以内に修正)
優先度: 低(バックログ)
DataForSEO 連携(オプション)
DataForSEO MCP ツールが利用可能な場合は、on_page_instant_pages を実際のページ分析(ステータスコード、ページタイミング、壊れたリンク、オンページチェック)に、on_page_lighthouse を Lighthouse 監査(パフォーマンス、アクセシビリティ、SEO スコア)に、domain_analytics_technologies_domain_technologies をテクノロジースタックの検出に使用してください。
Google API 連携(オプション)
Google API の認証情報が設定されている場合は、python scripts/pagespeed_check.py <url> --json を実際の PSI + CrUX フィールドデータ(ラボのみの CWV 推定値を置き換えます)に、python scripts/crux_history.py <url> --json を 25 週間の CWV トレンドに、python scripts/gsc_inspect.py <url> --json を URL ごとの実際のインデックス登録ステータスに使用してください。
エラー処理
| シナリオ | 対応 |
|---|---|
| URL に到達できない | ステータスコードとともに接続エラーを報告します。URL の確認、DNS 解決の確認、サイトが一般公開されていることの確認を提案します。 |
| robots.txt が見つからない | ルートドメインで robots.txt が検出されなかったことを記載します。適切なディレクティブを指定して作成することを推奨します。残りのカテゴリの監査は続行します。 |
| HTTPS が設定されていない | 重大な問題として報告します。リダイレクトなしで HTTP が提供されているか、混在コンテンツが存在するか、SSL 証明書がないか期限切れかを報告します。 |
| Core Web Vitals のデータを利用できない | CrUX データを利用できないことを記載します(トラフィックの少ないサイトではよくあります)。代替として Lighthouse のラボデータを使うことを提案し、再テストの前にトラフィックを増やすことを推奨します。 |
共有データキャッシュへの書き込み
すべての作業が完了したら、ワークフローで永続的な調査結果が得られた場合は、簡潔な JSON の概要を .seo-cache/ に書き込みます。
../seo/references/shared-data-cache.md のスキーマと命名規則を使用します。少なくとも cache_type、analyzed_at、ソース URL/ドメイン、主な調査結果、問題、推奨事項、ツールの制限事項を含めます。.seo-cache/ が .gitignore にない場合は追加します。