Sitelinks Search Box JSON-LD giving error on Googl

2019-04-06 04:10发布

问题:

I implemented Google’s Sitelinks Search Box to my site. It was working very well. But today I cheked again on Google Structured Data Testing Tool and something was wrong. Now I’m getting below error:

And my implementation is:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "WebSite",
  "url": "https://www.saatler.com/",
  "potentialAction": {
    "@type": "SearchAction",
    "target": "https://www.saatler.com/arama?ara={search_term_string}",
    "query-input":"required name=search_term_string"
  }
}
</script>

When I check the JSON on the JSON-LD playground everything is looking good. I didn’t change anything on my site. Is Google wrong about this issue? Or the Schema.org structure has changed? What should I do to fix these 2 problems?

回答1:

I noticed that even the examples on the online documentation receive the same exact error you received. When I changed

"@context": "http://schema.org"

to

"@context": "http://schema.org/true"

the error disappeared. Hope this helps.

<script type="application/ld+json">
{
  "@context": "http://schema.org/true",
  "@type": "WebSite",
  "url": "https://www.saatler.com/",
  "potentialAction": {
    "@type": "SearchAction",
    "target": "https://www.saatler.com/arama?ara={search_term_string}",
    "query-input":"required name=search_term_string"
  }
}
</script>



回答2:

Found the answer by reviewing the schema.org Potential Actions page.

Apparently, for whatever reason, Google’s Structured Data Testing Tool doesn’t like our short-hand version for textual representations of input and output.

When I switched to the verbose version I get the good checkmark for WebSite (1), not http://www.example.com/Website (1).

Textual representations of Input and Output

For convenience, we also support a textual short-hand for both of these types that is formatted and named similarly to how they would appear in their HTML equivalent. For example:

"<property>-input": {
  "@type": "PropertyValueSpecification",
  "valueRequired": true,
  "valueMaxlength": 100,
  "valueName": "q"
}

Can also be expressed as:

<property>-input: "required maxlength=100 name=q"

Here is our full code for anyone else trying to follow this:

<script type="application/ld+json">
{

  "@context": "http://schema.org",
  "@type": "WebSite",
  "name" : "Example Company",
  "url": "http://www.example.com/",
  "sameAs" : [ "https://www.facebook.com/pages/Example/###############",
    "https://plus.google.com/b/#####################/#####################"],
  "potentialAction": {
    "@type": "SearchAction",
    "target": "http://www.example.com/search/results/?q={q}",
    "query-input": {
        "@type": "PropertyValueSpecification",
        "valueRequired": true,
        "valueMaxlength": 100,
        "valueName": "q"
    }
  }
}
</script>


回答3:

It was a bug in the Google Structured Data Testing Tool.

It’s fixed now: the tool reports no more errors for your markup.