/blog-traser

ライバルサイトの文字数・検索ボリュームチェックツール

Primary LanguagePHP

BLOG TRASER

URL:https://blog-traser.lhaplus.biz/

このツールは、主にブログアフィリエイトをする際に、ライバルサイトの検索結果上位10件の文字数と対象とするキーワードの含有率を算出するものになっています。このツールを制作した経緯としては、SEOを意識した記事を書く際、ライバルの記事ボリュームを簡単にチェックできるようにしたいと考えたことがきっかけです。しかしながら、現在の検索エンジンでは従来とは違い、クローラーの制度が急速に進化しているため、記事ボリュームやキーワードの出現頻度といった指標だけではほとんど測れなくなっています。

主な機能は下記の通りです。

  • 調べたい検索キーワードを指定すると、検索結果上位10件の一覧を取得し、各記事の文字数と検索したキーワードの含有率を表示する。
  • その際、対象のキーワードに対しての平均的な文字数の情報も表示する。
  • 対象のキーワードに対するGoogleトレンドの指標を同時に表示し、現在の伸び率をグラフで表示する。

制作にあたり工夫した点

  • 分析結果の表示をすると共に、同時に分析したキーワードに対するGoogleトレンドの動向をグラフで表示するようにしたこと。現在狙っているキーワードの人気度を同時にチェックできるので、キーワード選定する際の助けになると考えた。
  • 負荷対策の処理をしたこと。このツールはキーワードの分析を行う際、YaHooの検索結果からスクレイピング処理を実施して、記事の一覧を取得する。したがって、一度に大量のユーザーが同時にキーワードの分析を開始してしまうと、結果的にYaHooのサーバーにDOS攻撃を誘発してしまう。その対策として、排他制御の仕組みを考え、分析中の場合は他のユーザーは終わるまで待機させる仕様とした。排他制御の具体 的な内容としては、処理をロックしたいときに指定のファイルを生成し、そのファイルが存在する間、他のユーザーからのリクエストを待機させるといった処理になっている。制作の際、スクレイピングではなく、GCPの「Custom Search API」の利用を考えたが、フリーで使えるのは1日100リクエストまでと非常に少ないため、導入を見送った。
  • 分析処理をajaxを使い、非同期的に処理を行うようにしたこと。そうすることで、ユーザーが進捗を把握しやすくなったり、同期処理と比べてページ遷移のストレスが軽減されると考えた。

制作するにあたって苦労した点

  • このツールはスクレイピング処理によって検索結果から一覧を取得してくるので、ツールへのアクセスが多くなってきた場合に、大量のリクエストを飛ばさないように制御したこと。
  • Googleトレンドからの指標を動的に表示させる処理がうまくいかず、かなり苦戦したがiFrameを使った方法で表示できるようにした。
  • Yahooの検索結果からHTMLとしてデータをスクレイピングする際に、文字化けが発生してしまい、本ツールの分析結果に正しく表示されないという問題が発生したこと。文字コードはUTF-8で統一してい たが、スクレイピングしたデータを実際にHTMLタグを含めて表示する際は、HTMLエンティティへの変換を行う必要があった。

以下はスクリーンショットです。

▽トップページ

▽キーワードを検索した結果