Как создавать расширенные фрагменты на стороне клиента

#javascript #schema.org #google-rich-snippets #structured-data #ldjson

Вопрос:

На веб-сайте, над которым я работаю, невозможно получить текущую цену на серверной части, поэтому мы пытаемся сгенерировать часть расширенного фрагмента продукта на стороне клиента, надеясь, что поисковые роботы Google смогут их получить.

На той же странице у нас есть другие данные, касающиеся продукта, некоторые из них создаются на серверной части, а другие создаются сторонним сервисом, но все они имеют одно и то же @id поле.

Я не нашел много документации о создании расширенных фрагментов на стороне клиента, но следуя этому руководству https://developers.google.com/search/docs/advanced/structured-data/generate-structured-data-with-javascript Я придумал этот код:

 // retrieve values from hypothetic `getProductValues` function
const { richSnippetProductId, offerUrl, amount, currency } = getProductValues(); 

// create a JS object
const structuredData = {
  '@context': 'http://schema.org',
  '@type': 'Product',
  '@id': richSnippetProductId,
    offers: {
      '@type': 'Offer',
      availability: 'https://schema.org/InStock',
      url: offerUrl,
      price: amount,
      priceCurrency: currency,
  }
};

// stringify in order to insert the variable in the rich snippet
const structuredDataText = JSON.stringify(structuredData);

// create the rich snippet
const script = document.createElement('script');
script.setAttribute('type', 'application/ld json');
script.textContent = structuredDataText;
document.body.appendChild(script);
 

Как вы думаете, это хороший подход? Существуют ли другие подходы, которые мы должны рассмотреть? Считаете ли вы, что лучше всего добавить скрипт на страницу head или body на нее (если это имеет какое-либо значение)?

Есть ли у вас какие-либо другие советы о том, как облегчить поиск данных искателями?