アクセスログでGooglebotのクロール分析

f:id:m_nishimoto:20220331181248j:plain

アソビュー! Advent Calendar 2020 の19日目の記事です。

休日の便利でお得な遊び予約サイト「アソビュー!」のSEOを担当している西本です。先日「December 2020 Core Update」が発表されましたが、Googleのアルゴリズム更新に右往左往してしまうのはSEO担当者の宿命だな、と思う今日この頃です。

今回は大規模サイトのSEOにおいて重要と考えている、Googlebotのクロール状況の分析についてです。先日SearchConsoleの「クロールの統計情報レポート」がリニューアルされとても便利になりましたが、それ以前からアソビュー!で実施している分析の内容について書きます。

目的

「クロールバジェット」と言われたりしますが、Googlebotはサイト内の全てのページを必ずしもクロールするわけではなく、一定のリソースの範囲内でしかクロールしないと言われています。そのため、バジェットの枠内でいかに有益なページをクロールさせ、無駄なページをクロールさせないか、の制御が必要になります。

この辺りの詳細については、Google検索セントラルの下記ページが参考になります。

developers.google.com

実現方式

Googlebotのクロール状況を改善するには、まず現状を把握し、問題を特定する必要があります。クロール状況の分析のデータソースとしては、Webサーバのアクセスログを使用します。アクセスログの中からUserAgentに「Googlebot」を含むログに限定して、件数を集計しています。

アソビュー!ではインフラにAWSを使用しており、アクセスログの集計・可視化は以下の流れで実現しています。
・NginxのアクセスログをfluentdでS3に転送
・S3においたアクセスログをAthenaから参照
・RedashでAthena経由でアクセスログに対してクエリ実行、取得結果からグラフ表示

SEOにまつわるデータ分析基盤は基本的には自分で構築しているのですが、当件に関してはエンジニアの方々に用意頂きました、感謝!

分析方法と改善事例

アクセスログの集計は主に「ステータスコード別」と「主要機能別」の2通りの方法で定点観測しています。

▼ステータスコード別
ステータスコード別にログの件数を集計し、予期せぬ無駄なリダイレクト(3xx系)や何らかのエラー(4xx系、5xx系)が発生していないか、を確認しています。サイトの実装方法などによって異なるため一概には言えないものの、過去の経験からステータスコード200が全体の90%を超えていればOKと判断しています。

僕がアソビューに入社した直後の2019年5月時点では以下の状況でした。

ステータスコード別の集計(改善前)

ステータスコード301が概ね全体の20%程度、酷い時は全体の50%程度を占めており、これは明らかにおかしいと感じました。

原因を調べてみると、アソビュー!では末尾に「/」が無いURLにアクセスすると、末尾に「/」を付けたURLに301リダイレクトする処理が実装されています。
(例)
https://www.asoview.com/location/prf130000
→(301)https://www.asoview.com/location/prf130000/

URLの末尾に「/」が無いリンクがサイト内に散在しており、該当のリンク全てで無駄に301リダイレクトが発生している状況でした、あるあるネタですね。

問題となるリンクを一通り洗い出し、URL末尾に「/」を付けるよう修正していった結果が以下です。

ステータスコード別の集計(改善後)

ボーダーラインとしているステータスコード200が全体の90%を超えるまでに改善出来ました。実はもう何箇所か無駄に301リダイレクトが発生する箇所が残っているのですが、興味がある人は探してみてください。

上述の通り概ね問題が無い状態まで改善できたものの、直近の状況は以下のグラフです。

ステータスコード別の集計(直近)

ステータスコード302や404の割合が増加傾向にあり、何らかの問題が発生している可能性が懸念されます。一度改善してもまた何らかの事情により悪化することはよくあることなので、定期的に確認する必要があると思っています。

▼主要機能別

ステータスコード200でクロールされたとしても、流入につながらないページばかりをクロールされていたら、バジェットを無駄に消費することになります。そのため、サイト内の主要機能毎にログを集計し、本来クロールさせたいページが適切にクロールされているかを確認しています。

これも正解は無いと思いますが、個人的には「そのサイトにおける最も重要なコンテンツが多くクロールされているか」を気にするようにしています。アソビュー!は遊び予約サイトのため、遊びの施設のページやプランのページが多くクロールされる状態を良しと考えています。

僕がアソビューに入社した直後の2019年5月時点では以下の状況でした。

主要機能別の集計(改善前)※その他以外は隠しています

流入につながらない「その他」が全体の40-50%程度を占めており、無駄なクロールが多く発生しているように感じました。

原因を調べてみると、サイト内で使用しているAPIのURLが多くクロールされている状況でした。APIのため、インデックスもされず流入にも繋がらないため、robots.txtでブロックするよう対応しました。

それ以外にもクロール状況が改善される打ち手を実行していった結果が以下のグラフです。

主要機能別の集計(改善後)※その他以外は隠しています

「その他」の割合が大きく減少し、本来クロールさせたいページがクロールされている様子が伺えます。現状は概ね望ましい状況が作れていると考えています。

クロールの統計情報レポートとの違い

Googlebotのクロール状況を分析しようと思った場合、アクセスログで分析しようとすると通常以下2点がハードルとなります。
・Webサーバのアクセスログをエンジニアから共有してもらう必要がある
・ログのデータ量が膨大なためExcelでは集計できない

ですが、先日リニューアルされたSearchConsoleの「クロールの統計情報レポート」を使用することでこの問題を回避することが出来ます。僕も実際に使っていますが、とても便利で大半のサイトはこの機能で十分に分析することが可能だと思います。

とても便利な機能ですが、現状アソビューで実現している分析の仕組みと比べるとやはり以下のような制約もあるので、大規模サイトのSEOをインハウスでガチでやる方は同様の仕組みを作ることを考えてみてもいいのでは、と個人的には思います。快適です。
・可視化のUIがSearchConsoleで用意されたものしか使えないため、自分が見たいようにグラフの調整が出来ない
・過去データもSearchConsoleから提供される分しか遡って分析出来ない
・SearchConsoleからログをエクスポートして詳細分析しようと思っても、上限の1000件しか取得出来ず全量データでの分析が出来ない

尚、分析出来る仕組みが用意されても、そこから示唆を得て改善に活かせないと宝の持ち腐れなので、どのように分析すればいいか相談したい方がいれば、TwitterFacebookでお気軽にご連絡ください。

最後に

データドリブンなテックカンパニーを目指す我らがアソビューでは一緒に事業をつくる仲間を絶賛募集中です。

 

www.wantedly.com

やりたいことはたくさんあるものの、リソースが全然足りない状況のため、困っています。助けてください。