記事一覧

robots.txtとsitemapの実験記録

アクセスしてもらうためのrobots.txtの使い方

先日.htaccessでアクセスコントロールという記事を書いたわけですが、今日は逆に検索クローラを丁寧におもてなしするためのrobots.txtの活用法を、実際にSiReFaSoで試してみたのでその結果と共にご紹介してみようと思います。

要するに検索エンジン最適化(Search Engine Optimization)ですが、あやしい方法では無いのでご安心を。「伺か」と言えば「広める条項」(cf.「広める」条項 - さとーのweb日記)で有名ですが、自分のゴーストを広めたい場合に知っておいて損はない知識であると思います。

サイトマップとは何か

sitemaps.org - ホームより引用します。

サイトマップを使うと、ウェブマスターはサイト内のクロールされるページを検索エンジンに簡単に知らせることができます。

サイト内のコンテンツ全てにアクセスできるようにリンクが適切に張られている場合は必要ないですが、目的のページまで何回もクリックしないと辿り着けないような場合はGoogleさんも大変です。SiReFaSoの場合はもっと深刻で、500以上のコンテンツが存在するにも関わらず数十ページも先を読みに行かないと辿り着けません。

そんなサイトが検索クローラに対してクロールして欲しいURLを提示出来る仕組みがサイトマップです。書き方は上述のサイトをご参考頂くことにして、私が書いてみた例を晒してみます。

<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc>http://sirefaso.appspot.com/</loc>
        <lastmod>2011-01-21T20:10:51+09:00</lastmod>
        <changefreq>hourly</changefreq>
        <priority>0.8</priority>
    </url>
    <url>
        <loc>http://sirefaso.appspot.com/ghost/</loc>
        <priority>0.6</priority>
    </url>
<!-- 中略 -->
    <url>
        <loc>http://sirefaso.appspot.com/ghost/Nikola_Tesla/</loc>
    </url>
</urlset>

実際は動的に出力しています。500件も書きだすと負荷が掛かるので工夫が必要です。

そして、このファイルのURL自体を検索クローラに知らせる必要があるわけですが、そのために使われるのがrobots.txtなのです。アクセス拒否の意思表示の役割だけではないんですね。

robots.txtとは何か

今更ですが、一応参考リンクを張っておきます。

The Web Robots Pages

アクセス制限に関する仕様がまとめられていますが、サイトマップのURLを知らせる場合は以下のような感じで記述します。何処に書いてもOKでUser-agent指定は無視されます。

Sitemap: http://www.example.com/your_sitemap.xml

実験

今日の01:00頃にサイトマップを設置して8時間後くらいからのログを見ていますが、Googlebotさんが一時間毎くらいの頻度でアクセスしているのが確認できます。全てインデックスされるまでには時間がかかるだろうと思っていますが、さっき何気にサイト名でぐぐったら以下のような変化が見られました。

ファイル 108-1.png

サイトリンクと呼ばれる赤で囲まれた部分が現れています。ブランド名とかでぐぐると企業のサイトのナビゲーションリンクと共に表示されるアレです。クリック率が上がるというので業者さんが出し方を研究しているくらいのレアなアレが出てる…( ゚д゚)

ということで、サイトマップの効果かどうかはわかりませんが、伺かのユーザさんを自分のサイトに迷うこと無く誘導できるようなサイトの構造なりデザインなりの改善を検討されている方は、検索ロボットに対してもフレンドリーな設計を意識してみてはいかがでしょうか、というお話でした。

余談

他にもテクニック的なものは聞きかじった教養程度に心得ているつもりで、SiReFaSoにも実践していたりします。

ページタイトル

いわゆる<title>タグですね。そのサイトの特徴を表し、検索での来訪者がひと目でどんなサイトかわかるものが望ましいです。このサイトがダメな例ですね。SiReFaSoはその反省を踏まえて「伺か」というキーワードを加えました。可能であればURLにもキーワードが含まれると良いですが、日本語圏では難しいです。Wikiなどはこの点強いですがURLが長いので今度はユーザフレンドリーではありません。

最近は記事のタイトルにしれふぁその文字を意識的に含めないようにしていますが、ノイジーになるのを防ぐための検索避けです。最近はしれふぁそでぐぐると深瀬さんのブログが上位表示されますね。それくらい強力です。

HTMLの構造
Validであることは当然ながら、やはり意味を伴う構造をきちんとマークアップした方が良いです。先日の改装でこの点を大幅に改善しましたが、その後明らかにGoogleさんがデレました。まだ勧告されてないHTML5でマークアップしていますが、それなりに意味も解釈しているのではないでしょうか。
Pretty URLs
http://example.com/?year=2011&month=1&day=21&tag=sitemap,robotstxt よりも http://example.com/2011/01/21/sitemap-robotstxt の方が有利であるという人もいたり、Googleの中の人はいやいや前者の方も同等に見ますよと言っていたりですが、実際に自分で試すと効果の違いはやはりあるように感じます(以前はTOPページと検索だけでした)。ディレクトリの階層を綺麗に見せることは人間の目にも優しいものです。
階層は浅く
URLの階層は浅いほうが良いという話は聞きますが、深いサイトから浅くするビフォー・アフターはやったことが無いのでわかりません。あまり深いURLは人間にも優しくないとは感じます。

上記に例示したものは内的SEOと呼ばれます。Webのルールを良く理解して来訪者(機械を含む)に優しいサイト作りを心掛ければいずれも自然とそうなるべきものです。

内的に対し外的SEOというものもあります。いわゆる被リンクの獲得ですね。アンカーテキストにキーワードを含めてもらうと良いとか、ページランクのアルゴリズムとか、興味はありますがあまり深入りしない方がいいかなと思っています。

最後に一つ、リンクを張りたいけど検索エンジンにはリンクとみなして欲しくない場合のオプションをご紹介します。

<a href="http://example.com/" rel="nofollow">example.com</a>

ソーシャルサイトではリンクを張りまくるスパムへの対策として、 rel="nofollow" 属性を付加して被リンク獲得行為を無効化するのが一般的となっています。気になる人はTwitterなどのソーシャルサイトのHTMLソースを見てみましょう(はてなブックマークは付けてないそうですけど)。

なんだか余談のほうが長くなってしまいましたが、何よりも大事なのは来訪者にとって魅力的なコンテンツを充実させることです。伺かのゴーストをより多くの人達に知ってもらうための一助になれば幸いです。