Next.jsのApp Routerを使ってサイト運営を始めたら、SEO効果を高めるためにさまざまなメタタグの追加にチャレンジすることになるでしょう。特に、TypeScriptを駆使してMetadata
の型定義を活用する場面では、generateMetadata
関数がキーポイントになります。ただし、<meta name="thumbnail" content={image} />
のようなサムネイル画像のURLを指定したいときに、単純にthumbnail
プロパティをMetadata
型に追加しようとすると、「thumbnail
の指定はできない」という型エラーにぶつかることがあります。ここでは、その問題に対する解決策を見ていきましょう。
解決策: Metadata
型の拡張
Metadata
型では直接thumbnail
をサポートしていないため、other
プロパティを使用して任意のメタデータを追加する方法を採用します。ここでのキーは、other
内にカスタムプロパティとしてthumbnail
を追加することです。下記のTypeScriptのサンプルコードは、generateMetadata
関数でMetadata
型を正しく使用し、カスタムメタデータを設定する方法を示しています。
import type { Metadata } from 'next/types';
export async function generateMetadata({ params }: { params: { blogId: string } }): Promise<Metadata> {
// データ取得関数を想定
const data = await getDetail(params.blogId);
// カスタムメタデータを含める準備
let metadata: Metadata = {
title: "ページのタイトル",
description: "ページの説明",
// otherプロパティを使ってthumbnailを追加
other: {
'thumbnail': data.image?.url,
},
};
return metadata;
}
このコード例では、Metadata
型のother
プロパティを利用してthumbnail
カスタムメタタグを含めています。これにより、TypeScriptの型チェックを満たしつつ、必要なメタデータを柔軟にページに追加することができます。
この方法で、Next.js App RouterとTypeScriptを使用してサイトを運営する際のメタデータ管理における一般的な問題に対処できるでしょう。サムネイル画像などのカスタムメタデータを追加することで、検索エンジン最適化やSNSでの共有効果を高め、サイトの魅力をさらに引き出すことが可能になります。