mcpField
S
seo-core-web-vitals

seo-core-web-vitals

github.com/hainrixzマーケティング・グロース79205 回インストール4 日前に更新
リポジトリ

seo-core-web-vitals について

ページスナップショットと利用可能な PageSpeed Insights のフィールドデータを使い、Core Web Vitals とページ性能の問題を診断する Claude 向けスキルです。実測値とラボのヒューリスティックを区別し、優先順位付きの助言を提示します。

主な機能

  1. 01p75 のフィールド CWV 確認
  2. 02レンダリングを妨げるリソースの検出
  3. 03画像最適化の確認
  4. 04レイアウトシフト要因の特定
  5. 05LCP 要因の分解
  6. 06優先順位付きの改善助言

活用シーン

  1. 01PSI データがある場合のフィールド CWV 評価
  2. 02初回レンダリングを遅らせるリソースの特定
  3. 03画像によるレイアウトシフトの調査

インストール

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

$npx skills add https://github.com/hainrixz/claude-seo-ai --skill seo-core-web-vitals

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

詳細

seo-core-web-vitals (M15)

Core Web Vitals は Google がランキングシグナルとして確認している指標であり、ページ品質の代替指標です。しきい値、フィールドデータとラボデータの扱いに関する厳密なルール、LCP の分解については references/cwv-thresholds.md を必ず厳守してください。

入力

ディスパッチエンベロープで指定された PageSnapshot を使用してください。<run_dir>/pages/<slug>.json から parsed(scripts[]、stylesheets[]、images[])に加えて、timing.ttfb_ms、body.bytes、render を読み取ってください。フィールドデータには PSI の階層が引き続き必要です。pages/<slug>.html を Grep して、そのまま引用できる根拠を確認してください。サイトの成果物は <run_dir>/site/{robots.json,sitemaps.json,discovery.json} にあります。audit.mjs がすでに出力した決定的な指摘事項は <run_dir>/findings.deterministic.json に記載されています。該当する ID を再出力せず、モデル判定による指摘事項のみを追加してください。スナップショットが存在せず、URL/パスを直接指定して実行する場合は、まず node "${CLAUDE_PLUGIN_ROOT}/scripts/snapshot.mjs" <target> --out "${CLAUDE_PLUGIN_DATA}/runs" を実行し、出力されたスナップショットのパスを使用してください。

監査

PageSnapshot を使用してください(render.used が none でない場合は parsed_rendered、それ以外は parsed を使用します)。

  1. p75 のフィールド CWV — LCP ≤ 2.5 s、INP ≤ 200 ms(INP は FID に代わる指標です)、CLS ≤ 0.1 とします。いずれも実ユーザーデータの 75 パーセンタイルで評価します。「良好」と評価するには、3 つすべてが基準を満たす必要があります。失敗と判定する前に警告するため、事前警告しきい値(LCP > 2.0 s、INP > 160 ms、CLS > 0.08)を使用して warn を出力してください。
  2. レンダリングをブロックするリソース — <head> 内の同期 <script>(defer/async/type=module の指定がないもの)、レンダリングをブロックする <link rel="stylesheet">、および初回レンダリングを遅らせる @import の連鎖(LCP/INP のリスク)。
  3. 最適化されていない画像 — width/height(または aspect-ratio)の指定がない画像、ファーストビューより下にあるのに loading="lazy" が指定されていない画像、レスポンシブな srcset/sizes がない画像、AVIF/WebP が適しているのにレガシー形式を使用している画像、プリロードされていない LCP 画像。
  4. レイアウトシフトの原因 — 寸法が確保されていない画像/iframe/広告/埋め込みコンテンツ、font-display/size-adjust の指定がない Web フォントの切り替え、既存コンテンツの上に挿入されるコンテンツ(CLS のリスク)。
  5. LCP の分解 — LCP を TTFB、リソース読み込み遅延、読み込み時間、レンダリング遅延に分類してください(references/cwv-thresholds.md を参照)。各指摘事項が最も影響の大きい要素を対象とするようにします。

修正(修正可能:助言のみ)

助言のみです。 パフォーマンスの修正はビルド設定、サーバー、CDN、実行時 JavaScript に影響し、破損のリスクが高いため、このツールは診断して優先順位を付けますが、パフォーマンスコードを自動編集することはありません。基準を満たさない指標ごとに、原因となる具体的なリソース/要素を挙げ、期待できる効果の大きさに応じて修正を順位付けしてください(例:LCP 画像のプリロード、重要度の低い JS の遅延読み込み、画像の寸法確保)。スタックが判明している場合は、フレームワークに合わせた方針を示してください。測定値を捏造しないでください。 フィールドデータがない場合は、ユーザーに PSI/CrUX キーの提供を求めるか、指標を推測するのではなく、TODO であることを明記したプレースホルダーを残してください。

検証

  • フィールド(Tier 1):node "${CLAUDE_PLUGIN_ROOT}/scripts/psi-client.mjs" --url <final_url> [--strategy mobile|desktop] [--timeout 60000] は PageSpeed Insights API(loadingExperience、メソッド psi_api)を呼び出します。受け取るのは URL のみ です。フィールドデータは保存済みの DOM ではなく、稼働中のオリジンで測定されるため、--snapshot モードはありません。キーは環境変数(CLAUDE_PLUGIN_OPTION_PSI_API_KEY、それ以外は PSI_API_KEY)から取得します。意図的に --key フラグは用意されていません。キーがない場合、スクリプトは終了コード 0 で status: "needs_api" を返します。終了コードではなく、status を見て分岐してください。PSI が origin_fallback を設定した場合、数値はオリジン単位のものなので、所見にもその旨を記載してください。バンドルされたクライアントでは CrUX History(crux_api)は実装されていません(references/cwv-thresholds.md)。このツールによる p75 の推移を決して主張しないでください。
  • Tier 0(キーなし):フィールド CWV に関するすべての所見で status: needs_api を出力し、明確にラベル付けしたラボのヒューリスティック(レンダリングをブロックする要素の数、画像サイズの指定漏れ、バンドルの容量)も併記します。ラボのシグナルには「ラボデータ — Google のランキング要因ではありません」とラベルを付け、ヒューリスティックを測定済みのフィールド値として提示しないでください。
  • 必要なデータ階層を利用できない場合、ステータスは needs_api です。誤って pass にすることは決して避けてください。

所見

schema/finding.schema.json に従って所見を出力してください。重大度の方針:5 は、サイト/テンプレート単位で致命的かつ適格性を損なう事実に限ります。4 は重大、3 は中程度、2 は軽微、1 は表面的、0 は情報提供のみです。有効なカテゴリで、重大度 5 の fail が established と確認された場合に限り、スコアに上限を設けられます(references/scoring-model.md)。フィールド CWV が重大度 5 になることはありません。適格性の判定基準ではなく、同点時の判断材料です。例:

  • M15.lcp.exceeds_p75 — p75 のフィールド LCP が 2.5 秒を超える場合(ステータス fail、重大度 4、fixable: advisory、軸 search、確信度 established)。evidence.observed には測定された p75 値と LCP 要素を引用し、verification.reproduce では psi-client コマンドを実行します。
  • M15.cls.unsized_image — レイアウトをずらす、width/height の指定がない画像(ステータス warn、重大度 4、fixable: advisory、軸 search、確信度 directional)。evidence.observed には <img> タグを引用します。
  • M15.field.needs_api — PSI/CrUX のキーがなく、フィールド CWV を検証できない場合(ステータス needs_api、重大度 4、fixable: advisory、軸 search、確信度 established)。 各所見では、evidence.observed にページまたは測定値を引用し、verification.reproduce に実行可能なコマンドを記載します。expected_impact は区分と確信度タグを付けて示します(単独の%値は不可)。

誠実な報告

  • ラボ ≠ フィールドです。 ローカルでの Lighthouse 実行は診断に限られます。Google がランキングに用いるのはフィールド(CrUX)の p75 です。ラボの数値を検索スコアに反映したり、フィールドの結果であるかのように扱ったりしないでください。
  • CWV は実在するものの、影響は限定的な同点時の判断材料です。関連性やコンテンツ品質に優先することはありません。スコアが緑だからといってランキングの大幅上昇を約束せず、予測される上昇率ではなく、区分を付けた expected_impact として報告してください。
  • ラボのパフォーマンススコアが「100」でも、フィールド p75 が不合格なら合格ではありません。CWV の所見を確定できるのはフィールドデータのみです。

コメント