Add schema.org article - problem with LOGO - html

I tried to add a schema.org article on a page but it is not validated by Google, maybe the problem is with the logo ?
<script type="application/ld+json">
{
"#context": "https://schema.org",
"#type": "Article",
"author": "Organization",
"name": "mywebsite",
"headline": "Pericolosità - DEFINIZIONE",
"image": [
"https://www.example.com/a.jpg"
],
"datePublished": "2021-04-09T04:00:00+00:00",
"dateModified": "2021-04-09T04:00:00+00:00",
"mainEntityOfPage": "https://www.example.com/article",
"publisher":{
"#type": "Organization",
"name":"mywebsite",
"url": "https://www.example.com/logo.jpg",
"logo": {
"#type": "imageObject",
"url": "https://www.example.com/logo.jpg"
}
}
}
</script>

For the publisher, you specified the URL property for the logo:
"publisher":{
"#type": "Organization",
"name":"mywebsite",
"url": "https://www.example.com/logo.jpg",
"logo": {
"#type": "imageObject",
"url": "https://www.example.com/logo.jpg"
}
}
However, it requires the URL of the publisher's website but not the logo.
In addition, the problem with a particular logo may be due to the wrong size or format, which you do not report. So check to see how your logo matches Google's Guidelines for Logo.

Related

Does Google regard #type": "AggregateOffer" and "#type": "Offer" as duplication?

A site is flagging up (Google Search Console) Unparsable structured data- Duplicate unique property.
It is highlighting #type": "AggregateOffer" but there is only one instance of #type": "AggregateOffer" on any page.
As well as #type": "AggregateOffer" there is "#type": "Offer" on each affected page.
Does Google regard #type": "AggregateOffer" and "#type": "Offer" as duplication?
"offers": {
"#type": "Offer",
"seller": {
"#type": "Organization",
"name": "Not real name"
},
"#type": "AggregateOffer",
"highPrice":714.32,
"lowPrice":449.12,
"priceCurrency": "GBP",
"availability": "https://schema.org/InStock"
I have reworked the above code and my schema now validates:
<script type="application/ld+json">
{
"#context": "https://schema.org",
"#type": "Product",
"productID": "47",
"url": "https://www.webeg.uk/cpscpsprep/acatalog/Engagement-Ring-47.html",
"image": "s-Engagement.jpg",
"description":"A stunning diamond ring for the future bride....",
"itemCondition":"New",
"name": "Engagement Ring",
"offers": {
"#type": "AggregateOffer",
"highPrice":410.00,
"lowPrice":390.00,
"priceCurrency": "GBP",
"availability": "https://schema.org/InStock",
"seller": {
"#type": "Organization",
"name": "Sample Company"
}
}
}
</script>
https://validator.schema.org/#url=https%3A%2F%2Fwww.webeg.uk%2Fcpscpsprep%2Facatalog%2FEngagement-Ring-47.html
So it seems the answer is that Google does not like #type": "AggregateOffer" and "#type": "Offer" in the same schema snippet!
Thank you.

Structured data not working right with CSS selectors (adding slashes in links and other problems). How do I fix this?

I work for a website with 10000+ products and I decided to input the structured data dynamically via CSS selectors in GTM because doing it manually would be too time consuming. It all worked fine, but then I ran into some problems.
Firstly, the structured data added slashes to links that lead to a 404, like so:
"url": "https:\/\/example.com\/shop\/category\/subcategory\/product"
Secondly, the prices in my country are separated with a comma, and not a dot, so the rich results test returns an error. Is there a way to change this?
Full schema here.
<script type="application/ld+json"> {
"#context": "https://www.schema.org",
"#type": "product",
"sku": "{{sku}}",
"image": ["{{carousel-item active}}"],
"name": "{{product-title}}",
"description": "{{product-description}}",
"category": "{{category}}",
"brand": {
"#type": "brand",
"name": "BRAND",
"logo": "https://example.com/images/logo.png"
},
"offers": {
"#type": "Offer",
"itemCondition": "http://schema.org/NewCondition",
"availability": "http://schema.org/InStock",
"price": "{{price}}",
"priceValidUntil": "2021-11-11",
"priceCurrency": "HRK",
"url": "{{Page URL}}",
"shippingDetails": {
"#type": "OfferShippingDetails",
"shippingRate": {
"#type": "MonetaryAmount",
"value": "25",
"currency": "HRK"
},
"shippingDestination": {
"#type": "DefinedRegion",
"addressCountry": "HR"
},
"deliveryTime": {
"#type": "ShippingDeliveryTime",
"transitTime": {
"#type": "QuantitativeValue",
"minValue": "3",
"maxValue": "5"
},
"cutOffTime": "17:00-08:00",
"businessDays": {
"#type": "OpeningHoursSpecification",
"dayOfWeek": [
"https://schema.org/Monday",
"https://schema.org/Tuesday",
"https://schema.org/Wednesday",
"https://schema.org/Thursday",
"https://schema.org/Friday" ]
}
}
}
}
}
}
</script>
I am very new to this, so please be gentle.
P.S. All other parts of schema work fine.

schema markup for multilingual website / subdomains

I just created a translation of my website:
http://example.com (Original website)
http://fr.example.com (Translated Version)
I need to know the best way to schema-markup the homepages.
On Main Website (English Version), here is the markup I used:
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "Organization",
"#id": "https://website.com/#organization",
"name": "My Website",
"url": "http://example.com/",
"logo": "http://example.com/logo.png",
"contactPoint": {
"#type": "ContactPoint",
"telephone": "+2348157437268",
"contactType": "customer service"
},
"sameAs": [
"https://www.facebook.com/examplefb",
"https://twitter.com/exampletwitter",
"https://instagram.com/exampleig"
]
}
</script>
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "WebSite",
"#id": "http://example.com/#website",
"url": "http://example.com/",
"inLanguage": "en",
"publisher": {"#id": "http://example.com/#organization"}
}
</script>
Now my question is, on the french version homepage, I guess this what I should use:
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "WebSite",
"#id": "http://fr.example.com/#website",
"url": "http://fr.example.com/",
"inLanguage": "fr",
"publisher": {"#id": "https://website.com/#organization"}
}
</script>
But then,
should I leave the publisher as "#id": "http://example.com/#organization"? OR
should I copy the Organization Script tag into the french homepage also? OR
should I just copy the organization details and paste into "publisher" on the french page?
I'm open to corrections if my method/approach is wrong.
Thank You.

What is wrong with my BlogPosting code? "Missing '}' or object member name."

I've been working on this BlogPosting schema, and I run it through the Google testing tool and I keep seeing an error message at the very end:
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "BlogPosting",
"mainentityofpage": "https://www.northcountrylaw.com",
"headline": "14 Ways Json Can Improve Your SEO",
"alternativeHeadline": "and the women who love them",
"image": "http://example.com/image.jpg",
"award": "Best article ever written",
"editor": "John Doe",
"genre": "search engine optimization",
"keywords": "seo sales b2b",
"wordcount": "1120",
"Publisher": {
"#type": "Organization",
"name": "Cat's Meow",
"logo": {
"#type": "ImageObject",
"name": "Cats cats cats",
"width": "1024",
"height": "1024",
"url": "https://www.greatcats.png"
}
},
"url": "http://www.example.com",
"datePublished": "2015-09-20",
"dateCreated": "2015-09-20",
"dateModified": "2015-09-20",
"description": "We love to do stuff to help people and stuff",
"articleBody": "You can paste your entire post in here, and yes it can get really really long.",
"author": {
"#type": "Person",
"name": "kitten boots"
},
</script>
JSON-LD errors
You have four {, but only three }.
You have a , after the last }, but nothing follows.
So, you have to remove the comma and close the author:
"author": {
"#type": "Person",
"name": "kitten boots"
}
}
Schema.org errors
Schema.org terms are case-sensitive. It has to be:
publisher instead of Publisher
mainEntityOfPage instead of mainentityofpage
wordCount instead of wordcount

Email Markup Tester

Google's email Markup Tester always fails with the error
"INVALID_OBJECT: orderStatus,http://schema.org/OrderStatusType"
I have tried with all there samples located on this page:
https://developers.google.com/gmail/markup/reference/order
Do we think its just a question of waiting for them to fix it?
example json:
<html>
<body>
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "Order",
"merchant": {
"#type": "Organization",
"name": "Amazon.com"
},
"orderNumber": "123-4567890-1234567",
"priceCurrency": "USD",
"price": "29.99",
"acceptedOffer": {
"#type": "Offer",
"itemOffered": {
"#type": "Product",
"name": "Google Chromecast"
},
"price": "29.99",
"priceCurrency": "USD",
"eligibleQuantity": {
"#type": "QuantitativeValue",
"value": "1"
}
},
"url": "https://www.amazon.ca/gp/css/summary/edit.html/orderID=123-4567890-1234567"
}
</script>
</body>
</html>
I had the same issue and fixed validation by adding:
"orderStatus" : "OrderDelivered",
I noticed using the following didn't work (even though it is how the Google Example in the documentation has it ):
"orderStatus": "http://schema.org/OrderStatus/OrderDelivered",
The problem is that Google is insisting that you provide a valid statusOrder key. The the following validates:
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "Order",
"merchant": {
"#type": "Organization",
"name": "Amazon.com"
},
"orderNumber": "123-4567890-1234567",
"priceCurrency": "USD",
"price": "29.99",
"acceptedOffer": {
"#type": "Offer",
"itemOffered": {
"#type": "Product",
"name": "Google Chromecast"
},
"price": "29.99",
"priceCurrency": "USD",
"eligibleQuantity": {
"#type": "QuantitativeValue",
"value": "1"
}
},
"orderStatus" : "OrderDelivered",
"url": "https://www.amazon.ca/gp/css/summary/edit.html/orderID=123-4567890-1234567"
}
</script>