What the tool produces
A real, two-site SEO recovery — anonymised end-to-end. A product site and its parent corporate site, taken from an emergency diagnostic through fixes to a full audit with 90-day plans. Same shape, same depth, same Health Score you'd get on your own site — no setup required to read it.
Core Web Vitals — before & after
Two emergency performance fixes the audit drove, with real measured before/after results.
Site 1 (product) — layout stability
The page jumped around as it loaded (CLS), failing on both mobile and desktop — an unsized hero video, an undimensioned logo carousel, and late-loading fonts.
Site 2 (corporate) — load speed
The main content appeared slowly (LCP) because the hero image was set to load lazily — the browser delayed it until after the page was already laid out.
Site 1 now passes all four Core Web Vitals on desktop and three of four on mobile. Site 2 passes on the key metrics (current PageSpeed: mobile 76, desktop 92). The remaining work is listed in the plan.
A score that tracks the climb, not a victory lap
Both sites scored in the "High severity" band — because both were caught mid-crisis. The score's job isn't to flatter; it's to make the recovery measurable cycle over cycle. Here's the arc:
A broken migration was bleeding 3 years of search authority; Core Web Vitals failing on both sites.
Redirect fixed (301, path-preserving, SSL); hero-video and lazy-image fixes deployed; recovery signals submitted to Google.
Duplicate pages falling 12 → 5; both sites pass the key Core Web Vitals; 90-day plans in motion.
Three categories (Technical, Performance, Schema) are read straight off the tools — crawler, PageSpeed, schema validation — so re-runs are reproducible. Site 2's Schema score of 0 is real: the site has no structured data at all.
A good migration shipped without SEO hygiene and quietly bled years of hard-earned authority — and the worst of it has now been stopped. The redirect is fixed and path-preserving; Google's own indexing report confirms the canonical fix is working (duplicate pages down from 12 to 5). The job is no longer triage — it's growth, plus a handful of cheap, still-unshipped bug fixes.
From an actively-worsening problem to a 90-day plan
- Confirmed a broken redirect as the single most damaging active issue across the whole web presence.
- Fixed it: now 301, path-preserving, with SSL — verified across all tested URLs.
- Submitted formal migration-recovery signals to Google Search Console.
- Submitted sitemaps and verified all three Search Console properties.
- Diagnosed a site-wide canonical-tag suppression — fix shipped; duplicate pages already falling 12 → 5.
- Completed full technical audits of both sites: performance, indexing, backlinks, keywords, SERPs.
- Found a critical conversion failure — the main product page 404s, linked from 11 pages incl. the nav.
- Produced prioritised 90-day action plans for both sites.
The full report
⬇ Download .mdAnonymised example — “Site 1” and “Site 2” are real properties with their names and domains removed; all figures are real.
Two-Site SEO Audit & Recovery — Site 1 (product) + Site 2 (corporate)
Scope: a B2B SaaS product site (Site 1) and its parent corporate/agency site (Site 2) · Data sources: Google Search Console (12 months, both properties), GA4, Squirrel Scan crawl (both sites), PageSpeed Insights (mobile + desktop), live SERPs, robots/sitemap, manual page audits.
New to SEO? Don’t worry — every action below is something you can do yourself or hand to a developer. If you get stuck on any of it, just ask your AI assistant to walk you through it step by step.
SEO Health Score
| Site | Score | Severity |
|---|---|---|
| Site 1 — product | 53 / 100 | High |
| Site 2 — corporate | 42 / 100 | High |
Site 1 is held back most by Technical SEO (rich schema stranded behind noindex tags) and Programmatic SEO (no comparison/alternatives pages for a category whose head SERPs are comparison-driven). Site 2 is held back most by Schema Markup (zero structured data anywhere on the site) and On-Page SEO (one generic meta description shared across every page). Technical, Performance and Schema are read straight off the tools (crawler, PageSpeed, schema validation), so their re-run deltas are reliable.
| Category | Site 1 | Site 2 | Weight |
|---|---|---|---|
| Content Coverage | 56 | 50 | 22% |
| Technical SEO | 41 | 42 | 20% |
| On-Page SEO | 60 | 44 | 18% |
| Performance | 62 | 76 | 12% |
| Schema Markup | 51 | 0 | 10% |
| AI Visibility | 42 | 38 | 10% |
| Programmatic SEO | 40 | 40 | 8% |
Leadership Summary
We have moved from an initial diagnostic scan — which revealed an active and worsening SEO problem — through emergency fixes, to a complete technical audit of both sites with prioritised action plans for the next 90 days.
The most urgent issue, a broken domain migration that was actively destroying three years of accumulated search authority on the legacy domain, has been fixed. Recovery signals have been submitted to Google. Both sites have been audited in depth: performance, indexing, backlinks, keyword positioning, security, and SERP landscape. That audit has produced a clear picture of what to fix now, what to address over the next month, and what is better handled as part of a future rebuild.
Key outcomes to date
- Identified and confirmed the redirect as the single most damaging active issue across the entire web presence.
- Fixed the redirect: now 301, path-preserving, with SSL — verified across all tested URLs.
- Submitted formal migration recovery signals to Google Search Console.
- Submitted sitemaps and verified all three Search Console properties.
- Diagnosed a site-wide canonical-tag suppression — cause identified, fix shipped on the product site (Google now shows duplicate-canonical pages falling from 12 to 5).
- Completed full technical SEO audits of both sites, including backlink analysis, keyword research, and the SERP landscape for both.
- Identified a critical conversion failure: the main product page returns a 404 and is linked from 11 pages, including the main navigation.
- Produced prioritised 90-day action plans for both sites.
Core Web Vitals — before & after
Two emergency performance fixes, with measured before/after results. These are the headline wins of the recovery so far.
Site 1 (product) — layout stability
The site was failing Cumulative Layout Shift (CLS) — how much the page jumps around as it loads — by a wide margin on both mobile and desktop. Root causes: the hero video had no size reservation (so the page lurched down when it loaded), the customer-logo carousel had no defined dimensions, and key web fonts were loading late.
| Metric | Before | After | Change |
|---|---|---|---|
| Desktop CLS | 0.497 🔴 | 0.037 ✅ | −92% |
| Mobile CLS | 0.183 🔴 | 0.016 ✅ | −91% |
| Mobile interactivity (TBT) | 320 ms 🔴 | 170 ms ✅ | −47% |
Now passing all four Core Web Vitals on desktop, and three of four on mobile. The remaining mobile issue — page loading speed (LCP) — is caused by a 2.7 MB video loading unconditionally on page load. That’s a targeted fix we can make in the CMS editor, and it’s listed as a Month-1 action.
Site 2 (corporate) — load speed
The site was failing on how quickly the main content appeared (Largest Contentful Paint) because the hero image was set to load lazily — meaning the browser delayed downloading it until after it had already laid out the page.
| Metric | Before | After | Change |
|---|---|---|---|
| Mobile LCP | 9.5 s 🔴 | 4.4 s ✅ | −54% |
| Mobile CLS | 0.497 🔴 | 0.000 ✅ | −100% |
Both metrics now pass Google’s thresholds. Current PageSpeed scores: mobile 76, desktop 92.
Executive Summary
The story across these two sites is not “everything is broken” — it’s that a good migration shipped without SEO hygiene and quietly bled years of hard-earned authority, and that the worst of it has now been stopped. The redirect that was stranding link equity is fixed and path-preserving; on the product site, Google’s own indexing report confirms the canonical fix is working (duplicate-canonical pages down from 12 to 5, 404s down to 1). The foundation is stabilising.
What’s working: performance was genuinely fixed on both sites and is holding (Site 2 passes Core Web Vitals; both desktop scores are 90+), the brand terms perform, and the underlying content and authority are real. What sets the priority order now is different per site. Site 1 is no longer a triage job — it’s a growth job being spent on the wrong page type: its most-impressed page ranks for a comparison-style query with a blog post, in a SERP that only rewards product and comparison pages. Site 2 still carries live, revenue-impacting bugs that are cheap to fix — a 404 on the main product link (in the navigation), an unresolved HTTP/HTTPS split, zero structured data, and one generic meta description shared across every page. Expect 4–8 weeks for Google to re-evaluate after each batch of fixes ships; the bigger content and rebuild work is a 1–2 quarter investment.
90-Day Execution Plan
Site 1 (product)
| Window | Actions |
|---|---|
| Week 1 | Add missing meta descriptions + og:image to core pages; add Product/Offer schema to pricing; review the 51 pages carrying schema but blocked from indexing. |
| Month 1 | Ship the deferred mobile-performance fixes (defer render-blocking CSS, font-display swap, cache/replace the 2.7 MB video) to get LCP under 2.5 s; build the first “vs competitor” comparison page; add llms.txt + FAQ structure. |
| This quarter | Build the comparison/alternatives cluster + integrations cluster; re-point internal links to commercial pages; trial a keyword tool (Ahrefs / Surfer SEO / Mangools). |
| Deprioritized | More blog posts chasing the wrong term; “cost tracking” positioning; backlink outreach at scale. |
Site 2 (corporate)
| Window | Actions |
|---|---|
| Week 1 | Fix the product-page 404 (linked from nav + 11 pages); enable Force HTTPS; fix the typo URL; set up GA4 conversion tracking (still zero). |
| Month 1 | Add Organisation schema (currently none anywhere); unique meta descriptions on the top 15 pages; add H1s to 6 pages + de-duplicate titles; serve the oversized product screenshot responsively. |
| This quarter | Decide the rebuild direction (these audits are the baseline); create an English project-status page; trial a keyword tool. |
| Deprioritized | Platform-level hreflang/schema/performance work, and rewriting all 73 meta descriptions — save for the rebuild. |
Top Revenue Opportunities
| # | Site | Opportunity | Why it’s the top lever |
|---|---|---|---|
| 1 | Site 2 | Fix the product 404 | 11 pages + the nav link point to a dead end — a conversion failure happening today |
| 2 | Site 1 | ”vs competitor” comparison page | The category’s head SERP is comparison pages, and the product is entirely absent |
| 3 | Site 2 | Force HTTPS + GA4 conversion tracking | The HTTP homepage is the top-traffic page (authority split); zero conversion data today |
| 4 | Site 1 | Mobile performance (LCP) | Suppresses mobile rankings and conversions; regressed since the last check |
Key Findings
Performance. Site 1: PSI mobile 62 / desktop 90; mobile LCP 9.8 s is the headline drag and has slightly regressed because the deferred fixes (render-blocking CSS, font-display, the uncached hero video) still haven’t shipped. Site 2: mobile 76 / desktop 92, LCP 4.4 s, CLS 0.021 — the hero-image fix is holding and it passes Core Web Vitals.
Indexing. Site 1 is recovering — duplicate-canonical pages down from 12 to 5, 404s down to 1 (the canonical fix is measurably working). Site 2 is weaker — only ~27% of known URLs indexed, with 38 duplicate-without-canonical pages (no canonical tags), 29 404s, and crawl drag from 24 redirect chains of 3–4 hops.
Traffic & SERP. Site 1 earns its only organic clicks from its brand term; its most-impressed non-brand page gets impressions but zero clicks because it’s a blog post in a comparison/Marketplace SERP — a page-type mismatch. Site 2 is brand-led; its competitive non-brand terms sit in SERPs dominated by the platform vendor itself and larger competitors.
On-page. Site 1 has a healthy schema foundation but is missing meta descriptions, Product/Offer schema, and an og:image. Site 2 has zero structured data, one 42-character meta description shared across all pages, 24 duplicate titles, and 6 pages with no H1.
Security & Platform Risk
(These need independent security-team validation; flagged because they affect trust, not because they’re confirmed exploits.) Both sites are missing CSP/HSTS headers at the server level (add HSTS once Force HTTPS is on for Site 2). Site 2 has a public contact form without CAPTCHA. None of this is blocking SEO; hand it to whoever owns hosting.
What NOT to Do
- Don’t write more blog posts to chase a comparison-style query — the SERP rewards product/comparison pages; the format, not the effort, is the blocker.
- Don’t invest in deep platform-level fixes (framework performance, hreflang plugins, a full schema suite) on a site that’s heading for a rebuild — that effort gets discarded.
- Don’t buy backlinks — recover and consolidate the equity you already own first.
Prioritized Recommendations
(Each appears once. No “owner” field — this report doesn’t assume your team structure; assign internally.)
#1 — Fix the broken product navigation link (Site 2) · Impact ★★★★★ · Effort 15min Issue: the main product URL 404s while being linked from the navigation and 11 pages. Actions: repoint links to the working URL; add a 301 for the old one. Verification: the old URL returns a 301 to the working page.
#2 — Enable Force HTTPS (Site 2) · Impact ★★★★ · Effort 5min Issue: the HTTP homepage is the highest-traffic page in Search Console — more than the HTTPS version — so Google is splitting authority. Actions: force HTTPS at the host/CMS; add HSTS. Verification: HTTP 301s to HTTPS; impressions consolidate.
#3 — Set up GA4 conversion tracking (Site 2) · Impact ★★★★★ · Effort half-day Issue: zero key events in 12 months — return on SEO is unknowable. Actions: mark demo bookings, contact-form submits, and outbound marketplace clicks as key events. Verification: key events appear within days.
#4 — Cut Site 1 mobile LCP below 2.5 s · Impact ★★★★ · Effort half-day Issue: mobile LCP 9.8 s (regressed). Actions: defer render-blocking CSS, add font-display: swap, cache or replace the 2.7 MB hero video. Verification: PSI mobile LCP < 2.5 s.
#5 — Build a “vs competitor” comparison page (Site 1) · Impact ★★★★★ · Effort 1 week Issue: absent from the comparison SERP that decides the category. Actions: an honest comparison page with Product + ItemList schema; internal links from the features page. Verification: indexed + impressions for “[competitor] alternative”.
#6 — Add structured data (both sites) · Impact ★★★ · Effort 30min–1h Issue: Site 2 has no schema at all; Site 1’s pricing page lacks Product/Offer. Actions: Organisation JSON-LD on Site 2; Product/Offer on Site 1 pricing. Verification: Rich Results Test passes.
#7 — Unique meta descriptions + on-page hygiene (both sites) · Impact ★★★ · Effort 2h Issue: Site 2 shares one 42-char description across all pages, has 24 duplicate titles and 6 missing H1s; Site 1 is missing descriptions on core pages. Actions: unique 120–155-char descriptions on the top pages; add the missing H1s; differentiate titles. Verification: view-source; CTR over 4–8 weeks.
Verification & Tracking
SEO compounds over time — this is iteration 2, not a one-off. Do everything above, then re-run this audit every ~2 weeks. Ranking and traffic gains usually take 4–8 weeks for Google to re-evaluate — but re-running every two weeks is worth it anyway: each cycle ships the next batch of fixes and catches regressions before they fester (this cycle caught a mobile-LCP regression that had crept back in). Don’t put drift checks on an email-alert cron — triage them yourself.
| Date | Site 1 | Site 2 |
|---|---|---|
| Iteration 1 (baseline) | ~55 (High) | ~42 (High) |
| Iteration 2 | 53 (High) | 42 (High) |
The numbers look flat, and that’s an honest signal: on Site 1 a mobile-performance regression offset the indexing gains, and on Site 2 most of the cheap Week-1 fixes simply haven’t shipped yet. The score’s job is to keep that visible cycle over cycle — it goes up when the work ships.
From Audit to Action
This audit also generates ACTION-RUNBOOK.md locally beside the report. That client-specific document maps every recommendation above to what the AI can implement, draft, guide, research, or needs a human to decide. It manages approved batches, verifies production changes, measures outcomes at 2, 4, and 8 weeks, and preserves history across later audit cycles.
Follow ACTION-RUNBOOK.md and show me the Action Capability Map and recommended first batch. Research anything that may have changed. Do not change anything until I approve a batch.
Appendix: Data Sources
GSC 12-month performance + indexing (both properties, via logged-in session); GA4 (channels, events, conversion-tracking check); Squirrel Scan full crawls (both sites); PageSpeed Insights mobile + desktop (homepages); live SERP captures for the priority commercial keywords on each site; robots.txt + sitemaps; manual page audits.
Run this on your own site
Download the runbook, open it in Cursor or Claude Code, and an AI agent produces a report like this from your real data — on your machine.