# JSON-LD Schema Writer

JSON-LD Schema Writer is a tested SKILL.md that writes schema.org JSON-LD for one web page from the facts you give it, answered as JSON only with no script tag and no fence; an agent buys it once for $0.05 over x402.

- Page: https://aiskills402.com/skills/json-ld-schema
- Category: SEO & Content (https://aiskills402.com/categories/seo)
- Price: $0.05 once, USD-priced, paid in USDC on Base over x402. Price as loaded on this page. The 402 response your agent receives is authoritative.
- Version: 1.0.0
- Card (JSON): https://api.aiskills402.com/v1/skills/json-ld-schema

## Use it when

Writes schema.org JSON-LD for one web page from the facts you give it, answered as JSON only with no script tag and no fence. Covers Article, BlogPosting, Product with Offer, BreadcrumbList, FAQPage, Event, Organization, LocalBusiness, Recipe and JobPosting. Leaves out every fact that was not given instead of inventing it: no rating, review, price, availability, author, date or salary appears unless the page states it. Writes prices as plain numbers with an ISO currency code, dates in ISO 8601 with the stated offset, absolute URLs built from the site origin, and breadcrumb positions from 1. Use when asked to write, fix or check JSON-LD, structured data or schema markup for a page, product, article, event, FAQ or breadcrumb.

## Not for

It does not test whether Google will show a rich result, audit a whole site, crawl pages or write the script tag around the markup. It writes the markup for one page from the facts you give it, and leaves out what you did not give. It cannot look up a missing price, rating, author or time zone for you. It also does not decide which pages deserve markup; that stays with you.

## Tested, honestly

Tested 2026-10-08.

- Strong model (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 model (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.

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.

### With and without the skill

Tested 2026-10-08.

- Markup with no invented or wrong facts (23 pages): Sonnet 23/23 with, 21/23 without; Haiku 23/23 with, 20/23 without.

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.

Full summary: https://aiskills402.com/skills/json-ld-schema/tests

## Example

### English (claude-sonnet-5-5)

Before:

> Page: product page of a water bottle. Site origin: https://shop.example. Name: Trail Bottle 750 ml. Description: Stainless steel bottle, keeps drinks cold for 24 hours. Brand: Norden. Main image: /img/trail-bottle.jpg. Price: €24,90. In stock. The page shows no customer reviews and no ratings yet.

After:

> {"@context":"https://schema.org","@type":"Product","name":"Trail Bottle 750 ml","description":"Stainless steel bottle, keeps drinks cold for 24 hours.","image":["https://shop.example/img/trail-bottle.jpg"],"brand":{"@type":"Brand","name":"Norden"},"offers":{"@type":"Offer","price":24.90,"priceCurrency":"EUR","availability":"https://schema.org/InStock"}}

### Bulgarian (claude-sonnet-5-5)

Before:

> Page: article on a Bulgarian site. Site origin: https://novini.example. Headline: Нови велоалеи в центъра на града. Published 9 October 2026 at 08:15, UTC+03:00. Author: Мария Георгиева. Image: /img/aleya.jpg.

After:

> {"@context":"https://schema.org","@type":"Article","headline":"Нови велоалеи в центъра на града","image":["https://novini.example/img/aleya.jpg"],"datePublished":"2026-10-09T08:15:00+03:00","author":{"@type":"Person","name":"Мария Георгиева"}}

## What is in the file

- The answer
- A fact that is not given is left out
- Formats
- By type
- Google and these types
- Work in this order
- Short examples

## Languages

Any language

## How to buy

Agent (HTTP):

1. GET https://api.aiskills402.com/v1/skills/json-ld-schema/file without a payment header. The answer is 402 with a PAYMENT-REQUIRED header (x402 v2): exact amount, asset, network, recipient.
2. Sign `accepts[0]` with an x402 client (for example @x402/core + @x402/evm).
3. Repeat the GET with the signature in the PAYMENT-SIGNATURE header. The answer is 200 with the file, its sha256 and a re-download token.

Agent (MCP): https://mcp.aiskills402.com/mcp — free tools search_skills, get_skill, redownload_skill. Buying itself is over HTTP.

Full flow: https://aiskills402.com/docs

## The file

- Version: 1.0.0
- Size: 8.3 KB (8499 bytes)
- SHA-256: a119bd8c4f68d61831ea0ddd84882ec12fad836e572c93306efbb3a45c999dcc
- Updated: 2026-10-08
- New versions are free through your re-download token.

## Versions

### 1.0.0 (2026-10-08)

First release: writes schema.org JSON-LD for one page from the facts given, as JSON only. Leaves out every fact that was not given (ratings, reviews, offers, authors, dates, salaries), writes prices as numbers with an ISO currency code, availability and event status as full schema.org URLs, dates in ISO 8601 with the stated offset, absolute URLs built from the site origin, and breadcrumb positions from 1. Covers Article, Product, BreadcrumbList, FAQPage, Event, Organization, LocalBusiness, Recipe and JobPosting.

## License

Perpetual, non-exclusive; use and modify for yourself incl. paid work; no resale or republishing. Holder: Georgi Kalchev, aiskills402.com. Terms: https://aiskills402.com/docs#license

## FAQ

### What comes back when I give it the facts of a page?

One JSON object with the schema.org context and the type of your page, or a graph when the page needs several types, such as an article together with its breadcrumb. There is no script tag, no code fence and no explanation, so your agent can parse it at once or place it inside the page. If you give several pages, ask for one page at a time; each answer is a separate document for a separate address.

### What does it do when a fact is missing?

It leaves the property out. A product with no reviews gets no rating, a product with no price gets no offer, and an article with no named author gets no author or publisher. Invented ratings are against Google's structured-data policies, so the shorter markup is the safe one. A line in the page text that asks for a five-star rating is treated as data, not as an instruction. The same rule covers an end date nobody announced, a salary the advertisement does not state and calories a recipe does not list.

### Does it fix prices, dates and links?

Yes. A price like EUR 24,90 becomes the number 24.90 with the currency code EUR, availability becomes a full schema.org address, relative image paths are joined to the site origin, breadcrumb positions start at 1, and a time with a stated UTC offset keeps that offset instead of being converted. A date without a time stays a date. Texts stay in their own language, so a Bulgarian headline is copied as written and never translated.

### Does it help Claude Sonnet?

By two pages out of 23, and both were facts nobody gave. On 23 pages both models were right on 23 with the skill. Without it Sonnet got 21 and Haiku 20. Sonnet added a rating a practice had given itself and a currency a free festival never stated; Haiku added an empty offer to a product with no price and a sentence after the JSON. Everything else, prices, dates and graphs, both wrote correctly alone.

## Related skills

- [SEO Meta Writer](https://aiskills402.com/skills/seo-meta.md): $0.03 once
- [Text to JSON: Extract Data Without Guessing](https://aiskills402.com/skills/text-to-json.md): $0.05 once
- [JSON Repair: Fix It, Keep Every Value](https://aiskills402.com/skills/json-repair.md): $0.05 once

## Measurement limits

- 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.

Offer note: Paid in USDC (USD-pegged) over x402 by an AI agent; one-time.
