Key takeaways

  • Work per template: one main schema type for each kind of page, rendered from the same data the page shows.
  • The seogeoaeo.ai Schema Markup Generator builds the JSON-LD block for 3 credits a run; place it in a script tag with type application/ld+json.
  • Test the live URL with the Schema Markup Checker and Google's Rich Results Test, then watch Search Console reports.

Here is how to add schema markup to website pages in short: write a JSON-LD block that describes the page, put it inside a script tag with type="application/ld+json" in the page's HTML, deploy, and test the live URL. The fastest way to get a clean block is a generator such as the one on seogeoaeo.ai, which builds JSON-LD from a type and your fields for 3 credits a run.

The full process takes six steps and is written for whoever owns the page templates. Budget an hour for the first template and minutes for each one after it.

Step 1: pick one type per page template

Start from templates, not pages. A blog post template wants Article or BlogPosting, a product page wants Product, a landing page for an app wants SoftwareApplication, a contact page for a shop wants LocalBusiness. One template, one main type, rolled out everywhere that template renders.

Not sure which type a page needs? Run the seogeoaeo.ai Schema Markup Checker on an example URL. Among other things, it lists the types the page is missing.

Step 2: collect only visible facts

Google's guidelines say not to mark up content readers cannot see. Before you write anything, list the values the page already shows: title, author, dates, price, address, rating. If the page does not show a rating, the markup should not claim one.

Step 3: generate the block

Open the seogeoaeo.ai schema generator, choose the type and fill the fields from step 2. Only the type is required. The tool fetches nothing and previews the output against validator rules, so you can fix a missing property before it reaches a pull request.

For an article, the block you paste into your template will look something like this, with your template variables in place of the sample values:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "How we cut build times",
  "author": { "@type": "Person", "name": "Sam Lee" },
  "datePublished": "2026-10-01",
  "dateModified": "2026-10-20",
  "image": "https://example.com/cover.png"
}
</script>

Step 4: place it in the template

Google reads JSON-LD in either the head or the body. In practice the head is easier to find later. Render the block on the server with the same data the visible page uses, so the markup and the page cannot drift apart. If the template already prints Microdata or RDFa, choose one format; Google supports all three but recommends JSON-LD where your setup allows.

Organization, FAQ and breadcrumb markup each have a dedicated builder on seogeoaeo.ai if you want fields made for those types.

Step 5: test the live page

Deploy to a public URL, then check it two ways:

Check What it tells you
seogeoaeo.ai Schema Markup Checker Blocks that fail to parse, missing required and recommended properties, missing types
Google's Rich Results Test Whether the page qualifies for the Google features it supports

The Rich Results Test also takes a pasted snippet, which is handy on a branch that is not public yet. The seogeoaeo.ai checker accepts pasted JSON-LD as well.

Step 6: watch it after release

Google's rich result status reports in Search Console show errors across the site once pages are crawled, and URL Inspection confirms that Google found the markup on a given page. Valid markup makes a page eligible for a rich result; Google does not promise one will appear.

Common mistakes

  • Marking up a review score that only exists in a database
  • A dateModified that never changes
  • Two conflicting blocks, one from a plugin and one hand-written
  • Absolute URLs pointing at a staging domain

When a generator is overkill

If your CMS or framework already prints structured data from your content, extend that instead of pasting a block. A generator is the right tool for templates that have no markup yet and for one-off pages such as an event or a launch.

Frequently asked questions

Should JSON-LD go in the head or the body?

Either works for Google. The head is easier to find and maintain.

Can I test schema markup before the page is public?

Yes. Google's Rich Results Test and the seogeoaeo.ai Schema Markup Checker both accept pasted code.

Can I mix JSON-LD with Microdata?

Google supports JSON-LD, Microdata and RDFa, but it is simpler to choose one per page; Google recommends JSON-LD where possible.

Sources

  1. Schema Markup Generator: Build JSON-LDseogeoaeo.ai
  2. Schema Markup Checkerseogeoaeo.ai
  3. Introduction to structured data markup in Google SearchGoogle Search Central
  4. General structured data guidelinesGoogle Search Central
  5. Rich Results TestSearch Console Help

Add ClaudeGPT Si as a preferred source on Google