2025-03-11 14:53
Astro.js+microCMSで構築したサイトに、構造化データを設定するのに、まさかの大苦戦💦
📝同じ苦戦を繰り返したくないので備忘録📝
やろうとしたのは、以下の2点
①microCMSのデータを受け取って、構造化データを動的に生成
②各ページで設定した構造化データを、Layout.astroの<head>内に配置
②に大苦戦!
何をやっても、<head>内に
<script type="application/ld+json">{jsonLd}</script>
とそのまま出力され、構造化データが反映されない!!
ChatGPTと共闘すること2時間以上、ついに原因と解決法を究明。
✅ 原因:Astroが構造化データの中身 (jsonLd) を「エスケープ処理」している(はっ?)
✅ 解決方法:set:htmlディレクティブを使ってエスケープを無効化する(へっ?)
正しい書き方は、
<script type="application/ld+json" set:html={jsonLd}></script>
無事解決!
*添付の画像は解決時のChatGPTのスクショ。