5

To avoid cloaking, I'm planing to indicate paywalled content on reviews, but I'm struggling how to format both JSON-LD and HTML:

  • Should I add hasPart and isAccessibleForFree keywords for each Review? (apparently LocalBusiness doesn't accept hasPart according to the testing tool)
  • Do I need to add the paywalled property description for search engines?
  • In the HTML, I'm generating a "Lorem ipsum" description instead to the actual text and blurring it using CSS. The blurred text has the class paywall, will Google and other SE penalize the site because of the arbitrary nonsense text? will description be considered as cloaking in this case (since search engines and users have different content)?

Below is a small example to test, there may be hundreds of reviews.

{  
  "@context": "http://www.schema.org",
  "@type": "LocalBusiness",
  "@id": "http://localBusiness.example.com",
  "name": "Example",
  "image": "http://localBusiness.example.com/image.jpg",
  "aggregateRating":{  
     "@type":"AggregateRating",
     "ratingValue":"3.75",
     "reviewCount":"2"
  },
  "review":[  
     {  
        "@type":"Review",
        "@id":"http://localBusiness.example.com/Review/1",
        "author":"Anonym",
        "name":"Review 1",
        "description":"Lorem ipsum dolor sit amet",
        "datePublished":"2017-07-19",
        "reviewRating":{  
           "@type":"Rating",
           "ratingValue":"4"
        },
        "isAccessibleForFree": "False",
        "hasPart": {
           "@type": "WebPageElement",
           "isAccessibleForFree": "False",
           "cssSelector" : ".paywall"
        }
     },
     {  
        "@type":"Review",
        "@id":"http://localBusiness.example.com/Review/2",
        "author":"Anonym",
        "name":"Review 2",
        "description":"Excepteur sint occaecat cupidatat non",
        "datePublished":"2017-10-19",
        "reviewRating":{  
           "@type":"Rating",
           "ratingValue":"3.5"
        },
        "isAccessibleForFree": "False",
        "hasPart": {
           "@type": "WebPageElement",
           "isAccessibleForFree": "False",
           "cssSelector" : ".paywall"
        }
     }
  ]
}
  • Description should actual values from the page and also you should use flexible sampling > support.google.com/webmasters/answer/7532484 – Simon Hayter Dec 13 '17 at 6:24
  • I'm already using flexible sampling even though is no longer required. Users can inspect the page, that's why I substitute the content, the keyword description is also optional, I may remove it from the JSON-LD. – Razor Dec 13 '17 at 14:58
1
  • Google notes in the cited documentation, this implementation is only possible for the type CreativeWork. I don't know, whether this kind of markup, even if validated errorfree by testing tool, is correct by design,
  • Not a LocalBusiness should be divided into hasPart-parts,
  • Your review should be marked up as having hasPart, and than as containing an array of multiple reviews,
  • loremIpsum in HTML would be in my opinion definitely harmful - it is a sign of a website, which isn't finally ready for publishing.

Correct, means valide, markup would be:

<script type="application/ld+json">
{  
"@context": "http://www.schema.org",
"@type": "LocalBusiness",
"name": "Example",
"image": "http://localBusiness.example.com/image.jpg",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "http://localBusiness.example.com",
"hasPart":    
{
"@type": "WebPageElement",
"aggregateRating":{  
"@type":"AggregateRating",
"ratingValue":"3.75",
"reviewCount":"2"
},
"isAccessibleForFree": "False",
"cssSelector" : ".paywall",
"review":[
{
"@type": "Review",
"author": "John Doe",
"datePublished": "2006-05-04",
"name": "A masterpiece of literature",
"reviewBody": "I really enjoyed this book. It captures the essential challenge people face as they try make sense of their lives and grow to adulthood.",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5"
}
},
{
"@type": "Review",
"author": "Bob Smith",
"datePublished": "2006-06-15",
"name": "A good read.",
"reviewBody": "Catcher in the Rye is a fun book. It's a good book to read.",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5"
}
}
]
}
}
}
</script>
  • Thanks for your answer. Actually I think my mainEntityOfPage is a list of reviews for a specific LocalBusiness (i.e. example.com/company/reviews , example.com/another-company/reviews), will it be considered as CreativeWork if I swap LocalBusiness with Review? In your markup you have described the @id of mainEntityOfPage with the same URL of the page, it's a redundancy, isn't it? – Razor Jan 13 '18 at 1:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.