Core Media Lab記事一覧
開発・インフラ

【Astro】Search Consoleで「サイトマップが取得できませんでした」となる原因と直し方(astro.config.mjs設定)

【Astro】Search Consoleで「サイトマップが取得できませんでした」となる原因と直し方(astro.config.mjs設定)

Astroで個人ブログやWebメディアを立ち上げ、公式インテグレーションである @astrojs/sitemap を使ってサイトマップを生成した際、多くの人が一度は突き当たる「最初の壁」があります。

それが、Google Search Console(サーチコンソール)にサイトマップURLを送信した直後に表示される、赤文字の「取得できませんでした」というエラーです。

「Cloudflare PagesやVercelでのビルドは成功しているのに、なぜGoogleに認識されないのか?」
「送信したURL(sitemap-index.xml)が間違っているのか?」

焦って何度も送信ボタンを押してしまいがちですが、安心してください。この問題の9割以上は、Astroの設定ファイル(astro.config.mjs)にある、たった1行のプロパティの書き換え漏れが原因です。

本記事では、Search Consoleでサイトマップがエラーになる2大原因の切り分け方から、ブラウザを使った一瞬の症状確認法、そして根本的な修正から再送信・正常認識(ステータス:成功)までの全手順を実体験ベースで完全解説します。

1. Search Consoleでサイトマップがエラーになる2大原因

Astroで作ったサイトをSearch Consoleに登録し、サイトマップを送信して「取得できませんでした」と表示された場合、原因は大きく分けて以下の2パターンしかありません。

原因 発生理由 対処の緊急度
原因①:Googleクローラーの処理遅延 送信直後の単なるタイムラグ。クローラーがまだ巡回していない 低(半日〜1日放置で自動解消)
原因②:site プロパティの初期値放置 astro.config.mjs 内が https://example.com のままビルドされている 極高(手動修正しない限り永久にエラー)

原因①:Google側の処理遅延(単なるタイムラグ)

Search Consoleの仕様上、サイトマップを新規送信した直後は、Googleのクローラーがまだ実際のXMLファイルをフェッチ(取得)しに行っていない段階でも、機械的に「取得できませんでした」と赤字で表示されるケースがあります。

この場合、XMLファイル自体がサーバー上で正常に生成されていれば、数時間から1日ほど放置するだけで自動的に「成功(緑色)」へステータスが更新されます。

原因②:astro.config.mjs の site が「example.com」のまま(本命)

今回のケースで最も注意すべき、かつ初心者が高確率で引っかかる本命の原因がこちらです。

Astroのサイトマップ自動生成インテグレーション(@astrojs/sitemap)は、astro.config.mjs に定義されている site プロパティのURLを「基準ドメイン」として参照し、XMLファイル内に全ページのURLを書き出す仕組みになっています。

しかし、Astroの初期テンプレートを立ち上げた直後、この設定項目は以下のようにダミーのURLが設定されています。

// astro.config.mjs の初期状態
export default defineConfig({
  site: 'https://example.com', // ← ここが初期値のまま放置されている!
  integrations: [sitemap()],
});

この状態のままビルドしてCloudflare Pages等にデプロイしてしまうと、Astroは律儀に 「https://example.com/sitemap-0.xml」という存在しないダミーサイトのURLをサイトマップの中に記述してしまいます。

Google Search Consoleは、あなたが送信したURL(https://coremedialab.com/sitemap-index.xml)を読みに行った結果、「このサイトマップの中に書いてある子URL(example.com)はお前のサイトのドメインじゃないだろ」と判定し、エラーを吐き出して処理を中断してしまうのです。

2. 【症状チェック】ブラウザで直接 sitemap-index.xml を開いてみよう

自分のサイトで発生しているエラーが「単なるGoogleのタイムラグ」なのか、それとも「site プロパティの設定ミス」なのかは、ブラウザを使って10秒で白黒判定できます。

ブラウザのアドレスバーに、あなたのサイトのサイトマップURLを直接入力してアクセスしてみてください。

https://あなたの独自ドメイン/sitemap-index.xml
(例:https://coremedialab.com/sitemap-index.xml)

アクセスした際、画面に表示されたXMLツリーのテキストを確認します。

判定A:設定ミス(要修正)の画面

もし、ブラウザの画面に以下のようなXMLが表示されていたら、100% site プロパティの初期値放置が原因です。

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://example.com/sitemap-0.xml</loc>
  </sitemap>
</sitemapindex>

<loc> の中身が https://example.com/... になっていますね。
Search Consoleはこの example.com を取得しようとして弾かれていたわけです。この状態であれば、いくら数日待っても「成功」に変わることは絶対にありません。今すぐコードを修正する必要があります。

判定B:正常(タイムラグ)の画面

もし、以下のように最初から自身の独自ドメインが表示されていれば、Astro側の出力は完璧です。

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://coremedialab.com/sitemap-0.xml</loc>
  </sitemap>
</sitemapindex>

この画面が出ているにもかかわらずSearch Consoleでエラーになっている場合は「原因①(Google側の反映待ち)」ですので、何も触らず数時間待機すれば解決します。

3. 解決ステップ:astro.config.mjs の修正から再送信までの完全手順

判定Aで「example.com」が表示されてしまった場合の具体的な修正手順です。作業は手元のPCからわずか3分で完了します。

ステップ1:astro.config.mjs を書き換える

プロジェクトのルートディレクトリにある astro.config.mjs をエディタ(VS Codeなど)で開き、site プロパティの値を本番の独自ドメインURL(末尾のスラッシュなし)に変更して保存します。

import { defineConfig } from 'astro/config';
import sitemap from '@astrojs/sitemap';

export default defineConfig({
  // 修正前: site: 'https://example.com',
  site: 'https://coremedialab.com', // ← あなたの独自ドメインに変更!
  integrations: [sitemap()],
});

ステップ2:変更をコミットしてGitHubへプッシュする

VS Codeのターミナルを開き、以下の3つのGitコマンドを順に実行してリモートリポジトリへ送信します。

git add astro.config.mjs
git commit -m "fix: update site url to production domain for sitemap"
git push origin main

プッシュが完了すると、連携しているホスティングサービス(Cloudflare Pagesなど)側で自動ビルドが走り、数分で新しいサイトマップを含んだ本番環境が再デプロイされます。

ステップ3:ブラウザで本番URLの反映を確認する

Cloudflare Pagesのデプロイが「Success」になったら、再度ブラウザで https://あなたのドメイン/sitemap-index.xml を開きます。

※もし前の画面が残っている場合は、Ctrl + F5(Macは Cmd + Shift + R)でキャッシュを無視したスーパーリロードを実行してください。以下のように <loc> の中身が自身のドメインに変わっていれば準備完了です。

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://coremedialab.com/sitemap-0.xml</loc>
  </sitemap>
</sitemapindex>

ステップ4:Search Consoleでサイトマップを再送信する

Google Search Consoleの管理画面に戻り、左メニューの「サイトマップ」を開きます。

  1. 「新しいサイトマップの追加」欄に、再度 sitemap-index.xml と入力して「送信」をクリックします。
  2. 送信直後は一時的に「取得できませんでした」と表示される場合がありますが、ページを再読み込み(F5)するか、少し待つとステータスが緑色の 「成功」 に切り替わります。

4. よくある疑問:sitemap-index.xml と sitemap-0.xml の違いとは?

設定作業中に「なぜファイル名が sitemap.xml ではなく sitemap-index.xml や sitemap-0.xml になっているのか?」と疑問に思った方も多いはずです。

これは、Astroの @astrojs/sitemap プラグインが標準で「サイトマップインデックス形式」を採用しているためです。

  • sitemap-index.xml(目次ファイル): Googleクローラーに対して「うちのサイトマップはここにありますよ」と案内するための親ファイル。Search ConsoleにはこのURLを登録します。
  • sitemap-0.xml(個別URLファイル): 実際に記事や固定ページのURLが1行ずつ書き出された子ファイル。記事数が膨大になった場合、自動的に sitemap-1.xml、sitemap-2.xml と分割して管理されます。

Search Consoleには親である sitemap-index.xml だけを送信しておけば、Googleクローラーが勝手に子の sitemap-0.xml まで巡回してくれるため、ユーザー側で特別な分割設定をする必要はありません。

あわせて読みたい:Core Media Labの構築・自動化シリーズ

本メディアの構築基盤や、今回連携したフロントエンド・CMSの設計については以下の実践記事で詳しく解説しています。あわせて構築を進めることで、完全手放しのメディア運営環境が完成します。

まとめ:設定の1行を見直して確実なSEOインデックスを進めよう

静的サイトジェネレーター(Astro)を使ったモダンなWebメディア運営では、WordPressのような自動プラグイン任せにできない分、初期設定ファイル(astro.config.mjs)のパラメータ1つひとつが動作に直結します。

しかし、今回の site 設定のように「仕組み」さえ理解してしまえば、トラブルシューティングは極めてシンプルです。

正しいURLでサイトマップが送信できれば、Google検索エンジンへのインデックス登録もスムーズに進みます。1つずつエラーを解消しながら、高速で強固な自作メディアを育てていきましょう。


Ys
この記事を書いた人
Ys(ワイズ)/ Webエンジニア・自動化メディア運営者

「手作業を極限まで減らし、維持費0円でスケールする」をテーマにWebメディア・業務自動化システムを個人開発。WordPressから Astro × microCMS × Cloudflare Pages へ完全移行し、Googleスプレッドシート・GAS・AIを活用した完全自動入稿パイプラインを構築・運用中。机上の空論ではなく、自ら手を動かして直面したトラブルシューティングと現場の一次情報を発信しています。