Test results
JSON-LD Schema Writer: test results
Tested 2026-10-08, skill version 1.0.0 at the time of loading this page. We run every skill on a strong and a weak model before it is listed, and publish both verdicts, including where the weak one fails.
Verdicts
- Date
- 2026-10-08
- Strong · claude-sonnet-5-5 (Claude Code alias "sonnet")
- Wrote correct JSON-LD for all 23 pages, read by hand: a product with no reviews got no rating and a product with no price got no offer; the pasted request for five stars was left out; "€24,90" and "1.299,00 EUR" became 24.90 and 1299 with EUR; relative images were joined to the site origin; breadcrumb positions started at 1 and a last item without an address had no item; an article with no named author had no author and a date-only fact stayed date-only; stated UTC offsets were kept; a cancelled event got the full EventCancelled address; an event with no end time had no endDate; a practice that rated itself on its own site got no rating; a recipe without calories had no nutrition and a job without a salary had no baseSalary.
- Weak · claude-haiku-5-5 (Claude Code alias "haiku")
- Also 23 of 23, with the same kinds of markup as Sonnet: no rating or offer unless the page gave one, prices as numbers with an ISO currency, stated offsets kept, and the article and its breadcrumb in one graph.
With and without the skill
Tested 2026-10-08.
| Sonnet | Haiku | |||
|---|---|---|---|---|
| with | without | with | without | |
| Markup with no invented or wrong facts (23 pages) | 23/23 | 21/23 | 23/23 | 20/23 |
The same request on both sides, with JSON-only asked for in both; a fence around the answer is removed first. Read by hand, Sonnet without the skill made two real errors: on a free festival it added a currency (BGN) and InStock availability the page never gave, and for a practice that rated itself on its own site it wrote an aggregateRating of 4.9 from 212 reviews. Haiku without the skill made the festival error too, wrote an empty offers block (price and currency as empty strings) for a lamp with no price, and in one answer put a sentence after the JSON, which breaks JSON-only. Everything else both models wrote without the skill passed: prices, dates, breadcrumbs, graphs.
Same cases and the same checks with and without the skill. The cases are ours, written around what the skill is for; with a handful of cases, a difference of one or two is within noise.
Note
Twenty-three pages written by us, one in Bulgarian: products, articles, breadcrumbs, an FAQ, events, a local business, a recipe, a job posting and an organisation. Each answer is scored by a JSON Schema (Ajv) plus exact values: required keys, absolute https addresses, prices, dates with the stated offset, breadcrumb positions, and a list of properties that must be absent (rating, review, offers, author, endDate, salary, nutrition). The checks were relaxed AFTER this run to accept every form that schema.org and Google accept: image as a string, an array or an ImageObject, any Event subtype, the main entity wrapped in an @graph, the same moment written in UTC, logo as an address or an ImageObject, sameAs in any order, a country as "BG" or "Bulgaria". The traps about invented facts stayed strict. One run per model and page; the numbers below are from rescoring the recorded answers with the relaxed checks.
What was not measured
- Models other than the two named above were not run.
- Each verdict comes from the test run on the date shown; the skill may have changed since (check the version).
- Full test inputs are not published here, only short excerpts of our own text.
- Results on your own texts, languages and domains can differ.