Skip to content

Structured data for every page type

Add correct, honest JSON-LD for each page type from one helper, matching what the page shows.

  • Free, no sign-up
  • 1 to 2 hours with an agent
  • By Devvrat Hans
  • Version 1.0, updated Oct 26, 2026

1Your site and stack

Optional. The prompt adapts as you type; leave a field blank and the agent works it out.

2Copy it into your agent

structured-data.md66 lines, about 982 tokens

Paste into any coding agent: Claude Code, Cursor, Codex, Copilot, Windsurf or Cline.

# Structured data for every page type

Structured data tells search engines and AI systems what each page of the production site is about in a form they do not have to guess at. Add correct JSON-LD for every page type from shared helpers, built from the same data the page renders, so it always matches what visitors see.

Site: not given. Find the production URL in the project config, or ask me.

## Ground rules

1. Read before you write. Explore the parts of the codebase this job touches and tell me what is already in place.
2. Plan, then stop. Give me a numbered plan: what you will change, in which files, and why. Wait for my approval before editing anything.
3. Fix things at their source (the shared layout, the config, the generator), not with one-off patches page by page.
4. Keep the project's conventions: its framework APIs, file layout, naming and code style. Add no new dependency without asking.
5. Where something is already done well, say so and leave it alone.

## You will not

- Edit `.env` files, secrets or API keys, or print their values.
- Deploy, push, merge or publish anything.
- Delete data, or run migrations or scripts against a production database.
- Add tracking, third-party scripts or links to any site I did not ask for.
- Change copy, design or behaviour that this job does not need.
- Add ratings, reviews or prices that are not real and visible on the page.

## Your stack

- Framework: Work out the framework, router and build output from the project files (package.json, lockfiles, framework config) before planning, and say which you found.
- Host: Work out where the site is hosted from the config files (vercel.json, netlify.toml, wrangler config, Dockerfile, fly.toml) and say which you found.

## Steps

### 1. Inventory page types and existing markup

List each page type (home, pricing, product or feature, blog post, docs, about, profile) and any JSON-LD already present. Note markup that is wrong: types that do not fit, fields that do not match the page, or ratings that are not from real reviews.

### 2. Site-wide entities

On the homepage (or in the root layout), a `@graph` with an `Organization` (name, url, logo, `sameAs` with official profiles only) and a `WebSite` (name, url, and a `SearchAction` only if the site has a working search URL). Give them stable `@id`s like `https://site/#organization` so other pages can reference them.

### 3. Per page type

- Product or app pages: `SoftwareApplication` (or `Product` for physical goods) with name, description, `applicationCategory`, `operatingSystem`, and `offers` with real prices. Add `aggregateRating` only if it comes from real, visible reviews.
- Blog posts and guides: `BlogPosting` or `Article` with headline, `datePublished`, `dateModified`, an `author` that is a real `Person`, and `publisher` pointing at the Organization `@id`.
- Every page below the top level: `BreadcrumbList` matching the visible breadcrumb.
- Pages with a visible FAQ: `FAQPage` with the same questions and answers.
- Profile or team pages: `Person` or `ProfilePage`.

### 4. Build it from data, safely

Generate JSON-LD in one helper per type, from the page's data. Escape it safely when inlining (a `</script>` inside a string must not break out). One `<script type="application/ld+json">` per page with a `@graph` is cleaner than many.

## Done means

- [ ] Organization and WebSite markup exist once, with stable @ids.
- [ ] Every page type has the right JSON-LD type, built from its own data.
- [ ] Every value in the markup is visible on the page; no invented ratings or reviews.
- [ ] The markup is generated by shared helpers and escaped safely.
- [ ] Each page type validates without errors.

## Report back

When you finish, give me:

- what you changed, file by file;
- anything you skipped, and why;
- anything I must do by hand (DNS records, dashboards, accounts, deploys);
- how to check each change on the live site.

One-line version

For agents that can read a URL. It fetches this prompt with your settings applied.

Read https://abacklaunch.com/prompts/structured-data.md and follow it for this project.

3Check the result

When the changes are live, run these free checks. Add your site URL above and each one opens already running on it.

This prompt will not

  • Edit .env files, secrets or API keys, or print their values.
  • Deploy, push, merge or publish anything.
  • Delete data, or run migrations or scripts against a production database.
  • Add tracking, third-party scripts or links to any site I did not ask for.
  • Change copy, design or behaviour that this job does not need.
  • Add ratings, reviews or prices that are not real and visible on the page.

It reads your code first, shows you a plan, and waits for your approval before it changes anything.

What you get

  • Organization and WebSite markup with stable ids
  • The right JSON-LD for each of your page types, from shared helpers
  • Fixes for any existing markup that misdescribes a page

How to use this prompt

  1. 1

    Describe your stack

    Add your site, framework and host. The prompt adapts; blank fields are left for the agent to work out.

  2. 2

    Paste it into your agent

    Open your project in Claude Code, Cursor, Codex, Copilot, Windsurf or Cline, and paste the prompt or the one-line version.

  3. 3

    Approve the plan

    The agent reads your code, shows you a plan with the files it will touch, and waits. Change anything you disagree with.

  4. 4

    Check the result

    When the changes are live, run the free checks below on your site to confirm each fix.

What the agent does

Structured data tells search engines and AI systems what each page of the production site is about in a form they do not have to guess at. Add correct JSON-LD for every page type from shared helpers, built from the same data the page renders, so it always matches what visitors see.

  1. 1. Inventory page types and existing markup

    List each page type (home, pricing, product or feature, blog post, docs, about, profile) and any JSON-LD already present. Note markup that is wrong: types that do not fit, fields that do not match the page, or ratings that are not from real reviews.

  2. 2. Site-wide entities

    On the homepage (or in the root layout), a @graph with an Organization (name, url, logo, sameAs with official profiles only) and a WebSite (name, url, and a SearchAction only if the site has a working search URL). Give them stable @ids like https://site/#organization so other pages can reference them.

  3. 3. Per page type

    • Product or app pages: SoftwareApplication (or Product for physical goods) with name, description, applicationCategory, operatingSystem, and offers with real prices. Add aggregateRating only if it comes from real, visible reviews.
    • Blog posts and guides: BlogPosting or Article with headline, datePublished, dateModified, an author that is a real Person, and publisher pointing at the Organization @id.
    • Every page below the top level: BreadcrumbList matching the visible breadcrumb.
    • Pages with a visible FAQ: FAQPage with the same questions and answers.
    • Profile or team pages: Person or ProfilePage.
  4. 4. Build it from data, safely

    Generate JSON-LD in one helper per type, from the page's data. Escape it safely when inlining (a </script> inside a string must not break out). One <script type="application/ld+json"> per page with a @graph is cleaner than many.

Done means

  • Organization and WebSite markup exist once, with stable @ids.
  • Every page type has the right JSON-LD type, built from its own data.
  • Every value in the markup is visible on the page; no invented ratings or reviews.
  • The markup is generated by shared helpers and escaped safely.
  • Each page type validates without errors.

Questions

Which schema type should a SaaS product use?

SoftwareApplication, with applicationCategory, operatingSystem ("Web" for a web app) and offers. Product is meant for physical goods.

Can I add star ratings to get stars in search?

Only from real reviews that are shown on the page. Self-serving or invented ratings break Google's rules and can earn a manual action.

Is JSON-LD better than microdata?

Google accepts both but recommends JSON-LD, and it is much easier to keep in one helper and in sync with your data.

Does this prompt add links to Aback Launch to my site?

No. Nothing in the prompt mentions Aback Launch or asks your agent to link to us. The only exception is an optional badge step, which stays off unless you tick it. Some prompt libraries slip their own link into your codebase by default; we think that should always be your choice.

Which coding agents does it work with?

Claude Code, Cursor, Codex, GitHub Copilot, Windsurf, Cline, and any agent that can read your project and edit files. You can copy it as a plain prompt, save it as a Claude Code skill or a Cursor rule, or add it to AGENTS.md.

Is it safe to run on my real codebase?

The prompt makes the agent read first, show a plan and wait for your approval, and it forbids touching secrets, deploying and deleting data. Still review the changes and run your tests before you deploy, as with any change.

Changelog

  • v1.0First version.

Launch your startup on Aback Launch

Get a launch page that search engines and AI assistants can read, a place in the weekly launch list, and a review by a real person. Free to join.