seo-technical について
seo-technicalは、クロールやインデックス、セキュリティ、パフォーマンスなどを確認するテクニカルSEO監査スキルです。Agent-UXスキャンでは、アクセシビリティツリーとHTMLの所見も報告します。
主な機能
- 01クロールとインデックスの監査
- 02セキュリティとURL構造の確認
- 03モバイル対応とCore Web Vitalsの確認
- 04構造化データとJavaScript SEOの検査
- 05PlaywrightによるAgent-UXスキャン
- 06所見を優先度別に整理
活用シーン
- 01公開前のサイト監査
- 02インデックスやクロール問題の調査
- 03エージェント向けアクセシビリティ信号の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ infrasity-labs/ dev-gtm-claude-skills --skill seo-technicalインストール後、Claude Code で/seo-technicalを入力して読み込まれたか確認します。
同梱ファイルreferences/agent-friendly-pages.md
詳細
テクニカル SEO 監査
カテゴリ
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 がコンテンツを引用することは防げません(ChatGPT-Userを使用します)- 現在、約 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 版と非 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 プリロード:セキュリティ要件の高いサイトでは、プリロードリストに含まれているかを確認
4. URL 構造
- クリーンな URL:内容がわかる表現で、ハイフンを使い、コンテンツ用 URL にクエリパラメーターを使わないこと
- 階層構造:サイトのアーキテクチャを反映した論理的なフォルダー構成
- リダイレクト:チェーンがなく(最大 1 ホップ)、恒久的な移転には 301 を使用
- URL の長さ:100 文字を超えるものを検出
- 末尾のスラッシュ:一貫して使用
5. モバイル最適化
- レスポンシブデザイン:viewport メタタグとレスポンシブ CSS
- タップ対象:最低 48x48px、8px の間隔を確保
- フォントサイズ:基本サイズを最低 16px にする
- 水平方向のスクロールがないこと
- モバイルファーストインデックス:Google はモバイル版をインデックスに登録します。**モバイルファーストインデックスは 2024 年 7 月 5 日に完全に導入されました。**現在、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 でコンテンツが表示されるか、JavaScript が必要かを確認します
- クライアントサイドレンダリング(CSR)かサーバーサイドレンダリング(SSR)かを特定します
- インデックス登録に問題を引き起こす可能性のある SPA フレームワーク(React、Vue、Angular)に注意します
- 該当する場合は、ダイナミックレンダリングの設定を確認します
JavaScript SEO:正規 URL とインデックス登録に関するガイダンス(2025 年 12 月)
Google は 2025 年 12 月に JavaScript SEO のドキュメントを更新し、重要な点を明確にしました。
- 正規 URL の競合: raw HTML 内の canonical タグと JavaScript によって挿入された canonical タグが異なる場合、Google はどちらか一方を使用する可能性があります。サーバーでレンダリングされた HTML と JS でレンダリングされた出力の間で、canonical タグが同一になるようにしてください。
- JavaScript と noindex: raw HTML に
<meta name="robots" content="noindex">が含まれていて、JavaScript がそれを削除した場合でも、Google は raw HTML の noindex を尊重する可能性があります。初期 HTML レスポンスで正しい robots ディレクティブを配信してください。 - 200 以外のステータスコード: Google は、200 以外の HTTP ステータスコードを返すページでは JavaScript をレンダリングしません。エラーページで JS によって挿入されたコンテンツやメタタグは、Googlebot から見えません。
- JavaScript 内の構造化データ: JS によって挿入された Product、Article、その他の構造化データは、処理が遅れる可能性があります。時間的制約のある構造化データ(特に E コマースの Product マークアップ)は、初期のサーバー側レンダリング HTML に含めてください。
ベストプラクティス: JavaScript による挿入に頼るのではなく、重要な SEO 要素(canonical、meta robots、構造化データ、title、meta description)を初期のサーバー側レンダリング HTML で配信してください。
9. IndexNow プロトコル
- Bing、Yandex、Naver 向けに、サイトが IndexNow に対応しているか確認します
- Google 以外の検索エンジンがサポートしています
- Google 以外の検索エンジンでより速くインデックス登録するため、実装を推奨します
エージェントに適したページ(今後に向けて)
AI エージェント(AI 要約ツールだけではありません)は、スクリーンショットを用いる
視覚モデル、raw HTML/DOM、そして最も明確なシグナルである
アクセシビリティツリーの 3 つの経路で、サイトを読むことが増えています。監査基準 — セマンティック HTML(<div onclick> ではなく、実際の <button>
と <a>)、ラベルの関連付け、インタラクティブなターゲットのサイズ、
テンプレート間でのレイアウトの安定性、cursor: pointer の適切な使用 — は
references/agent-friendly-pages.md に記載されています。
監査コマンド
# Render with Playwright + capture accessibility tree, then score
python scripts/agent_ux_check.py https://example.com --json
スキャナーは Agent-UX スコア(0~100)と項目別の問題を出力します。
- HTML の検出結果:実際のボタン/アンカー、
<div onclick>ウィジェット、セマンティックなランドマーク、<label for>のない入力欄、ARIA ラベルのない入力欄 - アクセシビリティツリーの検出結果:ノードの総数、インタラクティブなノード数、名前のないインタラクティブ要素、
role="generic"の割合
アクセシビリティツリーのスナップショットには、
page.accessibility.snapshot(interesting_only=False) を使用します。採点せずにツリーを
取得するには、python scripts/render_page.py <url> --a11y-tree --json を使用します。
検出結果は失敗ではなく、改善の機会として提示してください。基準(WebMCP、 エージェント UX のヒューリスティック)はまだ初期段階です。スコアが 100 未満だからといって監査を不合格にしないでください。
出力
技術スコア:XX/100
カテゴリ別の内訳
| カテゴリ | ステータス | スコア |
|---|---|---|
| クロール可能性 | 合格/警告/失敗 | XX/100 |
| インデックス登録可能性 | 合格/警告/失敗 | XX/100 |
| セキュリティ | 合格/警告/失敗 | XX/100 |
| URL 構造 | 合格/警告/失敗 | XX/100 |
| モバイル | 合格/警告/失敗 | XX/100 |
| Core Web Vitals | 合格/警告/失敗 | XX/100 |
| 構造化データ | 合格/警告/失敗 | XX/100 |
| JS レンダリング | 合格/警告/失敗 | XX/100 |
| IndexNow | 合格/警告/失敗 | XX/100 |
重大な問題(直ちに修正)
優先度:高(1 週間以内に修正)
優先度:中(1 か月以内に修正)
優先度:低(バックログ)
DataForSEO との統合(任意)
DataForSEO MCP ツールを利用できる場合は、実際のページ分析(ステータスコード、ページ表示時間、リンク切れ、ページ上のチェック)に on_page_instant_pages を、Lighthouse 監査(パフォーマンス、アクセシビリティ、SEO スコア)に on_page_lighthouse を、テクノロジースタックの検出に 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 のラボデータを使用し、再テストの前にトラフィックを増やすことを推奨します。 |