mcpField
S
seo-review

seo-review

github.com/shiplightaiマーケティング・グロース2416 回インストール16 週間前に更新
リポジトリ

seo-review について

seo-reviewは、WebサイトのテクニカルSEOと発見されやすさを評価するスキルです。公開サイトの立ち上げや更新を行うチーム向けに、ブラウザーでメタデータ、構造化データ、クロール性、ソーシャル共有などを確認し、修正案とYAML回帰テストを提示します。

主な機能

  1. 01メタデータとhead要素の確認
  2. 02構造化データとソーシャルタグの検証
  3. 03クロール性、インデックス、内部リンクの確認
  4. 04セマンティックHTMLとテクニカルSEOの検査
  5. 05指摘事項、修正案、YAML回帰テストの作成

活用シーン

  1. 01公開サイトの立ち上げ前にSEOを確認
  2. 02リニューアルや移行後の発見性を確認
  3. 03SPAのレンダリングとクローラー表示を評価

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/shiplightai/agent-skills --skill seo-review

インストール後、Claude Code で/seo-reviewを入力して読み込まれたか確認します。

詳細

SEO レビュー

アプリケーションの検索エンジン最適化と見つけやすさを評価します。このレビューでは、通常の開発中には見えにくい SEO の問題を検出します。メタタグの不足、構造化データの不備、クロールされにくい状態、サイトマップの欠如、ソーシャル共有の問題などです。多くの SPA は、SEO をまったく考慮せずに公開されています。

使用するタイミング

次の場合に /seo-review を使用します。

  • 一般公開するウェブサイトやアプリケーションの公開前
  • ウェブサイトの再設計や移行の後
  • オーガニックトラフィックが成長のチャネルである場合
  • SPA フレームワーク(React、Vue、Angular)への切り替え後
  • ソーシャル共有(Open Graph)が重要な場合
  • コンテンツマーケティングのページを設定する場合

参照する標準

  • Google Search Central — SEO のベストプラクティスとガイドライン
  • Schema.org — 構造化データの語彙
  • Open Graph Protocol — ソーシャル共有用のメタタグ
  • Twitter Card — Twitter 共有用のマークアップ
  • W3C Semantic HTML — アクセシビリティと SEO のセマンティクス
  • Web.dev SEO Guidelines — Google の SEO 推奨事項

フェーズの概要

Phase 1: EDUCATE   → Why SEO matters and what we check
Phase 2: SCOPE     → Identify key pages, content types, SEO goals
Phase 3: ANALYZE   → Browser-based SEO validation
Phase 4: REPORT    → Findings with impact assessment and priority
Phase 5: REMEDIATE → Fix guidance + YAML regression tests

フェーズ 1:理解

重要な理由: ウェブサイトのトラフィック全体の 53% はオーガニック検索から発生しています(BrightEdge)。Google 検索結果の 1 位は全クリック数の 27.6% を獲得し、10 位は 2.4% です(Backlinko)。SPA はクローラーに空の HTML を返すことが多く、何百万ものページが検索対象から見えなくなります。適切な SEO に小手先の手法は不要です。検索エンジンがコンテンツを発見し、理解できるようにすることが重要です。

このレビューでは、技術的な SEO の基盤、つまりコンテンツ戦略が重要になる前に正しく整えておくべき項目を確認します。


フェーズ 2:範囲の設定

コンテキストを収集する
  1. コードベースから自動検出する項目:

    • フレームワークとレンダリング方式(SSR、SSG、CSR、ISR)
    • メタタグの管理方法(react-helmet、next/head、vue-meta など)
    • サイトマップの生成
    • robots.txt の設定
    • 構造化データ(JSON-LD、microdata)
    • i18n/hreflang の設定
    • canonical URL の処理
    • ルート構造とページの種類
  2. ユーザーに確認する項目(一度に 1 つずつ):

    • 対象 URL:アプリはどこで稼働していますか?(実際のクロールに近づけるため、本番環境を推奨)
    • 重要なページ:検索で特に重要なページはどれですか?(ホームページ、製品ページ、ブログ記事、ランディングページ)
    • 対象キーワード:上位表示を目指す主要なキーワードはありますか?(任意。コンテンツの評価に使用)
    • ソーシャル共有の重要性:Open Graph/Twitter Cards は必要ですか?(デフォルトでは、一般公開サイトに必要です)
    • 多言語対応:サイトは複数の言語に対応していますか?(自動検出)
  3. ページの種類を特定する:

    • ホームページ
    • コンテンツページ(ブログ、ドキュメント、概要)
    • 製品/一覧ページ
    • 動的ページ(検索結果、ユーザープロフィール)
    • ユーティリティページ(ログイン、404、利用規約)

フェーズ 3:分析

record_evidence: true を指定して new_session でブラウザーセッションを開始します。重要な各ページで、すべてのチェックカテゴリを実行します。

カテゴリ A:メタタグとヘッド要素(META)
チェック IDチェック項目標準方法
META-01固有で内容を適切に表す <title>(50~60 文字)Google ガイドライン<title> を抽出し、長さと固有性を確認
META-02メタディスクリプションが設定されている(120~160 文字)Google ガイドライン<meta name="description"> を確認
META-03正規 URL が正しく設定されているGoogle ガイドライン<link rel="canonical"> を確認
META-04viewport メタタグが設定されているモバイル SEO<meta name="viewport"> を確認
META-05文字セットが宣言されているHTML 標準<meta charset> を確認
META-06メタタグが重複していないSEO のベストプラクティスタイトルとディスクリプションの重複を確認
META-07ファビコンが設定されているブランディング/SEO<link rel="icon"> を確認
META-08言語が宣言されているSEO/アクセシビリティ<html lang=""> を確認
META-09重要なページに meta robots noindex が設定されていないインデックス登録<meta name="robots"> を確認
META-10多言語対応の場合、hreflang タグが設定されている国際 SEO<link rel="alternate" hreflang=""> を確認

ブラウザーでの検証: inspect_page を使って DOM を読み取ります。JavaScript ですべての <head> 要素を抽出します。

カテゴリ B:構造化データ(SCHEMA)
チェック IDチェック項目標準方法
SCHEMA-01JSON-LD 構造化データが設定されているSchema.org<script type="application/ld+json"> を確認
SCHEMA-02スキーマのタイプがページの内容と一致しているSchema.orgタイプ(Organization、Product、Article など)を検証
SCHEMA-03必須プロパティが設定されているSchema.orgタイプの要件に照らして検証
SCHEMA-04JSON-LD が有効な JSON であるSchema.orgJSON を解析して検証
SCHEMA-05廃止されたスキーマプロパティがないSchema.org廃止されたフィールドを確認
SCHEMA-06パンくずリストの構造化データが設定されているSchema.org内部ページに BreadcrumbList があるか確認
SCHEMA-07FAQ の構造化データが設定されている(該当する場合)Schema.orgFAQ セクションに FAQPage があるか確認
SCHEMA-08レビュー/評価の構造化データが設定されている(該当する場合)Schema.orgAggregateRating を確認

ブラウザーでの検証: JavaScript ですべての JSON-LD スクリプトを抽出します。構造を解析して検証します。ページの内容とスキーマの記述を照合します。

カテゴリ C:Open Graph とソーシャル共有(OG)
チェック IDチェック項目標準方法
OG-01og:title が設定され、内容を適切に表しているOpen Graph<meta property="og:title"> を確認
OG-02og:description が設定されているOpen Graph<meta property="og:description"> を確認
OG-03og:image が設定され、アクセス可能であるOpen Graph<meta property="og:image"> を確認し、URL が読み込めることを検証
OG-04og:image のサイズが十分である(1200x630 を推奨)Open Graph画像サイズを確認
OG-05og:url が正規 URL と一致しているOpen Graphog:url と正規 URL を比較
OG-06og:type が正しく設定されているOpen Graphog:type の値を確認
OG-07Twitter カードのメタタグが設定されているTwitter Cardstwitter:card、twitter:title などを確認
OG-08ソーシャル共有のプレビューが正しく表示されるUXOG タグからプレビューを構成

ブラウザーでの検証: すべての OG タグと Twitter のメタタグを抽出します。og:image の URL にアクセスできることを確認します。プレビューを構成します。

カテゴリ D:クロール可能性とインデックス登録(CRAWL)
チェック IDチェック項目標準方法
CRAWL-01robots.txt が存在し、有効であるGoogle のガイドライン/robots.txt を取得
CRAWL-02Sitemap.xml が存在し、有効であるGoogle のガイドライン/sitemap.xml を取得し、形式を検証
CRAWL-03robots.txt でサイトマップが参照されているベストプラクティスrobots.txt に Sitemap ディレクティブがあるか確認
CRAWL-04重要なページがサイトマップに含まれているSEO主要ページとサイトマップの URL を照合
CRAWL-05内部リンクにリンク切れがないクロール可能性主要ページにあるすべての内部リンクを確認
CRAWL-06リダイレクトチェーンがない(2 ホップ超)クロール効率リダイレクトをたどり、ホップ数を数える
CRAWL-07URL 構造が簡潔である(過剰なパラメーターがない)SEOURL パターンの簡潔さを確認
CRAWL-08404 ページが正しい HTTP ステータスを返すSEO存在しない URL にアクセスし、ステータスを確認
CRAWL-09孤立したページがない(ナビゲーションからアクセス可能)クロール可能性主要ページがホームページ/ナビゲーションからリンクされていることを確認
CRAWL-10JavaScript がなくても SSR/SSG コンテンツが表示されるSPA SEOJS を無効にし、コンテンツがレンダリングされるか確認
CRAWL-11クローラー向けのページ読み込み時間クロールバジェットサーバーの応答時間を測定

ブラウザーでの検証: robots.txt と sitemap.xml にアクセスします。内部リンクをたどります。JavaScript を無効にして、サーバー側でレンダリングされたコンテンツをテストします。HTTP ステータスコードを確認します。

カテゴリ E:セマンティック HTML とコンテンツ(SEM)
チェック IDチェック項目標準方法
SEM-01ページごとに <h1> が 1 つだけあるSEO のベストプラクティスh1 要素の数を数える
SEM-02見出しの階層が論理的である(h1→h2→h3)SEO/a11y見出しの順序を確認
SEM-03画像に内容を説明する alt テキストがあるSEO/a11yalt 属性が内容を適切に説明しているか確認
SEM-04内部リンクに内容がわかるアンカーテキストを使用しているSEOリンクに「ここをクリック」や URL のみのテキストが使われていないか確認
SEM-05セマンティック HTML 要素(nav、main、article、section)が使用されているSEOセマンティックなランドマークがあるか確認
SEM-06コンテンツと HTML の比率が適切であるSEOテキストコンテンツと HTML マークアップを比較して算出
SEM-07ページ間でコンテンツが重複していないSEOページ間の主要なコンテンツセクションを比較
SEM-08URL が人間にとって読みやすいSEO説明的なスラッグか、ID/ハッシュかを確認

ブラウザーでの検証: JavaScript を使って見出し、リンク、画像、セマンティック要素を抽出します。コンテンツの構造を分析します。

カテゴリ F:テクニカル SEO(TECH)
チェック IDチェック項目標準方法
TECH-01すべてのページで HTTPS を使用しているGoogle のランキングシグナルプロトコルを確認
TECH-02HTTP → HTTPS のリダイレクトが機能するSEOHTTP URL のリダイレクトをテスト
TECH-03www → 非 www(またはその逆)のリダイレクトに一貫性があるSEO両方の URL をテスト
TECH-04モバイルフレンドリーである(レスポンシブ)Google のモバイルファーストviewport とレスポンシブ動作を確認
TECH-05Core Web Vitals が「Good」のしきい値を満たしているGoogle のランキングシグナルLCP、INP、CLS を測定
TECH-06レンダリングをブロックするリソースがないページ速度スクリプト/スタイルの読み込みを確認
TECH-07移動したコンテンツに適切な 301 リダイレクトが設定されているSEO該当する場合、既知の古い URL を確認
TECH-08国際ターゲティングが正しい(複数地域に対応している場合)国際 SEOhreflang と地域ターゲティングを確認

ブラウザーでの検証: リダイレクトをテストし、パフォーマンス指標を測定して、モバイルでの表示を確認します。


フェーズ 4:レポート

shiplight/reports/seo-review-{date}.md に保存する、構造化されたレポートを生成します。

# SEO Review Report
**Date:** {date}
**URL:** {url}
**Pages reviewed:** {list}
**Rendering:** {SSR/SSG/CSR/ISR}

## Overall Score: {X}/10 | Confidence: {X}%

## Score Breakdown
| Category | Score | Findings |
|----------|-------|----------|
| Meta Tags (META) | 7/10 | 1 high, 2 medium |
| Structured Data (SCHEMA) | 4/10 | 1 critical, 1 high |
| Social Sharing (OG) | 6/10 | 2 high |
| Crawlability (CRAWL) | 5/10 | 1 critical, 1 high |
| Semantic HTML (SEM) | 8/10 | 1 medium |
| Technical SEO (TECH) | 7/10 | 1 high |

## Page-by-Page Summary
| Page | Title | Description | OG Image | Schema | H1 | Score |
|------|-------|-------------|----------|--------|----|-------|
| / | ✅ | ✅ | ❌ missing | ❌ none | ✅ | 6/10 |
| /blog | ✅ | ⚠️ too short | ✅ | ✅ Article | ✅ | 8/10 |

## Findings
(structured findings with evidence and impact)
信頼度スコア
  • 90-100%:ブラウザーで検証済み — タグの有無、URL のアクセス可否
  • 70-89%:コンテンツ分析から問題が示唆される(例:内容の薄いコンテンツ、一般的すぎる alt テキスト)
  • 50-69%:明確な違反はないものの、ベストプラクティスを推奨
  • 50% 未満:報告しない

フェーズ 5:修正

1. 修正ガイダンス(例)
#### CRAWL-10: Content not visible without JavaScript
**Impact:** Search engines may not index your content (especially Google Discover, Bing, social crawlers)
**Current:** Client-side rendered React app, empty HTML shell
**Fix:** Implement SSR or SSG:
- Next.js: Use `getServerSideProps` or `getStaticProps`
- Nuxt: Default SSR mode
- Gatsby: Static generation
- Or: Add prerendering service (prerender.io, rendertron)
**Quick win:** Ensure critical content is in initial HTML response
2. YAML 回帰テスト
- name: meta-01-title-present
  description: Verify each key page has a unique, properly-sized title tag
  severity: high
  standard: Google-SEO-Guidelines
  steps:
    - URL: /
    - description: Assert the page title is present and 20-60 characters
      js: |
        const title = await page.title();
        if (!title || title.trim() === '') {
          throw new Error('Page has no title');
        }
        if (title.length < 20) {
          throw new Error(`Title too short (${title.length} chars): "${title}"`);
        }
        if (title.length > 60) {
          throw new Error(`Title too long (${title.length} chars): "${title}"`);
        }
        console.log(`Title OK (${title.length} chars): "${title}"`);
    - VERIFY: Page has a descriptive title between 20 and 60 characters

すべての YAML テストを shiplight/tests/seo-review.test.yaml に保存します。


深度レベル

  • --quick:ホームページのメタタグ、canonical、robots.txt のみを確認します。約 2 分です。
  • default:主要なページのすべてのカテゴリを確認します。約 8〜12 分です。
  • --thorough:すべてのカテゴリ、サイト全体のクロール、すべてのページタイプ、コンテンツ分析を行います。約 20〜30 分です。

ヒント

  • JavaScript を無効にしてテストし、検索エンジンから見える状態を確認します(特に SPA の場合)。
  • inspect_page の DOM 出力を使うと、<head> の内容を効率よく抽出できます。
  • sitemap.xml を手動で確認します。自動生成されたサイトマップには、インデックスに登録すべきでないページが含まれていることがよくあります。
  • OG 画像には絶対 URL が必要です。相対 URL はソーシャル共有では機能しません。
  • SPA の SEO で重要な問いは、「初期 HTML にコンテンツが含まれているか」です。
  • close_session でセッションを終了し、証跡には generate_html_report を使用します。

コメント