passcite

Schema markup generator: facts a machine can read

Paste a URL and the block that page already declares is loaded into the form, so you edit what is there instead of retyping it. Or fill it in by hand. Five types: the ones a business site uses to say who it is and what it offers.

Optional. Skip it and fill the form in by hand — but on a page that already carries markup, this is what stops you publishing a thinner block than the one that is there.

What are you describing?

A business people visit or that serves a place. This is the block that decides whether an engine believes you serve the city someone named.

Exactly as it appears on your signage and your listings.

Dentist, Plumber, Restaurant, LegalService… a schema.org subtype, if one fits.

In the format you publish everywhere else.

Two-letter code, e.g. US.

$, $$, $$$ — vague on purpose, and still useful.

One or two sentences. Say who you serve.

Here is a finished local business block, for a business that does not exist. Read a URL above or start typing in the form and it becomes yours.

LocalBusiness · example
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Dentist",
  "name": "North Austin Dentistry",
  "url": "https://example.com",
  "telephone": "+1 512 555 0142",
  "priceRange": "$$",
  "description": "A family dental practice serving North Austin, Cedar Park and Round Rock. Taking new patients, open Saturdays.",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "4200 Duval Street, Suite 3",
    "addressLocality": "Austin",
    "addressRegion": "TX",
    "postalCode": "78751",
    "addressCountry": "US"
  }
}
</script>

Paste it inside <head> on the page it describes — not site-wide, unless it is the Organization block. Then read it back off the live page.

Why a missing address is the expensive one

Of everything here, the field that changes outcomes most often is the address on a local business block. Buyer questions are place-bound — “dentist near me”, “emergency plumber in Austin” — and a site that never states where it operates in a form a machine can read is asking to be left out of exactly those answers, no matter how clearly the header says “Serving North Austin since 2004”.

That is not a theory about markup. It is what our own scraper does first: when a site declares "@type": "Dentist" with a PostalAddress, we take the industry and the city as fact instead of asking a model to guess them. Everything downstream is better for it, and any reader that takes markup as fact gets the same head start.

The half of this that is not the form

Most pages that need markup are not blank — they already carry a block somebody generated two years ago. Retyping four fields into an empty form and pasting the result over that block is how a page ends up with less structured data than it had, and it is silent: the output looks right, because it is right about the four fields you were thinking about.

So the URL box reads the page first and loads what is there. The fields this form does not cover — opening hours, coordinates, ratings, anything schema.org offers that our five types do not ask for — are listed next to the output before you copy it. That list is the whole reason the box exists.

Markup is the floor, not the work

We sell the thing that generates these, so here is the honest version: schema is necessary and rarely sufficient. When a report comes back showing a client losing almost every buyer question, the reason is almost never the markup — it is that no page on the site answers the question at all.

Add the markup, and read it back off the live page with the schema markup validator — a smart quote from a CMS editor is enough to make a crawler skip the block in silence. It is an afternoon. Then find out which questions you lose — your first report is free.

FAQ

Questions

Does schema markup make an AI engine recommend me?
Not on its own. What it does is remove the guessing. A page that declares it is a Dentist in Austin with this phone number has stated those things as fact; without the markup a model has to infer them from prose, and it sometimes infers wrong.
Where do I put it?
Inside <head> on the page it describes. A Product block belongs on that product's page, an FAQPage block on the page with those questions. The one exception is Organization, which is usually site-wide.
Can I have more than one block on a page?
Yes, and it is normal — an Organization block, a breadcrumb block and a Product block on the same page is a typical set. Either use several script tags or one @graph array. When you read a URL above, every block this form can open is offered separately, because replacing the wrong one is the expensive mistake.
Will this overwrite markup the page already has?
Only if you paste it over the top, which is the point of reading the URL first. The form covers the fields that change answers, not all of schema.org — so if the live block also declares opening hours, coordinates or a rating, the panel next to the output names them before you copy. Add them back by hand, or copy across only the fields you came to change.
What if the markup and the visible page disagree?
Fix the markup. Declaring a price that is not on the page, or hours you do not keep, is the fastest way to get the markup ignored and a slower way to lose the trust of the person who turns up expecting it.
Why only five types?
Because these cover what a business site says about itself — who it is and where, what it sells, the questions it answers and what it publishes. A generator covering forty schema.org types is a reference manual with a form attached — and the fortieth type is not what stopped an engine naming your client.

See who the engines recommend instead

The prompts your client loses, who wins them, and the tasks that would change it.

10 free credits — your first report, 10 prompts across ChatGPT, Claude and Google AI Mode. A free account, no card. About 3 minutes.