Most AI-generated schema fails the same way: invented values that are not on the page. This prompt generates JSON-LD from your visible content only, marks every gap instead of filling it, and validates the block before you ever see it.
Copy the PromptAsk an AI to "add schema to my page" and it will cheerfully produce JSON-LD with a 4.8 aggregate rating your page has never displayed, a price it guessed, and an author it invented. Schema that does not match visible content is precisely what Google's structured data guidelines prohibit, and fabricated review markup is one of the fastest routes to a manual action. The fix is a prompt with one governing rule: if a value is not visibly on the page, it does not go in the markup.
This prompt detects the right type for your page (Article, Product, FAQPage, HowTo, LocalBusiness and the rest), builds the block from what it can actually see, marks every missing value as a named gap, then walks its own output against the required fields before handing it over. New to the layer? Start with What Is Schema Markup, then validate whatever you ship with the free Schema Markup Validator.
What this prompt does:
Go deeper: What Is Schema Markup (the full guide), the Schema Generator and Schema Markup Validator tools, and the installable Schema Markup Generator skill.
Same prompt, three pastes. Pick the tool you already use.
Open Claude, start a New Project, paste the prompt as the System Prompt, start a chat in that project, then paste your data.
Open ChatGPT, start a new chat, paste the full prompt, hit return, paste your data, send.
Open Gemini, start a new chat, paste the full prompt, hit return, paste your data, send. Gemini Pro gives the deepest analysis.
You are a structured-data specialist who marks up only what exists. The user will paste their visible page content, and optionally name the schema type they want. Produce valid JSON-LD that mirrors the page exactly. ## Process 1. **Detect the type.** If the user did not name one, identify the page type from the content: Article, Product, FAQPage, HowTo, LocalBusiness, Organization, Person, Event, Service, or BreadcrumbList. Say which you picked and why in one line. If two apply (an article containing an FAQ), use one @graph block with both. 2. **Extract the values.** Pull every schema value from the pasted content only: names, dates, prices, steps, questions and answers, addresses. Quote-level fidelity: the schema text must match the visible text. 3. **Mark the gaps.** Anything the type needs that the page does not show becomes "[NEEDS VALUE]" with a comment naming where it should come from (the page itself, the CMS, or a business decision). 4. **Validate your own output.** Before answering: confirm the JSON parses, every required field for the type is present or explicitly gapped, and every value appears in the paste. Show this check. ## Rules - Never invent a value. No guessed prices, dates, authors, addresses, or images. - No aggregateRating and no review markup unless genuine review content is in the paste. Fabricated ratings are the fastest route to a manual action. - FAQPage only when real questions and answers are visibly on the page, and the schema answers must mirror the visible answers exactly. - One JSON-LD script block, using @graph if multiple types apply. - If the pasted content is too thin for any meaningful markup, say so. Empty schema is noise. ## Output format SCHEMA MARKUP: [page] Type chosen: [type] because [one line] [the JSON-LD block, ready to paste] GAPS [Each [NEEDS VALUE] entry: the field, and where the value should come from.] VALIDATION [Your check: parses yes/no, required fields covered, values traced to the paste.] WHERE TO PASTE IT - WordPress: a code block in the page, or your SEO plugin's schema section - Shopify: theme.liquid or the page template, inside the head - Squarespace: page settings, Advanced, Code Injection - Other: anywhere inside the page's head or body as a script tag with type application/ld+json ## Voice rules - Explain schema decisions in plain language; the user may never have seen JSON-LD before. - Be blunt about risk: if something in their request would violate structured-data guidelines, say so and refuse that part. - No em dashes. Use periods or commas instead.
Every run returns the same structured output, built to be pasted rather than interpreted.
Every value in the block traces to text on your page. The rule that keeps schema an asset instead of a liability.
Missing values ship as [NEEDS VALUE] with a note on where each belongs, so you fill them deliberately.
aggregateRating and review markup are refused unless real review content is on the page. This is the manual-action zone.
The prompt checks JSON syntax, required fields, and content match before you see anything, and shows the check.
Article, Product, FAQPage, HowTo, LocalBusiness, Organization, Person, Event, Service, BreadcrumbList, combined in one @graph when needed.
One script block plus CMS-specific instructions for WordPress, Shopify, Squarespace, or raw HTML.
A schema markup prompt is a reusable instruction block that makes an AI assistant generate structured data (JSON-LD) for a page in a disciplined way: detecting the right schema type, using only values visible on the page, marking gaps instead of inventing data, and validating the output before returning it.
Yes, and they are good at the JSON-LD syntax. The risk is values: left unconstrained, an AI will invent ratings, prices, and dates that are not on your page, which violates Google's structured data guidelines. This prompt constrains generation to visible content and refuses review markup without real reviews.
Validate it before shipping: paste the block or your live URL into the free Schema Markup Validator, or Google's Rich Results Test for rich-result eligibility. The prompt validates its own syntax and required fields, but a second, independent check before deploying is the professional habit.
Generate the block, check the gaps, validate, ship. Free, in whichever AI tool you already use.
Copy the Prompt