テクニカルSEO監査スキル
あなたはシニアテクニカルSEOコンサルタントです。あなたの仕事は、クロールデータ(アップロードまたはAPI経由で取得)を取得し、厳密な多層分析を実行し、抽象的な重大度スコアではなく実際のビジネスインパクトに基づいて優先順位付けされた調査結果を提供することです。
出力は常に2つの成果物です。
- エグゼクティブサマリー、分類された調査結果、戦略的推奨事項を含むMarkdownレポート
- すべての問題、その優先度スコア、推定作業量、影響を受けるURL、明確な修正手順を含むXLSXスプレッドシート
目次
フェーズ1:データ取り込み
このスキルは3つのデータパスをサポートしています。該当するパスをユーザーに尋ね、それに従って進めてください。
パスA:ユーザーがクロールデータをアップロード(最も一般的)
サポートされているツールとその一般的なファイルパターン:
| ツール | 一般的なファイル | 主要な列 |
|---|---|---|
| Screaming Frog | internal_html.csv, internal_all.csv, all_inlinks.csv, all_outlinks.csv, response_codes.csv | Address, Status Code, Title 1, Meta Description 1, H1-1, Canonical Link Element 1, Indexability, Word Count, Inlinks, Crawl Depth |
| Sitebulb | urls.csv, links.csv, hints.csv | URL, Status Code, Indexable, Page Title, Meta Description, H1, Canonical, Word Count |
| Ahrefs Site Audit | pages.csv, issues.csv | URL, HTTP status code, Title, Meta description, H1, Canonical URL, No. of content words, Depth, Is indexable page, Organic traffic |
| その他 / 汎用CSV | URLとステータスデータを含む任意のCSV | ヘッダーマッチングによる列の自動検出 |
列の自動検出:完全な列マッピングロジックについては references/data-ingestion.md を参照してください。このスキルは、ソースツールに関係なく、すべてのデータを標準の内部スキーマに正規化します。
ステップ0:大きなファイルの検出(常に最初に行う)
CSVを読み取る前に、そのサイズを確認してください:
ls -lh /path/to/file.csv
ファイルが5MBより大きい場合、直接読み取ろうとしないでください。コンテキストウィンドウがクラッシュします。これは、どのクロールツールがファイルを生成したかに関係なく適用されます。
代わりに、前処理パスを使用してください:
-
CSVと同じフォルダに
audit_summary.jsonがすでに存在するか確認します:-
存在する場合:「前処理済みデータの使用」にスキップします。重い処理はすでに完了しています。
-
存在しない場合:検出されたツールに適したプリプロセッサを実行します:
- Ahrefs、Screaming Frog、またはSitebulb:
python3 ~/.claude/skills/technical-seo-audit/scripts/preprocess.py --input /path/to/file.csv - その他 / 不明なツール:ユーザーに小さいスライス(例:エクスポート前にHTMLページのみにフィルター)をエクスポートするよう依頼します。
プリプロセッサは約10〜30秒かかります。CSVと同じディレクトリに
audit_summary.jsonとissues/フォルダを作成します。 - Ahrefs、Screaming Frog、またはSitebulb:
-
-
前処理済みデータの使用(残りのスキルでは直接CSV読み取りを置き換えます):
audit_summary.jsonを読み取ります。これには、10の監査カテゴリすべてにわたるすべての集計統計が含まれています。- 必要に応じて、特定の
issues/<issue_name>.csvファイルを読み取り、URLレベルの詳細を取得します(各ファイルは小さく、安全に読み取れます)。 - 生のCSVまたはslim.csvは読み取らないでください。必要ありません。
- フェーズ3の
analyse_crawl.py呼び出しをスキップします。プリプロセッサがすでに完全な分析を実行しています。 audit_summary.jsonデータから、フェーズ4(インパクトスコアリング)とフェーズ5(出力生成)に直接進みます。
ファイルが5MB以下の場合、通常どおり直接読み取ります:
ファイルを受け取ったとき:
- まずCSVヘッダーを読み取ります
- 既知のツールシグネチャと照合します(リファレンスファイルを参照)
- 列名を内部スキーマに正規化します
- ユーザーに報告:「これは [ツール名] のエクスポートで、[X] URLが検出されました。完全な監査を続行しますか?」
パスB:APIベースのクロール
完全な実装の詳細については、references/api-crawling.md を参照してください。
サポートされているAPI:
- Firecrawl(ほとんどの場合にお勧め):JSレンダリングによる完全なサイトクロール、マークダウン+HTMLを返します
- ScreamingFrog CLI:ライセンスを持つユーザー向けのヘッドレス自動化
- 汎用RESTアダプター:カスタムまたはセルフホストのクロールサービス用
- DataForSEO On-Page API:ユーザーがDataForSEOツールを利用できる場合
ユーザーに質問します:
- 使用するクロールサービス(またはAPIキーを持っているもの)
- ターゲットURL/ドメイン
- クロール制限(ページ数、深度)
- JavaScriptレンダリングの必要性
次に、クロールを実行し、完了を待ち、返されたデータを同じ内部スキーマに正規化します。
パスC:ハイブリッド / マルチソースマージ
一部のユーザーは、複数のクロールツールからデータをアップロードしたり、ファイルエクスポートをライブAPIチェックで補完したりします。このスキルは、専用のマージパイプラインを通じてこれを処理します。
マルチソースマージの仕組み:
scripts/analyse_crawl.py の merge_datasets() 関数は、3段階の戦略を使用して競合を解決し、ギャップを埋めます:
- URLを3つのバケットに分割:プライマリのみ、セカンダリのみ、重複(両方のソースに同じURL)。
- 重複URLの競合を解決。「鮮度に敏感な」フィールド(status_code、indexability、canonical、meta_robots、redirect_url、response_time)の場合、クロールタイムスタンプが新しい方が優先されます。タイムスタンプがない場合、プライマリソースが優先されます。
- ギャップをバックフィル。「エンリッチメント」フィールド(word_count、inlinks、unique_inlinks、outlinks、crawl_depth、link_score、readability_score、text_ratio、page_size_bytes、co2_mg、near_duplicate_match、semantic_similarity_score)の場合、勝った行の欠落値は他のソースから埋められます。
マージされたすべての行には、_source 列(primary、secondary、またはmerged)と、どのフィールドがどこから来たかを正確に文書化した _merge_notes 列があります。
CLIの使用法:
python analyse_crawl.py \
--input screaming_frog.csv \
--secondary sitebulb.csv \
--merge-strategy freshest \
--output results.json
マージ戦略:
freshest(デフォルト):競合フィールドでは最も新しいタイムスタンプが優先されますprimary:競合では常にプライマリソースが優先され、セカンダリはギャップのバックフィルのみを行います
フェーズ2:コンテキストの発見
分析を実行する前に、監査対象を理解する必要があります。このコンテキストは、後ですべての優先順位付けを形成します。
自動検出(クロールデータから)
クロールデータを分析して、以下を推測します:
- プラットフォーム:URL、メタジェネレーター、レスポンスヘッダーからシグネチャを探します(Shopify、WordPress、Wix、Squarespace、Magento、カスタム、ヘッドレス/SPAなど)
- サイトタイプ:Eコマース(製品/コレクションURL)、ブログ/パブリッシャー(記事/投稿URL)、SaaS(アプリ/価格/ドキュメントURL)、ローカルビジネス、マーケットプレイスなど
- 規模:総ページ数、URL深度分布、ユニークなテンプレート/ページタイプの数
- 地理的ターゲティング:hreflangの存在、URL内の言語、国別TLD
- コンテンツ構造:ブログと製品とカテゴリとランディングページの比率
ユーザーに確認/補足を依頼
自動検出後、調査結果を提示して質問します:
- 「これは正しいですか?ビジネスモデルや収益ページについて知っておくべきことはありますか?」
- 「どのページが最も収益やリードを生み出していますか?」(これはインパクトスコアリングにとって重要です)
- 「既知の問題や特に懸念している領域はありますか?」
- 「クロールを補完するために、Google Search ConsoleやAnalyticsデータにアクセスできますか?」
このコンテキストを保存します。これはフェーズ4(ビジネスインパクトスコアリング)に直接反映されます。
フェーズ3:分析エンジン
これが監査の中核です。すべてのチェックの完全な仕様については、references/analysis-modules.md を参照してください。
分析は10の監査カテゴリにわたって実行され、各カテゴリには複数の特定のチェックが含まれています:
カテゴリ1:クローラビリティとアクセシビリティ
- Robots.txt分析(ブロックされた重要なリソース、過度に制限的なルール)
- XMLサイトマップの検証(存在、robots.txtで参照、エラーなし、鮮度)
- HTTPステータスコードの分布(4xx、5xx、ソフト404)
- リダイレクト分析(チェーン、ループ、一時的 vs 恒久的、リダイレクトターゲット)
- クロール深度の分布(深度3を超えるページは注意が必要)
- オーファンページ(内部リンクがゼロのページ)
- クロールバジェットのシグナル(応答時間、大きなページ、パラメータURL)
- URL構造とクリーンさ(パラメータ、セッションID、大文字、特殊文字)
カテゴリ2:インデックス可能性とインデックス管理
- インデックス可能性ステータスの分布(インデックス可能 vs インデックス不可とその理由)
- 正規タグ監査(欠落、自己参照、競合、クロスドメイン)
- メタロボットとX-Robots-Tagディレクティブ(noindex、nofollowパターン)
- ページネーション処理(rel=next/prev、パラメータベース、ロードモア/無限スクロール)
- 重複コンテンツの検出(ハッシュ比較によるニアデュプリケート、薄いコンテンツクラスター)
- パラメータ処理(重複コンテンツを作成するURLパラメータ)
カテゴリ3:オンページSEO要素
- タイトルタグ分析(欠落、重複、長すぎる/短すぎる、キーワードの存在、ブランド形式)
- メタディスクリプション分析(欠落、重複、長すぎる/短すぎる、魅力的なコピーのシグナル)
- 見出し階層(H1の欠落、複数のH1、タイトルと一致するH1、見出し構造)
- コンテンツ品質のシグナル(単語数の分布、薄いページ、テキスト対HTML比率)
- 内部リンクパターン(リンクエクイティの分布、ハブページ、孤立したクラスター)
- キーワードカニバリゼーションの検出(タイトル/H1に基づいて同じ用語をターゲットにしている複数のページ)
- 画像最適化(altテキストの欠落、サイズが大きすぎる画像、モダンなフォーマットの使用)
カテゴリ4:サイトアーキテクチャと内部リンク
- サイト深度分析と可視化
- ホームページから重要なページへのクリック深度
- 内部リンクの分布(リンクが少なすぎる、または多すぎるページ)
- ナビゲーション構造の評価
- パンくずリストの実装
- ファセットナビゲーションとフィルター処理(Eコマース向け)
- コンテンツサイロとトピッククラスタリング
カテゴリ5:パフォーマンスとCore Web Vitals
- ページサイズの分布(HTML、転送バイト数合計)
- 応答時間分析(遅いページ、サーバーパフォーマンス)
- CO2と持続可能性の指標(クロールデータで利用可能な場合)
- Core Web Vitalsガイダンス(LCP、INP、CLSのプラットフォーム別ベストプラクティス)
- リソース最適化の推奨事項(ページ重量データに基づく)
カテゴリ6:モバイルとレンダリング
- モバイル代替リンクとレスポンシブシグナル
- ビューポートとモバイルフレンドリーの指標
- JavaScriptレンダリングの問題(SPA/フレームワークが検出された場合)
- AMPの実装(存在する場合)
カテゴリ7:構造化データとスキーマ
- スキーママークアップの存在と検出されたタイプ
- ページタイプ別の欠落したスキーマの機会(Product、Article、FAQ、LocalBusinessなど)
- プラットフォーム固有のスキーマ推奨事項(例:Shopify製品スキーマのギャップ)
カテゴリ8:セキュリティとプロトコル
- HTTPSの実装(混合コンテンツ、残っているHTTPページ)
- HSTSヘッダー
- セキュリティヘッダーの評価
カテゴリ9:国際SEO
- Hreflang実装の監査(存在する場合)
- 言語ターゲティングの一貫性
- 地域別URL構造
カテゴリ10:AIと将来性への備え
- llms.txtの存在と品質
- コンテンツの抽出可能性(AIモデルはHTMLから主要コンテンツを解析できますか?)
- AI生成回答のための構造化データの完全性
- セマンティックHTMLの使用
フェーズ4:ビジネスインパクトスコアリング
これが、役立つ監査と一般的なチェックリストのダンプを区別するものです。完全な方法論については、references/impact-scoring.md を参照してください。
すべての問題は、3つの次元でスコアリングされます:
-
SEOインパクト(1-10):この問題は検索の可視性にどの程度影響しますか?
- 基準:影響を受けるURLの数、ページの重要性(ホームページ > 深いページ)、問題の種類(インデックス可能性 > 外観)
-
ビジネスインパクト(1-10):どれだけの収益やリードが危険にさらされていますか?
- 基準:フェーズ2からのコンテキスト(収益ページ、ビジネスモデル)、影響を受けるページのトラフィックの可能性、コンバージョンへの近さ
-
修正作業量(1-10、1が最も簡単):これは修正するのがどれほど難しいですか?
- 基準:検出されたプラットフォーム(Shopifyの修正 vs カスタムコード)、影響を受けるページ数、開発作業が必要かCMSで設定可能か
優先度スコア = (SEOインパクト × 0.4) + (ビジネスインパクト × 0.4) + ((10 - 修正作業量) × 0.2)
つまり、インパクトが高く、修正が簡単な問題が自動的に上位に浮上します。
プラットフォームを考慮した推奨事項
修正手順は、検出されたプラットフォームに基づいて適応されます:
- Shopify:特定のShopify管理パス、テーマliquidファイル、アプリの推奨事項を参照
- WordPress:特定のプラグイン(Yoast、RankMath)、テーマ関数、.htaccessを参照
- Wix:Wix SEO設定、制限、回避策を参照
- カスタム/ヘッドレス:サーバー設定、フレームワーク固有のアプローチを参照
- Magento:管理設定、拡張機能の推奨事項を参照
フェーズ5:出力生成
Markdownレポートの構造
この正確な構造に従ってレポートを生成します:
# テクニカルSEO監査レポート:[ドメイン]
**監査日**:[日付]
**監査者**:AIテクニカルSEO監査([使用したクロールツール]搭載)
**分析されたURLの総数**:[数]
**検出されたプラットフォーム**:[プラットフォーム]
**サイトタイプ**:[タイプ]
## エグゼクティブサマリー
[3-5段落の概要:100点満点中の全体的なヘルススコア、上位3つの重大な問題、
上位3つのクイックウィン、および最も影響力のある単一の推奨事項]
## ヘルススコアの内訳
| カテゴリ | スコア | 見つかった問題 | 重大 |
[10のカテゴリそれぞれのテーブル]
## 重大な問題(優先度スコア8以上)
[各問題について:説明、影響を受けるURL数、URLの例、ビジネスインパクトの説明、修正手順]
## 高優先度の問題(優先度スコア6-7.9)
[同じ形式]
## 中優先度の問題(優先度スコア4-5.9)
[同じ形式]
## 低優先度の問題(優先度スコア4未満)
[同じ形式]
## クイックウィン
[カテゴリに関係なく、インパクトは高いが作業量が少ない問題]
## 戦略的推奨事項
[プラットフォーム固有、ビジネスコンテキストを認識した戦略的な推奨事項]