📁 SEO
Schema Markup Prompt: JSON-LD From What Is on Your Page
Write schema.org JSON-LD only from content visible on your page: type choice, required and recommended properties, gaps to fix on the page, and a test plan.
0Reviews
Prompt
Act as a technical SEO specialist who writes schema.org JSON-LD for Google Search only from content a visitor can see on the page, and checks every property against Google Search Central documentation before calling markup done. Inputs: - Page URL and what the page is about: [PageURL] - The visible page content, pasted (headings, text, prices, hours, address): [VisibleContent] - Business or organization facts that also appear on the page: [BusinessFacts] - Markup already on the page, if any: [ExistingMarkup] - My CMS or how I can add code: [CMS] - The search feature or type I am aiming for: [TargetFeature] Generate: 1. Type choice: the most specific schema.org type for this page (for example Bakery instead of LocalBusiness) and why, plus any type I should not use here. 2. Property map: a table of property, value, and where it appears in VisibleContent. Mark each Google required or recommended for TargetFeature. If a required value is not on the page, write MISSING ON PAGE instead of guessing. 3. JSON-LD block: one valid script block using only mapped values. No ratings or reviews unless the page shows reviews it collected itself and the type allows them, and no hidden content. 4. Conflicts with ExistingMarkup: duplicates, mismatched values, or outdated types to remove. 5. Page fixes: content to add to the visible page so the markup can be complete (for example opening hours in the footer). 6. CMS steps: where the block goes for CMS, or the plugin setting to check, in plain words. 7. Test plan: run the Rich Results Test, check the Schema Markup Validator, use URL Inspection after publishing, and watch the rich result reports in Search Console. Remind me that valid markup does not guarantee a rich result. Rules: - Never invent addresses, phone numbers, prices, ratings, or dates. - Do not suggest FAQ or HowTo markup to get rich results; Google no longer shows those results.
Instructions
Paste only what visitors can see on the page. Fill any MISSING ON PAGE line by adding the content to the page first, then test the block in the Rich Results Test before and after publishing.
Generated Output
This image was generated using the prompt above.

Examples
Example Input
PageURL: https://example.com/contact, the contact page for a neighborhood bakery VisibleContent: H1: Visit Crumb & Kettle Text: Sourdough, croissants and coffee, baked every morning. Address: 214 Alder Street, Portland, OR 97214 Phone: (503) 555-0142 Hours: Tue to Fri 7:00 to 15:00; Sat and Sun 8:00 to 14:00; closed Monday Menu link: /menu Photo of the shop front with alt text "Crumb & Kettle shop front" BusinessFacts: business name Crumb & Kettle; same address and phone in the footer of every page ExistingMarkup: a theme plugin adds Organization markup with only the name and logo on every page CMS: WordPress with an SEO plugin that has a "custom schema" box per page TargetFeature: local business details for Google Search
Example Output
1. TYPE CHOICE
Use Bakery, a more specific type of LocalBusiness, because the page is the contact page for one bakery location. Do not add Restaurant as well; the page shows a bakery and coffee, not table service.
2. PROPERTY MAP
name: Crumb & Kettle (H1, footer), required
address: 214 Alder Street, Portland, OR 97214 (Address line), required
telephone: +1-503-555-0142 (Phone line), recommended
openingHoursSpecification: Tue to Fri 07:00 to 15:00, Sat and Sun 08:00 to 14:00 (Hours line), recommended
url: https://example.com/contact (PageURL), recommended
menu: https://example.com/menu (Menu link), recommended
image: shop front photo, URL MISSING (paste the image URL from the media library)
geo: MISSING ON PAGE, leave out
priceRange: MISSING ON PAGE, leave out
aggregateRating and review: leave out; the page shows no reviews it collected.
3. JSON-LD BLOCK
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Bakery",
"name": "Crumb & Kettle",
"url": "https://example.com/contact",
"telephone": "+1-503-555-0142",
"address": {
"@type": "PostalAddress",
"streetAddress": "214 Alder Street",
"addressLocality": "Portland",
"addressRegion": "OR",
"postalCode": "97214",
"addressCountry": "US"
},
"openingHoursSpecification": [
{"@type": "OpeningHoursSpecification", "dayOfWeek": ["Tuesday", "Wednesday", "Thursday", "Friday"], "opens": "07:00", "closes": "15:00"},
{"@type": "OpeningHoursSpecification", "dayOfWeek": ["Saturday", "Sunday"], "opens": "08:00", "closes": "14:00"}
],
"menu": "https://example.com/menu"
}
</script>
Note: Monday is left out because it is closed. addressCountry US matches the Oregon address on the page.
4. CONFLICTS WITH EXISTING MARKUP
If the plugin's Organization name is exactly Crumb & Kettle, there is no conflict. Keep it, and make sure the plugin does not also add a second LocalBusiness block on this page.
5. PAGE FIXES
Add the shop front image URL to the block once you copy it from the media library. If you want geo or priceRange later, show them on the page first.
6. CMS STEPS (WordPress)
Paste the block into the SEO plugin's custom schema box for the contact page only, then clear any page cache.
7. TEST PLAN
- Run the page URL through the Rich Results Test and fix any errors.
- Check the same code in the Schema Markup Validator.
- After publishing, use URL Inspection in Search Console and request indexing.
- Watch the rich result reports in Search Console.
Valid markup makes the page eligible; it does not guarantee a rich result.