THINKLAB

THINKLAB PROJECTS · OG IMAGE

カテゴリ別OGPの実装を、公開画像と照合する

THINKLABでは、共有用画像の共通レイアウトに題名・説明・色・識別コードを渡しています。トップを含む17ルートの定義が同じ部品を使うことをコードで確認し、このページではトップ・AIツール・ニュースの公開画像3点を入力設定と並べました。

内容・実装確認:。17は画像定義のルート数で、各コンテンツの完成度や検索対象数ではありません。

共通部品:createSectionOg出力:PNG / 1200×630確認した公開例:3点

公開している画像と、入力した値

下は説明用に作り直した見本ではなく、本サイトの画像URLから表示しています。文字や色を変更すれば出力も変わるため、設定値と画像をセットで見比べます。

トップのOG画像。題名は「THINKLAB」、右側のコードはTL。

トップ

説明:考える力を、テクノロジーで拡張する。

eyebrow
THINKLAB
code
TL
accent
#22d3ee

app/opengraph-image.tsx

AIツールのOG画像。題名は「AIツール」、右側のコードはAI。

AIツール

説明:用途と利用条件からAIツールを探すガイド

eyebrow
AI TOOLS
code
AI
accent
#22d3ee

app/tools/opengraph-image.tsx

ニュースのOG画像。題名は「ニュース」、右側のコードはNEW。

ニュース

説明:生成AI・AI業界の発表や更新情報を確認

eyebrow
AI NEWS
code
NEW
accent
#f97316

app/news/opengraph-image.tsx

実装の分担:ルートの設定と、共通の描画

app/tools/opengraph-image.tsx は、次のように画像の設定と入力値を渡しています。掲載コードは本サイトのルート定義を読みやすく整形したものです。これだけでは完結せず、描画部品も必要です。

import { createSectionOg } from "@/lib/og/section-og";

export const alt = "AIツール | THINKLAB";
export const size = { width: 1200, height: 630 };
export const contentType = "image/png";

export default function Image() {
  return createSectionOg({
    eyebrow: "AI TOOLS",
    title: "AIツール",
    subtitle: "用途と利用条件からAIツールを探すガイド",
    accent: "#22d3ee",
    code: "AI",
  });
}

共通部品は lib/og/section-og.tsx の createSectionOg です。渡された値を配置し、next/og の ImageResponse で画像を返します。今回確認した本サイトのNext.jsは16.2.10です。

共通部品の設定と、見直すときの確認点
設定コードで確認した値変更時に見ること
画像全体1200×630、PNG画像の実寸と、ページが出す画像メタデータを照合する。
題名左の領域は幅760px、題名は68px長い題名が折り返した際に、説明や右側のコードと重ならないかを見る。
説明最大幅700px、文字は30px収まる長さかだけでなく、現在のページ内容に合う説明かを確認する。
右のコード320×320pxの枠内、文字は94pxコードを増やしたり長くしたりする場合は、枠内への収まりを再確認する。

この部品には、題名の文字数制限や内容に合わせた自動縮小の処理を設けていません。固定の文字サイズであるため、新しい題名でも必ず収まるとは扱わず、出力を開いて確認します。

画像が出ることと、説明が合うことを分ける

今回の照合では、NEWS画像の「毎日お届け」と、BOOKS画像の「おすすめ書籍まとめ」が現在の運用・構成に合っていませんでした。NEWSは発表や更新情報の案内へ、BOOKSは物語と入門教材の案内へ変更しました。

TOOLS・AI診断・WORKの「最適」や、比較ページの「徹底比較」も、最適性や比較の網羅性を実測した根拠を示す表現ではないため、用途・条件・確認項目を説明する文へ改めました。大きさや配色が正しくても、説明が古ければ読む人の期待とずれてしまいます。

本サイトでは opengraph-image.tsx と twitter-image.tsx が別の定義を持っています。今回は6ページの両方、計12定義を揃えました。片方だけ直して完了とせず、ページが出す og:image と twitter:image のそれぞれを開くことが確認点です。

別のページでも確認する4手順

  1. 1. ページが指定する画像を確認する

    対象ページのHTMLで og:image と twitter:image を探します。この記事の画像リンクだけでなく、ページ自身が指定するURLを確認します。本サイトで確認した og:image には、更新を識別するクエリ文字列が付いています。

  2. 2. 画像URLを開き、内容と形式を見る

    指定されたURLを開き、エラー画面やログイン画面ではなく画像が出るかを確認します。開発者ツール等で応答を見られる場合は、HTTPステータスと Content-Type も記録します。ここで掲載する画像はPNG・1200×630です。

  3. 3. 文字と、リンク先の説明を照合する

    題名、説明、コード、色を入力設定と見比べます。さらにリンク先ページの内容に説明が合うかを確認します。原寸だけでなく、小さく表示したときにも題名が読めるか、折り返しや重なりがないかを見ます。

  4. 4. 共有先の表示を別に確認する

    画像URLで表示できることと、SNSのプレビュー表示は同じ確認ではありません。共有先で対象URLを確認し、どの画像が取得され、どう表示されたかを分けて記録します。今回の記録だけで、すべてのSNSでの表示を保証していません。

元の画像が正しいのに共有先だけ異なる場合は、ページが指定した画像URL、取得された応答、共有先の表示を順番に切り分けます。画像を見ただけで、原因をキャッシュに決めつけません。

参照資料と確認範囲

実装値は本サイトのルート定義17件と共通部品を確認したものです。画像の実寸・形式・表示を確認した代表例は上記3点です。SNSごとのトリミングや、長い題名すべての組み合わせを検証した記録ではありません。