seo-social-cards について
seo-social-cards は、共有リンクのプレビューに使われる Open Graph と Twitter/X のメタデータを確認する SEO 監査スキルです。不足または到達不能なカード要素を特定し、ページ内容に基づくメタデータを追加できます。検索順位ではなく、共有表示とクリック率を対象とします。
主な機能
- 01必須の Open Graph フィールドを確認
- 02ソーシャルカード画像の到達性を確認
- 03Twitter/X カードメタデータを確認
- 04クローラーが生成する代替プレビューを説明
- 05ページ内容に基づくカードタグの追加
活用シーン
- 01ページの共有リンクプレビューの監査
- 02不足または到達不能なカード画像の特定
- 03Twitter/X メタデータと Open Graph の代替動作の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ hainrixz/ claude-seo-ai --skill seo-social-cardsインストール後、Claude Code で/seo-social-cardsを入力して読み込まれたか確認します。
詳細
seo-social-cards (M8)
ソーシャルカードは、URL がソーシャルメディア、チャット、AI アシスタントで共有されたときの表示を制御します。これは CTR/共有に関するシグナルであり、ランキングに関するシグナルではありません(「誠実さ」を参照)。Open Graph メタデータは、references/schema-tier1.md の構造化データ作業と同じ <head> レベルの基本整備に当たるため、このモジュールと併せて監査してください。
入力
ディスパッチエンベロープで指定された PageSnapshot を使用します。<run_dir>/pages/<slug>.json から parsed を読み込み(og:*/twitter:* の metas[]、canonicals[]、images[])、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)。
- OG コンテンツ:
og:title、og:description、og:url、og:typeが存在し、値が空でないこと。og:urlが canonical と一致していること。og:typeがページに適切であること(例:articleとwebsiteの使い分け)。 - OG 画像:
og:imageが存在し、約 1200x630(1.91:1)かつ 200x200 以上で、取得可能であること(HTTP 200、画像の Content-Type、絶対 URL)。 - Twitter/X:
twitter:card(summary_large_imageを推奨)、twitter:title、twitter:description、twitter:image。これらがない場合、Twitter は OG にフォールバックします。OG に依存している場合はその旨を記録してください。 - フォールバック動作:OG がまったくない場合、クローラーが取得する内容(
<title>、meta description、最初のコンテンツ内<img>)を記録し、推測ではなく実際に劣化したカードの状態を検出結果に示してください。
修正
- 自動(
fixable: auto):ページの<title>/<h1>、meta description、canonical URL、最初のコンテンツ内画像をもとに、完全な OG + Twitter カードのブロックを挿入します。既存の内容に追加する方式で、決定論的に生成し、fix用の差分として出力します。 - このツールで画像アセットを作成することはできません。実在するパスがある場合に限り、
og:image/twitter:imageを設定します。それまでは、明確にマークしたTODOプレースホルダーを残します(URL やサイズを捏造しません)。タイトル/説明文を決して捏造せず、ページ上のコンテンツをもとにするか、ユーザー向けのTODOを残してください。
検証
dom_assert:必須の<meta property="og:*">/<meta name="twitter:*">タグが存在し、値が空でないこと。header_check:og:imageが画像の Content-Type を伴って 200 を返し、サイズが約 1200x630 であること。- 画像の取得またはサイズの確認がブロックされている場合(ネットワーク/外部への通信がない場合)、ステータスは
needs_apiとし、誤ってpassにしないでください。
検出結果
schema/finding.schema.json に従って検出結果を出力します。例:
M8.og.missing_image—og:imageがない(ステータスfail、重大度 2、fixable: auto、軸search、信頼度established)。M8.og.image_unreachable—og:imageは設定されているが、200 以外を返す、またはタイプが正しくない(ステータスfail、重大度 2、fixable: proposed、軸search、信頼度established)。M8.twitter.no_card—twitter:cardがなく、ページが OG のみにフォールバックしている(ステータスwarn、重大度 2、fixable: auto、軸search、信頼度directional)。 各検出結果では、evidence.observedにページ上のタグ(またはタグがないこと)を引用します。verification.reproduceは実行可能なdom_assert/header_checkコマンドとします。expected_impactは、信頼度タグを付けた範囲表記にします(パーセンテージだけを記載しないでください)。
誠実さ
ソーシャルカードは共有/クリック率に関するシグナルであり、直接的なランキングへの影響はほぼありません。Google は OG タグをランキング要因として使用しません。ソーシャルカードは、共有されたリンクや AI アシスタントのプレビュー表示を改善するものであり、ページのランキングを上げるものではありません。CTR とブランドの一貫性のために修正し、SERP の順位上昇を期待して過剰に投資しないでください。