seo-core-web-vitals について
ページスナップショットと利用可能な PageSpeed Insights のフィールドデータを使い、Core Web Vitals とページ性能の問題を診断する Claude 向けスキルです。実測値とラボのヒューリスティックを区別し、優先順位付きの助言を提示します。
主な機能
- 01p75 のフィールド CWV 確認
- 02レンダリングを妨げるリソースの検出
- 03画像最適化の確認
- 04レイアウトシフト要因の特定
- 05LCP 要因の分解
- 06優先順位付きの改善助言
活用シーン
- 01PSI データがある場合のフィールド CWV 評価
- 02初回レンダリングを遅らせるリソースの特定
- 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 を使用します)。
- 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を出力してください。 - レンダリングをブロックするリソース —
<head>内の同期<script>(defer/async/type=moduleの指定がないもの)、レンダリングをブロックする<link rel="stylesheet">、および初回レンダリングを遅らせる@importの連鎖(LCP/INP のリスク)。 - 最適化されていない画像 —
width/height(またはaspect-ratio)の指定がない画像、ファーストビューより下にあるのにloading="lazy"が指定されていない画像、レスポンシブなsrcset/sizesがない画像、AVIF/WebP が適しているのにレガシー形式を使用している画像、プリロードされていない LCP 画像。 - レイアウトシフトの原因 — 寸法が確保されていない画像/iframe/広告/埋め込みコンテンツ、
font-display/size-adjust の指定がない Web フォントの切り替え、既存コンテンツの上に挿入されるコンテンツ(CLS のリスク)。 - 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 の所見を確定できるのはフィールドデータのみです。