[
[
"R1",
"robots",
"ClaudeBot's robots group holds only a Crawl-delay, so its access depends on the parser: Google's reference parser merges it into the next group and blocks it site-wide (line 11); others read an empty group and allow everything",
"RFC 9309 s2.2.1; google/robotstxt"
],
[
"R2",
"robots",
"/assets/ (the stylesheet and the script every page needs) is disallowed for all crawlers",
"Google: do not block resources needed to render"
],
[
"R3",
"robots",
"Googlebot-Image is disallowed from the whole site",
"Google image crawler docs"
],
[
"R4",
"robots",
"Storebot-Google is disallowed from the whole site",
"Google shopping crawler docs"
],
[
"R5",
"robots",
"A group for \"Perplexity-Bot\" (not PerplexityBot) never applies to Perplexity's crawler",
"Perplexity crawler docs"
],
[
"R6",
"robots",
"The Sitemap line is a relative path; it must be an absolute URL",
"sitemaps.org / RFC 9309"
],
[
"R7",
"robots",
"A Noindex: line in robots.txt, which Google has ignored since 2019",
"Google Search Central"
],
[
"S1",
"server",
"PerplexityBot is answered with HTTP 403 on every page",
"Perplexity crawler docs"
],
[
"S2",
"server",
"Applebot gets HTTP 200 with a 'Just a moment...' challenge page instead of content",
"Apple crawler docs"
],
[
"S3",
"server",
"OAI-SearchBot gets pages with the services, areas and prices sections removed",
"OpenAI crawler docs"
],
[
"S4",
"server",
"ClaudeBot is redirected (302) from every page to /unavailable",
"Anthropic crawler docs"
],
[
"S5",
"server",
"GPTBot gets HTTP 429 on every request",
"OpenAI crawler docs"
],
[
"S6",
"server",
"Googlebot user agents get an extra keyword block no other visitor sees (cloaking)",
"Google spam policies"
],
[
"S7",
"server",
"Bingbot gets HTTP 503 on /pricing",
"Bing Webmaster Guidelines"
],
[
"I1",
"indexing",
"/services/gutter-guards carries meta robots noindex",
"Google robots meta docs"
],
[
"I2",
"indexing",
"/pricing is sent with an X-Robots-Tag: noindex header",
"Google robots meta docs"
],
[
"I3",
"indexing",
"/areas/riverbend has a canonical pointing to a URL that returns 404",
"Google canonical docs"
],
[
"I4",
"indexing",
"/services/downspout-repair has a canonical pointing to a different service page",
"Google canonical docs"
],
[
"I5",
"indexing",
"The homepage carries meta robots nosnippet",
"Google robots meta docs"
],
[
"I6",
"indexing",
"/faq has two conflicting robots meta tags (index,follow and noindex)",
"Google robots meta docs"
],
[
"I7",
"indexing",
"/about has a canonical to the http:// version of itself",
"Google canonical docs"
],
[
"J1",
"rendering",
"/pricing prices exist only after JavaScript runs (the HTML says 'Loading prices...')",
"Google JavaScript SEO basics"
],
[
"J2",
"rendering",
"The homepage links to the area pages only through JavaScript click handlers, not <a href>",
"Google link best practices"
],
[
"J3",
"rendering",
"/reviews content is rendered entirely by JavaScript into an empty container",
"Google JavaScript SEO basics"
],
[
"J4",
"rendering",
"/faq answers are fetched from /api/faq.json after load and are not in the HTML",
"Google JavaScript SEO basics"
],
[
"J5",
"rendering",
"/gallery photos are CSS background images with no <img>, so they cannot be indexed",
"Google image SEO docs"
],
[
"J6",
"rendering",
"/careers content is inside an iframe from /embed/careers",
"Google iframe guidance"
],
[
"D1",
"structured",
"The homepage JSON-LD does not parse (trailing comma)",
"JSON / schema.org"
],
[
"D2",
"structured",
"/contact LocalBusiness has no address",
"Google LocalBusiness structured data"
],
[
"D3",
"structured",
"/contact schema telephone differs from the phone number printed on the page",
"Google structured data guidelines"
],
[
"D4",
"structured",
"/reviews marks up self-serving AggregateRating on the business itself",
"Google review snippet guidelines"
],
[
"D5",
"structured",
"/about has two Organization nodes with different names",
"schema.org / Google"
],
[
"D6",
"structured",
"sameAs on /about points to a profile URL that returns 404",
"schema.org sameAs"
],
[
"D7",
"structured",
"Blog posts mark up Article without datePublished or author",
"Google Article structured data"
],
[
"M1",
"machine",
"llms.txt does not start with an H1 title",
"llmstxt.org"
],
[
"M2",
"machine",
"llms.txt links to two pages that return 404",
"llmstxt.org"
],
[
"M3",
"machine",
"security.txt Expires is in the past (2025-01-01)",
"RFC 9116"
],
[
"M4",
"machine",
"security.txt has no Contact field",
"RFC 9116"
],
[
"M5",
"machine",
"security.txt is served as text/html",
"RFC 9116"
],
[
"X1",
"sitemap",
"The sitemap index lists /sitemap-blog.xml, which returns 404",
"sitemaps.org"
],
[
"X2",
"sitemap",
"The sitemap lists a noindex URL (/services/gutter-guards)",
"Google sitemap docs"
],
[
"X3",
"sitemap",
"The sitemap lists a redirecting URL (/old-gutter-page)",
"Google sitemap docs"
],
[
"X4",
"sitemap",
"The sitemap lists a URL that returns 404 (/services/roof-repair)",
"Google sitemap docs"
],
[
"X5",
"sitemap",
"Two lastmod values are not valid W3C dates",
"sitemaps.org"
],
[
"X6",
"sitemap",
"The sitemap lists a URL on another host",
"sitemaps.org"
],
[
"L1",
"links",
"The homepage links to /services/roof-repair, which returns 404",
"Google link best practices"
],
[
"L2",
"links",
"/old-gutter-page redirects three times before reaching a page",
"Google redirect docs"
],
[
"L3",
"links",
"/promo-a and /promo-b redirect to each other (loop), linked from a blog post",
"Google redirect docs"
],
[
"L4",
"links",
"/specials returns 200 with 'Page not found' text (soft 404), linked from the footer",
"Google soft 404 docs"
],
[
"L5",
"links",
"/areas/lakeside is in the sitemap but linked from no page (orphan)",
"Google link best practices"
],
[
"L6",
"links",
"/faq and /faq/ both return 200 with no redirect between them",
"Google duplicate URL docs"
],
[
"L7",
"links",
"The about page links internally to an http:// URL",
"Google HTTPS docs"
],
[
"P1",
"onpage",
"/careers has no <title>",
"Google title link docs"
],
[
"P2",
"onpage",
"/areas/millbrook and /areas/cedar-park have the same title",
"Google title link docs"
],
[
"P3",
"onpage",
"/services/fascia-repair has no meta description",
"Google snippet docs"
],
[
"P4",
"onpage",
"/services/ice-dam-prevention has two <h1> elements",
"Accessibility / heading structure"
],
[
"P5",
"onpage",
"The three homepage images have no alt text",
"WCAG 1.1.1 / Google image SEO"
],
[
"P6",
"onpage",
"/privacy has no lang attribute",
"WCAG 3.1.1"
],
[
"P7",
"onpage",
"/terms has no viewport meta tag",
"Google mobile-friendly docs"
],
[
"T1",
"security",
"No Strict-Transport-Security header on any page",
"RFC 6797"
],
[
"T2",
"security",
"/about loads an image over http:// (mixed content)",
"MDN mixed content"
],
[
"T3",
"security",
"A blog post links to a staging host (staging.lab2.crawlcheck.io)",
"OWASP information exposure"
],
[
"T4",
"security",
"The homepage sets a session cookie without Secure or HttpOnly",
"OWASP session management"
]
]