← 記事一覧へ
読了 5 分

Next.js で全ページ分の動的 OG 画像を生成する

1 つのルートで、ページごとにタイトルとメタデータからブランド仕様のソーシャル画像を描画できます。デザインツールも手作業の書き出しも不要。そのパターンを解説します。

ページごとに別々のシェア画像をデザインするのは規模が合いません。より優れたパターンは、各ページ自身のタイトルとメタデータから、ブランド仕様のカードをオンデマンドで描画する 1 つの動的ルートです。

opengraph-image ルート

Next.js はルートセグメント内の opengraph-image ファイルを読み取り、それが返すものをそのルートの og:image として配信します。next/og でレンダリングされ、実体は画像へと描き出される JSX にすぎません。

import { ImageResponse } from "next/og";

export default function Image() {
  return new ImageResponse(
    <div style={{ fontSize: 64, padding: 60 }}>Your title</div>,
    { width: 1200, height: 630 },
  );
}

ページごとに変える

  • タイトルはルートの params やデータ層から取得する。
  • ブランドのアクセントカラーでカードをテーマ付けし、サイト全体に統一感を出す。
  • プラットフォームのサイズ上限に収め、常に読み込まれるようにする。

「OG 画像」スキルはこのルートをあなたのサイトに合わせてテーマ付けして足場を作り、各ページに openGraph.images を組み込みます。だから 2 つのルートが同じプレビューを共有することはありません。

Next.js で全ページ分の動的 OG 画像を生成する