ブログ記事の投稿・更新時に、Googleへサイトマップの更新通知を送る

ブログに投稿した記事がインデックスされないことに気づいた。調査ついでに自動で Google へサイトマップの更新通知を送るように設定したので、方法をメモする。

Google にサイトマップを送信する

サイトマップは検索エンジンにウェブページの構造や更新情報を伝える役割を果たす。ブログを運営している場合、新しい記事を投稿したり既存の記事を更新した際に、Google にサイトマップの更新を通知することでインデックスされ、Google 検索でヒットするようになる。

Google 公式のドキュメントによると、下記の URL に対して GET リクエストを送ることで、Google にサイトマップを送信することができる。

https://www.google.com/ping?sitemap=FULL_URL_OF_SITEMAP

試しに curl してみると、下記のように sitemap.xml の更新を受け取った旨、レスポンスが返ってる。公式ドキュメントにはGETリクエストを送信しろと書かれているが、POSTでも問題ない。

curl 'https://www.google.com/ping?sitemap=https://hodalog.com/sitemap.xml'

# ↓レスポンス
<html><meta http-equiv="content-type" content="text/html; charset=UTF-8">
<head><title>Google Webmaster Tools
-
Sitemap Notification Received</title>
<meta name="robots" content="noindex, noodp">
<script src="https://ssl.google-analytics.com/urchin.js" type="text/javascript">
    </script>
<script type="text/javascript">
      _uacct="UA-18009-2";
      _utcp="/webmasters/";
      _uanchor=1;
      urchinTracker();
    </script></head>
<body><h2>Sitemap Notification Received</h2>
<br>
Your Sitemap has been successfully added to our list of Sitemaps to crawl. If this is the first time you are notifying Google about this Sitemap, please add it via  <a href="http://www.google.com/webmasters/tools/">http://www.google.com/webmasters/tools/</a>  so you can track its status. Please note that we do not add all submitted URLs to our index, and we cannot make any predictions or guarantees about when or if they will appear.</body></html>

サイトマップの送信を自動化

先述の URL に GET あるいは POST で送信すればよく、自動化は簡単そう。例えば、GitHub Actions で main ブランチへのマージをトリガーに送信するとか。

今回はこのブログのホスティングに利用している Netlify で簡単に設定できたので、それを利用した。

Netlify でデプロイ時にサイトマップ送信する

  1. Netlify にログインし、設定したいサイトをクリック →Site settingsBuild & deployDeploy notificationsを開く。
  2. Outgoing notificationsという項目でOutgoing webhookを追加。
  3. 通知先としてhttps://www.google.com/ping?sitemap=FULL_URL_OF_SITEMAPを設定し、保存。 FULL_URL_OF_SITEMAPはサイトマップの URL。

デプロイ後、およそ 1h 程度で Google bot がクロールしてくれることが確認できた。