- Published on
Next.jsブログでsitemap.xmlを自動生成する
- Authors
- Name
- Nomad Dev Life

sitemap.xmlが未登録だった
検索エンジン最適化(SEO)の基本施策のひとつとして、sitemap.xml
の設置があります。
Google Search Consoleで本ブログの状況を確認したところ、sitemap.xml
が未登録であることに気が付きました。sitemap.xmlは、検索エンジンにサイト構造を正しく伝えるために有効ですが、記事を追加するたびに手動で更新するのは効率的ではありません。
本記事では、Next.jsで構築したブログにおいて、sitemap.xml
の生成を自動化する方法について解説します。
sitemap.xmlとは
sitemap.xml は、ウェブサイトのページ構造を検索エンジンに伝えるためのXMLファイルです。
このファイルには、上の画像にあるように、URLとページの更新日時などが記載されています。sitemap.xml
の仕様は、以下のページを参照してください。
sitemap.xml
が登場する前は、新しくページを作成しても、それがGoogleなどの検索エンジンに登録されるかどうかをコントロールすることができませんでした。そのため、深い階層のページや、パラメータによって動的に生成されるページは検索エンジンに登録されない可能性がありました。また、ページを新しく登録しても、いつクローラがそのページを見つけてくれるかもわかりませんでした。
現在は、Googleがこのsitemap.xml
をいつロードしたかを、Google Search Consoleで確認することができます。更に、このsitemap.xml
に記載されているURLがすべて登録されているかどうかを確認することもできます。

前提条件
- Next.js によるブログ構築済み
- 記事は Markdown / MDX などから静的ページとして生成
sitemap生成ライブラリの導入
sitemap.xml
を自動生成するために、next-sitemap を利用します。
インストール
npm install next-sitemap
設定ファイル作成
プロジェクト直下にnext-sitemap.config.js
を配置します。next-sitemap
はrobots.txt
も生成できるようなので、generateRobotsTxt
にtrue
を指定し、生成してもらうことにしました。
module.exports = {
siteUrl: 'https://nomad-dev-life.net',
generateRobotsTxt: true,
}
package.json の修正
next build
の後に自動でsitemap.xml
が生成されるように、scriptsにpostbuild
を追加します。
{
"scripts": {
"build": "next build",
"postbuild": "next-sitemap"
}
}
postbuild
は、npm run build
やyarn build
を実行した際に、build
が終わると自動的に呼び出されます。ですので、このように記載することでsitemap.xml
が生成されるようになるわけです。
GitHub ActionsでblogをNginxにdeployする | Nomad Dev Lifeで書いたように、このブログはGithub Actionsでbuild
しています。上記の対応を入れることによって、Github Actionsでnpm run build
(yarn build
)が実行され、sitemap.xml
とrobots.txt
がrootに生成されます。
おわりに
今回は、build
時に自動でsitemap.xml
を生成するようにしました。next-sitemapのおかげで、非常に簡単にsitemap.xml
を生成することができます。
sitemap.xml
に登録されているURLがGoogleにインデックスされているかチェックすることで、インデックス登録が漏れていないか確認することができます。
もしNext.jsでブログを書いているのであれば、ぜひお試しください。