seo/json-ld-required-props · JSON-LD の必須プロパティ
認識できる @type には、リッチリザルトに必要なプロパティを揃えましょう。
重大度: warning
チェック内容
既知の @type(Product、BreadcrumbList、WebSite、Event、Recipe、VideoObject、LocalBusiness)について、Google が必須とするプロパティがそろっているかを確認します。未知の型やカスタム型は検出しません。Google の構造化データドキュメントが必須プロパティを1つも挙げていない型(Article、BlogPosting、NewsArticle、Organization)も同様に検出しません。また Person も検出対象外です。Google が文書化している唯一の要件は ProfilePage.mainEntity に対するものであり、この関係性はノード単位のこのチェックでは追跡していません。
なぜ重要か
既知の @type に必須プロパティが欠けていると、対応するリッチリザルトの対象外になります。
修正方法
不足しているプロパティを追加します。例えば Product には name に加えて、review・aggregateRating・offers のいずれか1つが必要です。
{
"@context": "https://schema.org",
"@type": "Product",
"name": "…",
"aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.5", "reviewCount": "89" }
}
モードによる違い
ソース解析(CLI、ダッシュボードの静的ベースライン)は、各ルートの <head> を、ページとレイアウトチェーンの <svelte:head> からリポジトリ内のコンポーネントもたどって合成し、既知のメタコンポーネント(svelte-meta-tags、svelte-seo)と metaComponents で宣言したものも加えます。判定するのはリテラルな値だけで、動的な値は検査しません。レンダリング解析(Vite プラグインのビルド、ダッシュボードで訪問したルート)は出荷される <head> を読み、値はすべてリテラルです。ビルドが対象にするのはプリレンダリングされたルートだけです。両者が食い違うときは、レンダリング解析の結果を信じてください。
無効化
既存の検出は suppressions ファイルに記録して抑制できます(npx svelte-vitals --update-suppressions)。overrides でルートやパス単位に絞るか、ルールごと無効化するには、次のように設定します。
export default {
rules: {
'seo/json-ld-required-props': 'off'
}
};