seo/og-url · Open Graph URL
og:url には、そのページの正規アドレスを入れましょう。
重大度: warning
チェック内容
すべてのルートは <meta property="og:url"> を持つべきです(直接指定でも継承でも構いません)。欠けている、または空のルートを検出します。
なぜ重要か
og:url は、シェアやいいねをどの正規アドレスに帰属させるべきかをソーシャルプラットフォームに伝え、エンゲージメントを1つの URL に集約します。Open Graph プロトコルでは、og:title・og:type・og:image と並んで og:url は必須プロパティに挙げられています。
og:url は <link rel="canonical"> でカバーされているように見えるかもしれません。og:url がなくても、多くの受信側は canonical URL にフォールバックできます。しかしこれは役割の異なる2つの仕組みを混同しています。canonical は検索エンジンにどの URL をインデックスすべきか伝えるものであり、og:url はソーシャルプラットフォームにシェアをどの URL に帰属させるか伝えるものです。Open Graph の仕様自体が og:url を必須としているため(og:description は任意。seo/og-description を参照)、重大度は仕様が定める必須・任意の区分に合わせています。
修正方法
<svelte:head>
<meta property="og:url" content="https://example.com/this-page" />
</svelte:head>
モードによる違い
ソース解析(CLI、ダッシュボードの静的ベースライン)は、各ルートの <head> を、ページとレイアウトチェーンの <svelte:head> からリポジトリ内のコンポーネントもたどって合成し、既知のメタコンポーネント(svelte-meta-tags、svelte-seo)と metaComponents で宣言したものも加えます。リテラルに読めない値({data.title})は dynamic となり、treatDynamicAs で判定されます。レンダリング解析(Vite プラグインのビルド、ダッシュボードで訪問したルート)は出荷される <head> を読み、値はすべてリテラルなので treatDynamicAs は関係ありません。ビルドが対象にするのはプリレンダリングされたルートだけです。両者が食い違うときは、レンダリング解析の結果を信じてください。
無効化
既存の検出は suppressions ファイルに記録して抑制できます(npx svelte-vitals --update-suppressions)。overrides でルートやパス単位に絞るか、ルールごと無効化するには、次のように設定します。
export default {
rules: {
'seo/og-url': 'off'
}
};