Google サイトマップ用のサイトマップ生成(Ubuntu を使用)

Ubuntu 環境でウェブサイトのサイトマップ XML ファイルを生成する。Node.js と sitemap-generator ライブラリを使用し、Google Search Console へ送信する。サイトマップは検索エンジンにページの存在と最終更新日を伝えるものである。

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは、次のコマンドを実行する。

Ubuntu のインストールは別ページ »で説明されている。

# パッケージリストの情報を更新する
sudo apt update
# インストール済みのパッケージを依存関係も考慮して包括的に更新する
sudo apt full-upgrade
# システム全体への変更を反映させるため再起動する
sudo shutdown -r now

Node.js のインストール

sitemap-generator の動作には Node.js バージョン 10 以上が必要である。2026 年時点の LTS は v24(Active LTS)と v22(Maintenance LTS)であり、これらを使用する。

Node Version Manager (nvm) を使用すると、複数の Node.js バージョンをインストールし、切り替えて使用できる。

サイトマップジェネレータ (sitemap-generator) のインストール

サイトを実際にクロールしてサイトマップを生成する sitemap-generator ライブラリを使用する。インストール手順は https://github.com/lgraubner/sitemap-generator に記載の手順に従う。なお、このライブラリの最新版は 8.5.1(2019 年公開)である。クロールを行わず、URL の一覧からサイトマップを生成する場合は、更新が継続している sitemap パッケージを使う方法もある。

# nvm を使用して Node.js のバージョンを選択する(例: LTS バージョン v24)
nvm use 24
# プロジェクトを初期化する(package.json を作成)
npm init -y
# sitemap-generator ライブラリをインストールする
npm install sitemap-generator

npm init -y は、対話形式の入力を省略して package.json を作成する。

サイトマップの生成

https://github.com/lgraubner/sitemap-generator に記載のプログラムを利用してサイトマップファイルを生成する。

  1. 次のようなファイルを作成し、カレントディレクトリに hoge.js のようなファイル名で保存する。

    https://www.example.com」のところはサイトマップを作成したいサイトの URL に書き換える。サイトマップには完全修飾 URL(例: https://www.example.com/mypage.html)を使用し、相対 URL は使用しない。

    const SitemapGenerator = require('sitemap-generator');
    
    // ジェネレータを作成する
    const generator = SitemapGenerator('https://www.example.com', {
      filepath: './sitemap.xml',
      maxEntriesPerFile: 50000,
      stripQuerystring: true,
      lastMod: true
    });
    
    // イベントリスナを登録する
    generator.on('done', () => {
      // サイトマップの生成が終了したときの処理
    });
    
    // クローラを開始する
    generator.start();
    

    オプションの説明:

    • filepath: './sitemap.xml' は、生成されたサイトマップファイルの保存先である。この指定では、スクリプトを実行したカレントディレクトリに sitemap.xml という名前で保存される。
    • maxEntriesPerFile: 50000 は 1 ファイルあたりの URL 数の上限である。Google の上限が 50000 件であり、これを超える場合は複数のサイトマップとサイトマップインデックスファイルが生成される。
    • stripQuerystring: true は、URL からクエリ文字列を除いてサイトマップに登録する設定である。
    • lastMod: true は、各 URL に <lastmod> を付加する設定である。HTTP レスポンスの Last-Modified ヘッダがあればその値が、無ければ実行日の日付が使われる。
    • クロールの深さは maxDepth で指定する。既定値の 0 は深さの制限なしを意味する。

    sitemap-generator は、クロール時に robots.txt の設定と、meta タグの nofollownoindex を尊重する。JavaScript は実行しないため、シングルページアプリケーションではサーバサイドレンダリング (SSR) が必要である。また、開発中のサイトではなく、公開済みのサイトに対して実行する。

  2. node hoge.js で実行する。
    node hoge.js
    
  3. sitemap.xml が生成されるので確認する。

    生成された sitemap.xml ファイルをテキストエディタで開いて内容を確認する。オンラインのサイトマップバリデータを利用すると、構文が正しいか検証できる。日本語などの非 ASCII 文字を含む URL が正しくエンコードされているかを確認する。サイトマップファイルは UTF-8 でエンコードし、ウェブサイトのルートディレクトリに sitemap.xml という名前で配置する。

  4. Google Search Console を使用して送信する。
    1. Google Search Console にアクセスする。
    2. 左メニューの「サイトマップ」をクリックする。
    3. 新しいサイトマップを追加」のところに、生成したサイトマップの URL を入力する。サイトのルートからの相対パス(例: /sitemap.xml)で指定することもできる。
    4. 送信」をクリックして、生成されたサイトマップを送信する。

    Google Search Console では、送信したサイトマップの処理状況やエラーを確認できる。