目次

HugoサイトをNetlifyにデプロイした時に自動でGoogleにサイトマップの更新を送信する


Hugoサイトに移行したあと、Google Search Consoleでサイトマップの送信(Googleの最終読み込み日時)が遅かったので対応した

サイトマップの更新方法

Googleのヘルプによるとやり方は3種類ある。

  • Search Consoleでサイトマップを送信する

これはSearch Consoleの管理画面に入って、操作をしなくてはならないため、現実的でない

  • robots.txt ファイルの任意の場所にサイトマップファイルのパスを指定する
1
Sitemap: https://example.com/my_sitemap.xml

上記のような記述をすれば良いとのことだが、GoogleBotのクロールを待つのは同じ。サイトマップのパスを変えたり、サイトマップを増やしたりするときに設定する1つの案、として捉えるべき。

  • pingツールを利用する
1
https://www.google.com/ping?sitemap=FULL_URL_OF_SITEMAP

というように、Googleに対して自分のサイトのサイトマップのパスを指定してGETすれば良い。

具体的にいうと、このサイトでは以下となる

1
https://www.google.com/ping?sitemap=https://gatolynx.tokyo/sitemap.xml

Netlifyのデプロイ時にサイトマップの更新通知を送信する

Netlifyのデプロイタイミング、もしくはデプロイ完了後にhttps://www.google.com/ping?sitemap=https://gatolynx.tokyo/sitemap.xmlを実行することができれば問題はなさそうだ。

ブラウザで GET リクエストを送信するかと記載されているが、試しにPOSTリクエストで送信してみたところ、正常に処理された(2021年9月15日)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
>curl -X POST "https://www.google.com/ping?sitemap=https://gatolynx.tokyo/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>

POSTが利用できるということはつまり、NetlifyのDeploy後のOutcoming WebhookのPOST先を、Googleのサイトマップ更新pingにすることで通知を発生させられるのではないか?

結論

できた。

方法としてはNetlifyの管理画面に入ってドキュメントの通りSite settings > Build & deploy > Deploy notifications を開き、Outgoing webhookを選択する

https://res.cloudinary.com/dlhmnejhz/c_scale,f_auto,q_auto,w_1200/netlify_deploy_setting_jdxhzp.png
Deploy notificationsからoutgoing Webhookを選択

Outgoing webhookに、https://www.google.com/ping?sitemap=FULL_URL_OF_SITEMAPの形式で設定する。

https://res.cloudinary.com/dlhmnejhz/image/upload/v1631714686/outgoingwebhook_shuykm.png
outgoing webhook設定画面

これであとは通常のNetlifyデプロイを行い、Search Consoleでサイトマップのクロールを待つと、数分〜数十分程度でGoogle botがクロールしてくれることが確認できた。

Note
ただしこのPOSTリクエストによる方法は、公式でPOSTリクエストに対応していると明言されているわけではないため、ずっと利用できるかどうかわからない。

…outgoing webhookってpostリクエストだと思っているのだけども、認識違い・・ではないよなぁ・・