Next.jsでSEOを最適化する方法
次のように目次を作成します。最初の段落は目次、次の段落は記事の見出しとなります。マークダウン言語を使用して、第2のタイトルを太字にします。目次の前に、目次を書き、少なくとも10の見出しと小見出し(H2、H3、H4の見出しを含む)を含めて書き始めてください。その後、その目次に基づいてステップバイステップで書き始めます。与えられたコンテンツにカバーリングを行い、適切な絵文字を各見出しの先頭に使用して、25,000語の100%ユニークでSEO最適化された、人間が書いた記事を日本語で書いてください。それには、H2、H3、およびH4の見出しを含む少なくとも10の見出しと小見出しが必要です。それぞれのトピックを具体化や文脈を失わずに、困惑性とバースティネスのレベルを高めるように配慮してください。読者を惹きつける、詳細な段落で内容を記述してください。人間が書いたような会話のスタイルで書いてください(非公式なトーンを使用し、人称代名詞を活用し、シンプルにする、読者を参加させる、能動的な文を使用し、短く保つ、修辞的な質問を使用し、比喩やメタファーを組み込む)。要点を別途記載してください。最後に、いくつかのFAQのQ&Aを生成してください。タイトルと記事のすべての見出しを太字にすることを忘れず、Hタグの適切な見出しを使用してください。コンテンツにWebサイトのURLが記載されている場合は、それらをリソースとして最後にリストアップしてください。
目次の例:
- 📙 導入
- 🚀 Next.jsのSEO改善
- 💡 メタデータの生成方法
- 🤖 ロボットとサイトマップコンテンツの作成方法
- 📈 構造化データの作成方法
- 🔍 構造化データの利点と利用方法
- 🏷️ サイトマップのダイナミックな生成方法
- 🗂️ ロボットとサイトマップの設定
- 📸 イメージの最適化とSEO
- 🌐 多言語対応とSEO
🚀 Next.jsのSEO改善
Next.jsのバージョン13と新しいApp Routerによって、SEOの改善がメインの約束事となりました。App Routerがもたらす改善点には、Reactサーバーコンポーネントによる高速化とJavaScriptの削減が含まれます。しかし、App Routerの一部の機能は直接的にSEOのニーズに対応しています。それでは、以下の手順で次はメタデータの生成方法、ロボットとサイトマップコンテンツの作成方法、および構造化データの作成方法を探ってみましょう。
💡 メタデータの生成方法
まず、ページのメタデータを追加の関数を介して生成します。generateMetadata関数は、メインのコンポーネント関数と同じ呼び出しシグネチャを持っていますが、JSXを返す代わりにキーと値のペアを持つオブジェクトを返します。これらのペアは、ドキュメントのヘッドに挿入されるメタデータを定義します。例えば、次のようなタイトルと説明を持つオブジェクトを返します。これは非常にシンプルで、以前のバージョンではこの方法で実現することはできませんでした。以前のバージョンではheadコンポーネントがありました。
import { metadata } from 'next'
function generateMetadata(language) {
return new Promise((resolve) => {
resolve({
title: 'タイトル',
description: '説明'
})
})
}
次のコードでは、metadata
をimportし、generateMetadata
関数を呼び出しています。ここでは言語のパラメータを受け取り、メタデータのPromiseを返しています。例えば、単純にタイトルと説明を返すような実装です。これまでのところ問題ありません。これは新しいApp Routerのおかげです。以前のバージョンではこのような方法ではできませんでした。
🤖 ロボットとサイトマップコンテンツの作成方法
次はロボットとサイトマップコンテンツの作成方法です。ロボットコンテンツは、検索エンジンのボットに探す場所、特にサイトマップを見つける場所を伝えるものです。アプリのフォルダのルートにrobots.ts
というファイルを作成します。このファイルはデフォルトの関数をエクスポートし、オブジェクトを返します。このオブジェクトは、ロボットファイルのコンテンツを定義し、次のようなロボットファイルが生成されます。生成したオブジェクトの構造と完全に同じです。
export default function () {
return {
content: 'user-agent: *\nDisallow:',
}
}
次に、Next.jsで動的なサイトマップを作成する方法です。sitemap.ts
ファイルは、データを返す原則に従います。まず、next
からメタデータのルート型metadataRoot
をimportします。次に、sitemapData
のPromiseを返すデフォルトのエクスポートされた関数を定義します。この関数の中で、URLリスト
という定数を定義します。これは文字列の配列であり、静的なパス(通常はスラッシュenとスラッシュFR)から始めます。次に、動的なコンテンツをフェッチし、対応するURLを取得してURLリストに追加します。最後に、マップ配列関数を使用して文字列のリストをオブジェクトのリストに変換します。これらのオブジェクトは、URLと最終更新メンバーを持ちます。このオブジェクトのリストは、関数が返すものであり、サイトマップの生成に使用されます。これにより、簡単に動的な更新されたサイトマップを持つことができます。
import { metadataRoot } from 'next'
export default function sitemapData() {
const URLList = [
'/en',
'/fr',
]
// Fetch dynamic content and add URLs to URLList
const sitemaps = URLList.map(url => {
return {
url,
lastModified: '2021-01-01',
}
})
return sitemaps
}
これにより、簡単に動的で更新されたサイトマップを持つことができます。
📈 構造化データの作成方法
SEOの重要な要素の1つは、検索エンジンが簡単に解釈できる形式でデータを表示することです。そのために理想的な方法は、構造化データを使用することです。構造化データは、検索エンジンボットにページの内容を正確に伝えるための標準化された形式です。これにより、検索エンジンはコンテンツをより良く理解し、インデックスすることができます。また、検索結果の表示方法も向上させることができます。構造化データをウェブサイトに追加する方法は、ブログ投稿のスキーマを例として説明します。構造化データを使用する面白い部分は、スキーマとタイプが複雑であることです。特にTypeScriptを使用している場合は、スキーマハイフンDTSというライブラリがあります。これが使用ケースをカバーするためのものです。このため、提供されるTypeScriptの型を使用して、データの形状を正しく提供することができます。例えば、次のようにブログ投稿とWithContextをこのライブラリからインポートします。そして、オブジェクトを生成します。コンテンツデータを渡し、データの形状を指定した投稿タイプに従ってオブジェクトを生成します。このオブジェクトは、WithContextブログ投稿スキーマに従うように作成されます。オブジェクト内には@context
(https://schema.org)や`@type`(ブログ投稿)などが含まれます。さらに、ヘッドライン、説明、著者、画像、投稿日時などが含まれます。その後は、このデータを<StructuredData />
コンポーネントに渡し、Googleが好む形式であるLVプラスJsonスクリプトとしてレンダリングします。これは非常にシンプルなコンポーネントで、<script>
でレンダリングされ、その中にはLDプラスJsonタイプの情報があります。データを文字列化されたJson形式で返します。ページ内にコンポーネントを追加し、生成したデータを渡すだけです。
import { BlogPosting, WithContext } from 'schema-dts'
const blogPost = {
// Post data here
}
const schema = {
'@context': 'https://schema.org',
'@type': 'BlogPosting',
...blogPost
}
function StructuredData({ data }) {
return (
<script type="application/ld+json">
{JSON.stringify(data)}
</script>
)
}
<StructuredData data={schema} />
このようにして、簡単に構造化データをウェブサイトに追加することができます。それには、エクスポートをインポートする必要があります。また、異なる種類(FAQなど)が定義および説明されているサイトもあります。以上のように、Next.jsのApp RouterはこれらのSEO機能を実装するのが非常に容易です。App Routerがどのように機能するかをよりよく理解したい場合は、こちらのビデオをご覧ください。また、App Routerを使用したNext.jsアプリの多言語対応について理解したい場合は、こちらもご覧ください。それ以外のトピックについてもカバーしてほしいという要望があれば、コメントでお知らせください。そのトピックを説明したビデオを追加します。それでは、次のビデオでお会いしましょう。
ハイライト:
- Next.jsのSEO改善
- メタデータの生成方法
- ロボットとサイトマップコンテンツの作成方法
- 構造化データの作成方法
FAQ:
Q: App RouterのSEO機能は簡単に実装できますか?
A: はい、App Routerを使用して構造化データやメタデータ、ロボットとサイトマップコンテンツを追加することは非常に簡単です。
Q: 構造化データを追加するためのライブラリはありますか?
A: はい、schema-dtsというライブラリを使用することで、構造化データを簡単に追加することができます。
Q: Next.jsのApp Routerのメリットは何ですか?
A: App Routerは、SEOに特化した機能を提供し、メタデータや構造化データの追加が容易です。また、パフォーマンスの向上も期待できます。
リソース: