私がウェブサイトをデザインする際のポリシーは、ランキングを上げる目的でのSEOよりも、検索の質を上げることを重視しています。
検索の質を上げるというのは、一言で言うと「がっかりリンクを無くす」ことになります。すなわち、見たいと思っているページと関係ないページが検索結果に表れないようにすることです。(infoseekの検索精度が低かった頃に、調べていることと関係ないが興味深いページが見つかるのが面白くて使っていた時期はありましたがw)
検索の質を上げるために私がしていることは、主に次の2つです。
- タイトルだけで内容が分かるようにする
- 関連性のない複数の記事が表示されるページは検索にひっかからないようにする
タイトルに関しては、できるだけ説明的な文章でGoogleの検索結果に表示される長さに収めるようにしています。(Google以外の検索サイトからのアクセスは4%未満なので他は気にしない)
複数の記事が表示されるページというのは、アーカイブ系のページです。複数キーワードによる絞り込み検索を行った際に、各キーワードが異なる記事に点在していると、期待した検索結果が得られません。そこで当ブログでは、アーカイブ系のページにはnoindexを指定しています。
しかし、noindexやnofollowはページ単位での制御しかできません。ブログ系のウェブページでは、記事とは別にツールバー的なエリアがあるのが一般的で、最近更新された記事やコメント、タグクラウド等の情報が表示されます。これらの情報は特定の記事とは無関係ですが、全てのページで表示されるのが普通です。そのため、記事とは関係のないキーワードが同じページに表示されることになります。
当ブログにもタグクラウドがありますが、タグの中に「Silverlight」と「Python」があるために、「Silverlight Python」で検索すると、ほぼ全てのページがヒットしてしまいます。実際にSilverlightとPythonについて書いたのはIronPythonの紹介で一言触れた程度で、SilverlightでPythonを扱う記事は1つもありません。
ページ単位よりも細かく、HTMLのブロックごとに検索エンジンの制御ができる機能があれば、利便性を損なわずにこの問題も解決できます。例えばHTMLのブロック要素にnoindexクラスを指定するという方法ならば、現在のHTMLやCSSの規格内でも実現できると思います。あるいは、robots.txtのような形でクラス単位で指定できるようにするという方法も有ると思います。
検索サイトだけでなくアンテナ系にも使えると思うので、その手のものを作っている人/企業で、そんな仕組みを検討して欲しいです。(アンテナ系は更新チェックをRSSで行えば済む話だが)