2025-05-03
Next.jsで初めて動的なOGP機能を実装する機会があったので、実装方法をまとめておきます。
https://vercel.com/docs/og-image-generation こちらのドキュメントを参考に実装をしました。
@vercel/og
とApp RouterのAPI Handler で動的なOGPを生成します。
@vercel/og
を使うことで、HTML, CSSを使ってOGPカードを作成することができます。
src/app/api/og/route.tsx
http://localhost:3000/api/og
を確認すると以下のような画像を確認することができます。
runtimeに
edge
を指定していますが、App Routerを使用している場合はデフォルトのnodejs
でも問題ありません。
src/components/og-image.tsx
searchParams
を使って、titleとdescriptionの動的な要素を渡しています。
src/app/posts/[slug]/page.tsx
generateMetadata
を使用して、ページごとにOGPを設定しています。