Schema markup is a Tech and DIY job: you have the AI write one structured-data block per page type, test it, and paste it into your site, and for a small business it takes an afternoon. This page covers one thing, the block to paste for each page type, and the full AI search checklist it belongs to lives in AI search optimization for local businesses. Most small sites need four or five blocks: LocalBusiness on the home page, Service on each service page, Article on each post, FAQPage where a page really answers questions, and BreadcrumbList if your builder does not add it. The AI writes the code well. The facts inside it, and the check before you paste, stay with you.
- Shape
- TechDIY
- Sitting
- an afternoon
The shape: Tech and DIY
This job is Tech because the output is code. JSON-LD is a strict format, a missing comma breaks the whole block, and a search engine will quietly ignore a block it cannot read. That is why every block goes through a validator before it goes on the site.
It is DIY because nobody else holds the facts. Your legal business name, the hours you actually keep, the towns you actually drive to and the profiles you actually own are not on any list the AI can read. You gather them once, and every block draws from the same set.
What that means for you: the work is front-loaded. The first block takes the longest, because you are assembling the facts sheet. Every block after that is a five-minute paste, test and publish.
If your site runs on WordPress, a schema plugin may already output Organization, WebSite and Article markup. Check that first, so you add only the blocks it does not cover and never ship two competing LocalBusiness blocks.
What you give the AI
Start a new chat and give it these, by name, in one message:
- Your facts sheet. Legal business name, the name customers use, street address (or, for a service-area business, just your town, state and ZIP), phone number in the format you publish, email, website address, opening hours by day, and the year you started.
- Your service area. The cities, counties or ZIP codes you serve, written the way they appear on your site.
- Your profile links. The exact URLs of your Google Business Profile, Facebook page, Instagram, LinkedIn page and any directory listing you control.
- Your logo and one photo. The full web addresses of the logo file and a real photo of the storefront, team or work, as they sit on your site now.
- The page you are marking up. Its URL and its full visible text, copied from the live page. For a service page, include the service name, what it includes and any price you publish on the page.
- The page type. Home page, service page, blog post, FAQ page or contact page.
- What your site already outputs. Open the live page, view the source, search for "ld+json" and paste anything you find. If nothing comes up, say so.
That last input matters more than it looks. It stops the AI from writing a second block that contradicts one your theme or plugin already ships.
What comes back
You get one JSON-LD block per request, wrapped in the script tag, ready to paste, plus a short list of any fields the AI left out because you did not supply them. Ask for one page type at a time. A single giant request for the whole site tends to blur facts across pages.
Paste this brief, then your inputs underneath it:
You are writing schema.org structured data in JSON-LD for one page of a small business website.
Rules:
1. Use only the facts given below.
Never invent an address, phone number, rating, review, price, hours, founding date or profile link.
2. If a recommended property needs a fact that is not given below, leave the property out and list it after the code under "Missing facts".
3. Pick the most specific schema.org type that honestly fits (for example Plumber instead of LocalBusiness), and state which type you chose and why in one sentence.
4. Every fact in the markup must appear on the facts sheet or in the visible page text below.
Do not mark up page content, such as questions, services or reviews, that a visitor cannot see on the page.
5. Do not add aggregateRating or review markup.
6. Use the same business name, address and phone, character for character, as the facts sheet.
7. Return one script tag of type application/ld+json, then "Missing facts", then "Already on the page", where you list any existing markup pasted below that this block would duplicate or contradict.
Page type: [home page / service page / blog post / FAQ page / contact page]
Page URL: [paste]
Visible page text: [paste]
Existing ld+json on the page: [paste, or "none"]
Facts sheet: [paste]
An editorial example, with a plainly invented business: say you run a one-van appliance repair shop called Northside Appliance Repair in a mid-size town. For the home page, the block that comes back looks like this:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Northside Appliance Repair",
"url": "https://www.example.com/",
"telephone": "+1-555-010-0199",
"address": { "@type": "PostalAddress", "addressLocality": "Riverton", "addressRegion": "XX", "addressCountry": "US" },
"logo": "https://www.example.com/images/logo.png",
"image": "https://www.example.com/images/van.jpg",
"areaServed": ["Riverton", "Lakeview", "Millbrook"],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "17:00"
}
],
"sameAs": [
"https://www.facebook.com/example",
"https://www.instagram.com/example"
]
}
</script>
Every value there is a placeholder. Notice what is missing: no street address, because the invented shop works out of a van, so the block names only its town and state, and no rating, because the brief forbids it. For a service page, the same shop would get a Service block with a "provider" pointing back to the business, the service name and the towns served. For a blog post, an Article block with the headline, the author's real name, the publish date and the image.
How to judge it
You can reject a bad block in a minute. Look for these:
- Invented facts. A street address, phone number, price, founding year or social link you did not give it. Delete the block and run the brief again with the gap named.
- Stars you did not earn on the page. Any aggregateRating or review property. Google treats self-serving review markup on your own business as ineligible, and it can read as an attempt to game results.
- Mismatched details. A business name, phone format or address that differs, even by a suite number, from your Google Business Profile and your site footer. Consistency is the whole point.
- Markup for things the page does not show. FAQPage markup on a page with no visible questions and answers, or a Service block naming services the page never mentions.
- A generic type where a specific one fits. LocalBusiness on a dental office is not wrong, but Dentist says more.
- Broken code. A missing comma or bracket breaks the whole block. Paste the code into Google's Rich Results Test and then the Schema.org validator. Errors mean the block is not read. Warnings mean an optional property is missing, which is fine when the fact does not exist.
A good result is boring. It is short, every value is one you recognize, and both checkers come back clean.
One more test after publishing: run the live page address, not the pasted code, through the Rich Results Test. That catches a site builder that strips script tags or a cache that has not updated.
What stays with you
The AI writes the syntax. Four things it cannot do for you.
The facts. Your hours, address, service area and profile links have to be right, and only you know which version is current. If you changed your hours last spring, the markup has to change too, and so does your Google Business Profile.
The match with the visible page. Google's structured data guidelines ask that markup describe content a visitor can see. Reading the block against the page, line by line, is your job.
The paste and the upkeep. Someone has to put the block into the right field on the right page, and update it when a fact changes. A wrong phone number in your markup is worse than no markup, because it tells every machine reading your site the wrong thing with confidence.
Realistic expectations. Schema does not guarantee a rich result, a ranking or a mention in an AI answer. It removes guesswork. The page still has to answer the question well, and other sites still have to name you. For the broader picture of what AI tools look for, read how to show up in ChatGPT for local business searches.
Which block goes on which page
| Page | Block to paste | When to skip it |
|---|---|---|
| Home page | LocalBusiness or the most specific subtype, or Organization for an online-only business | Your plugin already outputs a complete one |
| Each service page | Service, with provider pointing to your business | The page lists many services with no detail on any |
| Each blog post | Article or BlogPosting | Your blog platform already adds it |
| FAQ page | FAQPage | The questions are not visible on the page |
| Every page | BreadcrumbList | Your theme already adds it |
On FAQPage: Google limited FAQ rich results in 2023 to well-known government and health sites, so most businesses will not see the expandable questions in search. The markup is still valid and still describes the page plainly to any tool that reads it. Add it where the page genuinely answers questions, and expect nothing visual from it.
Doing it in one afternoon
- Write the facts sheet. Copy each fact from your Google Business Profile so the two match.
- View the source of your home page and one service page and search for "ld+json", so you know what already exists.
- Run the brief for the home page, test it, paste it and test the live page.
- Run the brief for your top two or three service pages, one chat message each.
- Check whether your blog already outputs Article markup before writing any.
- Put a reminder in your calendar for the day you next change hours, prices or address, and update the markup the same day.
That is the whole job. It is done once, then touched only when a fact changes.
Of every job on this list, social media is the one that comes back every week, and Boomp is software that does that one for you. See ten posts made from your website, free
