WORKED EXAMPLES

See a check from start to next step.

Complete before-and-after inputs show how to read a result, including what it cannot prove.

Synthetic data · Offline fixture checks executed · No live site checked
On this page
Synthetic teaching examples.

All URLs and inputs below are invented. No real site was inspected or changed, and no live request, account action, indexing result or traffic measurement is claimed for the four offline examples.

The supplied offline fixture checks were executed on 10 October 2026 with Python 3. All eight before/after outcomes matched their expected conditions. Separately, one real CLI report was run against synthetic input. The full source and checker are in the repository ↗.

A launch page is blocked from crawling

Synthetic example

Finding: The wildcard crawler group disallows every path, including /trail-guide/.

Small correction: Remove the accidental site-wide disallow only after confirming the page is intended to be public.

Before: complete input

robots.txt · Download robots.txt

Teaching example / record template
# SYNTHETIC fixture: accidental launch block
User-agent: *
Disallow: /

Offline output: The lesson-specific criterion fails for this before fixture, as expected. This is an executed offline check of synthetic input.

After: corrected teaching files

robots.txt · Download robots.txt

Teaching example / record template
# SYNTHETIC fixture: intended public launch
User-agent: *
Disallow:
Sitemap: https://example.com/sitemap.xml

Offline output: The lesson-specific criterion passes for this after fixture, as expected. This is an executed offline check of synthetic input.

What the criterion establishes: The fixture rule allows Googlebot to fetch /trail-guide/. This checks crawl permission, not indexing.

Not checked: Live HTTP access, search-engine-selected canonical, indexing, ranking and traffic.

Official reference ↗ · Follow the matching guide

An intended public page still has noindex

Synthetic example

Finding: The HTML robots meta tag contains noindex.

Small correction: Remove the unintended directive at its source. Check both HTML metadata and response headers in production.

Before: complete input

page.html · Download page.html

Teaching example / record template
<!doctype html>
<!-- SYNTHETIC teaching fixture. Not a captured production response. -->
<html lang="en"><head><meta charset="utf-8"><title>Synthetic trail guide</title>
<meta name="robots" content="noindex, follow">
</head><body><main><h1>Synthetic trail guide</h1><p>Invented content for an offline SEO exercise.</p></main></body></html>

response.json · Download response.json

Teaching example / record template
{
  "synthetic": true,
  "status": 200,
  "headers": {
    "Content-Type": "text/html; charset=utf-8"
  },
  "bodyFile": "page.html"
}

Offline output: The lesson-specific criterion fails for this before fixture, as expected. This is an executed offline check of synthetic input.

After: corrected teaching files

page.html · Download page.html

Teaching example / record template
<!doctype html>
<!-- SYNTHETIC teaching fixture. Not a captured production response. -->
<html lang="en"><head><meta charset="utf-8"><title>Synthetic trail guide</title>

</head><body><main><h1>Synthetic trail guide</h1><p>Invented content for an offline SEO exercise.</p></main></body></html>

response.json · Download response.json

Teaching example / record template
{
  "synthetic": true,
  "status": 200,
  "headers": {
    "Content-Type": "text/html; charset=utf-8"
  },
  "bodyFile": "page.html"
}

Offline output: The lesson-specific criterion passes for this after fixture, as expected. This is an executed offline check of synthetic input.

What the criterion establishes: The fixed HTML and modeled headers contain no noindex directive. Google indexing remains unverified.

Not checked: Live HTTP access, search-engine-selected canonical, indexing, ranking and traffic.

Official reference ↗ · Follow the matching guide

The sitemap route returns an app shell

Synthetic example

Finding: The modeled response is HTTP 200 with an HTML body, not the promised XML sitemap.

Small correction: Serve the sitemap before a catch-all HTML route; return sitemap XML and an appropriate XML content type.

Before: complete input

response.json · Download response.json

Teaching example / record template
{
  "synthetic": true,
  "requestedUrl": "https://example.com/sitemap.xml",
  "status": 200,
  "headers": {
    "Content-Type": "text/html; charset=utf-8"
  },
  "bodyFile": "sitemap.xml"
}

sitemap.xml · Download sitemap.xml

Teaching example / record template
<!doctype html>
<!-- SYNTHETIC teaching fixture. Not a captured production response. -->
<html lang="en"><head><meta charset="utf-8"><title>Synthetic trail guide</title>

</head><body><main><h1>Synthetic trail guide</h1><p>Invented content for an offline SEO exercise.</p></main></body></html>

Offline output: The lesson-specific criterion fails for this before fixture, as expected. This is an executed offline check of synthetic input.

After: corrected teaching files

response.json · Download response.json

Teaching example / record template
{
  "synthetic": true,
  "requestedUrl": "https://example.com/sitemap.xml",
  "status": 200,
  "headers": {
    "Content-Type": "application/xml; charset=utf-8"
  },
  "bodyFile": "sitemap.xml"
}

sitemap.xml · Download sitemap.xml

Teaching example / record template
<?xml version="1.0" encoding="UTF-8"?>
<!-- SYNTHETIC teaching fixture. -->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url><loc>https://example.com/trail-guide/</loc></url>
</urlset>

Offline output: The lesson-specific criterion passes for this after fixture, as expected. This is an executed offline check of synthetic input.

What the criterion establishes: The fixed fixture parses as a sitemap urlset with one absolute URL. No submission or crawl is claimed.

Not checked: Live HTTP access, search-engine-selected canonical, indexing, ranking and traffic.

Official reference ↗ · Follow the matching guide

Two canonical tags disagree

Synthetic example

Finding: Two canonical link elements point to different URLs for the same page.

Small correction: Choose the intended representative page and emit one consistent canonical. Keep the sitemap aligned.

Before: complete input

page.html · Download page.html

Teaching example / record template
<!doctype html>
<!-- SYNTHETIC teaching fixture. Not a captured production response. -->
<html lang="en"><head><meta charset="utf-8"><title>Synthetic trail guide</title>
<link rel="canonical" href="https://example.com/trail-guide/">
<link rel="canonical" href="https://example.com/trails/">
</head><body><main><h1>Synthetic trail guide</h1><p>Invented content for an offline SEO exercise.</p></main></body></html>

sitemap.xml · Download sitemap.xml

Teaching example / record template
<?xml version="1.0" encoding="UTF-8"?>
<!-- SYNTHETIC teaching fixture. -->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url><loc>https://example.com/trail-guide/</loc></url>
</urlset>

Offline output: The lesson-specific criterion fails for this before fixture, as expected. This is an executed offline check of synthetic input.

After: corrected teaching files

page.html · Download page.html

Teaching example / record template
<!doctype html>
<!-- SYNTHETIC teaching fixture. Not a captured production response. -->
<html lang="en"><head><meta charset="utf-8"><title>Synthetic trail guide</title>
<link rel="canonical" href="https://example.com/trail-guide/">
</head><body><main><h1>Synthetic trail guide</h1><p>Invented content for an offline SEO exercise.</p></main></body></html>

sitemap.xml · Download sitemap.xml

Teaching example / record template
<?xml version="1.0" encoding="UTF-8"?>
<!-- SYNTHETIC teaching fixture. -->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url><loc>https://example.com/trail-guide/</loc></url>
</urlset>

Offline output: The lesson-specific criterion passes for this after fixture, as expected. This is an executed offline check of synthetic input.

What the criterion establishes: Exactly one canonical remains and matches the fixture sitemap URL. Google-selected canonical remains unverified.

Not checked: Live HTTP access, search-engine-selected canonical, indexing, ranking and traffic.

Official reference ↗ · Follow the matching guide