Use Schema.org's 'WebSite' and 'Article' combined or individually - schema.org

Whats is good, combine WebSite and Article or use individually?
For example:
Schema of example.com (home):
<script type="application/ld+json">
{
"#context": "https://schema.org/",
"#type": "WebSite",
"name": "",
"url": "",
"potentialAction": {
"#type": "SearchAction",
"target": "{search_term_string}",
"query-input": "required name=search_term_string"
}
}
</script>
Schema of a one post example.com/example-post/ (article):
<script type="application/ld+json">
{
"#context": "https://schema.org",
"#type": "Article",
"headline": "",
"image": {
"#type": "ImageObject",
"url": "",
"width": ,
"height":
}
</script>
Now my question is, in the articles (example.com/example-post/), I must place the schema separately (as above) or in combination with the WebSite like this:
<script type="application/ld+json">
{
"#context": "https://schema.org/",
"#type": "WebSite",
"name": "",
"url": "",
"potentialAction": {
"#type": "SearchAction",
"target": "{search_term_string}",
"query-input": "required name=search_term_string"
}
},
{
"#context": "https://schema.org",
"#type": "Article",
"headline": "",
"image": {
"#type": "ImageObject",
"url": "",
"width": ,
"height":
}
</script>

Related

What is the correct structure to represent a list of movie showtimes on the same page?

I am building a website to reference movie showtimes.
The site shows a now playing page with a list of movies, each movie has a page with the upcoming showtimes.
I added some structured data to enhance the way search engines sees the data on my website.
Here is what I have so far:
{
"#context": "https://schema.org",
"#type": "ItemList",
"numberOfItems": 2,
"itemListElement": [
{
"#type": "ListItem",
"name": "Screening Event 1",
"position": 1,
"item": {
"#context": "https://schema.org",
"#type": "ScreeningEvent",
"startDate": "2021-09-18T15:15:00.000Z",
"url": "http://localhost:3000/film/Boite-noire/663260#6144ab7a22b6d900165aa836",
"inLanguage": "fr",
"location": {
"#context": "https://schema.org",
"#type": "MovieTheater",
"name": "Pathé Tunis City",
"url": "http://localhost:3000/medium/pathe-tunis-city"
},
"workPresented": {
"#context": "https://schema.org",
"#type": "Movie",
"name": "Boîte noire",
"image": "https://image.tmdb.org/t/p/w300_and_h450_bestv2/jIfFFC4YwiI8TVaGtbl1eT9BRaI.jpg",
"url": "http://localhost:3000/film/Boite-noire/663260",
"sameAs": "https://imdb.com/title/tt10341034",
"director": {
"#type": "Person",
"name": "Yann Gozlan"
}
}
}
},
{
"#type": "ListItem",
"name": "Screening Event 2",
"position": 2,
"item": {
"#context": "https://schema.org",
"#type": "ScreeningEvent",
"startDate": "2021-09-18T20:15:00.000Z",
"url": "http://localhost:3000/film/Boite-noire/663260#6144ab8522b6d900165aa837",
"inLanguage": "fr",
"location": {
"#context": "https://schema.org",
"#type": "MovieTheater",
"name": "Pathé Tunis City",
"url": "http://localhost:3000/medium/pathe-tunis-city"
},
"workPresented": {
"#context": "https://schema.org",
"#type": "Movie",
"name": "Boîte noire",
"image": "https://image.tmdb.org/t/p/w300_and_h450_bestv2/jIfFFC4YwiI8TVaGtbl1eT9BRaI.jpg",
"url": "http://localhost:3000/film/Boite-noire/663260",
"sameAs": "https://imdb.com/title/tt10341034",
"director": {
"#type": "Person",
"name": "Yann Gozlan"
}
}
}
}
]
}
Is there a better way to represent this kind of information without repeating data ?
My suggestion gave the google guide for Carousel --> Single, all-in-one-page list:
{
"#context": "https://schema.org",
"#type": "Movie",
...
"#id":"https://cinema.com/lordofrings.html",
"name":"Lord of the rings",
"subjectOf":{
"#type": "ItemList",
"itemListElement": [
{
"#type": "ListItem",
"position": "1",
"item": {
"#type": "ScreeningEvent",
"url": "https://cinema.com/lordofrings.html#15",
"startDate": "2021-09-18T15:00:00+01:00"
}
},
{
"#type": "ListItem",
"position": "2",
"item": {
"#type": "ScreeningEvent",
"url": "https://cinema.com/lordofrings.html#18",
"startDate": "2021-09-18T18:00:00+01:00"
}
}
]
}
}
For ellipsis, set the required movie info and add all the required and recommended properties for the Google Rich Results Test.

Error in Google SDTT: "Duplicate values for url are not allowed."

Google Structured Data Testing Tool returns for the following JSON-LD:
Duplicate values for url are not allowed.
Why? I do not understand.
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "ItemList",
"itemListElement": [{
"#type": "ListItem",
"position": 0,
"item": {
"#type": "Article",
"headline": "Bonito de norte",
"alternativeHeadline": "Thunnus alalunga.",
"image": {
"#type": "ImageObject",
"url": "http://dechado09.softgalia.com/producto/imagenes/facebook/2/BONITO.jpg?1502195043",
"width": "1200",
"height": "830"
},
"author": "SoftGalia Aplicaciones Informáticas S.L.",
"editor": "Pescados Trocheros",
"keywords": "Venta pescado, Mayorista de Pescado",
"publisher": {
"#type": "Organization",
"name": "Academia Lucense de Balonmano",
"logo": {
"#type": "ImageObject",
"url": "http://dechado09.softgalia.com/logo/facebook/1/logo-trochero-01.jpg?1504175529",
"width": "1200",
"height": "830"
}
},
"url": "http://dechado09.softgalia.com/productos/index",
"datePublished": "2017-08-08 12:24:11 UTC",
"dateCreated": "2017-08-08 12:24:11 UTC",
"dateModified": "2017-08-22 07:43:53 UTC",
"description": "Thunnus alalunga.",
"articleBody": "Thunnus alalunga.",
"mainEntityOfPage": "http://dechado09.softgalia.com/productos/index"
}
},
{
"#type": "ListItem",
"position": 1,
"item": {
"#type": "Article",
"headline": "Merluza",
"alternativeHeadline": "Merluccius merluccius",
"image": {
"#type": "ImageObject",
"url": "http://dechado09.softgalia.com/producto/imagenes/facebook/4/merluza-primer-plano.jpeg?1504525751",
"width": "1200",
"height": "830"
},
"author": "SoftGalia Aplicaciones Informáticas S.L.",
"editor": "Pescados Trocheros",
"keywords": "Venta pescado, Mayorista de Pescado",
"publisher": {
"#type": "Organization",
"name": "Academia Lucense de Balonmano",
"logo": {
"#type": "ImageObject",
"url": "http://dechado09.softgalia.com/logo/facebook/1/logo-trochero-01.jpg?1504175529",
"width": "1200",
"height": "830"
}
},
"url": "http://dechado09.softgalia.com/productos/index",
"datePublished": "2017-09-04 11:49:13 UTC",
"dateCreated": "2017-09-04 11:49:13 UTC",
"dateModified": "2017-09-05 08:38:27 UTC",
"description": "Merluccius merluccius",
"articleBody": "Merluccius merluccius",
"mainEntityOfPage": "http://dechado09.softgalia.com/productos/index"
}
}
]
}
</script>
There are two ways to implement a list format for your structured data:
Summary page + multiple full details pages
List item A single, all-in-one-page list
My case is a sumary page of articles, and google guide say: "The summary page has a short description of each item in the list, and each description points to a separate details page that is focused entirely on one item."
well the markup must be.
{ "#context": "http://schema.org",
"#type": "ItemList",
"itemListElement":
[
{
"#type":"ListItem",
"position": 0,
"url": "http://dechado09.softgalia.com/productos/bonito-de-norte"
},
{
"#type":"ListItem",
"position": 1,
"url": "http://dechado09.softgalia.com/productos/merluza"
}
]
}

Use image gallery and main text in Product

This is an example of JSON-LD for a Schema.org Product:
<script type="application/ld+json">
{
"#context": "http://schema.org/",
"#type": "Product",
"name": "Executive Anvil",
"image": "http://www.example.com/anvil_executive.jpg",
"brand": {
"#type": "Thing",
"name": "ACME"
},
"aggregateRating": {
"#type": "AggregateRating",
"ratingValue": "4.4",
"ratingCount": "89"
},
"offers": {
"#type": "AggregateOffer",
"lowPrice": "119.99",
"highPrice": "199.99",
"priceCurrency": "USD"
}
}
</script>
But I have a lot of more properties for my product.
For example a related gallery, related videos, a long main text.
There are not these properties in Product.
Do I have to leave them? Or is there a way to use them?
For content about the product (like a video, a gallery, an article, etc.) you could use the Product item as value of the about property:
{
"#context": "http://schema.org/",
"#type": "VideoObject",
"name": "Video about your product",
"about": {
"#type": "Product",
"name": "Your product"
}
}
With JSON-LD’s #reverse, you can specify these within the Product item, if you prefer it:
{
"#context": "http://schema.org/",
"#type": "Product",
"name": "Your product",
"#reverse": {
"about": {
"#type": "VideoObject",
"name": "Video about your product"
}
}
}

How to enable rich snippets using JSON-LD code for multi product pages?

I would like to make rich snippets for product pages appear in google SERPS. It's for a page that:
Contains multiple products that each have individual prices
Has an average aggregate rating
As far as I understand it's possible to add multiple products to one page in schema org using multiple offers. The problem is that I couldn't find the documentation on how to do that using JSON-LD. I've tried it myself in the code below but have no idea if this is correct. Can I just add offers like this or do I need to add them in a different way?
<script type="application/ld+json">
{
"#context": "http://schema.org/",
"#type": "Product",
"aggregateRating": {
"#type": "AggregateRating",
"ratingValue": "[rating variable]",
"reviewCount": "[count variable]"
},
"name": "[product name]",
"offers": {
"#type": "Offer",
"price": "[price of product]",
"priceCurrency": "[currency]"
},
"name": "[product name]",
"offers": {
"#type": "Offer",
"price": "[price of product]",
"priceCurrency": "[currency]"
},
"name": "[product name]",
"offers": {
"#type": "Offer",
"price": "[price of product]",
"priceCurrency": "[currency]"
},
}
</script>
just create an array of the offers.
<script type="application/ld+json">
{
"#context": "http://schema.org/",
"#type": "Product",
"name": "[name]",
"image": "[logo]",
"aggregateRating": {
"#type": "AggregateRating",
"ratingValue": "[rating],
"reviewCount": "[votes]"
},
"offers": [{
"#type": "Offer",
"priceCurrency": "[currency]",
"price": "[price]",
"category": {
"#type": "thing",
"name": "[name product]"
}
},{
"#type": "Offer",
"priceCurrency": "[currency]",
"price": "[price]",
"category": {
"#type": "thing",
"name": "[name product]"
}
},{
"#type": "Offer",
"priceCurrency": "[currency]",
"price": "[price]",
"Category": {
"#type": "thing",
"name": "[name product]"
}
}]
}
</script>

google now not showing event registration card

I am able to see the event in email but not in Google Now app. I am triggering email from Google App Script. The markup has been verified by Google's markup tester and is valid. Below is JSON-LD format:
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "EventReservation",
"reservationNumber": "IO123456789",
"modifyReservationUrl": "http://www.searshomeservices.com",
"modifiedTime": "2015-03-04T02:30:00-06:00",
"underName": {
"#type": "Person",
"name": "John Smith"
},
"reservationStatus": "http://schema.org/Confirmed",
"reservationFor": {
"#type": "Event",
"name": "Event Confirmation",
"startDate": "2015-03-05T04:30:00-06:00",
"performer": {
"#type": "Person",
"name": "Jitendra",
"image": "https://lh3.googleusercontent.com/-qYfc01xZOSg/Uw46cceE_EI/AAAAAAAAABw/xNYxVibhDSs/s70-no/cara_verde.png"
},
"location": {
"#type": "Place",
"name": "Moscone Center",
"address": {
"#type": "PostalAddress",
"streetAddress": "800 W Howard St.",
"addressLocality": "Chicago",
"addressRegion": "IL",
"postalCode": "60626",
"addressCountry": "US"
}
}
}
}
</script>