自作のレシピサイト(WordPress自作テーマ)にリッチリザルト対応をするにあたって自分用に情報を整理しました。プロパティのうちどれを実装するかです。
レシピの構造化マークアップについては情報が少なかったため、Google公式に当たることになりました。また実物サイトとしてCOOKPADと味の素のソースコードを参考にさせていただきました。
あまり需要はなさそうですが、主に自分用の覚書き記事として記します。
リッチリザルトの項目整理
リッチリザルトのプロパティはそれなりに多いです。
というわけでまずはプロパティを4段階に分けました。Google側としては”必須”と”推奨”に区分していますが、推奨をさらに3段階に区分けしました。
- 必須
- 推奨だが必要と判断したもの
- 推奨のうちいずれ追加しそうなもの
- 推奨のうち不要と判断したもの
2.の「推奨だが必要」…あくまでGoogle側の区分では”推奨”ですが、自分では必要だろうと判断したものです。何をもって「必要」かというと料理レシピとして人間が見た場合にまず欲しいだろうという意味です。
※なおとりあえず今回作ったサイトは初動では動画は使わない前提です。動画をつけることになった場合、動画系のプロパティは多いので別途まとめようと思います。
以下、
プロパティ名 説明 WordPressでの実装(取得)方法
という形式でまとめてみました。(★はWordPress実装について、カスタムフィールドかHTMLクラスなどをつけて引っ張ってくるもの)
必須
とりあえずGoogleが定めている絶対に必要なもの。
- name レシピの名前 (wp)タイトルから引っ張る
- image 完成した料理の画像 (wp)サムネイルから引っ張る
推奨だが必要と判断したもの
まずはこの2つ。材料と作り方。これらがないとレシピとは呼ばないと思います。つまり本文側に絶対あるはず。なら構造化データにも必ず書こう、という感じ。
- recipeIngredient 材料 ★(wp)カスタムフィールド等
- recipeInstructions 作り方 ★(wp)カスタムフィールド等
これらは”ガイド付きレシピでは必須なもの”に含まれています。※他にも「ガイド付きレシピでは必須プロパティ」になっているものはあります。
recipeInstructions=作り方については項目がたくさんありますが、クックパッドでは@typeとtextのみのようでした。作り方に画像が付いている場合でもimageは無し。
くどいですが、材料と作り方はあくまで”ガイド付きレシピでは必須なもの”であり、リッチスニペット対応的には”必須”ではありません。ですのでこれを含めないと”リッチスニペット非対応”になるということではありません。
材料と作り方以外だと以下を実装しました。
- author 作成者 (wp)ユーザー名から引っ張る
- datePublished 公開日 (wp)公開日から引っ張る
- description 要約文 ★(wp)カスタムフィールド等
- recipeYield 何人分 ★(wp)カスタムフィールド等
description(要約文)はもともとカスタムフィールドを用意していました。サイト内のアーカイブなど表側でも頻繁に使用するためです。というわけで今回はそれを活用しました。
recipeYield(何人分)、型はInteger。数字だけで指定です。
とりあえず上記までを実装してサイト公開としました。
もう一度まとめると実装したのは以下です。
- name レシピの名前 (”必須”)
- image 完成した料理の画像 (”必須”)
- recipeIngredient 材料 (”ガイド付きレシピでは必須”)
- recipeInstructions 作り方 (”ガイド付きレシピでは必須”)
- author 作成者
- datePublished 公開日
- description 要約文
- recipeYield 何人分
推奨のうちいずれ追加しそうなもの
以下、とりあえず保留しましたがいずれ追加しそうなものです。
- totalTime 準備と調理の合計時間
- nutrition.calories カロリー
- HowToSection 詳細な手順
- video 動画
時間とカロリーはサイト情報を充実させていく過程で実装しそうです。
HowToSection(詳細な手順)ですが、今回作るサイトではちょうど「作り方概要」と「作り方詳細」という2種類の作り方を書くことにしました。このプロパティに対応するためではなく、料理中級者以上と初心者の両方に対応するコンテンツを作りたいと思っていたためです。料理中級者用に大まかな流れ、初心者には詳細な手順。せっかくなので「詳細」側をHowToSection対応にしようと考えています(ただ実装に時間がかかりそうなので保留しています)。
動画は動画コンテンツを作ったら検討します。なお動画関係のプロパティには「ガイド付きレシピでは必須プロパティ」になっているものがあります。
不要と判断したもの
- cookTime(調理時間)とprepTime(準備時間)※常に組み合わせて使う
- recipeCategory(レシピの食事やコースの種類)
- recipeCuisine(レシピに関連付けられている地域)
cookTime(調理時間)とprepTime(準備時間)は組み合わせて使わないといけない、というのがポイントです。準備時間というのがユーザーにとって必要なのか、必要だとしてどう割り出せばよいのかわからなかったので自分的には不要。totalTime(準備と調理の合計時間)のみでよさそうです。
けっこう迷ったのがカテゴリー、地域です。結果不要と判断したのはこうもり問題が多発しそうだからです。
カテゴリーは公式では例として「夕食」、「メインコース」、「デザート、軽食」などとされています。例えば春巻きは夕食でメインだけど、軽食としても食べられる、どうしよう。
また地域は春巻きの場合「中華」や「中国」とするのがよさそうですが、いわゆる日本でアレンジされた「和風春巻き」や「洋風春巻き」などはどうしようか…。となるとヘタに指定しないほうがよさそうです。
運営としても毎度適当に手入力して設定するのもありかもしれませんが、手間を考えてとりあえずやめました。例えば今回制作のサイトでは現時点では和食、洋食、中華、イタリアン、デザートなどの分け方をしているWordPressカスタムタクソノミーがあります。カテゴリーと地域を組み合わせてタグから取得させるプログラムもいったん考えましたが、そこまですることもないか…と思ってやめました。
あとはaggregateRating(レビュー)はもし将来ユーザーからのフィードバックを受けられるシステムを入れたらつけますが、おそらくないです。レビュー投稿者名は有効な個人名または組織名である必要があるので、個人運営のサイトではハードルが高いです。
※なおこの記事ではすべてのプロパティを網羅したわけではありません。
WordPressでの実装概要
WordPressサイトの場合の実装方法です。functions.phpに記述、jsonエンコード出力、wp_headにフック、というやり方にしました。
詳しくはこちらの記事で書いています。
リッチリザルトの重要性
最後にレシピサイトにおけるリッチリザルトの意味について。
リッチリザルト(リッチスニペット)とは視覚的機能が追加された検索結果と言うことができます。サイト運営者側としては構造化データとして渡すことで実現できます。
料理やレシピを検索したことのある人ならここに表示されることの価値は説明不要です。料理=画像=視覚だからです。
レシピはいろいろなリッチリザルトの中でも目玉の一つと思っています。
ただ個人的な経験から考えると表示される内容は画像と料理名、サイト名くらいなので、ありとあらゆる項目(プロパティ)を網羅する必要はなさそうです。※というわけでの今回の記事。
そう考えると新規立ち上げをスピーディーにすすめたい場合、まずはGoogleが必須としているものだけ(レシピ名と画像だけ)を実装してリッチリザルト対応するのが最優先。後は徐々に追加していけばよいと思っています。
コメント