microdataを提供する属性でマークアップされた次のコードを検討してください。
<!DOCTYPE html>
<html>
<head>
<title>Micro data test - Normal version</title>
</head>
<body>
<div itemscope itemtype="http://schema.org/Product">
<h1 itemprop="name">Product name</h1>
<img alt="" itemprop="image" src="http://placehold.it/200x200" />
<div itemprop="description">This is the product description.</div>
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<meta content="in_stock" itemprop="availability" />
<span content="GBP" itemprop="priceCurrency">£</span><span itemprop="price">100.00</span>
</div>
</div>
</body>
</html>
Googleの構造化データテストツールを使用すると、肯定的な結果が得られます。
テスト例ではこれで問題ありませんが、HTML構造が大きく異なるさまざまなサイトにmicrodataを実装する必要があります。この方法で属性を実装するには、誰かが各サイトのHTMLマークアップを個別に手動で編集する必要があります。
できれば、すべてのmicrodataを1か所にパッケージ化する単一の関数を呼び出したいと考えています。技術的には、これは次の方法でメタタグを使用することで可能です。
<!DOCTYPE html>
<html>
<head>
<title>Micro data test - Meta tag version</title>
</head>
<body>
<meta itemscope itemtype="http://schema.org/Product" itemref="microName microImage microDescription microOffer" />
<meta id="microName" itemprop="name" content="Product name" />
<link id="microImage" itemprop="image" href="http://placehold.it/200x200" />
<meta id="microDescription" itemprop="description" content="This is the product description." />
<meta id="microOffer" itemprop="offers" itemscope itemtype="http://schema.org/Offer" itemref="microCurrency microPrice microAvail" />
<meta id="microAvail" itemprop="availability" content="in_stock" />
<meta id="microCurrency" itemprop="priceCurrency" content="GBP" />
<meta id="microPrice" itemprop="price" content="100.00" />
<div>
<h1>Product name</h1>
<img alt="" src="http://placehold.it/200x200" />
<div>This is the product description.</div>
<div>£100.00</div>
</div>
</body>
</html>
Googleの構造化データテストツールを使用すると、最初のテストと同じ肯定的な結果が得られます。
参考のために(実際のサイトでこれを行うことはありません)、Googleの構造化データテストツールは、CSSによって非表示になっているmicrodataを渡そうとするとエラーを返します。
したがって、通常のタグマークアップとメタタグマークアップの両方で同じ結果が生成されますが、GoogleとSchema.orgからの次のステートメントに起因する懸念があります。
https://support.google.com/webmasters/answer/146750の状態:
通常、Googleはユーザーに表示されるマークアップデータのみを使用します。非表示のデータは無視されます。ただし、いくつかの状況では、コンテンツの機械可読バージョンと人間可読バージョンの両方を提供すると便利な場合があります。たとえば、「エルビスの誕生日」というテキスト文字列は、多くの人間の読者にとって重要ですが、検索エンジンにとっては1935-01-08ほど意味がありません。同様に、人間の読者は$記号の意味を推測できますが、価格がペソなのかドルなのかを検索エンジンに明確に伝えると便利です。
http://schema.org/docs/gs.html状態(メタタグの使用に関連):
この手法は慎重に使用する必要があります。他の方法ではマークアップできない情報のコンテンツにのみメタを使用します。
http://schema.org/docs/faq.html#13の状態:
一般的なルールとして、Webページにアクセスするユーザーに表示されるコンテンツのみをマークアップし、非表示のdivまたは他の非表示ページ要素のコンテンツはマークアップしないでください。
私の質問は:
- エラーは返されませんが、この方法でメタタグを使用すると(つまり、コンテンツの複製、情報の非表示など)、検索エンジンによってペナルティが科されますか?
- これが適切でない場合は、実際のデータからマイクロデータを分割する方法を提案できますか、それとも弾丸を噛んでこれをケースバイケースでHTMLに実装する必要がありますか?