5
『リッチスニペット』を使って、商品を取り扱ったサイトの情報を
ちょっとリッチにして検索結果に表示する方法について。
検索結果といえば
ページタイトル
ページの説明が…何行か表示されて..
http://www.spookies.co.jp/blog/…
と、だいたい3つの要素から構成されていますが、
リッチスニペットを使うと
ページタイトル
★★★★★ レビュー xx件 – 価格帯: ¥1~¥999,999
ページの説明の上に…何か表示されて..
http://www.spookies.co.jp/blog/…
と、
少しリッチな検索結果を表示して見せることができます。
(スニペットとは、検索結果の説明文のことです)
方法は何通りかありますが、
今回はRDFaを使った方法を紹介します。
ほかの手法
(HTML5規格のmicrodataと、任意団体の推進するmicroformats)は、
Googleに日本語ドキュメントがあります。
それを真似すればできると思います。
※RDFaはXHTML規格
それでは
日本語の解説がなくて苦労致しました、
RDFa商品情報リッチスニペットの
日本語解説です!
サンプルを掲載したほうが話が早いように思うので
まずはコードをお見せします。
<div xmlns:v="http://rdf.data-vocabulary.org/#"
typeof="v:Product">
<span property="v:brand">ブランド</span>
<span property="v:category">カテゴリ</span>
<span property="v:description">商品説明</span>
<span property="v:image"><img
src="http://www.spookies.co.jp/img/logo_spookies.gif"
alt="商品画像" /></span>
<span property="v:name">商品名</span>
<span rel="v:review">
<span xmlns:v="http://rdf.data-vocabulary.org/#"
typeof="v:Review-aggregate">
<span property="v:count">総レビュー数</span>
<span property="v:rating">平均評価(標準5段階)</span>
</span>
</span>
<span rel="v:offer">
<span xmlns:v="http://rdf.data-vocabulary.org/#"
typeof="v:Offer">
<span property="v:availability"
content="in_stock">在庫あり</span>
<span property="v:condition" content="new">新品</span>
<span property="v:price">2000</span>
<span property="v:currency"content="JPY">円</span>
<span property="v:priceValidUntil"
content="2011-08-04">8月4日</span>
<span property="v:seller">販売者</span>
</span>
</span>
</div>
。。。と、こんな感じです。
xmlns:v=”http://rdf.data-vocabulary.org/#” typeof=”v:Product”
これを書いておくと、
検索エンジンはそれ以降のタグを意味付けして解釈してくれます。
”新品”や在庫ありなど、表現が揺れる可能性のあるものは
content=”" で規格に定められた通りに宣言します。
新品はnew、在庫ありはin_stockなど。
この辺りはGoogleのドキュメントを参照。
さてさて、大まかには
<v:Product>
<v:Review-aggregate></v:Review-aggregate>
<v:Offer></v:Offer>
<v:Product>
といった構造になっていますが、
製品そのものの情報(v:Product)と、
商品のレビュー情報(v:Review-aggregate)と、
販売情報(v:Offer)は
それぞれ異なるタグの体系になります。
それぞれのpropertyは
その体系が宣言されている中でしか利用できません。
となると、そのままでは
製品情報、商品レビュー、販売情報が
関連付けられず独立してしまいます。
そこで、
これを一つのまとまりとするために、
rel 属性を利用しています。
v:Productsが宣言された中で
<span rel="v:xxxxxx">
と宣言してやると、
(span でも p でも div でも、どれの属性としてでもよい)
その中に含まれるものは全て、
外側のv:Productに所属することになります。
<code>
<div xmlns:v="http://rdf.data-vocabulary.org/#"
typeof="v:Product">
<span rel="v:【ここは何でもいい半角】">
<div xmlns:v="http://rdf.data-vocabulary.org/#"
typeof="v:Review-aggregate"></div>
</span>
</code>
こうすることで、
レビューが製品情報に付帯するように扱われます。
ミソは、横着に
xmlns:v="http://rdf.data-vocabulary.org/#"typeof="v:Review-aggregate">
のように、
relをv:Review-aggregateと一緒に宣言すると、
うまくいかないらしい…ということです。
microdataなら横着に出来るんですけどね。
また、
親に付帯する子の要素が飛び地になるとダメな様です。
<v:Product
v:name
v:description
<v:Offer
v:orice <=ここにOfferの要素
v:Offer> <=ここで一度Offerが閉じてるのに、
v:category
<v:Offer
v:condition <=ここにもOfferの要素があるとか
v:Offer>
v:brand
v:Product>
といったことをしてしまうと、
正常に読み込んでもらえなかったりします。
ちなみに、
<v:Product>
v:name
<v:Offer></v:Offer>
v:description
</v:Product>
と、親の中に子要素が挟まって分断されるのは
入れ子構造が崩れない限り、特にかまわないようです。
リッチスニペットを導入したサイトがきちんと読み込まれるかは、
Googleの提供するリッチスニペットテストツールで試すことができます。
http://www.google.com/webmasters/tools/richsnippets
kurita
Leave a Reply