# The 56-Point AEO and SEO Audit Checklist | Content Cucumber

> The full 56-point AEO and SEO audit checklist Content Cucumber runs for paid clients, organized into 12 categories with the what, how, why, and tool for every item. Read it here or download the PDF, no form.

*Source: [https://contentcucumber.com/research/aeo-seo-audit-checklist/](https://contentcucumber.com/research/aeo-seo-audit-checklist/)*

*By Brent Peterson, CEO, Content Cucumber. Updated May 2026*

---

**Checklist**

The same audit framework Content Cucumber runs for paid clients, laid out in 12 categories with the what, how, why, and tool for each item so a team can work through it on its own. Every item is on this page, and the PDF is free to download.

[Download the PDF](https://contentcucumber.com/wp-content/uploads/2026/09/aeo-seo-audit-checklist.pdf)

## Before you start

How to use this guide
A working document, not a textbook
This guide is organized into 12 categories and 56 discrete items. Each item follows the same structure:
**What:** the specific thing being checked
**How:** the practical method or tool used to check it
**Why:** why it matters for rankings, traffic, or conversion
**Example / Tool:** a command, query, or tool link that makes the check concrete
The categories are not ranked. Run the full checklist the first time, then prioritize the categories where you found the most issues.
Five items include a **Field Note** sidebar: a short story from a real engagement. Names and URLs are anonymized. The lessons are not.
Make a copy, add your notes in the margin, and check off items as you go. A full pass on a mid-size site (500 to 2,000 pages) runs 4 to 8 hours of focused work.
**Before you start: A tool tells you what. This checklist tells you why, and what to do next.**
Automated SEO platforms flag issues. They do not fix them. A crawler reports 400 URLs 404ing. It cannot tell you which 40 carried 80% of your link equity. A performance tool flags a 3.2-second LCP. It does not optimize the image, deploy the CDN, or rewrite the 400 title tags. Every item includes judgment, not just detection.
Category 01 · Crawlability & Indexing

## Crawlability & Indexing

Category 01. 5 items · robots.txt, sitemaps, noindex audit, IndexNow
1.1 robots.txt sanity check
**What.** Confirm robots.txt exists, is reachable at /robots.txt, returns HTTP 200, and does not block paths you want indexed.
**How.** Load the file in a browser. Compare the Disallow rules against your sitemap URLs. Look for accidental Disallow: / or Disallow: /wp-content/ that cuts off CSS and images.
**Why.** A single bad line in robots.txt can deindex an entire site. It is the first thing a crawler reads.
**Tool.** curl -I https://example.com/robots.txt + Google Search Console > Settings > robots.txt report.
**Brent's Take: robots.txt is now the front door for AI bots, not just Google.**
GPTBot, ClaudeBot, PerplexityBot, and Google-Extended all respect the same file. A single Disallow: / blocks them the same way it blocks Googlebot. If you want your content to show up in AI answers, you need to explicitly invite them in and tell them what you want cited. That's what llms.txt is for.
As of April 2026, llms.txt is an emerging standard. Major search engines have not formally adopted it. Treat it as low-cost insurance for AI crawler access, not a proven ranking method.
1.2 XML sitemap exists and is registered
**What.** Confirm your current sitemap URL is live and submitted in Google Search Console and Bing Webmaster Tools.
**How.** Visit /sitemap.xml, /sitemap_index.xml, and /wp-sitemap.xml. Cross-check with GSC > Sitemaps panel.
**Why.** Sitemaps are the single most efficient way to tell a search engine what pages exist. No sitemap, no priority crawling for new content.
**Tool.** GSC Sitemaps report, Bing Webmaster Tools > Sitemaps.
**What is a sitemap?**
An XML file listing every URL on your site you want search engines to crawl, plus metadata like last-modified dates. It tells Google, Bing, and AI engines what pages exist and when they changed, without forcing them to discover every page through internal links.
1.3 Stale sitemap cleanup in GSC
**What.** Remove old sitemap URLs that no longer exist or return 404s.
**How.** In GSC, look at every sitemap entry with status "Couldn't fetch" or with an "Indexed" count of 0. Use the three-dot menu to remove each stale entry.
**Why.** Stale sitemaps pollute crawl signals and waste Google's time on dead URLs. They also hide the signal that your real sitemap is or is not working.
**Tool.** GSC > Sitemaps > sort by "Last read" to find the oldest entries.
**Field Note**
On a recent migration audit, we found 13 sitemap URLs still registered in GSC from a 2018 Yoast setup. Every one of them returned 0 indexed URLs. The current WordPress native sitemap was not registered at all. A 2-minute cleanup and resubmit gave us the cleanest crawl signal the site had seen in years.
1.4 noindex audit
**What.** Find pages accidentally marked noindex in meta tags or HTTP headers.
**How.** Crawl the site with Screaming Frog (or equivalent). Filter by "Meta Robots 1" containing noindex. Compare against pages you expect to rank.
**Why.** One misconfigured template can noindex thousands of product pages. This is the single most common cause of a sudden traffic drop with no apparent reason.
**Tool.** Screaming Frog > Directives tab > filter "Noindex".
**Brent's Take: It's all downhill if you forget to flip one checkbox.**
Every WordPress site has a "Discourage search engines from indexing this site" box in Settings > Reading. It's on by default in staging. When staging gets promoted to production without someone unchecking it, every page inherits a noindex directive. We have seen this cost brands six months of organic traffic before anyone noticed. Audit step 1.4 catches it in 60 seconds.
1.5 IndexNow protocol setup
**What.** Enable IndexNow so content changes get pushed to Bing, Yandex, and Naver instantly with one API call.
**How.** Generate a key, host the key file at your domain root, then POST changed URLs to api.indexnow.org/indexnow. Most CMSs have a plugin.
**Why.** Google does not use IndexNow yet, but Bing and its aggregator network do. For news, commerce, and frequently updated pages, same-day indexing matters.
**Tool.** indexnow.org, or search your CMS for "IndexNow plugin".
**How CC fixes this: Crawlability issues are where audits pay for themselves fastest.**
We have seen sites invisible to Google for months because of one misplaced Disallow line, and brand-search queries going nowhere because 13 dead sitemaps were polluting the crawl signal. A tool flags these. Our audits diagnose the root cause, clean up GSC, resubmit a correct sitemap, and wire IndexNow so new content gets picked up within hours instead of weeks. This category alone has returned 20%+ of lost organic traffic in under 30 days on multiple engagements.

## URL Structure & Redirects

Category 02. 5 items · Redirect chains, canonical tags, protocol consolidation
Warning
Always pay attention to your URL structure.
Every redirect, canonical tag, and trailing slash changes how search engines and AI engines understand your site. Get it wrong at migration, and you spend 18 months cleaning it up.
2.1 Redirect chain depth (one hop max)
**What.** Measure how many redirects a URL goes through before reaching the final destination.
**How.** curl -IL https://example.com/old-page and count the HTTP/1.1 301 lines. Or crawl with Screaming Frog and filter for "Redirect Chains".
**Why.** Each hop leaks link equity and slows first paint. Two hops is common on WordPress sites (www strip + trailing slash). Three hops is a red flag.
**Tool.** curl -IL <url> or Screaming Frog > Reports > Redirects > Redirect Chains.
**Field Note**
A recent audit found that every external backlink to a client site was going through a 2-hop chain: the nginx layer redirected from www to non-www, and then the WordPress canonical handler added a second hop for the trailing slash. Conservatively, that leaked around 15% of the link equity from every inbound link. One nginx rewrite consolidated it to a single hop.
2.2 www vs non-www consolidation
**What.** Pick one (www or non-www), 301 the other to it, and verify the canonical tag matches.
**How.** curl -I https://www.example.com and curl -I https://example.com. One returns 200, the other returns 301 to the first.
**Why.** Google treats www and non-www as different sites. Splitting link equity across both halves your ranking power.
**Tool.** GSC property settings, nginx return 301, Apache RewriteRule.
2.3 Trailing slash consistency
**What.** Decide whether your URLs end in / and enforce it across the entire site.
**How.** Crawl the site and look for pairs: /about and /about/ both resolving. Check what your canonical tag says.
**Why.** Inconsistent trailing slashes create duplicate URLs in Google's index and dilute ranking signals.
**Tool.** Screaming Frog > URL tab > "Trailing Slash" filter.
**Did you know?**
Google treats /about and /about/ as different URLs. If both return HTTP 200 without a canonical or 301, Google splits crawl budget between them. You get half the priority for the exact same content.
2.4 HTTPS enforcement
**What.** Confirm all HTTP URLs 301 to HTTPS, and no mixed-content assets load on HTTPS pages.
**How.** curl -I http://example.com needs to return 301. Load any page in Chrome DevTools > Security tab and look for mixed content warnings.
**Why.** Google has used HTTPS as a ranking signal since 2014. Mixed content breaks the padlock and triggers browser warnings that tank trust.
**Tool.** Chrome DevTools > Security, SSL Labs (ssllabs.com/ssltest).
2.5 Canonical tag accuracy
**What.** Every indexable page needs a self-referencing canonical tag that matches the URL in the address bar.
**How.** View source, search for <link rel="canonical". Compare the href to the current URL.
**Why.** A wrong canonical is one of the fastest ways to accidentally deindex an entire section of your site. Self-canonical traps and cross-canonical mistakes are silent killers.
**Tool.** curl -s <url> | grep -i canonical.
**How CC fixes this: Redirect architecture is where most tool-driven SEO fails.**
Tools report "redirect chain detected" without knowing which chain is costing you the most link equity, which can be fixed at the nginx layer in one rewrite, and which need the CMS canonical handler rebuilt. Our audits trace every high-backlink URL through its redirect path, calculate the equity leakage, and hand your team (or ours) the exact nginx or Apache config changes to consolidate to one hop. Redirect cleanup is one of the highest-ROI fixes in SEO and the one tools are worst at prioritizing.
/old-url → /intermediate → /another → /final → /old-url → /final 3 hops · ~30% equity lost

## On-Page SEO

Category 03. 5 items · Titles, meta descriptions, headings, keyword placement
3.1 Title tag uniqueness and length
**What.** Every indexable page has a unique <title> tag between 50 and 60 characters.
**How.** Crawl with Screaming Frog > Page Titles tab. Sort by duplicates and by length.
**Why.** Duplicate titles confuse Google on which page to rank. Truncated titles (over 60 chars) lose keyword weight and CTR.
**Tool.** Screaming Frog > Page Titles > "Duplicate" and "Over X Characters" filters.
3.2 Meta description presence and CTR quality
**What.** Every indexable page has a meta description between 140 and 160 characters with a clear value proposition.
**How.** Crawl the site. Flag missing descriptions. Read every description for pages in positions 1 to 10 in GSC.
**Why.** Meta descriptions do not affect ranking but affect click-through rate. A boring description on a top-10 result is leaving traffic on the table.
**Tool.** Screaming Frog > Meta Descriptions tab, GSC > Performance > Queries > sort by Impressions.
3.3 H1 uniqueness per page
**What.** One H1 per page, and that H1 matches the content intent.
**How.** Crawl with Screaming Frog > H1 tab. Flag pages with zero H1s, multiple H1s, or H1s that duplicate across pages.
**Why.** H1 is a strong on-page relevance signal. Template bugs that put the site name in H1 on every page waste the signal.
**Tool.** Screaming Frog > H1 tab > filter "Missing" and "Multiple".
**Did you know?: Why the heck is the H1 tag so important?**
Google's docs say H1s are "not critical for ranking." Independent studies say the opposite. Unique, descriptive H1s outrank generic ones, and AI engines lift them straight into answers.
3.4 Keyword placement in title, H1, and first 100 words
**What.** The primary target keyword appears in the title, in the H1, and within the first 100 words of body content.
**How.** Open each top-priority page. Scan for the target keyword in those three locations.
**Why.** This is the baseline of on-page optimization. Pages that miss it can still rank, but pages that nail it rank with far less link equity.
**Tool.** Manual review for top 20 to 50 pages.
3.5 Image alt text coverage
**What.** Every non-decorative image has descriptive alt text.
**How CC fixes this: On-page SEO is where writing meets engineering.**
A crawler flags 400 pages with duplicate title tags. It cannot rewrite them. It does not know which pages target which keywords, which CTAs convert, or what your brand voice sounds like. Content Cucumber has 40+ human writers on staff. We rewrite titles, meta descriptions, H1s, and body copy at scale, tied to real keyword research and real conversion goals. This is the category where a writer-led agency has a structural advantage over every tool-only SEO platform.

## Schema & Structured Data

Category 04. 5 items · Type selection, AggregateRating rules, Review schema, BreadcrumbList, FAQ
**What is schema markup?**
Schema markup is structured data, written in JSON-LD, that tells search engines and AI engines what type of content a page contains. A service page. A product. A FAQ. A local business. Without schema, machines have to guess from the words on the page. With schema, you tell them directly. This is why schema-marked pages show up in rich results and get cited by AI engines like ChatGPT and Perplexity.
4.1 Appropriate schema type per page type
**What.** Each page type carries the schema that matches it. Service pages use Service schema. Articles use Article. Products use Product. Locations use LocalBusiness.
**How.** Test a representative URL from each template in Google's Rich Results Test.
**Why.** The wrong schema type either will not trigger rich results, or it will, and Google will strip it later once the mismatch is detected.
**Tool.** search.google.com/test/rich-results.
**Brent's Take: Structured data is the new king.**
Content is no longer the only thing that ranks. AI engines parse schema before they parse body copy. ChatGPT, Perplexity, and Google's AI Overviews cite based on machine-readable structure first. The site with cleaner schema wins, even when its content is weaker.
4.2 AggregateRating placement rules
**What.** AggregateRating on an Organization or LocalBusiness schema needs to reflect reviews of the business as a whole, with visible reviews on the page. It does not belong sitewide on blog posts.
**How.** View source on a blog post and search for aggregateRating. If it appears on the Organization block, Google's 2019 self-serving rule strips the rich result.
**Why.** Self-serving AggregateRating was common before Google's 2019 update. Sites still carry it from old templates and wonder why stars never show in search.
**Tool.** Rich Results Test, then Schema.org's Organization documentation for valid placements.
**Field Note**
We audited a site that had AggregateRating with a 5.0 score attached to the Organization schema on every single blog post. The markup was technically valid. Google had been silently stripping the rich result for six years because of the self-serving rule. The fix was moving AggregateRating to the Service schema on the relevant service pages, where it belonged.
Wrong (sitewide)
{ "@type": "Organization", "aggregateRating": { "ratingValue": "5.0", "reviewCount": "127" } }
On every blog post. Self-serving. Stars stripped.
Right (service page)
{ "@type": "Service", "aggregateRating": { "ratingValue": "4.8", "reviewCount": "23" } }
On the page with visible reviews. Stars show.
4.3 Review schema: name match between page and markup
**What.** Every reviewer name in Review schema needs to appear on the visible page in the same form.
**How.** View source. For each author.name in Review schema, confirm the name appears on the rendered page exactly as markup says.
**Why.** Google strips Review rich results when the author in schema is not visible on the page. Sites often write "Luke Q." on the page and "Luke Quernemoen" in schema. The mismatch kills the rich result.
**Tool.** Manual diff between source and rendered page.
4.4 BreadcrumbList on interior pages
**What.** Every interior page (category, subcategory, leaf) carries BreadcrumbList schema.
**How.** Rich Results Test on category and product URLs. Confirm breadcrumbs appear in SERP preview.
**Why.** Breadcrumbs show up in the SERP as a second line and improve CTR. They also clarify site hierarchy for crawlers.
**Tool.** search.google.com/test/rich-results.
4.5 FAQ schema for question-and-answer content
**What.** Any page with a real FAQ block carries FAQPage schema, and the questions and answers in markup match the visible text.
**How.** View source, search for FAQPage. Confirm each mainEntity Question matches a visible H3 or question header on the page.
**Why.** FAQ rich results used to dominate SERPs. Google has reduced their visibility but still uses FAQ schema as a comprehension signal for AI Overviews and answer engines.
**Tool.** Rich Results Test. Avoid duplicate FAQPage schema (one page, one FAQ block, one schema entry).
**How CC fixes this: Schema is where tools generate the most noise and the least value.**
They flag missing markup without knowing whether your page qualifies for the rich result. Our audits read the page, understand the business context, and move or write schema to what Google will surface. We have moved AggregateRating off Organization on sites that had been silently losing rich results for years, fixed Review-schema name mismatches that killed star ratings, and added BreadcrumbList across multi-template WordPress installs. If your stars are not showing up in search, schema is almost always the reason.

## Performance & Core Web Vitals

Category 05. 5 items · LCP, INP, CLS, image optimization, render blocking
5.1 LCP (Largest Contentful Paint) under 2.5 seconds
**What.** The largest element visible in the initial viewport paints within 2.5 seconds on mobile.
**How.** PageSpeed Insights, or Chrome DevTools > Performance > Web Vitals overlay.
**Why.** LCP is the clearest "does this page feel fast" metric. Slow LCP correlates with bounce rate and lost conversions.
**Tool.** pagespeed.web.dev, Chrome DevTools, web-vitals.js library.
5.2 INP (Interaction to Next Paint) under 200 milliseconds
**What.** The time from a user interaction (click, tap) to the next visual update stays under 200 ms.
**How.** Chrome DevTools > Performance > record a real user flow. Look at INP in the Web Vitals panel.
**Why.** INP replaced FID in March 2024 as a Core Web Vital. Slow INP flags JavaScript that is blocking the main thread during interaction.
**Tool.** Chrome DevTools, CrUX report in PageSpeed Insights.
5.3 CLS (Cumulative Layout Shift) under 0.1
**What.** Content stays in place after initial render. Images have declared dimensions, ads reserve space, fonts do not cause layout shift.
**How.** PageSpeed Insights > CLS score. Chrome DevTools > Layout Shift Regions overlay.
**Why.** High CLS feels broken. Users tap the wrong thing because the button moved. Google uses it as a ranking signal.
**Tool.** pagespeed.web.dev, font-display: optional, aspect-ratio CSS on images.
5.4 Image optimization (format, size, lazy loading)
**What.** Images are served in modern formats (WebP or AVIF), sized appropriately for the viewport, and lazy-loaded below the fold.
**How.** View source, check <img> for loading="lazy" and srcset. Check Network tab for payload sizes.
**Why.** Images are usually the largest asset on a page. Every 100 KB you remove is a measurable LCP improvement.
**Tool.** Squoosh (squoosh.app) for manual compression, ImageKit or Cloudflare Images for automation.
5.5 Render-blocking resources audit
**What.** No render-blocking JS or CSS delays first paint. Critical CSS is inlined. Non-critical JS is deferred or async.
**How.** PageSpeed Insights > Opportunities > "Eliminate render-blocking resources".
**Why.** Every render-blocking resource adds a round trip to LCP. On mobile 4G, each one costs 300 to 600 ms.
**Tool.** pagespeed.web.dev, WebPageTest (webpagetest.org).
**How CC fixes this: Performance is where SEO becomes an engineering problem.**
PageSpeed Insights gives you a number. It does not compress your images, defer your third-party scripts, inline your critical CSS, or reconfigure your CDN. Our audits identify the specific LCP bottleneck on your site (usually the hero image, sometimes a blocking font), calculate the measurable time savings of each fix, and either hand your engineering team a prioritized list or work directly with our partner network to ship the changes. Every 500 ms of LCP recovered is measurable revenue on ecommerce and conversion sites.

## Social & Open Graph

Category 06. 4 items · og:image, dimensions, Twitter card, debugger verification
**Did you know?: Facebook caches your og:image and refreshes it on its own schedule.**
Even after you fix a broken image, the cached preview keeps showing the old one until you force a refresh through the Sharing Debugger. LinkedIn behaves the same way through the Post Inspector. This is why you can fix the source and still see the wrong preview hours or days later.
6.1 og:image exists and resolves
**What.** The URL in <meta property="og:image"> returns HTTP 200 and points to a real, visible image.
**How.** View source, copy the og:image URL, paste into a browser. Confirm the image loads.
**Why.** A broken og:image is invisible to the site owner but determines what every Facebook, LinkedIn, Slack, and iMessage preview shows.
**Tool.** Facebook Sharing Debugger, LinkedIn Post Inspector.
**Field Note**
We audited a site whose og:image had been returning 404 for nine months. The theme had hardcoded an uploads path that never existed. Facebook, LinkedIn, and Bing were all silently falling back to a partner company's logo that happened to be in a nearby image tag. Every social share for nine months had been promoting the wrong brand. Total fix time: 3 minutes once diagnosed.
6.2 og:image dimensions (1200 x 630)
**What.** og:image is at least 1200 x 630 pixels and uses an aspect ratio of 1.91:1.
**How.** Right-click the og:image URL and check dimensions, or use the FB Sharing Debugger (it flags images under the recommended size).
**Why.** Undersized images get cropped badly or rendered small in previews, which kills click-through.
**Tool.** Facebook Sharing Debugger, LinkedIn Post Inspector.
6.3 og:title, og:description, and Twitter card meta tags
**What.** og:title, og:description, twitter:card, twitter:title, and twitter:image are all present and correct.
**How.** View source. Confirm each tag exists and values match the page content.
**Why.** Missing Twitter card tags cause X (Twitter) to render plain-text links instead of rich previews. Same penalty on click-through as a broken og:image.
**Tool.** curl -s <url> | grep -E 'og:|twitter:'.
6.4 Social debugger verification
**What.** The Facebook Sharing Debugger and LinkedIn Post Inspector both render a correct preview with the expected image, title, and description.
**How.** Paste your URL into each tool, click "Scrape Again" to bust the cache, then review the preview.
**Why.** Each platform caches social previews independently. Fixing og:image on the page does not update Facebook's cache until you force a rescrape.
**Tool.** developers.facebook.com/tools/debug, linkedin.com/post-inspector.
**How CC fixes this: Social previews are the easiest thing to break and the hardest thing to notice.**
Site owners rarely look at their own site on Facebook or LinkedIn. Meanwhile every share, every partner post, every email unfurl is using whatever the platform cached from a broken og:image tag. Our audits check every high-traffic URL in the FB and LinkedIn debuggers, flag broken previews, and either deliver replacement og:image assets or fix the theme-level template bug. We also design branded social preview images so your shares are doing marketing, not just linking.

## Mobile

Category 07. 4 items · Responsive layout, touch targets, viewport, mobile-first indexing
7.1 Mobile responsive layout
**What.** Every template renders cleanly at common mobile widths (360, 390, 430 px) without horizontal scroll.
**How.** Chrome DevTools > Device Toolbar > test at iPhone SE, iPhone 14, Pixel 7.
**Why.** Google has been mobile-first indexing since 2019. The mobile rendering of a page is what ranks, not the desktop version.
**Tool.** Chrome DevTools Device Toolbar, PageSpeed Insights mobile report.
7.2 Touch target sizes
**What.** Interactive elements (buttons, links, form fields) are at least 48 x 48 pixels, with 8 px of spacing between adjacent targets.
**How.** Chrome DevTools > Lighthouse > Accessibility audit > "Touch targets" flag.
**Why.** Small or crowded touch targets cause mis-taps and ranked as a Google mobile usability issue.
**Tool.** Lighthouse, manual testing on a real phone.
7.3 Viewport meta tag
**What.** Every page includes <meta name="viewport" content="width=device-width, initial-scale=1">.
**How.** View source, search for viewport.
**Why.** Without the viewport tag, mobile browsers render the page at desktop width and scale it down, which breaks layout and readability.
**Tool.** curl -s <url> | grep viewport.
7.4 Mobile-first indexing confirmation
**What.** GSC > Settings shows the site as "Indexed on: Googlebot smartphone".
**How.** GSC > Settings > Indexing crawler.
**Why.** If a site is still on desktop crawler in 2026, something is actively preventing the mobile-first switch (usually a blocked resource or a parity issue between mobile and desktop content).
**Tool.** GSC Settings.
**How CC fixes this: Mobile parity is the baseline and still gets overlooked.**
We regularly find sites where the mobile version hides key content (reviews, FAQ sections, trust badges) behind collapsed accordions that Google treats as secondary. Tools do not flag this. A human auditor clicking through the mobile experience does. Our audits test every high-traffic template on real device widths, document where mobile UX hurts conversion or indexing, and hand over annotated screenshots with specific CSS fixes.
**Brent's Take: Open your site on your phone.**
Mobile-first indexing means Google's crawler is your phone, not your laptop. Open every important page on the phone you carry around. If the content above the fold does not tell the story, neither does your search ranking. Most desktop-led teams have not looked at their own site on a phone in months.
Desktop
Hero, headline, CTA, and two content sections all visible above the fold.
Mobile
Only header and partial hero above the fold. CTA and content below the dashed line may not be indexed in one pass.

## Content Quality

Category 08. 5 items · E-E-A-T, thin content, duplication, cannibalization, freshness
8.1 E-E-A-T signals present
**What.** Experience, Expertise, Authoritativeness, Trust signals appear on every commercial and editorial page: author bio with credentials, publication date, last-updated date, sources cited.
**How.** Audit a random sample of 10 to 20 pages. Score each on presence of author, date, credentials, and external citations.
**Why.** E-E-A-T applies across all competitive queries as of the December 2025 Google update, not just YMYL. Thin author pages are a liability.
**Tool.** Manual audit, Google's Search Quality Rater Guidelines PDF.
**What is E-E-A-T?**
**Experience** is first-hand (did the writer use the product, run the audit, walk the trail?). **Expertise** is credentialed (doctors on medicine, lawyers on law). **Authoritativeness** is recognition from other experts (citations, backlinks, mentions). **Trust** is the foundation (accurate sourcing, named authors, secure connections).
As of December 2025, E-E-A-T applies to every competitive query, not just YMYL. Anonymous authors are now a ranking liability across the board.
Warning
Automated AI-generated content will hurt more than help.
Readers feel the difference. Google's helpful-content system penalizes mass-produced AI content. First-hand experience, original observation, and human voice are what win citations now.
8.2 Thin content audit
**What.** Flag pages with under 300 words of substantive content that are not transactional (checkout, login, contact form).
**How.** Crawl with Screaming Frog > Content tab > filter "Word Count < 300".
**Why.** Thin content pages either do not rank or pull down the site's overall quality score. Consolidate or expand.
**Tool.** Screaming Frog Content tab.
8.3 Internal duplicate content
**What.** Find pages with more than 70% content overlap that are not canonicalized to a single URL.
**How.** Siteliner (siteliner.com) or Screaming Frog's near-duplicates feature.
**Why.** Internal duplicate content splits ranking signals across multiple URLs and forces Google to guess which version to rank. Cannibalization follows.
**Tool.** siteliner.com, Screaming Frog > Content > Near Duplicates.
8.4 Keyword cannibalization
**What.** Identify queries where more than one URL from the same domain competes in the top 20.
**How.** Export GSC Queries with Page data. Pivot by query. Flag any query with two or more URLs from the same site in the top 20.
**Why.** Cannibalization means Google does not know which URL is the "best" answer. Rankings oscillate. Fix by consolidating, differentiating intent, or 301'ing the weaker URL.
**Tool.** GSC export + pivot table, or a dedicated cannibalization tool.
**Field Note**
On a brand-search audit, we found five different URLs from the same site competing for the brand's own name. The homepage, an old "about" page, a redirect that never fully propagated, a tag archive, and a category page. Google was rotating which one showed up as the #1 result. Consolidating to one canonical URL reclaimed around 30% of brand-search impressions within two weeks.
/brand-name → /about/our-brand → /tag/brand → /category/brand → /old-redirect-target → /brand-name Google rotates which ranks #1
8.5 Content freshness signals
**What.** Evergreen pages carry a "last updated" date. Dated pages (news, events, pricing) are reviewed quarterly.
**How.** Audit top-20 traffic pages. Check visible published / updated dates. Cross-reference with the content review date.
**Why.** Google uses freshness as a tiebreaker in competitive queries. An accurate "updated" date is a ranking and CTR lever.
**Tool.** Manual review, schema datePublished and dateModified.
**How CC fixes this: Content quality is the category where CC's 40+ human writers genuinely change the math.**
A tool flags thin content. It cannot rewrite it. It flags cannibalization. It cannot decide which of five overlapping pages to keep, which to consolidate, and which to redirect. Our audits pair the technical diagnostic with a content remediation plan: which pages to merge, which to expand, which to retire, and who writes the replacements. Most of the content in the guide you are reading now was written by our editorial team. This is what we do.
AI is part of the workflow, not the writer. Our team uses it to surface competitor angles, scan source documents at speed, and identify which queries are worth writing for in the first place. The thinking, the original observation, and the human voice that get a page cited still come from people. That blend (AI for research, humans for judgment) is what beats both pure-tool agencies and pure-AI content farms.

## Opportunity Mining

Category 09. 4 items · Striking-distance, low-CTR winners, decay, brand fragmentation
9.1 Striking-distance queries (positions 8 to 20)
**What.** Find queries where you already rank in positions 8 to 20 with meaningful impressions. These are the cheapest wins.
**How.** GSC > Performance > Queries > filter by Position > between 8 and 20, sorted by Impressions descending.
**Why.** Moving a query from position 12 to position 5 typically triples clicks. These pages already exist, already rank, and already carry signal.
**Tool.** GSC export, or a dedicated tool like Ahrefs Opportunity Report.
9.2 Low-CTR winners
**What.** Pages ranking in positions 1 to 5 with CTR below the expected benchmark for that position.
**How.** GSC > Performance > compare CTR to expected (Advanced Web Ranking publishes benchmarks). Flag pages 40%+ below expected.
**Why.** A top-5 ranking with bad CTR means the title or meta description is losing the click. Rewriting is a high-leverage fix.
**Tool.** GSC + AWR CTR benchmark study.
9.3 Decaying pages
**What.** Pages whose traffic trend has dropped by 30%+ over the last 90 days compared to the prior 90 days.
**How.** GA4 > Pages report > compare 90d vs prior 90d > sort by largest decline.
**Why.** Decaying pages are the inverse of striking-distance. Something changed. Freshness, SERP features, new competitors. Diagnosing early prevents further decline.
**Tool.** GA4 date comparison, or a dedicated tool like SEMrush Content Audit.
9.4 Brand-search ranking fragmentation
**What.** Query your own brand name in GSC. In a healthy setup, one URL (usually the homepage) dominates. If multiple URLs split the impressions, fragmentation is bleeding brand-search traffic.
**How.** GSC > Performance > filter Query "contains [brand name]" > Pages tab.
**Why.** Fragmentation dilutes the strongest possible ranking signal (brand search intent). Consolidating to one URL can recover double-digit impressions almost immediately.
**Tool.** GSC Query + Page report.
**Did you know?: Position 11 to 20 captures under 1% of clicks per result.**
Per Backlinko's CTR research: position 1 takes ~27%, positions 6 to 10 each capture 2 to 3%, positions 11 to 20 each fall under 1%. The cliff is where the highest-ROI SEO work lives.
**How CC fixes this: Opportunity mining is where audits become revenue, not just reports.**
Every site we audit has striking-distance queries worth tens of thousands of impressions. Most clients did not know they existed because their reporting tool lumped them into "other." Our audits rank every near-miss query by traffic potential, pair each with the page that can win it, and either hand your team a prioritized rewrite list or write the refreshes for you. This category alone has justified the cost of our audits on every engagement where we have run it.
**Brent's Take: Striking distance is where audits earn their keep.**
In our audits, sites typically have dozens to hundreds of queries ranking in positions 11 to 20. Most clients do not know they exist because their reporting tool buries them. A focused 30-day rewrite sprint can recover meaningful impression volume on queries clients had given up on. This category alone has paid for the audit on every engagement we have run.
Page 1 (positions 1-10)
Visible click-through rates. Top 3 positions take the majority of clicks.
Striking distance (positions 11-20)
Less than 1% click-through. The cliff at position 10 is where the highest-ROI work lives.

## AI Search & GEO

Category 10. 5 items · llms.txt, AI crawlers, passage citability, FAQ format, schema
10.1 llms.txt file exists
**What.** The domain serves a /llms.txt file that lists the most important URLs on the site in a machine-readable format, so LLMs can crawl a curated entry point.
**How.** Visit https://example.com/llms.txt in a browser.
**Why.** llms.txt is an emerging convention (proposed by Answer.AI in 2024). Early adopters are getting disproportionate citation rates in ChatGPT and Perplexity.
**Tool.** llmstxt.org for format spec.
10.2 AI crawler allowlist (GPTBot, ClaudeBot, PerplexityBot)
**What.** robots.txt explicitly allows the major AI crawlers (or blocks them intentionally, not accidentally).
**How.** View /robots.txt. Look for User-agent: GPTBot, User-agent: ClaudeBot, User-agent: PerplexityBot, User-agent: Google-Extended.
**Why.** If a site wants to appear in ChatGPT / Claude / Perplexity answers, the crawler has to be allowed. Many WordPress security plugins block these by default.
**Tool.** View robots.txt, test with user-agent spoofing (curl -A "GPTBot" <url>).
10.3 Passage-level citability
**What.** Content includes short (1 to 3 sentence) quotable answers immediately after each question or section heading.
**How.** Read top-priority pages. After each H2, is the next paragraph a self-contained answer that could be quoted verbatim?
**Why.** AI Overviews, Perplexity, and Gemini extract short passages. Pages that bury the answer three paragraphs in do not get cited.
**Tool.** Manual review, or the passage-level citability rubric in our Appendix.
10.4 FAQ format for common questions
**What.** A dedicated FAQ section on commercial and long-form pages, written as real questions (not statements) with short, quotable answers.
**How.** Confirm every high-intent page has an FAQ block with 3 to 5 real questions and 2 to 4 sentence answers.
**Why.** FAQs are the most cited content type in AI Overviews. They match the question-answer format AI search expects.
**Tool.** AnswerThePublic, AlsoAsked for question research.
10.5 Schema markup for AI comprehension
**What.** Article, Product, and FAQPage schema on relevant content types, with @id anchors so AI can cite specific passages.
**How.** Rich Results Test. Confirm each page carries the right schema with populated fields.
**Why.** AI crawlers lean heavily on structured data. Pages with clean schema get cited more often and more accurately.
**Tool.** search.google.com/test/rich-results, schema.org documentation.
**How CC fixes this: AI search is the category no tool-first SEO platform is keeping up with.**
ChatGPT, Claude, Perplexity, Gemini, and Google AI Overviews citation rules change monthly. We run our own AEO (Answer Engine Optimization) diagnostics on every client, measuring how the major platforms represent your brand and identifying where citations are missed. Our AI Citation Audit is a dedicated service that pairs with this checklist. This is a category where being early (llms.txt, passage-level structuring, citation tracking) produces compounding advantages.
Benchmarking is where this gets measurable. We capture a baseline of how often each AI engine cites your brand for your target queries today, then track changes month over month as we ship llms.txt updates, schema improvements, and passage-level rewrites. We also measure your competitors against the same queries so you know whether you are gaining ground, holding even, or falling behind. The benchmark turns AI search from a black box into a channel you can manage.

## Local SEO

Category 11. 4 items · GBP, NAP consistency, local schema, reviews
11.1 Google Business Profile completeness
**What.** GBP has 100% profile completion: NAP, hours, categories (primary + secondary), services, photos (10+), products, posts.
**How.** Log into business.google.com > your profile > review each tab.
**Why.** GBP completeness is a direct ranking signal in the local pack. Every empty field is a ranking factor forfeited.
**Tool.** business.google.com.
11.2 NAP consistency across citations
**What.** Name, Address, and Phone number match exactly across GBP, website footer, Yelp, Bing Places, Apple Maps, industry directories.
**How.** Spot-check 10 to 20 citations. Look for punctuation, abbreviation, and suite number inconsistencies.
**Why.** Inconsistent NAP data confuses Google's entity graph and dilutes local trust signals. "Suite 200" vs "Ste 200" vs "#200" matters more than it seems like it would.
**Tool.** Moz Local, BrightLocal, or manual spot-check.
11.3 Local schema markup
**What.** LocalBusiness schema on the site with address, phone, opening hours, and service area fields populated.
**How.** Rich Results Test on homepage and location pages.
**Why.** LocalBusiness schema reinforces NAP consistency and gives Google a clean entity definition. Missing schema is a ranking gap vs competitors who have it.
**Tool.** schema.org/LocalBusiness, Rich Results Test.
11.4 Review generation and response cadence
**What.** A consistent cadence of new GBP reviews (ideally 2+ per month for an active business), with owner responses on 100% of reviews within 48 hours.
**How.** GBP > Reviews tab. Count reviews by month over the last 12 months. Count response rate.
**Why.** Review velocity and response rate are local pack ranking factors. Silent review sections hurt rankings; unresponded reviews hurt trust.
**Tool.** GBP dashboard.
**How CC fixes this: Local SEO is where process beats tools.**
There is no tool that drives your review velocity, no tool that responds to customers on your behalf, no tool that standardizes "Suite 200" vs "Ste 200" across 40 citation sites. Our audits identify the NAP inconsistencies, rank the citation sites by impact, and either hand your team a cleanup workflow or run it for you as a managed service. For multi-location businesses this is often the highest-ROI category in the checklist.
**Brent's Take: Local SEO is the only SEO where talking to humans wins.**
Tools cannot drive review velocity. They cannot respond to a one-star review at 9pm with grace. They cannot standardize "Suite" vs "Ste" across forty citation sites. The agencies that win local SEO are the ones that build process around humans, not the ones with the prettiest dashboards.
Map pack
The top result owns the largest pin and the prime position above the listings.
Result cards
Top card carries star ratings and review count. NAP consistency, review velocity, and category match decide who wins.

## Migration-Specific

Category 12. 5 items · Redirect mapping, sitemap resubmit, re-indexing, monitoring, backlink preservation
12.1 Redirect mapping (old URL to new URL pairs)
**What.** Every pre-migration URL has a 1:1 redirect to its post-migration equivalent. No URL 301s to the homepage unless that is genuinely the closest match.
**How.** Export old URL list from pre-migration crawl. For each, verify curl -IL old-url returns 301 to a specific (non-homepage) destination.
**Why.** Lazy redirect mapping (everything to homepage) is the single biggest cause of post-migration traffic cliffs. Each URL-to-homepage redirect loses substantial link equity (often 80%+) compared to a topically relevant redirect.
**Tool.** Screaming Frog + spreadsheet diff, or a migration tool like Greenlane.
12.2 Sitemap resubmission post-migration
**What.** Within 24 hours of a migration, the new sitemap is live, submitted to GSC and Bing Webmaster, and the old sitemap URL is removed from GSC.
**How.** GSC > Sitemaps > add new URL > remove old URLs.
**Why.** This is a 2-minute action that can cut re-indexing time by 2 to 4 weeks.
**Tool.** GSC Sitemaps, Bing Webmaster Tools Sitemaps.
12.3 Re-indexing request for top pages
**What.** For the top 20 to 50 pages by traffic, use GSC's URL Inspection > Request Indexing to push a re-crawl.
**How.** GSC > URL Inspection > paste URL > "Request Indexing" button.
**Why.** The "Request Indexing" button is UI-only (no API) but still moves priority pages through the queue faster than waiting for a natural crawl.
**Tool.** GSC URL Inspection tool.
12.4 Pre/post traffic monitoring
**What.** A 90-day traffic and ranking baseline from before the migration, compared against the 30 days after, to detect any drop beyond noise.
**How.** GA4 + GSC + rank tracker (Ahrefs, SEMrush, AWR). Compare sessions, keyword rankings, and indexed URL count.
**Why.** Traffic drops post-migration are normal for 2 to 4 weeks. Drops beyond 4 weeks, or beyond 30%, indicate a structural problem (redirects, canonical, sitemap, or content parity).
**Tool.** GA4 date comparison, GSC Performance comparison, Ahrefs Site Audit.
12.5 Backlink profile preservation check
**What.** The top 50 to 100 backlink-earning URLs from pre-migration still resolve (via redirect) to a relevant post-migration URL.
**How.** Export top backlinks from Ahrefs / SEMrush > filter by target URL > for each, check the post-migration status.
**Why.** Losing a high-authority backlink because its target URL 404s (or redirects to homepage) is a permanent loss of ranking power. Diagnosing within the first 30 days is usually recoverable. Waiting six months is usually not.
**Tool.** Ahrefs Best by Links report, SEMrush Backlink Analytics.
**How CC fixes this: Migration recovery is the deep-end of the pool.**
This is where a tool-first approach fails the hardest and costs the most money. A crawler tells you 400 URLs are 404ing. It cannot tell you which 40 carried 80% of your link equity, which need redirecting first, which are safe to let go, or how to recover the impressions you already lost. We triage, map, and ship the redirects, resubmit sitemaps, force re-indexing on priority URLs, and monitor the recovery curve for the 90 days that matter. Our migration audits are the single highest-ROI engagement we offer.

## The tool stack we use

Appendix A. Free, paid, and specialized tools referenced throughout the guide
Free & Essential
Google Search Console (GSC)
Google Analytics 4 (GA4)
Bing Webmaster Tools
Rich Results Test
PageSpeed Insights
Facebook Sharing Debugger
LinkedIn Post Inspector
IndexNow aggregator
Paid & Recommended
Screaming Frog SEO Spider
Ahrefs (backlinks, keyword research)
SEMrush (content audit tools)
Advanced Web Ranking (CTR benchmarks)
Specialized
Siteliner (internal duplicate content)
Squoosh (image compression)
WebPageTest (deep performance)
**How CC fixes this: Tools are commodities. Judgment is not.**
Every one of the tools above can be run by anyone with an afternoon and a credit card. What a tool cannot do is tell you which of its 400 findings matter, which can be fixed in five minutes, and which need a full sprint of writing or engineering. Our audits are the layer of human judgment on top of the same tool output everyone has access to. You can buy a Screaming Frog license for $259. You cannot buy the judgment to interpret it.
This is also where AI fits. Tools surface data. AI accelerates analysis. People decide what gets fixed first. The tool stack above is identical to what we use. The difference is in the order, the prioritization, and the fix quality.

## How to score your audit

Appendix B. Pass, Partial, Fail across all 56 items
Every item in this checklist scores as Pass, Partial, or Fail:
**Pass:** item is in place and correct across the site.
**Partial:** item is partially in place. Some pages have alt text, others do not. Title tags are present but duplicates exist.
**Fail:** item is missing, broken, or misconfigured.
Total the results across all 56 items, then read your score below.
**50+ Pass · Strong SEO Health**
Site is in strong shape. Prioritize opportunity-mining (category 9) and AI / GEO (category 10) for growth.
**35 to 49 Pass · Solid Fundamentals, Meaningful Gaps**
Fix the Fails first. Revisit Partials after. A 30-day remediation sprint usually gets a site in this tier up to the top tier.
**20 to 34 Pass · Systemic Issues**
Pick one category per sprint and work through it fully before moving on. Trying to fix everything at once almost always stalls.
**Under 20 Pass · Structured Recovery Needed**
A checklist is not the right tool at this point. You need a coordinated recovery plan with prioritization, engineering, and writing capacity. That is when a full agency engagement makes the most sense.
When To Hand It Off
You can run this yourself.
We can run it faster.
This checklist is designed so a competent in-house marketer can run it themselves. Most items take 5 to 30 minutes. A full pass runs 4 to 8 hours of focused work.
**Where an agency engagement changes the math:**
**Migration recovery** after a traffic cliff. Every week of delay compounds the loss.
**Complex schema builds** for multi-location businesses or product catalogs with review aggregation.
**AI search readiness.** llms.txt, passage-level structuring, and citation tracking across ChatGPT, Perplexity, Gemini, and Google AI Overviews.
**Content-quality work at scale.** Thin content, cannibalization, and E-E-A-T rebuilds take writers, not auditors.
**Ongoing monitoring** once the audit is clean. Sites that pass today regress as CMSs, plugins, and teams change.
Content Cucumber runs this full AEO + SEO audit as a done-for-you service with a prioritized remediation plan, monthly monitoring across both Google and AI engines, and content execution for the gaps that need writing. If that is where you are, get in touch.
Scan to start
Request a free AEO + SEO audit
Content Cucumber
· HubSpot Solutions Partner · contentcucumber.com · hello@contentcucumber.com
Version 1.0 · Published 2026-04-23

## Questions about this document

### What is this checklist?

The same 56 item audit framework Content Cucumber runs for paid clients, organized into 12 categories. Every item has the what, the how, the why, and the tool, so a team can work through it on its own.

### Is every item on this page?

Yes, all 56 items across the 12 categories, plus the tool stack and the scoring guide. The PDF has the same content in a designed layout, and it downloads with no form.

### How long does a full pass take?

It depends on the size of the site. A small site can get through the crawlability, redirect, and on-page categories in an afternoon. Opportunity mining and content quality take longer because they ask you to read your own data.

### How do I score my audit?

Every item is a Pass, a Partial, or a Fail. The last section explains the tiers, from strong SEO health at 50 or more passes down to systemic issues under 20, and what to fix first in each tier.

### What does AEO mean here?

Answer engine optimization, which covers how AI systems like ChatGPT, Perplexity, and Google AI Overviews find, read, and cite a site. The AI Search and GEO category holds those items.
