Published on

Next.jsブログでsitemap.xmlを自動生成する

Authors
  • avatar
    Name
    Nomad Dev Life
    Twitter
2025-09-07-title

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がすべて登録されているかどうかを確認することもできます。

2025-09-07-img1

前提条件

  • Next.js によるブログ構築済み
  • 記事は Markdown / MDX などから静的ページとして生成

sitemap生成ライブラリの導入

sitemap.xml を自動生成するために、next-sitemap を利用します。

インストール

npm install next-sitemap

設定ファイル作成

プロジェクト直下にnext-sitemap.config.jsを配置します。next-sitemaprobots.txtも生成できるようなので、generateRobotsTxttrueを指定し、生成してもらうことにしました。

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 buildyarn buildを実行した際に、buildが終わると自動的に呼び出されます。ですので、このように記載することでsitemap.xmlが生成されるようになるわけです。

GitHub ActionsでblogをNginxにdeployする | Nomad Dev Lifeで書いたように、このブログはGithub Actionsでbuildしています。上記の対応を入れることによって、Github Actionsでnpm run build(yarn build)が実行され、sitemap.xmlrobots.txtがrootに生成されます。

おわりに

今回は、build時に自動でsitemap.xmlを生成するようにしました。next-sitemapのおかげで、非常に簡単にsitemap.xmlを生成することができます。

sitemap.xmlに登録されているURLがGoogleにインデックスされているかチェックすることで、インデックス登録が漏れていないか確認することができます。

もしNext.jsでブログを書いているのであれば、ぜひお試しください。