This SEO + GEO Audit scores the site on three composite indices — Technical + Core Web Vitals, GEO + AEO readiness, and an Overall Search-Readiness score — built from specialist agents covering technical health, schema, sitemap, performance, AI-crawler access, llms.txt, platform readiness, brand authority, and on-page quality. Every issue is ranked by fix ROI; ready-to-paste fix artifacts and a 90-day roadmap follow.
How to Read This Report
Ordered by what to do, in 3 tiers:
- ACT (top) — what to fix, in order: Top-3 Priority · Quick Wins · Findings by severity · 90-Day Roadmap · 🤖 Apply with Claude Code (copy-paste prompt) + the ready-to-paste robots.txt / llms.txt artifacts in the Autofix Bundle.
- INVESTIGATE (middle) — drill down: Score Breakdown · per-category Deep Dives (incl. on-page audit + performance levers) · the 7 charts (CWV, GEO radar, GSC, AI-crawler table, platform, striking-distance) · per-skill cards.
- TRUST (bottom) — confidence the run was sound: Verification (10 gates) · Methodology timeline · Appendix (formulas, tools, tier coverage, capability checklist).
To apply fixes: hand Claude Code the report MD plus the fixes/ folder, then paste the prompt in the "🤖 Apply These Fixes with Claude Code" section below.
Glossary — what the terms mean
CWV (Core Web Vitals) — Google's UX metrics: LCP (load), INP (responsiveness), CLS (visual stability). They feed ranking + the Technical score.
LCP — Largest Contentful Paint — when the largest element renders. Good <2.5s, Poor ≥4.0s. Driven mostly by server response time (TTFB).
INP / CLS — INP = Interaction-to-Next-Paint (target <200ms, replaced FID). CLS = layout shift (target <0.1).
GEO / AEO — Generative / Answer Engine Optimization — being citable by AI engines (ChatGPT, Perplexity, Gemini, AI Overviews), not just ranking in blue links.
llms.txt — An emerging 2026 manifest that tells LLMs which URLs to read. A broken/missing one costs AI-citation coverage.
AI crawler access — Whether bots like GPTBot / ClaudeBot / PerplexityBot are allowed in robots.txt. Blocking them removes you from AI answers.
Schema (structured data) — JSON-LD that labels your content (Article, FAQ, Organization, Person…). Helps both rich results and AI extraction.
Canonical — The <link rel="canonical"> tag declaring the preferred URL for a page — prevents duplicate-content dilution.
Striking distance — Keywords ranking on page 2 (positions 11-20) with real impressions — small wins can push them to page 1.
Crawl budget — How many pages a search engine will fetch per visit. Wasted on junk URLs = important pages crawled less often.
E-E-A-T — Experience, Expertise, Authoritativeness, Trustworthiness — Google's content-quality framework.
Quick Wins — Shippable This Week
11.0h total8 fixes shippable this week (effort = S). Estimated overall score lift +5-15 points.
- ☐ H3Homepage missing meta description 1h Better homepage SERP snippet + CTR
- ☐ M3Missing Content-Security-Policy header 2h Closes header gap
- ☐ M612 indexable URLs missing from sitemap + stale page-sitemap.xml 2h Faster, complete indexation
- ☐ L5Newsletter email input missing autocomplete=email 1h WCAG 2.2 form usability
- ☐ M4Speakable cssSelector is HTML-entity-encoded (invalid) 1h Valid speakable for voice/AI
- ☐ H4Logo (likely LCP) is lazy-loaded above the fold 2h Faster LCP on every page load
- ☐ L4OG image is 1024x1024 1h Cleaner social preview
- ☐ L2No llms-full.txt 1h Deeper AI ingestion
Executive Summary
82/100Overall Score: 82/100 (Good)
Website audit found 25 issues across 14 weighted categories. Technical fundamentals score 86/100 (Good), while AI search readiness scores 83/100 (Good).
Issue Distribution
Priority breakdown by severity — 25 findings total
The 3 Biggest Problems
- No top_3_priorities populated in synthesis.
Audit Details:
- URL: https://nextgrowth.ai/
- Business Type: Publisher (confidence: explicit)
- Market: Auto-detected
- Pages Analyzed: 8
- Sampled Deep: 8 business-type-prioritized pages
Score Breakdown
Overall Composite
| Category | Score | Weight | Weighted | Rating |
|---|---|---|---|---|
| Brand | 45/100 | 13% | 5.8 | Poor |
| Geo | 95/100 | 25% | 23.8 | Excellent |
| Platform | 72/100 | 6% | 4.3 | Fair |
| Schema | 84/100 | 13% | 10.9 | Good |
| Technical | 92/100 | 18% | 16.6 | Excellent |
| Image | 75/100 | 6% | 4.5 | Good |
| Performance | 84/100 | 13% | 10.9 | Good |
| Sitemap | 78/100 | 6% | 4.7 | Good |
| Accessibility* | 81/100 | — | — | Good |
| Compliance* | 51/100 | — | — | Poor |
| Audit* | 88/100 | — | — | Good |
| Google-Api* | 72/100 | — | — | Fair |
| Page-Deep-Dive* | 88/100 | — | — | Good |
| Visual* | 71/100 | — | — | Fair |
| OVERALL | 100% | 81.5 → 82/100 | Good |
* Informational categories with 0% weight in overall formula — surfaced from agent findings for context but not double-counted toward overall score.
Three Composite Scores
| Composite | Score | Rating | Formula |
|---|---|---|---|
| Technical + Core Web Vitals | 86/100 | Good | Technical*0.45 + Performance*0.35 + Sitemap*0.20... |
| GEO + AEO Readiness | 83/100 | Good | Geo*0.45 + Schema*0.30 + Platform*0.12 + Brand*0.12... |
| Overall Search-Readiness | 82/100 | Good | Technical*0.18 + Schema*0.13 + Sitemap*0.06 + Performance*0.13 + Geo*0.25 + Plat... |
Score Interpretation
- 90-100: Excellent
- 75-89: Good
- 60-74: Fair
- 40-59: Poor
- 0-39: Critical
How this audit was conducted
Audit timeline
Audit ran in 14m 22s across 11 phases. 14 category scores computed.
Total: 14m 22s
Specialist tools used (click to inspect)
Specialist agents ran in parallel during Phase 4. Each examined a different dimension of your site. Click any agent to see its sub-scores, cost, and output file.
geo-accessibility 81/100 —
WCAG 2.2 AA static audit of nextgrowth.ai (Kadence/LiteSpeed WordPress). 8 of 10 criteria pass cleanly. Strengths: valid lang declaration, correct landmark ARIA roles, clean heading hierarchy, present skip-to-content link, labeled email input. Weakest: color contrast (link color #9b67e4 = 3.85:1 and muted #718096 = 4.02:1 both fall short of 4.5:1 body threshold).
Focus-visible and keyboard nav are…
geo-brand-mentions 45/100 —
Off-site brand footprint WEAK. Firecrawl brand search surfaced mostly own properties + a Facebook page (NextGrowth.AI, HCMC) + Gumroad (SEVOsmith) + 1 VN Facebook group. No Reddit/YouTube/Wikipedia/HN/press. Branded Google search IS recognized (pos 3.6), so the entity exists but lacks third-party corroboration.
geo-compliance 51/100 —
GDPR P0: Google AdSense (ca-pub-5107575593357424) + Google Tag Manager (GT-P85WF39B) load unconditionally on the homepage with NO cookie consent banner detected (no CookieYes/OneTrust/Cookiebot/Termly/Iubenda/Complianz/Klaro library, no consent text, no gtag consent-mode). AdSense sets ad-personalization cookies before any consent = active EU fine risk.
Privacy policy exists and is real (/privacy-…
geo-crawlers 100/100 —
nextgrowth.ai has a near-ideal AI crawler configuration. robots.txt explicitly allows all five Tier 1 AI-search crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot) plus Tier 2 (Google-Extended, Applebot-Extended, Amazonbot, Meta-ExternalAgent). The wildcard block only disallows /wp-admin/, so unlisted bots (GoogleOther, FacebookBot, anthropic-ai) inherit full access.
Training-…
geo-llmstxt 90/100 —
llms.txt present (HTTP 200, 5,727 bytes), well-structured: author entity, core topics, content pillars, annotated guide links. Above-average GEO hygiene. Optional: add llms-full.txt.
geo-platform-optimizer 72/100 —
Platform readiness strong on technical/answerability (AI crawlers allowed 100/100 per geo-crawlers, BlogPosting+FAQPage+Speakable, answer-first, llms.txt) but limited on visibility (most pages page-2/3; weak off-site authority). ChatGPT/Claude/Perplexity/Gemini crawlers all allowed.
Bing/Copilot indexation unverified.
geo-schema 84/100 —
NextGrowth.ai has a strong, server-rendered JSON-LD foundation across homepage, /about, and all sampled blog posts (Organization, WebSite+SearchAction, BreadcrumbList, WebPage, Person, BlogPosting with speakable + dateModified, FAQPage, plus SoftwareApplication and VideoObject on what-is-n8n).
All schema is in the raw HTML (no JS-injection risk for AI crawlers). The score is held back by three rea…
geo-technical 92/100 —
nextgrowth.ai is technically excellent for both classic SEO and GEO. It is a fully server-rendered WordPress site on LiteSpeed (200 OK, ~45.9KB visible text in raw HTML on the homepage, ~87KB on a sampled article, no CSR root div, no __NEXT_DATA__/__NUXT__) so AI crawlers see complete content without executing JS. robots.txt explicitly allows the major AI crawlers (GPTBot, ChatGPT-User, OAI-Search…
seo-audit 88/100 —
nextgrowth.ai (WordPress + Rank Math, publisher blog by The Nguyen) shows strong on-page and technical SEO maturity. Across the sampled set (homepage, /about, /on-page-seo-checklist, /dataforseo-vs-serpapi) every page has exactly one H1, a unique title, a populated meta description, self-referencing canonical, index/follow robots directive, complete OG/Twitter cards, and rich JSON-LD (Organization…
seo-backlinks 0/100 —
N/A — DataForSEO Backlinks API access DENIED (code 40204, subscription inactive on account contact@nextgrowth.ai). Backlink/authority profile not measurable. Off-site authority partially inferred from geo-brand-mentions (weak third-party footprint).
seo-google 72/100 —
GSC 90d: 428 clicks / 928,625 impressions / 0.05% CTR / avg pos 27.5 — huge visibility, page-2/3 ranks. DataForSEO: 117 ranked kw, only 2 top-10, 84 new (momentum+). GA4 (property 502743077, 28d): 332 sessions / 216 users but a STRONG 22.29% conversion rate (74 key_events) — the small organic traffic converts well, so rank gains compound directly into conversions.
Top converters: /what-is-n8n/ (34…
seo-images 75/100 —
Images served as WebP with width+height (CLS-safe) and complete alt text. Gaps: no AVIF tier, no <picture> elements; OG image is 1024x1024 (seo-visual: will crop on social).
seo-page 88/100 —
Deep grep-verified on-page analysis of two pages on nextgrowth.ai (WordPress + Rank Math, author 'The Nguyen'). Both pages are technically strong: self-referencing canonicals, full Open Graph + Twitter cards, rich JSON-LD, single H1 with clean heading hierarchy, 100% image alt coverage with explicit width/height and WebP delivery, and a JS lazy-loader (lazysizes/data-src).
The /dataforseo-review/…
seo-performance 84/100 —
Measured Lighthouse (DataForSEO, desktop simulate): Performance 0.84, SEO 1.0, A11y 0.96, Best-Practices 0.77, Agentic-Browsing 1.0. CWV GOOD: LCP 1.83s, CLS 0.023, TBT 12ms, TTI 2.44s. Main cost is page weight 1.76 MB + 130 unused CSS rules (WP plugin bloat). Note: seo-visual (real render) flagged the logo lazy-loaded above the fold — likely the true LCP element to fix.
seo-sitemap 78/100 —
Two sitemaps (post-sitemap.xml fresh 2026-05-22 w/101 posts; page-sitemap.xml stale 2025-08-27), both 0 errors in GSC. Flat architecture with 5 category hubs. Crawl flagged 12 indexable URLs missing from sitemap.
seo-visual 71/100 —
nextgrowth.ai homepage renders cleanly across all four viewports with no horizontal scroll, readable base font (17.6px body), and a correct viewport meta tag. The H1 is visible above the fold on every breakpoint. Two primary CTAs ('Get SEVOsmith' and 'See The Roadmap') are present in the hero and both render above the fold on desktop and tablet; on mobile the primary CTA clears the fold (bottom at…
Critical — Fix immediately
1 issueThese issues are actively harming your search visibility right now. Fix these first. Issues ranked by impact-to-effort ratio — highest-ROI fixes appear first.
Ads/tracking run before consent
CriticalGoogle AdSense and GTM fire on every page with no consent banner. For EU/UK visitors this is a GDPR/ePrivacy violation (fines + AdSense policy risk). Most urgent item.
Recommended fix
Enable Google Funding Choices (already loaded) or a CMP (Complianz/CookieYes) with Consent Mode v2; gate GTM/AdSense behind consent.
Technical details for your developer
geo-compliance: AdSense ca-pub-5107575593357424 + GTM GT-P85WF39B load unconditionally; 0 consent-library matchesHigh Priority — Fix within 1 week
5 issuesThese issues significantly limit your reach. Plan to fix within the next sprint. Issues ranked by impact-to-effort ratio — highest-ROI fixes appear first.
Homepage has no search-snippet description
HighThe homepage emits only og:description, no <meta name=description>. Google may generate a poor snippet for the site's most important page.
Recommended fix
Paste the existing og:description into Rank Math homepage meta description.
Technical details for your developer
seo-page: grep of homepage head returned 0 description metas (og:description present)The author/brand identity is inconsistent in schema
HighThe site emits two conflicting Person nodes for the same human (#thenguyen vs /author/nextgrowth/) with mismatched LinkedIn URLs and jobTitles, plus a duplicate Organization node with a conflicting sameAs set. This dilutes the entity graph Google/AI use to attribute E-E-A-T.
Recommended fix
Pick one canonical Person @id + one Organization node; use consistent sameAs everywhere (Rank Math Knowledge Graph + author schema).
Technical details for your developer
geo-schema: 2 Person @id with mismatched LinkedIn/jobTitle; duplicate #organization with conflicting sameAsThe main above-the-fold image loads late, slowing perceived speed
HighThe header logo carries loading=lazy with no fetchpriority/preload while sitting above the fold; 13 below-fold thumbnails carry fetchpriority=high. The real LCP element is deprioritized while off-screen images compete for bandwidth.
Recommended fix
Remove lazy from the above-fold logo + add fetchpriority=high (or preload); lazy-load the below-fold thumbnails and drop their fetchpriority.
Technical details for your developer
seo-visual (rendered): logo loading=lazy above fold; 13 below-fold thumbs fetchpriority=high no lazyFew independent sources mention the brand
HighA brand search surfaces mostly the site's own pages + its FB/Gumroad; no Reddit, YouTube, Wikipedia, HN or press. AI engines and Google reward independent corroboration, so this caps E-E-A-T and AI citation trust.
Recommended fix
Digital-PR/community plan: Reddit/HN answers, YouTube, tool roundups, 1-2 niche guest posts; pursue Wikidata.
Technical details for your developer
geo-brand-mentions: off-site = own FB + Gumroad + 1 VN group; absent Reddit/YouTube/Wikipedia/HN/pressBig visibility, few clicks, but visitors convert well
High90 days: 928,625 impressions but 428 clicks because most keywords rank ~pos 27. GA4 shows the small organic traffic converts at 22.3%, so moving high-impression pages to page 1 turns directly into conversions.
Recommended fix
On-page + internal-link refresh for /best-seo-api/, /dataforseo-alternatives/, 'dataforseo alternative', 'can seo be automated'.
Technical details for your developer
GSC 90d 428clk/928,625imp/0.05%/pos27.5; GA4 28d 332 sessions @22.29% convMedium Priority — Fix within 1 month
11 issuesThese improvements compound over time. Schedule into your next month. Issues ranked by impact-to-effort ratio — highest-ROI fixes appear first.
The www version has a broken certificate
MediumApex http->https 301 works, but https://www.nextgrowth.ai/ returns a TLS cert principal mismatch — www visitors/crawlers could see a security warning.
Recommended fix
Add www to cert SAN or 301 www->apex at the edge.
Technical details for your developer
geo-technical: www host TLS cert SAN missing wwwOne security header missing
MediumAll security headers present except CSP. CSP reduces XSS/injection risk and is a minor trust signal.
Recommended fix
Add CSP (report-only first, then enforce) via LiteSpeed/.htaccess/Cloudflare.
Technical details for your developer
geo-technical: HSTS/X-Frame-Options/nosniff/Referrer-Policy/Permissions-Policy present; no CSPA voice-search markup selector is malformed
MediumThe SpeakableSpecification cssSelector contains > (HTML-entity-encoded) instead of >, making the selector invalid for voice/AI extraction.
Recommended fix
Fix the selector encoding in the schema template (use raw >).
Technical details for your developer
geo-schema: speakable cssSelector uses > encodedSome pages aren't listed for Google
MediumCrawl found 12 indexable URLs absent from the sitemap; page-sitemap.xml last submitted Aug 2025. Slows discovery/recrawl.
Recommended fix
Add missing URLs to sitemap + resubmit page-sitemap.xml in GSC.
Technical details for your developer
crawl indexable_not_in_sitemap=12; GSC page-sitemap.xml 2025-08-27Some link/text colors hard to read
MediumLink color #9b67e4 (3.85:1) fails WCAG 4.5:1; muted #718096 (4.02:1) borderline. Render-dependent but likely affects body/link text.
Recommended fix
Darken link/muted text colors to >=4.5:1.
Technical details for your developer
geo-accessibility: #9b67e4=3.85:1, #718096=4.02:1Images could be smaller with a newer format
MediumImages are WebP with dimensions + alt, but no AVIF and no <picture>. AVIF would cut image bytes ~20-30% and improve LCP.
Recommended fix
Enable AVIF in LiteSpeed/Performance Lab; serve via <picture> with WebP fallback.
Technical details for your developer
seo-images: 0 <picture>; WebP present; no AVIFTechnical hygiene drags quality
MediumLighthouse Best-Practices 0.77 (lowest), likely third-party (AdSense/GTM) + console/deprecation signals.
Recommended fix
Console pass on key templates; fix errors/deprecations; audit third-party tags.
Technical details for your developer
Lighthouse best-practices=0.77Affiliate/commercial links inconsistently tagged
MediumOn comparison/review posts only ~6 of 11-20 external links carry nofollow/sponsored. For commercial/affiliate links this is a Google link-scheme + FTC disclosure gap.
Recommended fix
Apply rel=sponsored nofollow to affiliate/commercial outbound links sitewide.
Technical details for your developer
seo-audit: 6 of ~11-20 externals nofollow/sponsored on comparison postsSome buttons/labels too small to tap on mobile
MediumBlog-card category labels (19px) and the newsletter Subscribe button (23px) fall below the 44px touch-target minimum on mobile.
Recommended fix
Increase tap target padding to >=44px for nav labels + form buttons.
Technical details for your developer
seo-visual (rendered mobile): category labels 19px, subscribe 23pxHomepage downloads more than needed
MediumLighthouse: 1.76 MB total bytes + 130 unused CSS rules (WP plugin bloat). Desktop CWV fine but mobile load + crawl budget suffer.
Recommended fix
Critical-CSS + unused-CSS removal in LiteSpeed; audit plugins adding sitewide CSS.
Technical details for your developer
Lighthouse total-byte-weight=1,760,852; unused-css-rules=130Privacy policy incomplete and hard to find
MediumPolicy at /privacy-policy/ covers GDPR/CCPA but omits data controller, right to delete/access, legal basis, do-not-sell; not linked from homepage footer.
Recommended fix
Expand policy to cover missing rights; add footer link sitewide.
Technical details for your developer
geo-compliance: 7/13 required keywords; 0 privacy hrefs in footerLow Priority — Backlog
8 issuesNice-to-have refinements. Add to backlog for when capacity allows. Issues ranked by impact-to-effort ratio — highest-ROI fixes appear first.
No full-content file for AI ingestion
Lowllms.txt is present and good, but no llms-full.txt with full article bodies.
Recommended fix
Generate llms-full.txt from the sitemap.
Technical details for your developer
geo-llmstxt: only llms.txt presentSocial previews may crop
Lowog:image is 1024x1024 PNG; crops/letterboxes on Facebook/LinkedIn/X which prefer 1200x630.
Recommended fix
Add a 1200x630 og:image.
Technical details for your developer
seo-visual: og:image 1024x1024Form field missing an autocomplete hint
LowWCAG 2.2 3.3.7 — trivial fix improving form usability.
Recommended fix
Add autocomplete=email.
Technical details for your developer
geo-accessibility: email input no autocompleteA title may be cut in search results
LowLongest title is 63 chars, slightly over the ~60-char SERP limit.
Recommended fix
Trim the longest titles to <=60 chars.
Technical details for your developer
seo-audit: longest title 63 charsCopilot coverage unknown
LowNo Bing Webmaster connection; Copilot relies on Bing index — not measured.
Recommended fix
Connect Bing Webmaster Tools; verify coverage.
Technical details for your developer
geo-platform-optimizer: no Bing WebmasterSome pages convert very well — push those
LowGA4 shows /coolify-vs-dokploy/ (62%), /best-seo-api/ (39%), /what-is-n8n/ (34%) convert strongly. Rank gains on these compound into conversions.
Recommended fix
Sequence the H1 refresh queue by GA4 conversion rate, not just impressions.
Technical details for your developer
GA4: top key-event pages by rateNav disappears when scrolling
LowHeader is position:absolute (not sticky) on a 7000px+ homepage, so nav scrolls away.
Recommended fix
Make header position:sticky.
Technical details for your developer
seo-visual: header position:absoluteNo encyclopedic entity anchor
LowNeither Organization nor Person links to Wikipedia/Wikidata — strong AI entity anchors, though hard to earn.
Recommended fix
Pursue a Wikidata entry; add to sameAs once it exists.
Technical details for your developer
geo-schema/geo-brand-mentions: no Wikipedia/Wikidata in sameAsAccessibility Deep Dive
81/100Rating: Good · Primary source: /geo-accessibility (81/100)
WCAG 2.2 AA static audit of nextgrowth.ai (Kadence/LiteSpeed WordPress). 8 of 10 criteria pass cleanly. Strengths: valid lang declaration, correct landmark ARIA roles, clean heading hierarchy, present skip-to-content link, labeled email input. Weakest: color contrast (link color #9b67e4 = 3.85:1 and muted #718096 = 4.02:1 both fall short of 4.5:1 body threshold).
Focus-visible and keyboard nav are LOWER CONFIDENCE because no live browser/Lighthouse render was performed (static HTML+CSS grep only). No CAPTCHA (recaptcha config flag = false), no password/auth forms, no drag interactions, no heading skips detected.
Findings from /geo-accessibility (6)
P1 Link color #9b67e4 fails 4.5:1 contrast on white background
Evidence: CSS --global-palette1:#9b67e4 mapped to --global-palette-highlight (link color via 'a{color:var(--global-palette-highlight)}'). Computed ratio #9b67e4 on #ffffff = 3.85:1 (WCAG 1.4.3 requires >=4.5:1 for body-size text).
Impact: Inline body links are hard to read for low-vision users; AA body-text contrast violation = ADA/EAA exposure. Darken highlight palette to ~#7B4FD0 (>=4.5:1) or restrict #9b67e4 to large/bold text only.
P2 Muted text #718096 borderline-fails body contrast (4.02:1)
Evidence: CSS --global-palette6:#718096. Computed ratio on #ffffff = 4.02:1 vs 4.5:1 required (WCAG 1.4.3). Used for muted/meta text in Kadence theme.
Impact: Secondary/meta text (dates, captions) misses AA by a small margin. Shift to ~#5E6B7E (>=4.5:1) for body-size usage.
P3 Accent cyan #00c9e8 unsafe as text on white (2.0:1) if used for body copy
Evidence: CSS --global-palette2:#00c9e8. On white = 2.0:1 (fails even large-text 3:1). On dark #0d172b = 8.96:1 (passes). Risk only if accent is ever applied as text on light backgrounds.
Impact: Conditional risk. Keep #00c9e8 for dark-bg/UI accents only; never as text on light surfaces. Confirm via live render where the token is applied.
P2 Focus-visible indicator coverage not verified in live render
Evidence: CSS has 72 :focus rule occurrences and only 1 :focus-visible; outline:0 appears 7x but all are gated (a:active{outline:0}, .hide-focus-outline *:focus, #primary[tabindex=-1]:focus) so no blanket removal found. Theme (Kadence) applies a:focus highlight color. Cannot confirm a perc
Impact: Likely compliant given gated outline rules, but keyboard focus visibility (WCAG 2.4.7) needs confirmation via real Tab-through. If any control lacks a visible ring, add :focus-visible{outline:2px solid #9b67e4;outline-offset:2px}.
P2 Keyboard navigation / interactive operability not tested (no live browser)
Evidence: Static audit only; no Lighthouse a11y category and no Chrome DevTools keyboard run executed (DataForSEO/Chrome MCP not invoked). aria-expanded present on 2 menu toggles (good signal) but tab order, menu operability, and trap-free navigation unverified.
Impact: WCAG 2.1.1/2.1.2 unverified. Recommend a Lighthouse accessibility run (mcp on_page_lighthouse) or manual keyboard pass on nav + mobile menu toggle to confirm.
P3 Form inputs lack autocomplete attribute (WCAG 2.2 3.3.7 Redundant Entry)
Evidence: Home newsletter input '<input class="formkit-input" name="email_address" type="email" aria-label="Email Address" required ...>' has no autocomplete attribute (0 inputs with autocomplete found across sampled pages).
Impact: Minor WCAG 2.2 AA gap. Add autocomplete="email" to the newsletter field to reduce redundant entry for users with cognitive/motor needs.
Brand Deep Dive
45/100Rating: Poor · Primary source: /geo-brand-mentions (45/100)
Off-site brand footprint WEAK. Firecrawl brand search surfaced mostly own properties + a Facebook page (NextGrowth.AI, HCMC) + Gumroad (SEVOsmith) + 1 VN Facebook group. No Reddit/YouTube/Wikipedia/HN/press. Branded Google search IS recognized (pos 3.6), so the entity exists but lacks third-party corroboration.
Findings from /geo-brand-mentions (3)
P1 Thin third-party brand footprint
Evidence: Firecrawl: off-site = own FB + Gumroad + 1 VN group; no Reddit/YouTube/Wikipedia/HN/press
Impact: Independent mentions drive E-E-A-T + AI citation trust
P2 sameAs lacks Wikipedia/Wikidata
Evidence: schema sameAs has FB/LinkedIn/GitHub/X/YouTube/Reddit, no Wikipedia/Wikidata
Impact: Entity disambiguation for AI
P3 Branded query recognized (positive)
Evidence: GSC 'nextgrowth' pos 3.6
Impact: Entity baseline
Compliance Deep Dive
51/100Rating: Poor · Primary source: /geo-compliance (51/100)
GDPR P0: Google AdSense (ca-pub-5107575593357424) + Google Tag Manager (GT-P85WF39B) load unconditionally on the homepage with NO cookie consent banner detected (no CookieYes/OneTrust/Cookiebot/Termly/Iubenda/Complianz/Klaro library, no consent text, no gtag consent-mode). AdSense sets ad-personalization cookies before any consent = active EU fine risk.
Privacy policy exists and is real (/privacy-policy, GDPR + CCPA mentioned) but is missing explicit data-subject-rights language (data subject, right to delete, right to access, data controller, legal basis). Security headers strong: HSTS with includeSubDomains + preload, X-Frame-Options, nosniff, referrer-policy; LiteSpeed + HTTP/3.
Only 2 third-party trackers (well under bloat threshold). Site is .ai/English -> PDPD (Vietnam) not applicable.
Findings from /geo-compliance (4)
P0 Google AdSense + GTM fire with no cookie consent banner (GDPR consent-before-tracking violation)
Evidence: grep /tmp/ng_home.html: 'pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5107575593357424' and 'googletagmanager.com/gtag/js?id=GT-P85WF39B' both present and loaded unconditionally; 0 matches for any consent library (cookieyes|onetrust|cookiebot|termly|iubend
Impact: Closes the single largest EU/CA exposure. AdSense personalized ads + GTM setting cookies pre-consent is the exact pattern behind CNIL/GDPR enforcement. Adding a Consent Mode v2 banner (Complianz/CookieYes free tier) gates both tags and lifts compliance score ~18pts.
P1 Privacy policy missing explicit data-subject-rights and legal-basis language
Evidence: grep /privacy-policy: PASS for gdpr, ccpa, 'opt out', 'data retention', cookie, third-party, 'personal data', 'personal information'; FAIL for 'data subject', 'right to delete', 'right to access', 'data controller', 'legal basis'. URL: https://nextgrowth.ai/privacy-policy
Impact: Policy already names GDPR/CCPA and has contact@nextgrowth.ai + 'exercise your rights'; adding the explicit Art.15-22 rights list (access, deletion, rectification, portability), named data controller, and Art.6 legal basis brings it to audit-ready and reduces litigation surface.
P2 No cookie classification / categories disclosed (no banner, no category breakdown)
Evidence: grep /privacy-policy: 0 matches for 'essential cookies|analytics cookies|marketing cookies|functional cookies|necessary cookies|performance cookies'; no consent banner present to surface categories. URL: https://nextgrowth.ai/
Impact: A consent banner (CM1 fix) with category toggles (necessary/analytics/marketing) plus a cookie table in the policy satisfies this; resolves alongside CM1.
P3 WordPress plugin/dependency staleness not verifiable (no WP MCP credential)
Evidence: Headers expose WordPress (link: https://nextgrowth.ai/wp-json/) on LiteSpeed; plugin versions could not be enumerated (WP MCP not authenticated in this run). No stale dependency evidence either way. URL headers from https://nextgrowth.ai/
Impact: Run WP MCP get_active_plugins to enumerate versions and flag >90d-stale or CVE plugins; manual review needed, not a confirmed gap.
🔍 Full-crawl per-URL findings (1 deterministic issues — every page scanned, complements the AI score above)
missing header content security policy — 1 URL
| URL | Missing header |
|---|---|
| https://nextgrowth.ai/ | CSP |
Geo Deep Dive
95/100Rating: Excellent · Primary source: /geo-llmstxt (90/100)
llms.txt present (HTTP 200, 5,727 bytes), well-structured: author entity, core topics, content pillars, annotated guide links. Above-average GEO hygiene. Optional: add llms-full.txt.
Findings from /geo-llmstxt (2)
P3 Structured llms.txt present (positive)
Evidence: curl /llms.txt 200, 5727 bytes, Author+Topics+Pillars+links
Impact: Helps AI parse site + author authority
P3 No llms-full.txt
Evidence: only llms.txt present
Impact: Deeper AI ingestion
Platform Deep Dive
72/100Rating: Fair · Primary source: /geo-platform-optimizer (72/100)
Platform readiness strong on technical/answerability (AI crawlers allowed 100/100 per geo-crawlers, BlogPosting+FAQPage+Speakable, answer-first, llms.txt) but limited on visibility (most pages page-2/3; weak off-site authority). ChatGPT/Claude/Perplexity/Gemini crawlers all allowed.
Bing/Copilot indexation unverified.
Findings from /geo-platform-optimizer (3)
P1 GEO-ready content but low rank caps citation
Evidence: Schema FAQ+Speakable + crawler access vs GSC avg pos 27.5
Impact: Page-1 moves unlock AIO/Perplexity citations
P2 Bing/Copilot indexation unverified
Evidence: No Bing Webmaster connection
Impact: Confirm Copilot surface
P3 AI-search infra ready (positive)
Evidence: robots allows GPTBot/ClaudeBot/PerplexityBot/Google-Extended; llms.txt 200
Impact: Eligible across ChatGPT/Claude/Perplexity/Gemini
Schema Deep Dive
84/100Rating: Good · Primary source: /geo-schema (84/100)
NextGrowth.ai has a strong, server-rendered JSON-LD foundation across homepage, /about, and all sampled blog posts (Organization, WebSite+SearchAction, BreadcrumbList, WebPage, Person, BlogPosting with speakable + dateModified, FAQPage, plus SoftwareApplication and VideoObject on what-is-n8n).
All schema is in the raw HTML (no JS-injection risk for AI crawlers). The score is held back by three real defects: (1) Entity fragmentation — the same human (The Nguyen) is described by two conflicting Person nodes with different @id (#thenguyen vs /author/nextgrowth/), mismatched LinkedIn URLs (the-nguyen-devops vs minh-the-nguyen-6b995960), and divergent sameAs/jobTitle, plus a duplicate #organization node re-declared with a conflicting sameAs set; this dilutes the entity graph AI models build.
(2) The speakable cssSelector is HTML-entity-encoded ('.entry-content > p:first-of-type'), producing an invalid CSS child-combinator selector that breaks speakable targeting. (3) sameAs lacks the highest-authority identity anchors (Wikipedia, Wikidata) and the Organization Twitter/X profile is inconsistent across nodes.
FAQPage is present (restricted for rich results on non-authority sites since Aug 2023 but still valid and useful for AI Q&A parsing). No deprecated HowTo schemas found.
Findings from /geo-schema (5)
P1 Duplicate conflicting Person and Organization @id nodes fragment the entity graph
Evidence: https://nextgrowth.ai/ + all posts (grep JSON-LD): Person '#thenguyen' (sameAs LinkedIn the-nguyen-devops, jobTitle 'Senior DevOps Engineer and SEO Automation Specialist', knowsAbout array) coexists with a second Person '@id=https://nextgrowth.ai/author/nextgrowth/' (sameAs Linke
Impact: Same-entity nodes with conflicting @id/sameAs/jobTitle prevent reliable entity resolution; AI models may treat them as two different people/orgs or distrust the identity signal. Consolidate to a single canonical @id per entity.
P2 speakable cssSelector is HTML-entity-encoded, yielding an invalid selector
Evidence: https://nextgrowth.ai/ai-overview-seo-guide/ raw HTML: "cssSelector":[".entry-content > p:first-of-type","h1",".tl-dr"] — the child combinator '>' is emitted as the literal entity '>' inside the JSON-LD string, so the selector cannot match. Present on every BlogPosting samp
Impact: speakable targeting silently fails on the first-paragraph selector; voice/AI-assistant readability markup does not resolve. Output a raw '>' (or use a descendant selector) in the JSON-LD string.
P2 sameAs omits Wikipedia/Wikidata and has inconsistent Twitter/X linkage
Evidence: https://nextgrowth.ai/ JSON-LD: Organization/Person sameAs = LinkedIn, GitHub, Twitter/X, Facebook (4 platforms on #thenguyen); Block 1 Organization drops Twitter and adds Reddit. grep wikipedia|wikidata over homepage HTML = 0 matches.
Impact: Wikipedia/Wikidata are the strongest cross-platform entity-linking signals for GEO; absence limits AI entity-graph confidence. Add Wikidata (create if needed) and unify the Twitter/X + Reddit links across all nodes.
P3 BlogPosting missing wordCount (recommended GEO context property)
Evidence: https://nextgrowth.ai/ai-overview-seo-guide/ BlogPosting #richSnippet has headline, image, datePublished, dateModified, author(@id), publisher(@id), mainEntityOfPage, description, articleSection — but wordCount is MISSING (verified across sampled posts).
Impact: wordCount is a minor recommended property that helps AI models gauge content depth; low-effort add to the existing BlogPosting template.
P3 FAQPage present — valid but ineligible for rich results on this site type
Evidence: https://nextgrowth.ai/ai-overview-seo-guide/#faq, /aeo-vs-geo-vs-seo-explained/#faq, /what-is-n8n/#faq all contain FAQPage. Google restricts FAQ rich results to government/health authorities since Aug 2023.
Impact: No harm and still useful for AI Q&A extraction; keep it. No action required beyond awareness that it will not render as a Google rich result.
🔍 Full-crawl per-URL findings (147 deterministic issues — every page scanned, complements the AI score above)
schema incomplete — 147 URLs
Technical Deep Dive
92/100Rating: Excellent · Primary source: /geo-technical (92/100)
nextgrowth.ai is technically excellent for both classic SEO and GEO. It is a fully server-rendered WordPress site on LiteSpeed (200 OK, ~45.9KB visible text in raw HTML on the homepage, ~87KB on a sampled article, no CSR root div, no __NEXT_DATA__/__NUXT__) so AI crawlers see complete content without executing JS. robots.txt explicitly allows the major AI crawlers (GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extended, etc.) while disallowing low-value scrapers (CCBot, Bytespider, Diffbot, Omgili).
Sitemap index (Rank Math) is valid with accurate recent lastmod (post-sitemap 101 URLs, latest 2026-06-03). Full security header set present (HSTS w/ preload, X-Frame-Options, X-Content-Type-Options nosniff, Referrer-Policy, Permissions-Policy). Meta tags, canonicals, OG/Twitter cards, and rich schema (BlogPosting + FAQPage + Speakable + BreadcrumbList) are all server-rendered.
Two minor items: CSS is delivered via a JS-onload swap pattern (LiteSpeed async, with noscript fallback present) and the www host returns a TLS certificate principal mismatch. No Content-Security-Policy header. CWV severity intentionally NOT scored here (owned by seo-performance); only static risk indicators noted.
Cross-checked by: seo-audit: 88/100seo-page: 88/100
Findings from /geo-technical (9)
P3 Fully server-rendered HTML — AI crawlers see complete content
Evidence: curl https://nextgrowth.ai/ -> 200, content-type text/html, server: LiteSpeed; raw HTML strip-tags = 45,889 chars visible text, 23 <p>, 1 <h1>, 20 <h2>; grep __NEXT_DATA__|__NUXT__ = 0; no <div id=root|app|__next>. Sample article https://nextgrowth.ai/seo-content-optimization-gui
Impact: Positive: GPTBot/ClaudeBot/PerplexityBot (which do not execute JS) can index all primary content. No remediation needed; protect this in any future re-platform.
P3 robots.txt explicitly allows major AI crawlers, blocks low-value scrapers
Evidence: https://nextgrowth.ai/robots.txt (200): Allow / for GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-Web, PerplexityBot, Google-Extended, Applebot-Extended, Amazonbot, Cohere-ai, YouBot, Meta-ExternalAgent; Disallow / for CCBot, Bytespider, Diffbot, Omgili. Sitemap: https:/
Impact: Positive: maximizes AI-search visibility (GEO) while controlling abusive scrapers. Verify CCBot block is intentional (CCBot feeds some training/aggregation; some publishers allow it).
P3 No Content-Security-Policy header
Evidence: Response headers from curl -D - https://nextgrowth.ai/ include HSTS, X-Frame-Options SAMEORIGIN, X-Content-Type-Options nosniff, Referrer-Policy strict-origin-when-cross-origin, Permissions-Policy — but NO content-security-policy header present.
Impact: Minor XSS hardening gap. All other security headers present, so trust-signal impact on SEO is negligible; add a CSP for defense-in-depth.
P2 www.nextgrowth.ai TLS certificate principal mismatch
Evidence: curl https://www.nextgrowth.ai/ -> exit 60 SEC_E_WRONG_PRINCIPAL (cert SAN does not cover www). Apex http://nextgrowth.ai/ correctly 301 -> https://nextgrowth.ai/. Canonical is apex (self-referencing https://nextgrowth.ai/).
Impact: Users/links hitting https://www. get a TLS error instead of a redirect to the canonical apex. Add www to the certificate SAN (or a 301 host redirect with valid cert) to avoid broken entry points and link equity loss.
P3 CSS delivered via JS-onload swap (LiteSpeed async) with noscript fallback
Evidence: grep /tmp/ng_home.html: <link rel=preload as=style onload="this.onload=null;this.rel='stylesheet'" href=.../litespeed/css/...>; rel=stylesheet count = 0 (all async); 4 <noscript> blocks present; 2 inline <style> blocks (critical CSS). 25 scripts: 16 defer, 2 async.
Impact: Static LCP-risk reducer (non-render-blocking CSS, critical CSS inlined). noscript fallback present so styled content is not JS-dependent. No action needed; CWV measurement is seo-performance's scope.
P3 llms.txt present
Evidence: curl https://nextgrowth.ai/llms.txt -> 200.
Impact: Positive GEO signal — provides an AI-oriented site map of key content. Validate contents in geo-llmstxt (out of scope here).
P3 Complete, server-rendered meta + social + canonical set
Evidence: grep /tmp/ng_home.html: <title> 'SEO Automation with n8n — NextGrowth.ai' (~38 chars, slightly under 50-60 ideal); meta description 152 chars; self-ref canonical; robots 'follow,index,max-image-preview:large'; viewport width=device-width,initial-scale=1; html lang=en-US; 13 og:*
Impact: Indexability and rich previews fully controlled. Optional: lengthen homepage <title> toward 50-60 chars to use more SERP real estate.
P3 Valid Rank Math sitemap with accurate recent lastmod
Evidence: https://nextgrowth.ai/sitemap_index.xml (200) valid XML, 2 child sitemaps w/ lastmod; post-sitemap.xml = 101 <url>, 101 <lastmod>, latest 2026-06-03 (today 2026-06-08). Target apex appears as canonical; article URLs present.
Impact: Healthy crawl guidance with trustworthy freshness dates. No action.
Findings from /seo-audit (5)
P3 Longest post title exceeds ~60 char SERP display width
Evidence: https://nextgrowth.ai/on-page-seo-checklist <title>On-Page SEO Checklist 2026: 30 Items That Move Rankings | NG.ai</title> = 63 chars (grep-verified from rawHtml head). Home=39, About=49, dfs-vs-serpapi within range.
Impact: Minor pixel-width truncation risk on the brand suffix in Google SERPs; no ranking effect. Trim suffix or shorten to <=60 chars.
P3 Two images per sampled page carry empty alt=""
Evidence: grep over rawHtml: 2 of 23 (home), 2 of 8 (about), 2 of 44 (on-page post), images match alt="". No images are missing the alt attribute entirely (0 missing across all pages).
Impact: If decorative, empty alt is correct and is a non-issue; if content-bearing (e.g., hero/diagram) it loses image-search + a11y value. Spot-check the 2 per page and add descriptive alt where content-bearing.
P2 External links only partially flagged nofollow/sponsored
Evidence: on-page post: 6 of 20 unique external links carry rel nofollow|sponsored; dfs-vs-serpapi: 6 of 11. Externals include vendor/comparison domains (dataforseo.com, serpapi.com, g2.com, capterra.com) alongside authority citations (developers.google.com, ahrefs.com).
Impact: Comparison/review posts link to commercial vendor pages; uncontrolled dofollow to vendors leaks equity and, if any are affiliate/sponsored, risks Google link-spam guideline non-compliance. Audit vendor links and apply rel="nofollow sponsored" where commercial; keep editorial cita
P3 Homepage uses 20 H2s with zero H3s (flat heading tree)
Evidence: grep home rawHtml: H1=1, H2=20, H3=0. Posts have correct nesting (on-page: H2=12/H3=42; about: H2=8/H3=8).
Impact: Flat H2 list on a long homepage is acceptable for a section-based landing layout; only revisit if any H2 sections grow sub-topics that warrant H3 nesting for outline clarity.
P3 No hreflang annotations present
Evidence: grep across home/about/posts head: hreflang=(none). html lang=en-US, og:locale=en_US.
Impact: Correct for a single-locale English site; documented here as a deliberate non-issue. Only add hreflang if a localized version is launched.
Findings from /seo-page (8)
P1 Homepage has no <meta name="description"> (only og:description present)
Evidence: https://nextgrowth.ai/ — grep of <head>: name=.description count=0; og:description present = 'I automate SEO with n8n and share every workflow, result, and mistake publicly. 30+ articles published...'. Rank Math active (rank-math markers found) but did not emit a standard meta de
Impact: Google may auto-generate a less compelling SERP snippet for the homepage; a hand-written 150-160 char description improves CTR on the brand/primary query. Copy the existing og:description into Rank Math's meta description field.
P3 Homepage @type values not flagged on first pass due to escaped JSON; confirmed 3 JSON-LD blocks present and valid
Evidence: https://nextgrowth.ai/ — application/ld+json blocks=3; @type set after unescape = Organization, WebSite, SearchAction, WebPage, Person, CollectionPage, ImageObject. Schema is present and complete for a homepage; this is a NON-issue confirmation, no action needed.
Impact: No action required — homepage schema coverage (Organization + WebSite/SearchAction sitelinks-searchbox + Person) is already best-practice. Logged for completeness.
P3 Homepage has 20 H2s but 0 H3s — flat section structure
Evidence: https://nextgrowth.ai/ — H1 count=1 ('I'm Automating the Entire SEO Lifecycle with n8n.'), H2 count=20, H3 count=0.
Impact: Twenty sibling H2s with no nesting is acceptable for a landing/portfolio homepage but offers no semantic sub-grouping for assistive tech or AI extraction. Low priority; only refactor if sections grow.
P3 2 of 23 homepage images have empty alt text
Evidence: https://nextgrowth.ai/ — 23 <img> tags, 0 missing alt attribute, 2 with alt="". Empty alt is correct for decorative images; verify these 2 are truly decorative (icons/dividers) and not content images.
Impact: If the 2 empty-alt images are decorative this is correct accessibility practice. Only add descriptive alt if either conveys meaning.
P3 /dataforseo-review/ is a model on-page implementation (confirmation, no fix)
Evidence: https://nextgrowth.ai/dataforseo-review/ — title 'DataForSEO Review 2026: Honest Verdict After 12 Weeks' (54 chars); meta description present (~157 chars); canonical self-referencing; robots 'follow, index, max-image-preview:large'; og:type=article; H1=1, H2=11, H3=37; 4 JSON-LD
Impact: No action needed. Use this post as the on-page template for other reviews/posts on the site.
P3 Post SEO title and H1 differ in phrasing (minor)
Evidence: https://nextgrowth.ai/dataforseo-review/ — <title>='DataForSEO Review 2026: Honest Verdict After 12 Weeks'; H1='DataForSEO Reviews 2026: Is the Pay-As-You-Go API Worth It?'. Both contain the primary entity 'DataForSEO Review(s) 2026'.
Impact: Intentional title/H1 divergence is a valid tactic (title for SERP CTR, H1 for on-page). Singular vs plural 'Review/Reviews' is the only keyword nuance; harmless. No fix required.
P3 2 of 37 post images have empty alt text
Evidence: https://nextgrowth.ai/dataforseo-review/ — 37 <img> tags, 0 missing alt attribute, 2 alt="". All 37 have explicit width+height and WebP source.
Impact: Confirm the 2 empty-alt images are decorative; if any is a chart/screenshot conveying data, add descriptive alt for accessibility and image search.
P3 Native loading="lazy" count is low because a JS lazy-loader is in use (not a defect)
Evidence: Home: lazyload=11, data-src=7 markers; loading="lazy" native=1. Post: lazyload=18, data-src=15; native=1. lazysizes/data-src pattern intentionally strips native lazy attr. Per skill guidance, do NOT flag as 'not lazy-loaded'.
Impact: Lazy loading is functioning via JS. No action. Logged so downstream agents do not double-report a false 'images not lazy-loaded' issue.
🔍 Full-crawl per-URL findings (252 deterministic issues — every page scanned, complements the AI score above)
nofollow external — 80 URLs
h1 title duplicate — 32 URLs
canonical missing — 29 URLs
broken external link — 16 URLs
| URL | Broken URL |
|---|---|
| https://nextgrowth.ai/n8n-monitoring-prometheus-grafana/ | https://github.com/thenguyenvn90/n8n-toolkit/tree/monitoring/single-mode |
| https://nextgrowth.ai/n8n-keyword-research-automation/ | https://github.com/thenguyenvn90/n8n-workflows/tree/main/SEVOsmith_Keyword_Orche |
| https://nextgrowth.ai/n8n-monitoring-tools-and-integrations/ | https://github.com/thenguyenvn90/n8n-toolkit/tree/monitoring/single-mode |
| https://nextgrowth.ai/backlink-seo-best-practices/ | https://backlinko.com/link-building-study |
| https://nextgrowth.ai/content-refresh-best-practices/ | https://blog.hubspot.com/marketing/content-decay |
| https://nextgrowth.ai/best-ai-search-monitoring-tools/ | https://peec.ai/agencies |
| https://nextgrowth.ai/best-perplexity-rank-tracker/ | https://peec.ai/agencies |
| https://nextgrowth.ai/dataforseo-review-monitoring/ | https://hbr.org/2018/02/responding-to-customer-feedback-the-right-way |
| https://nextgrowth.ai/dataforseo-llm-mentions-api/ | https://blog.google/products/search/ai-overviews-search-may-2024/ |
| https://nextgrowth.ai/geo-best-practices-ai-citations/ | https://sparktoro.com/blog/in-2024-we-studied-2-billion-google-searches-heres-wh |
| https://nextgrowth.ai/rank-tracking-best-practices/ | https://support.google.com/webmasters/answer/7576553 |
| https://nextgrowth.ai/technical-seo-checklist/ | https://github.com/GoogleChrome/lighthouse-ci |
| https://nextgrowth.ai/how-to-install-coolify-vps/ | https://hostingdiscussion.com/threads/ditch-the-paas-markup-run-coolify-on-your- |
| https://nextgrowth.ai/coolify-mcp-claude-code/ | https://github.com/StuMason/coolify-mcp |
| https://nextgrowth.ai/best-tools-for-web-scraping/ | https://www.mordorintelligence.com/industry-reports/web-scraping-software-market |
| https://nextgrowth.ai/rank-tracker-ai-overview-tracking/ | https://peec.ai/agencies |
low text html ratio — 13 URLs
og incomplete — 11 URLs
| URL | Missing OG tags |
|---|---|
| https://nextgrowth.ai/author/nextgrowth_claude/ | description |
| https://nextgrowth.ai/author/nextgrowth/ | description |
| https://nextgrowth.ai/author/nextgrowth_claude/page/2/ | description |
| https://nextgrowth.ai/author/nextgrowth_claude/page/3/ | description |
| https://nextgrowth.ai/author/nextgrowth_claude/page/7/ | description |
| https://nextgrowth.ai/author/nextgrowth/page/2/ | description |
| https://nextgrowth.ai/author/nextgrowth/page/3/ | description |
| https://nextgrowth.ai/author/nextgrowth/page/4/ | description |
| https://nextgrowth.ai/author/nextgrowth_claude/page/4/ | description |
| https://nextgrowth.ai/author/nextgrowth_claude/page/5/ | description |
| https://nextgrowth.ai/author/nextgrowth_claude/page/6/ | description |
duplicate title — 10 URLs
| URL | Title | Dupes |
|---|---|---|
| https://nextgrowth.ai/ | SEO Automation with n8n — NextGrowth.ai | 2 pages |
| https://nextgrowth.ai | SEO Automation with n8n — NextGrowth.ai | 2 pages |
| https://nextgrowth.ai/contacts/ | Contact NextGrowth.ai | n8n Automation and SEO Consulting | 2 pages |
| https://nextgrowth.ai/contact/ | Contact NextGrowth.ai | n8n Automation and SEO Consulting | 2 pages |
| https://nextgrowth.ai/category/seo-tools/ | SEO Tools - NextGrowth.ai | 2 pages |
| https://nextgrowth.ai/category/seo-scorecard/ | SEO Tools - NextGrowth.ai | 2 pages |
| https://nextgrowth.ai/self-host-n8n-automation-ubuntu-docker/ | Self-Host n8n on Ubuntu with Docker: Complete Setup 2026 | NG.ai | 2 pages |
| https://nextgrowth.ai/self-host-n8n/ | Self-Host n8n on Ubuntu with Docker: Complete Setup 2026 | NG.ai | 2 pages |
| https://nextgrowth.ai/n8n-monitoring-prometheus-grafana/ | n8n Monitoring with Prometheus and Grafana on Docker 2026 | NG.ai | 2 pages |
| https://nextgrowth.ai/n8n-monitoring-tools-and-integrations/ | n8n Monitoring with Prometheus and Grafana on Docker 2026 | NG.ai | 2 pages |
duplicate meta desc — 10 URLs
| URL | Meta description | Dupes |
|---|---|---|
| https://nextgrowth.ai/ | I automate SEO with n8n and share every workflow, result, and mistake publicly. 30+ articles published. No SaaS. No agency. Just systems. | 2 pages |
| https://nextgrowth.ai | I automate SEO with n8n and share every workflow, result, and mistake publicly. 30+ articles published. No SaaS. No agency. Just systems. | 2 pages |
| https://nextgrowth.ai/contacts/ | Book a free 30-minute strategy session with The Nguyen. Get expert help with n8n automation, SEO pipelines, self-hosted infrastructure, and AI workflows. | 2 pages |
| https://nextgrowth.ai/contact/ | Book a free 30-minute strategy session with The Nguyen. Get expert help with n8n automation, SEO pipelines, self-hosted infrastructure, and AI workflows. | 2 pages |
| https://nextgrowth.ai/category/seo-tools/ | Production-tested SEO tool reviews — rank trackers, SERP APIs, AI-search visibility monitors, and automation platforms. Pricing, honest verdicts, when API-first beats dashboards. | 2 pages |
| https://nextgrowth.ai/category/seo-scorecard/ | Production-tested SEO tool reviews — rank trackers, SERP APIs, AI-search visibility monitors, and automation platforms. Pricing, honest verdicts, when API-first beats dashboards. | 2 pages |
| https://nextgrowth.ai/self-host-n8n-automation-ubuntu-docker/ | Self-host n8n on Ubuntu with Docker: full production setup with PostgreSQL, Redis queue, HTTPS via Caddy and SMTP, ready in 30 minutes for SEO ops 2026. | 2 pages |
| https://nextgrowth.ai/self-host-n8n/ | Self-host n8n on Ubuntu with Docker: full production setup with PostgreSQL, Redis queue, HTTPS via Caddy and SMTP, ready in 30 minutes for SEO ops 2026. | 2 pages |
| https://nextgrowth.ai/n8n-monitoring-prometheus-grafana/ | n8n monitoring with Prometheus and Grafana on Docker: scrape execution metrics, alert on workflow failures and visualize queue depth in production 2026. | 2 pages |
| https://nextgrowth.ai/n8n-monitoring-tools-and-integrations/ | n8n monitoring with Prometheus and Grafana on Docker: scrape execution metrics, alert on workflow failures and visualize queue depth in production 2026. | 2 pages |
links to redirect — 10 URLs
| URL | Redirect target |
|---|---|
| https://nextgrowth.ai/ | https://nextgrowth.ai/category/seo-scorecard/ |
| https://nextgrowth.ai/category/n8n-infrastructure/ | https://nextgrowth.ai/n8n-monitoring-tools-and-integrations/ |
| https://nextgrowth.ai/what-is-n8n/ | https://nextgrowth.ai/n8n-monitoring-tools-and-integrations/ |
| https://nextgrowth.ai/cloudflare-r2-n8n-integration/ | https://nextgrowth.ai/contact/ |
| https://nextgrowth.ai/wordpress-application-passwords-setup-guide/ | https://nextgrowth.ai/self-host-n8n/ |
| https://nextgrowth.ai | https://nextgrowth.ai/category/seo-scorecard/ |
| https://nextgrowth.ai/what-is-n8n-monitoring/ | https://nextgrowth.ai/n8n-monitoring-tools-and-integrations/ |
| https://nextgrowth.ai/scaling-n8n-queue-mode-docker-compose/ | https://nextgrowth.ai/n8n-monitoring-tools-and-integrations/ |
| https://nextgrowth.ai/author/nextgrowth/page/4/ | https://nextgrowth.ai/n8n-monitoring-tools-and-integrations/ |
| https://nextgrowth.ai/blog/page/10/ | https://nextgrowth.ai/n8n-monitoring-tools-and-integrations/ |
meta desc too long — 8 URLs
| URL | Meta description | Length |
|---|---|---|
| https://nextgrowth.ai/category/seo-tools/ | Production-tested SEO tool reviews — rank trackers, SERP APIs, AI-search visibility monitors, and automation platforms. Pricing, honest verdicts, when API-first beats dashboards. | 178c |
| https://nextgrowth.ai/can-seo-be-automated/ | Can SEO be automated? Yes for keyword research, monitoring and reporting. No for editorial. Where the line is in 2026 and 5 workflows that actually replace humans. | 163c |
| https://nextgrowth.ai/best-seo-automation-tools/ | Compare 13 best SEO automation tools 2026: all-in-one suites, AI-agentic platforms, content workflow automation, free alternatives. Pricing + workflow templates inside. | 168c |
| https://nextgrowth.ai/cloudflare-r2-n8n-integration/ | Cloudflare R2 and n8n integration: store workflow attachments, exports and logs in R2 with zero egress fees. Bucket setup, signed URLs and code examples for 2026. | 162c |
| https://nextgrowth.ai/n8n-queue-mode-coolify/ | Production n8n queue mode on Coolify in 45 minutes. Real memory budgets, 7 security flags with attack scenarios, worker concurrency math, and the override compose Coolify defaults | 185c |
| https://nextgrowth.ai/category/seo-scorecard/ | Production-tested SEO tool reviews — rank trackers, SERP APIs, AI-search visibility monitors, and automation platforms. Pricing, honest verdicts, when API-first beats dashboards. | 178c |
| https://nextgrowth.ai/dataforseo-alternatives/ | DataForSEO Alternatives 2026: 7 SERP and SEO APIs benchmarked vs DataForSEO at $0.60 per 1K. Per-call pricing, latency tests, and verdict on which beat it where. | 161c |
| https://nextgrowth.ai/ai-search-visibility-metrics-trigger-mention-citation/ | Trigger, Mention, and Citation are the 3 metrics that measure AI search visibility. Learn what each signals and how to track them across AIO, ChatGPT, Perplexity. | 162c |
one dofollow incoming — 8 URLs
url has underscore — 7 URLs
links to broken page — 6 URLs
| URL | Broken target |
|---|---|
| https://nextgrowth.ai/what-is-n8n-monitoring/ | https://nextgrowth.ai/category/n8n/ |
| https://nextgrowth.ai/local-seo-rank-tracker/ | https://nextgrowth.ai/free-rank-tracker/ |
| https://nextgrowth.ai/local-seo-rank-tracker/ | https://nextgrowth.ai/most-accurate-rank-tracker/ |
| https://nextgrowth.ai/rank-tracker-for-agencies/ | https://nextgrowth.ai/most-accurate-rank-tracker/ |
| https://nextgrowth.ai/rank-tracker-for-agencies/ | https://nextgrowth.ai/rank-tracking-automation-n8n/ |
| https://nextgrowth.ai/rank-tracker-for-agencies/ | https://nextgrowth.ai/white-label-rank-tracking-for-agencies/ |
4xx error — 5 URLs
fetch error — 2 URLs
| URL |
|---|
| https://nextgrowth.ai/SEVOsmith AI content engine-ai-citable-content-engine/ |
| https://nextgrowth.ai/SEVOsmith content engine-ai-citable-content-engine/ |
meta desc too short — 1 URL
| URL | Meta description | Length |
|---|---|---|
| https://nextgrowth.ai/competitor-analysis-automation-n8n/ | Most SEO agencies spend 10-15 hours manually analyzing competitors for each client. | 83c |
title too short — 1 URL
| URL | Title | Width |
|---|---|---|
| https://nextgrowth.ai/blog/ | Blog | NextGrowth.ai | 140px |
h1 multiple — 1 URL
| URL | No. of H1 |
|---|---|
| https://nextgrowth.ai/blog/ | 2 |
low word count — 1 URL
| URL | Words |
|---|---|
| https://nextgrowth.ai/category/uncategorized/ | 214w |
ai bots blocked — 1 URL
| URL |
|---|
| https://nextgrowth.ai/robots.txt |
Audit Deep Dive
88/100Rating: Good · Primary source: /seo-audit (88/100)
nextgrowth.ai (WordPress + Rank Math, publisher blog by The Nguyen) shows strong on-page and technical SEO maturity. Across the sampled set (homepage, /about, /on-page-seo-checklist, /dataforseo-vs-serpapi) every page has exactly one H1, a unique title, a populated meta description, self-referencing canonical, index/follow robots directive, complete OG/Twitter cards, and rich JSON-LD (Organization, WebSite+SearchAction, Person, BreadcrumbList, BlogPosting, FAQPage, Speakable). robots.txt is unusually well-engineered: explicit Allow for major AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, etc.) and Disallow for scrapers (CCBot, Bytespider, Diffbot, Omgili), with sitemap declared.
Internal linking is deep (77 and 42 unique internal targets on the two posts) with zero generic 'click here' anchors. Content depth is excellent (posts 9.5k and effectively long-form; home 2.3k, about 2.4k visible words). Posts carry datePublished + dateModified freshness. Deductions are minor: title-tag length on the longest post (63 chars, slight truncation risk), 2 empty-alt images per page (likely decorative but unverified), no hreflang (single-locale en-US, acceptable), and external links only partially marked nofollow/sponsored (6 of ~11-20 unique externals) which is a low-risk publisher concern.
No P0/P1 issues found.
Findings from /seo-audit (5)
P3 Longest post title exceeds ~60 char SERP display width
Evidence: https://nextgrowth.ai/on-page-seo-checklist <title>On-Page SEO Checklist 2026: 30 Items That Move Rankings | NG.ai</title> = 63 chars (grep-verified from rawHtml head). Home=39, About=49, dfs-vs-serpapi within range.
Impact: Minor pixel-width truncation risk on the brand suffix in Google SERPs; no ranking effect. Trim suffix or shorten to <=60 chars.
P3 Two images per sampled page carry empty alt=""
Evidence: grep over rawHtml: 2 of 23 (home), 2 of 8 (about), 2 of 44 (on-page post), images match alt="". No images are missing the alt attribute entirely (0 missing across all pages).
Impact: If decorative, empty alt is correct and is a non-issue; if content-bearing (e.g., hero/diagram) it loses image-search + a11y value. Spot-check the 2 per page and add descriptive alt where content-bearing.
P2 External links only partially flagged nofollow/sponsored
Evidence: on-page post: 6 of 20 unique external links carry rel nofollow|sponsored; dfs-vs-serpapi: 6 of 11. Externals include vendor/comparison domains (dataforseo.com, serpapi.com, g2.com, capterra.com) alongside authority citations (developers.google.com, ahrefs.com).
Impact: Comparison/review posts link to commercial vendor pages; uncontrolled dofollow to vendors leaks equity and, if any are affiliate/sponsored, risks Google link-spam guideline non-compliance. Audit vendor links and apply rel="nofollow sponsored" where commercial; keep editorial cita
P3 Homepage uses 20 H2s with zero H3s (flat heading tree)
Evidence: grep home rawHtml: H1=1, H2=20, H3=0. Posts have correct nesting (on-page: H2=12/H3=42; about: H2=8/H3=8).
Impact: Flat H2 list on a long homepage is acceptable for a section-based landing layout; only revisit if any H2 sections grow sub-topics that warrant H3 nesting for outline clarity.
P3 No hreflang annotations present
Evidence: grep across home/about/posts head: hreflang=(none). html lang=en-US, og:locale=en_US.
Impact: Correct for a single-locale English site; documented here as a deliberate non-issue. Only add hreflang if a localized version is launched.
Google-Api Deep Dive
72/100Rating: Fair · Primary source: /seo-google (72/100)
GSC 90d: 428 clicks / 928,625 impressions / 0.05% CTR / avg pos 27.5 — huge visibility, page-2/3 ranks. DataForSEO: 117 ranked kw, only 2 top-10, 84 new (momentum+). GA4 (property 502743077, 28d): 332 sessions / 216 users but a STRONG 22.29% conversion rate (74 key_events) — the small organic traffic converts well, so rank gains compound directly into conversions.
Top converters: /what-is-n8n/ (34%), /best-seo-api/ (39%), /coolify-vs-dokploy/ (62%).
Findings from /seo-google (5)
P1 928K impressions, 0.05% CTR, avg pos 27.5
Evidence: GSC 90d totals
Impact: Page-1 moves multiply clicks; traffic already converts at 22%
P1 High-volume striking-distance pages on page 2-3
Evidence: GSC: /best-seo-api/ 78,557 imp @22.6 (and GA4 shows it converts 39%); 'seo api' 4,655 imp @26.6; 'dataforseo alternative' 1,030 imp @11.4
Impact: /best-seo-api/ rank lift = clicks x 39% conversion
P2 High-converting pages deserve rank investment (GA4 cross-signal)
Evidence: GA4: /what-is-n8n/ 34% conv, /best-seo-api/ 39%, /coolify-vs-dokploy/ 62% key-event rate
Impact: Prioritize internal links + refresh to these proven converters
P2 page-sitemap.xml stale in GSC
Evidence: GSC sitemaps: page-sitemap.xml submitted 2025-08-27 vs post 2026-05-22
Impact: Faster recrawl
P3 Branded search healthy (positive)
Evidence: GSC 'nextgrowth' pos 3.6
Impact: Brand entity established
Image Deep Dive
75/100Rating: Good · Primary source: /seo-performance (84/100)
Measured Lighthouse (DataForSEO, desktop simulate): Performance 0.84, SEO 1.0, A11y 0.96, Best-Practices 0.77, Agentic-Browsing 1.0. CWV GOOD: LCP 1.83s, CLS 0.023, TBT 12ms, TTI 2.44s. Main cost is page weight 1.76 MB + 130 unused CSS rules (WP plugin bloat). Note: seo-visual (real render) flagged the logo lazy-loaded above the fold — likely the true LCP element to fix.
Findings from /seo-performance (4)
P2 Heavy homepage payload 1.76 MB + 130 unused CSS
Evidence: Lighthouse total-byte-weight=1,760,852; unused-css-rules=130
Impact: Lighter pages -> faster mobile LCP
P2 LCP element (logo) lazy-loaded above the fold
Evidence: seo-visual: logo has loading=lazy, no fetchpriority/preload
Impact: Excluding LCP img from lazyload cuts LCP
P2 Best-Practices 0.77 (lowest category)
Evidence: Lighthouse best-practices=0.77
Impact: Console/3rd-party cleanup
P3 CWV measured GOOD (positive)
Evidence: Lighthouse LCP 1832ms, CLS 0.023, TBT 12ms
Impact: No desktop CWV remediation; confirm mobile
Page-Deep-Dive Deep Dive
88/100Rating: Good · Primary source: /seo-page (88/100)
Deep grep-verified on-page analysis of two pages on nextgrowth.ai (WordPress + Rank Math, author 'The Nguyen'). Both pages are technically strong: self-referencing canonicals, full Open Graph + Twitter cards, rich JSON-LD, single H1 with clean heading hierarchy, 100% image alt coverage with explicit width/height and WebP delivery, and a JS lazy-loader (lazysizes/data-src).
The /dataforseo-review/ post is exemplary: ~6k words, 5 comparison tables, 161 internal + 20 authoritative external links, BlogPosting+Review+SoftwareApplication+AggregateRating+FAQPage+BreadcrumbList+Speakable schema, robots index/follow with max-image-preview:large, and recent dateModified (2026-05-21).
The main gap is the homepage missing a real <meta name="description"> (only og:description is output) and lacking a visible H3 sub-structure under its 20 H2s. No P0 issues found.
Findings from /seo-page (8)
P1 Homepage has no <meta name="description"> (only og:description present)
Evidence: https://nextgrowth.ai/ — grep of <head>: name=.description count=0; og:description present = 'I automate SEO with n8n and share every workflow, result, and mistake publicly. 30+ articles published...'. Rank Math active (rank-math markers found) but did not emit a standard meta de
Impact: Google may auto-generate a less compelling SERP snippet for the homepage; a hand-written 150-160 char description improves CTR on the brand/primary query. Copy the existing og:description into Rank Math's meta description field.
P3 Homepage @type values not flagged on first pass due to escaped JSON; confirmed 3 JSON-LD blocks present and valid
Evidence: https://nextgrowth.ai/ — application/ld+json blocks=3; @type set after unescape = Organization, WebSite, SearchAction, WebPage, Person, CollectionPage, ImageObject. Schema is present and complete for a homepage; this is a NON-issue confirmation, no action needed.
Impact: No action required — homepage schema coverage (Organization + WebSite/SearchAction sitelinks-searchbox + Person) is already best-practice. Logged for completeness.
P3 Homepage has 20 H2s but 0 H3s — flat section structure
Evidence: https://nextgrowth.ai/ — H1 count=1 ('I'm Automating the Entire SEO Lifecycle with n8n.'), H2 count=20, H3 count=0.
Impact: Twenty sibling H2s with no nesting is acceptable for a landing/portfolio homepage but offers no semantic sub-grouping for assistive tech or AI extraction. Low priority; only refactor if sections grow.
P3 2 of 23 homepage images have empty alt text
Evidence: https://nextgrowth.ai/ — 23 <img> tags, 0 missing alt attribute, 2 with alt="". Empty alt is correct for decorative images; verify these 2 are truly decorative (icons/dividers) and not content images.
Impact: If the 2 empty-alt images are decorative this is correct accessibility practice. Only add descriptive alt if either conveys meaning.
P3 /dataforseo-review/ is a model on-page implementation (confirmation, no fix)
Evidence: https://nextgrowth.ai/dataforseo-review/ — title 'DataForSEO Review 2026: Honest Verdict After 12 Weeks' (54 chars); meta description present (~157 chars); canonical self-referencing; robots 'follow, index, max-image-preview:large'; og:type=article; H1=1, H2=11, H3=37; 4 JSON-LD
Impact: No action needed. Use this post as the on-page template for other reviews/posts on the site.
P3 Post SEO title and H1 differ in phrasing (minor)
Evidence: https://nextgrowth.ai/dataforseo-review/ — <title>='DataForSEO Review 2026: Honest Verdict After 12 Weeks'; H1='DataForSEO Reviews 2026: Is the Pay-As-You-Go API Worth It?'. Both contain the primary entity 'DataForSEO Review(s) 2026'.
Impact: Intentional title/H1 divergence is a valid tactic (title for SERP CTR, H1 for on-page). Singular vs plural 'Review/Reviews' is the only keyword nuance; harmless. No fix required.
P3 2 of 37 post images have empty alt text
Evidence: https://nextgrowth.ai/dataforseo-review/ — 37 <img> tags, 0 missing alt attribute, 2 alt="". All 37 have explicit width+height and WebP source.
Impact: Confirm the 2 empty-alt images are decorative; if any is a chart/screenshot conveying data, add descriptive alt for accessibility and image search.
P3 Native loading="lazy" count is low because a JS lazy-loader is in use (not a defect)
Evidence: Home: lazyload=11, data-src=7 markers; loading="lazy" native=1. Post: lazyload=18, data-src=15; native=1. lazysizes/data-src pattern intentionally strips native lazy attr. Per skill guidance, do NOT flag as 'not lazy-loaded'.
Impact: Lazy loading is functioning via JS. No action. Logged so downstream agents do not double-report a false 'images not lazy-loaded' issue.
Performance Deep Dive
84/100Rating: Good · Primary source: /seo-performance (84/100)
Measured Lighthouse (DataForSEO, desktop simulate): Performance 0.84, SEO 1.0, A11y 0.96, Best-Practices 0.77, Agentic-Browsing 1.0. CWV GOOD: LCP 1.83s, CLS 0.023, TBT 12ms, TTI 2.44s. Main cost is page weight 1.76 MB + 130 unused CSS rules (WP plugin bloat). Note: seo-visual (real render) flagged the logo lazy-loaded above the fold — likely the true LCP element to fix.
Cross-checked by: geo-technical: 92/100seo-google: 72/100
Findings from /seo-performance (4)
P2 Heavy homepage payload 1.76 MB + 130 unused CSS
Evidence: Lighthouse total-byte-weight=1,760,852; unused-css-rules=130
Impact: Lighter pages -> faster mobile LCP
P2 LCP element (logo) lazy-loaded above the fold
Evidence: seo-visual: logo has loading=lazy, no fetchpriority/preload
Impact: Excluding LCP img from lazyload cuts LCP
P2 Best-Practices 0.77 (lowest category)
Evidence: Lighthouse best-practices=0.77
Impact: Console/3rd-party cleanup
P3 CWV measured GOOD (positive)
Evidence: Lighthouse LCP 1832ms, CLS 0.023, TBT 12ms
Impact: No desktop CWV remediation; confirm mobile
Findings from /geo-technical (9)
P3 Fully server-rendered HTML — AI crawlers see complete content
Evidence: curl https://nextgrowth.ai/ -> 200, content-type text/html, server: LiteSpeed; raw HTML strip-tags = 45,889 chars visible text, 23 <p>, 1 <h1>, 20 <h2>; grep __NEXT_DATA__|__NUXT__ = 0; no <div id=root|app|__next>. Sample article https://nextgrowth.ai/seo-content-optimization-gui
Impact: Positive: GPTBot/ClaudeBot/PerplexityBot (which do not execute JS) can index all primary content. No remediation needed; protect this in any future re-platform.
P3 robots.txt explicitly allows major AI crawlers, blocks low-value scrapers
Evidence: https://nextgrowth.ai/robots.txt (200): Allow / for GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-Web, PerplexityBot, Google-Extended, Applebot-Extended, Amazonbot, Cohere-ai, YouBot, Meta-ExternalAgent; Disallow / for CCBot, Bytespider, Diffbot, Omgili. Sitemap: https:/
Impact: Positive: maximizes AI-search visibility (GEO) while controlling abusive scrapers. Verify CCBot block is intentional (CCBot feeds some training/aggregation; some publishers allow it).
P3 No Content-Security-Policy header
Evidence: Response headers from curl -D - https://nextgrowth.ai/ include HSTS, X-Frame-Options SAMEORIGIN, X-Content-Type-Options nosniff, Referrer-Policy strict-origin-when-cross-origin, Permissions-Policy — but NO content-security-policy header present.
Impact: Minor XSS hardening gap. All other security headers present, so trust-signal impact on SEO is negligible; add a CSP for defense-in-depth.
P2 www.nextgrowth.ai TLS certificate principal mismatch
Evidence: curl https://www.nextgrowth.ai/ -> exit 60 SEC_E_WRONG_PRINCIPAL (cert SAN does not cover www). Apex http://nextgrowth.ai/ correctly 301 -> https://nextgrowth.ai/. Canonical is apex (self-referencing https://nextgrowth.ai/).
Impact: Users/links hitting https://www. get a TLS error instead of a redirect to the canonical apex. Add www to the certificate SAN (or a 301 host redirect with valid cert) to avoid broken entry points and link equity loss.
P3 CSS delivered via JS-onload swap (LiteSpeed async) with noscript fallback
Evidence: grep /tmp/ng_home.html: <link rel=preload as=style onload="this.onload=null;this.rel='stylesheet'" href=.../litespeed/css/...>; rel=stylesheet count = 0 (all async); 4 <noscript> blocks present; 2 inline <style> blocks (critical CSS). 25 scripts: 16 defer, 2 async.
Impact: Static LCP-risk reducer (non-render-blocking CSS, critical CSS inlined). noscript fallback present so styled content is not JS-dependent. No action needed; CWV measurement is seo-performance's scope.
P3 llms.txt present
Evidence: curl https://nextgrowth.ai/llms.txt -> 200.
Impact: Positive GEO signal — provides an AI-oriented site map of key content. Validate contents in geo-llmstxt (out of scope here).
P3 Complete, server-rendered meta + social + canonical set
Evidence: grep /tmp/ng_home.html: <title> 'SEO Automation with n8n — NextGrowth.ai' (~38 chars, slightly under 50-60 ideal); meta description 152 chars; self-ref canonical; robots 'follow,index,max-image-preview:large'; viewport width=device-width,initial-scale=1; html lang=en-US; 13 og:*
Impact: Indexability and rich previews fully controlled. Optional: lengthen homepage <title> toward 50-60 chars to use more SERP real estate.
P3 Valid Rank Math sitemap with accurate recent lastmod
Evidence: https://nextgrowth.ai/sitemap_index.xml (200) valid XML, 2 child sitemaps w/ lastmod; post-sitemap.xml = 101 <url>, 101 <lastmod>, latest 2026-06-03 (today 2026-06-08). Target apex appears as canonical; article URLs present.
Impact: Healthy crawl guidance with trustworthy freshness dates. No action.
Findings from /seo-google (5)
P1 928K impressions, 0.05% CTR, avg pos 27.5
Evidence: GSC 90d totals
Impact: Page-1 moves multiply clicks; traffic already converts at 22%
P1 High-volume striking-distance pages on page 2-3
Evidence: GSC: /best-seo-api/ 78,557 imp @22.6 (and GA4 shows it converts 39%); 'seo api' 4,655 imp @26.6; 'dataforseo alternative' 1,030 imp @11.4
Impact: /best-seo-api/ rank lift = clicks x 39% conversion
P2 High-converting pages deserve rank investment (GA4 cross-signal)
Evidence: GA4: /what-is-n8n/ 34% conv, /best-seo-api/ 39%, /coolify-vs-dokploy/ 62% key-event rate
Impact: Prioritize internal links + refresh to these proven converters
P2 page-sitemap.xml stale in GSC
Evidence: GSC sitemaps: page-sitemap.xml submitted 2025-08-27 vs post 2026-05-22
Impact: Faster recrawl
P3 Branded search healthy (positive)
Evidence: GSC 'nextgrowth' pos 3.6
Impact: Brand entity established
🔍 Full-crawl per-URL findings (142 deterministic issues — every page scanned, complements the AI score above)
large html — 137 URLs
broken js css — 2 URLs
| URL |
|---|
| https://nextgrowth.ai/category/seo-tools/page/4/ |
| https://nextgrowth.ai/author/nextgrowth/page/2/ |
slow ttfb — 1 URL
| URL | TTFB |
|---|---|
| https://nextgrowth.ai/category/seo-scorecard/ | 2582ms |
not compressed — 1 URL
| URL |
|---|
| https://nextgrowth.ai/ |
no cache control — 1 URL
| URL |
|---|
| https://nextgrowth.ai/ |
Sitemap Deep Dive
78/100Rating: Good · Primary source: /seo-sitemap (78/100)
Two sitemaps (post-sitemap.xml fresh 2026-05-22 w/101 posts; page-sitemap.xml stale 2025-08-27), both 0 errors in GSC. Flat architecture with 5 category hubs. Crawl flagged 12 indexable URLs missing from sitemap.
Findings from /seo-sitemap (3)
P2 12 indexable URLs not in sitemap
Evidence: Crawl: indexable_not_in_sitemap=12
Impact: Complete discovery
P2 page-sitemap.xml stale (resubmit)
Evidence: GSC last_submitted 2025-08-27
Impact: Faster recrawl
P3 Flat architecture + category hubs (positive)
Evidence: Firecrawl map ~120 URLs; 5 /category/ hubs
Impact: Good clustering base
🔍 Full-crawl per-URL findings (13 deterministic issues — every page scanned, complements the AI score above)
indexable not in sitemap — 12 URLs
http url in sitemap — 1 URL
| URL |
|---|
| https://nextgrowth.ai/sitemap.xml |
Visual Deep Dive
71/100Rating: Fair · Primary source: /seo-visual (71/100)
nextgrowth.ai homepage renders cleanly across all four viewports with no horizontal scroll, readable base font (17.6px body), and a correct viewport meta tag. The H1 is visible above the fold on every breakpoint. Two primary CTAs ('Get SEVOsmith' and 'See The Roadmap') are present in the hero and both render above the fold on desktop and tablet; on mobile the primary CTA clears the fold (bottom at 757px vs 812px viewport) but the secondary CTA is at 770px, leaving very little breathing room.
Critical issues are the logo being lazy-loaded while above the fold (LCP candidate, no fetchpriority=high, no preload), the header using position:absolute rather than sticky so it disappears on scroll, multiple blog-card category labels that are 19px tall (well below the 44px touch target floor), the 'Subscribe' newsletter button at 23px height, the OG image being a 1024x1024 square PNG (not the recommended 1200x630 landscape), and the Google Fonts connection being dns-prefetch only (not preconnect+crossorigin).
No overlapping elements, no horizontal overflow, no text truncation. Confidence is high for all DOM-measurable findings; CLS/LCP measured values require field data (excluded per brief).
Findings from /seo-visual (12)
P1 Logo is lazy-loaded while above the fold — likely LCP candidate
Evidence: DOM: img[alt='NextGrowth.ai logo'] has loading='lazy' and data-lazyloaded='1' attribute set by LiteSpeed Cache; no fetchpriority attribute; no <link rel=preload> for this image in <head>. Image renders at top:18px on desktop (inside 1080px viewport). This suppresses browser's pre
Impact: Delays LCP on every page load. Fix: remove loading='lazy' from the logo img (or set loading='eager') and add fetchpriority='high'. Add <link rel='preload' as='image'> in <head> for the .webp logo URL. In LiteSpeed Cache settings, exclude the logo image from lazy-load.
P2 Header is position:absolute — disappears from view on scroll
Evidence: DOM: header element computed style position='absolute', z-index=100, height=80px. Confirmed visually in desktop screenshot: nav floats over hero but is not sticky. On scroll the nav is lost entirely, making navigation require scrolling back to top.
Impact: Poor UX on long homepage (page is ~7226px tall on desktop). Returning to navigation requires full scroll-up. Fix: change header CSS to position:sticky; top:0 with appropriate z-index and background.
P2 Blog-card category labels are 19px tall — fail 44px touch target minimum on mobile
Evidence: Mobile DOM: 15+ category label links (e.g., 'SEO AUTOMATION', 'SEO TOOLS', 'N8N INFRASTRUCTURE', 'SEO FUNDAMENTALS', 'SETUP GUIDES') measured at w:230px h:19px. Google/WCAG recommends minimum 44x44px for interactive touch targets. These span the full card width but are only 19px
Impact: Increases mobile tap errors, hurts UX for a mobile audience. Fix: add padding-top/padding-bottom to category label anchor elements so rendered height reaches at least 44px, or increase line-height and padding in the card CSS.
P2 Newsletter 'Subscribe' button is 23px tall — below 44px touch target floor
Evidence: Mobile DOM: BUTTON text='Subscribe →' measured w:138px h:23px at top:11596. Tablet DOM: same button w:138px h:23px. On desktop the button is also small relative to the form field. This is distinct from the blog-card labels and likely a different component (email opt-in section).
Impact: Newsletter subscribe friction on mobile. Fix: add min-height:44px and vertical padding to the subscribe button style in the email opt-in widget.
P2 OG image is 1024x1024 square PNG — not the recommended 1200x630 landscape
Evidence: Head meta: og:image = 'https://nextgrowth.ai/wp-content/uploads/2026/03/Facebook-NextGrowth-1024x1024.png'; og:image:width=1024; og:image:height=1024. Facebook, LinkedIn, and Slack crop square OG images to landscape — the 1:1 square will be letter-boxed or cropped awkwardly. Twit
Impact: Reduced click-through when shared on social media. Fix: create a 1200x630px branded OG image and update og:image meta tag. Also add twitter:card='summary_large_image' if not present.
P3 Google Fonts uses dns-prefetch only — should be preconnect with crossorigin
Evidence: DOM: <link rel='dns-prefetch' href='//fonts.googleapis.com'>. No preconnect link found for fonts.googleapis.com or fonts.gstatic.com (only dns-prefetch). Preconnect performs DNS+TCP+TLS handshake early; dns-prefetch only resolves DNS. Google's own recommendation for self-hosted o
Impact: Minor latency increase for font file fetch. Fix: replace dns-prefetch with two preconnect tags: one for fonts.googleapis.com and one for fonts.gstatic.com with crossorigin attribute. This is a theme-level or LiteSpeed Cache setting.
P1 No LCP image preload — multiple below-fold blog thumbnails carry fetchpriority=high incorrectly
Evidence: DOM: Images at index 7-20 (all below fold, top > 4000px) have fetchpriority='high' with no lazy loading. Only 1 of 24 images has loading='lazy' (the logo). The LCP image (logo or hero text) has no preload hint. WordPress theme/plugin is incorrectly marking off-screen thumbnails a
Impact: Misaligned fetch priorities force browser to compete for bandwidth loading below-fold thumbnails during initial page load. This delays LCP. Fix: (1) add fetchpriority='high' to the logo / true LCP image only; (2) add loading='lazy' to all blog card thumbnail images; (3) audit the
P3 Mobile primary CTA barely clears the fold — secondary CTA partially clipped
Evidence: Mobile viewport 375x812: 'Get SEVOsmith' CTA bottom = 757px (55px above fold edge, passes). 'See The Roadmap' CTA top = 770px, which means it starts at 770px and likely extends to ~815px — partially off screen. H1 height on mobile is 212px (top:214), with body copy below that, pu
Impact: On small phones (SE, older Android) both CTAs may be fully below fold. Consider tightening hero section top padding or reducing body copy length above the CTA on mobile via CSS.
Visualizations
Site-infrastructure charts. Keyword-gap, competitor, and internal-link visualizations live in /blog-audit-pipeline (content-portfolio audit) after the v0.5.15 split. Where data is unavailable for this tier/source, a disclosure callout is shown instead of placeholder numbers.
Chart 1: Core Web Vitals
Targets: LCP <2.5s · INP <200ms · CLS <0.1. LCP (load speed) is driven mostly by server response time (TTFB) — see Performance deep dive.
📊 Core Web Vitals — Data not available in this audit.
No Chrome DevTools MCP or CrUX field-data connected. Real LCP/INP/CLS requires Tier-1 MCP setup.
Chart 2: GEO Readiness Radar
How citable the site is to AI engines. Each axis 0-100; further from center is better. Weak axes (llms.txt, brand authority) are the biggest AI-visibility gaps.
Fig 2: GEO readiness across 7 dimensions
Chart 3: Backlink Authority Distribution
DR/DA 0-20 = low-authority links; 61-100 = high-authority. You want more referring domains, weighted toward the right.
📊 Backlink Authority Distribution
Direct backlink metrics could not be measured this run — the histogram needs referring-domain data that is unavailable.
N/A — DataForSEO Backlinks API access DENIED (code 40204, subscription inactive on account contact@nextgrowth.ai). Backlink/authority profile not measurable. Off-site authority partially inferred from geo-brand-mentions (weak third-party footprint).
Chart 4 — What your search + behavior data says
Auto-derived from GSC (search) + GA4 (behavior) — deterministic, computed straight from the measured numbers (no estimates).
- 🔴 Organic sessions -0.3% vs the prior period — behavior trend is down; prioritise refreshes.
- ⚠️ Organic under-converts — 22.3% vs Referral 45.5%. Check organic landing-page intent match + CTAs.
- ⭐ Top converting entry page:
/what-is-n8n— 19 key events from 36 sessions.
Chart 4b: GA4 Organic — Traffic, Conversions & Audience (2026-05-09 → 2026-06-06)
All-channel session mix
Organic source / medium
Organic sessions over time
Top organic pages by conversions
Conversions by channel (is organic converting?)
Top organic landing pages (entry)
| Landing page | Sessions | Key events | Engaged |
|---|---|---|---|
/what-is-n8n | 36 | 19 | 25.0% |
/dataforseo-review | 24 | 5 | 75.0% |
/dataforseo-alternatives | 21 | 0 | 71.4% |
/n8n-monitoring-prometheus-grafana | 21 | 0 | 38.1% |
/dataforseo-serp-api | 20 | 0 | 45.0% |
/best-seo-api | 16 | 12 | 68.8% |
/dataforseo-api-guide | 10 | 0 | 70.0% |
/n8n-workflow-error-alerts-guide | 10 | 0 | 60.0% |
/wordpress-application-passwords-setup-guide | 10 | 0 | 30.0% |
Top organic content (by pageviews)
| Page | Views | Sessions | Engaged | Avg time |
|---|---|---|---|---|
/what-is-n8n/ | 39 | 41 | 26.8% | 1m 23s |
/dataforseo-alternatives/ | 28 | 24 | 66.7% | 2m 26s |
/best-seo-api/ | 25 | 23 | 69.6% | 2m 18s |
/dataforseo-review/ | 25 | 28 | 67.9% | 2m 35s |
/dataforseo-serp-api/ | 22 | 22 | 45.5% | 3m 35s |
/n8n-monitoring-prometheus-grafana/ | 21 | 28 | 28.6% | 1m 36s |
/ | 13 | 14 | 71.4% | 0m 23s |
/dataforseo-api-guide/ | 11 | 14 | 57.1% | 2m 18s |
/best-seo-rank-tracking-softwares/ | 10 | 9 | 88.9% | 2m 2s |
/cloudflare-r2-n8n-integration/ | 10 | 12 | 41.7% | 7m 16s |
Top events (organic engagement)
Device
Top countries
New vs returning
Demographics: enable Google Signals in GA4 Admin to unlock age/gender (currently unavailable).
Each row is an AI/search bot. Allowed = it can read and cite your pages; Blocked removes you from that engine's answers.
The Priority Breakdown figure is in the Executive Summary. All charts use Okabe-Ito color-blind safe palette.
90-Day Roadmap
Visual phased plan. Each block clickable in full HTML; here shown as Gantt-style timeline.
What ships each window
- C1 · Ads/tracking run before consent
- H5 · Few independent sources mention the brand
- H2 · The author/brand identity is inconsistent in schema
- H4 · The main above-the-fold image loads late, slowing perceived speed
- M1 · Homepage downloads more than needed
- M5 · Images could be smaller with a newer format
- M11 · Technical hygiene drags quality
Expected Score Progression
| Milestone | Projected Score | Delta |
|---|---|---|
| Current baseline | 82/100 | — |
| After Week 1-2 (all P0 fixed) | 85/100 | +3 |
| After Week 6 (P0+P1 fixed) | 100/100 | +18 (cumulative +21) |
| After Week 12 (P0+P1+P2 fixed) | 100/100 | +12 (cumulative +33) |
Projection model: sums each finding's impact_quantified per-axis score points (geo/technical/brand/schema/…) per severity bucket, capped at 25/18/12 pts respectively to avoid double-counting overlapping fixes. Real-world deltas depend on execution quality.
Autofix Bundle
25 fixes
Pipeline generates fix artifacts into audits/[client]/[date]/fixes/.
Generate-only mode — review + apply manually via WP MCP / direct upload.
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
manual-guide
How to apply
# For AUTO-SAFE / AUTO-REVIEW artifacts:
python ~/.claude/scripts/wp_push_safe.py [post_id] fixes/[category]/[file] --expected-slug [slug]
# For MANUAL guides:
# Read fixes/manual-guides/*.md and execute steps manually
🤖 Apply These Fixes with Claude Code
Most teams apply these with Claude Code. Hand Claude just
the report MD seo-audit_nextgrowth.ai_2026-06-08.md (plus the fixes/ folder for ready-to-apply
artifacts) — not the whole folder — then paste the prompt below.
You are a senior SEO + GEO engineer. Task: APPLY a site SEO + GEO audit. CONTEXT - Read the report: seo-audit_nextgrowth.ai_2026-06-08.md (Top-3 Priority, findings by severity, per-category deep dives, 90-Day Roadmap, Score Predictor). - Ready-to-paste artifacts are in the fixes/ folder + the report's "Ready-to-paste artifacts" block (robots.txt AI policy, llms.txt draft, schema JSON-LD, meta). - Site: nextgrowth.ai (WordPress -> apply via WP MCP). WORKFLOW 1. Read the report. Summarize the Top 3 Fixes + the AUTO-SAFE items. Change nothing yet. 2. Propose a plan: ship AUTO-SAFE artifacts first (robots.txt, llms.txt, headers), then AUTO-REVIEW (schema/meta) after I review each, then MANUAL guides. Wait for my OK. 3. When applying each fix: - Site files (robots.txt, llms.txt, .htaccess) -> show the diff, I deploy. - WP content/schema/meta -> edit in WP, create a REVISION/DRAFT, never publish directly. 4. After each fix, VERIFY with the exact signal the finding measured (curl/grep: header present, bot allowed, schema present, llms.txt 200...) -> report pass/fail with evidence. RULES - Don't fabricate or weaken a fix to make it "pass". Evidence-only. - NEVER publish directly -> always draft/revision for my review. - Keep a checklist: [finding id] -> applied / drafted / skipped + why.
Verification Pass — 10 Gates
9/9Phase 6.5 verification ran before deliverable generation. 9 of 9 active gates passed (1 N/A for current mode).
| Gate | Check | Status | Detail |
|---|---|---|---|
| Gate 1 | Every finding ties to evidence (5 attrs) | ✓ PASS | All 25 findings have evidence + severity + effort + impact + confidence |
| Gate 2 | Every chart hydrates from real source or shows disclosure | ✓ PASS | 7 chart slots: real data populates where agent JSON available; placeholder data eliminated v0.5.7 |
| Gate 3 | Every score documents calculation in appendix | ✓ PASS | Formula audit trail in phase6-scores.json |
| Gate 4 | No fabricated data (confidence field required) | ✓ PASS | All 25 findings carry confidence field; chart values traced to agent JSON |
| Gate 5 | Reproducibility log present | ✓ PASS | Appendix C populated with tools/versions/data sources |
| Gate 6 | Severity not inflated (P0 ≤ P1 generally) | ✓ PASS | 1 P0 vs 5 P1 — distribution healthy |
| Gate 7 | Low-confidence findings flagged inline | ✓ PASS | 6 medium-confidence + 2 low-confidence findings flagged in evidence cards |
| Gate 8 | Reaudit matrix complete (if reaudit mode) | — N/A | N/A — monthly audit mode |
| Gate 9 | Quick wins separated from roadmap | ✓ PASS | Quick Wins section distinct from 90-Day Roadmap |
| Gate 10 | Composite scores match category breakdown | ✓ PASS | All 3 composites reverse-compute correctly (±0.5 tolerance) |
Appendix
Appendix A — Score Calculation Methodology
Technical + CWV Composite
Technical*0.45 + Performance*0.35 + Sitemap*0.20
Components:
technical: 92 × 0.45 = 41.40
performance: 84 × 0.35 = 29.40
sitemap: 78 × 0.20 = 15.60
Sum: 86.4
Rounded: 86
GEO + AEO Composite
Geo*0.45 + Schema*0.30 + Platform*0.12 + Brand*0.12
Components:
geo: 95 × 0.45 = 42.75
schema: 84 × 0.30 = 25.20
platform: 72 × 0.12 = 9.00
brand: 45 × 0.12 = 5.62
Sum: 82.6
Rounded: 83
Overall Search-Readiness Composite
Technical*0.18 + Schema*0.13 + Sitemap*0.06 + Performance*0.13 + Geo*0.25 + Platform*0.06 + Brand*0.13 + Image*0.06
Components:
technical: 92 × 0.18 = 16.56
schema: 84 × 0.13 = 10.92
sitemap: 78 × 0.06 = 4.68
performance: 84 × 0.13 = 10.92
geo: 95 × 0.25 = 23.75
platform: 72 × 0.06 = 4.32
brand: 45 × 0.13 = 5.85
image: 75 × 0.06 = 4.50
Sum: 81.5
Rounded: 82
Appendix B — Reproducibility
- Kit version: Claude-Growth v1.0.18
- Audit timestamp: 2026-06-08T06:18:46.399123+00:00
- Audit duration: 14m 22s
- Mode: monthly
- Tier detected: T1 (capability detection)
- Coverage at this tier: ~95-100% — first-party GSC truth + external SERP/backlink data + (optional) field CWV.
Capability checklist
- ✓ Google Search Console (GSC)
- ✓ DataForSEO MCP
- ✓ Firecrawl MCP
- ✗ Chrome DevTools MCP (field CWV)
- ✓ WordPress MCP
Missing a connector lowers coverage — see the setup guide: ongboit.com/claude-growth-setup-tool-api-mcp.
Data sources consulted
- GSC API: ✓ (OAuth granted)
- DataForSEO MCP: ✓
- Firecrawl MCP: ✓ (N/A pages)
- reportlab: ✓ (PDF generation)
Skill routing decisions
See skills/seo-pipeline/references/skill-routing.md for winner-per-pair analysis (4 duplicate skills compared head-to-head across 8-12 dimensions each).
Reference files
references/issue-catalog.md— 23 detection patternsreferences/business-type-sampling.md— 5 types × 8 priority pagesreferences/composite-formula.md— 9 weights + 5-tier rubricreferences/pdf-spec.md— Times New Roman + 7 chartsreferences/verification-checklist.md— 10 Phase 6.5 gatesreferences/skill-routing.md— winner-per-pair matrixreferences/autofix-catalog.md— 23 autofix scenarios
Glossary
Plain-language definitions of every term (CWV, GEO/AEO, llms.txt, canonical, striking distance, crawl budget, E-E-A-T…) are in the How to Read This Report section near the top.
Appendix C — All Agent Findings (80 raw, 16 agents)
Every finding from every agent, ungrouped — nothing consolidated away. The prioritized Issues sections above are the deduped, board-grade view of these.
geo-accessibility — score 81/100 · 6 finding(s)
| High A1 | Link color #9b67e4 fails 4.5:1 contrast on white background CSS --global-palette1:#9b67e4 mapped to --global-palette-highlight (link color via 'a{color:var(--global-palette-highlight)}'). Computed ratio #9b67e4 on #ffffff = 3.85:1 (WCAG 1.4.3 requires >=4.5:1 for body-size text). → Inline body links are hard to read for low-vision users; AA body-text contrast violation = ADA/EAA exposure. Darken highlight palette to ~#7B4FD0 (>=4.5:1) or restrict #9b67e4 to large/bold text only. |
| Medium A2 | Muted text #718096 borderline-fails body contrast (4.02:1) CSS --global-palette6:#718096. Computed ratio on #ffffff = 4.02:1 vs 4.5:1 required (WCAG 1.4.3). Used for muted/meta text in Kadence theme. → Secondary/meta text (dates, captions) misses AA by a small margin. Shift to ~#5E6B7E (>=4.5:1) for body-size usage. |
| Low A3 | Accent cyan #00c9e8 unsafe as text on white (2.0:1) if used for body copy CSS --global-palette2:#00c9e8. On white = 2.0:1 (fails even large-text 3:1). On dark #0d172b = 8.96:1 (passes). Risk only if accent is ever applied as text on light backgrounds. → Conditional risk. Keep #00c9e8 for dark-bg/UI accents only; never as text on light surfaces. Confirm via live render where the token is applied. |
| Medium A4 | Focus-visible indicator coverage not verified in live render CSS has 72 :focus rule occurrences and only 1 :focus-visible; outline:0 appears 7x but all are gated (a:active{outline:0}, .hide-focus-outline *:focus, #primary[tabindex=-1]:focus) so no blanket removal found. Theme (Kadence) applies a:focus highlight color. Cannot confirm a perceivable focus ring on all interactive controls without keyboard tabbing in a browser. → Likely compliant given gated outline rules, but keyboard focus visibility (WCAG 2.4.7) needs confirmation via real Tab-through. If any control lacks a visible ring, add :focus-visible{outline:2px solid #9b67e4;outline-offset:2px}. |
| Medium A5 | Keyboard navigation / interactive operability not tested (no live browser) Static audit only; no Lighthouse a11y category and no Chrome DevTools keyboard run executed (DataForSEO/Chrome MCP not invoked). aria-expanded present on 2 menu toggles (good signal) but tab order, menu operability, and trap-free navigation unverified. → WCAG 2.1.1/2.1.2 unverified. Recommend a Lighthouse accessibility run (mcp on_page_lighthouse) or manual keyboard pass on nav + mobile menu toggle to confirm. |
| Low A6 | Form inputs lack autocomplete attribute (WCAG 2.2 3.3.7 Redundant Entry) Home newsletter input '<input class="formkit-input" name="email_address" type="email" aria-label="Email Address" required ...>' has no autocomplete attribute (0 inputs with autocomplete found across sampled pages). → Minor WCAG 2.2 AA gap. Add autocomplete="email" to the newsletter field to reduce redundant entry for users with cognitive/motor needs. |
geo-brand-mentions — score 45/100 · 3 finding(s)
| High B1 | Thin third-party brand footprint Firecrawl: off-site = own FB + Gumroad + 1 VN group; no Reddit/YouTube/Wikipedia/HN/press → Independent mentions drive E-E-A-T + AI citation trust |
| Medium B2 | sameAs lacks Wikipedia/Wikidata schema sameAs has FB/LinkedIn/GitHub/X/YouTube/Reddit, no Wikipedia/Wikidata → Entity disambiguation for AI |
| Low B3 | Branded query recognized (positive) GSC 'nextgrowth' pos 3.6 → Entity baseline |
geo-compliance — score 51/100 · 4 finding(s)
| Critical CM1 | Google AdSense + GTM fire with no cookie consent banner (GDPR consent-before-tracking violation) grep /tmp/ng_home.html: 'pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5107575593357424' and 'googletagmanager.com/gtag/js?id=GT-P85WF39B' both present and loaded unconditionally; 0 matches for any consent library (cookieyes|onetrust|cookiebot|termly|iubenda|complianz|klaro|tarteaucitron|cookie-script) and 0 matches for consent text (we use cookies|accept all|reject all|gtag('consent')). URL: https://nextgrowth.ai/ → Closes the single largest EU/CA exposure. AdSense personalized ads + GTM setting cookies pre-consent is the exact pattern behind CNIL/GDPR enforcement. Adding a Consent Mode v2 banner (Complianz/CookieYes free tier) gates both tags and lifts compliance score ~18pts. |
| High CM2 | Privacy policy missing explicit data-subject-rights and legal-basis language grep /privacy-policy: PASS for gdpr, ccpa, 'opt out', 'data retention', cookie, third-party, 'personal data', 'personal information'; FAIL for 'data subject', 'right to delete', 'right to access', 'data controller', 'legal basis'. URL: https://nextgrowth.ai/privacy-policy → Policy already names GDPR/CCPA and has contact@nextgrowth.ai + 'exercise your rights'; adding the explicit Art.15-22 rights list (access, deletion, rectification, portability), named data controller, and Art.6 legal basis brings it to audit-ready and reduces litigation surface. |
| Medium CM3 | No cookie classification / categories disclosed (no banner, no category breakdown) grep /privacy-policy: 0 matches for 'essential cookies|analytics cookies|marketing cookies|functional cookies|necessary cookies|performance cookies'; no consent banner present to surface categories. URL: https://nextgrowth.ai/ → A consent banner (CM1 fix) with category toggles (necessary/analytics/marketing) plus a cookie table in the policy satisfies this; resolves alongside CM1. |
| Low CM4 | WordPress plugin/dependency staleness not verifiable (no WP MCP credential) Headers expose WordPress (link: https://nextgrowth.ai/wp-json/) on LiteSpeed; plugin versions could not be enumerated (WP MCP not authenticated in this run). No stale dependency evidence either way. URL headers from https://nextgrowth.ai/ → Run WP MCP get_active_plugins to enumerate versions and flag >90d-stale or CVE plugins; manual review needed, not a confirmed gap. |
geo-crawlers — score 100/100 · 8 finding(s)
| Low crawler-tier1-all-allowed | All 5 Tier 1 AI-search crawlers explicitly allowed robots.txt: 'User-agent: GPTBot / Allow: /', 'User-agent: ChatGPT-User / Allow: /', 'User-agent: OAI-SearchBot / Allow: /', 'User-agent: ClaudeBot / Allow: /', 'User-agent: PerplexityBot / Allow: /' → Maximum visibility in ChatGPT Search, Claude, and Perplexity answers; foundational GEO requirement met. |
| Low crawler-tier2-allowed | Tier 2 ecosystem crawlers allowed (Google-Extended, Applebot-Extended, Amazonbot, Meta-ExternalAgent) robots.txt: 'User-agent: Google-Extended / Allow: /', 'User-agent: Applebot-Extended / Allow: /', 'User-agent: Amazonbot / Allow: /', 'User-agent: Meta-ExternalAgent / Allow: /' → Content eligible for Gemini/AI Overviews training, Apple Intelligence, Alexa, and Meta AI. |
| Low crawler-no-blanket-block | No blanket AI block; unlisted bots inherit open wildcard robots.txt wildcard: 'User-agent: * / Disallow: /wp-admin/ / Allow: /wp-admin/admin-ajax.php' (only admin path blocked). GoogleOther, FacebookBot, anthropic-ai not named -> inherit allow. → No accidental sitewide AI lockout; unlisted AI crawlers retain full access. |
| Low crawler-training-blocks-intentional | CCBot and Bytespider blocked (intentional, no search impact) robots.txt: 'User-agent: CCBot / Disallow: /', 'User-agent: Bytespider / Disallow: /' → Excludes Common Crawl dataset and ByteDance; aggressive/low-value crawlers controlled. Zero impact on live AI-search visibility. |
| Low crawler-llms-and-sitemap-present | llms.txt present and sitemap declared GET /llms.txt -> HTTP 200, content-type: text/plain, content-length: 5727 ('# NextGrowth.ai ...'). robots.txt: 'Sitemap: https://nextgrowth.ai/sitemap_index.xml' → AI crawlers get a curated content map plus full sitemap for discovery. |
| Low crawler-no-noai-noindex | No noai/noindex meta or X-Robots-Tag on content Homepage meta: '<meta name="robots" content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"/>'. Homepage response headers: no X-Robots-Tag. (Note: /llms.txt itself returns 'x-robots-tag: noindex', which is correct for a non-content file.) → No page-level overrides suppressing AI/search indexing of content. |
| Low crawler-no-content-signal | No IETF Content-Signal directive declared robots.txt grep for 'Content-Signal:' -> NONE found. → AI usage preferences (ai-train/search/ai-retrieval) not explicitly declared. Optional emerging draft standard; add e.g. 'Content-Signal: ai-train=yes, search=yes, ai-retrieval=yes' to state intent. |
| Low crawler-cohere-miscased | Cohere-ai token mis-cased (cosmetic) robots.txt: 'User-agent: Cohere-ai / Allow: /' (documented token is 'cohere-ai'). robots.txt user-agent matching is case-insensitive per RFC 9309, so access is unaffected. → No functional effect; normalize to 'cohere-ai' for clarity only. |
geo-llmstxt — score 90/100 · 2 finding(s)
| Low L1 | Structured llms.txt present (positive) curl /llms.txt 200, 5727 bytes, Author+Topics+Pillars+links → Helps AI parse site + author authority |
| Low L2 | No llms-full.txt only llms.txt present → Deeper AI ingestion |
geo-platform-optimizer — score 72/100 · 3 finding(s)
| High PO1 | GEO-ready content but low rank caps citation Schema FAQ+Speakable + crawler access vs GSC avg pos 27.5 → Page-1 moves unlock AIO/Perplexity citations |
| Medium PO2 | Bing/Copilot indexation unverified No Bing Webmaster connection → Confirm Copilot surface |
| Low PO3 | AI-search infra ready (positive) robots allows GPTBot/ClaudeBot/PerplexityBot/Google-Extended; llms.txt 200 → Eligible across ChatGPT/Claude/Perplexity/Gemini |
geo-schema — score 84/100 · 5 finding(s)
| High schema-entity-fragmentation | Duplicate conflicting Person and Organization @id nodes fragment the entity graph https://nextgrowth.ai/ + all posts (grep JSON-LD): Person '#thenguyen' (sameAs LinkedIn the-nguyen-devops, jobTitle 'Senior DevOps Engineer and SEO Automation Specialist', knowsAbout array) coexists with a second Person '@id=https://nextgrowth.ai/author/nextgrowth/' (sameAs LinkedIn minh-the-nguyen-6b995960 + Reddit, jobTitle 'Senior DevOps and Cloud Engineer', no knowsAbout). Homepage Block 1 also re-declares '@id=#organization' with a DIFFERENT sameAs set (adds Reddit, drops Twitter; LinkedIn URL differs by trailing slash) than Rank Math's canonical #organization in Block 0. → Same-entity nodes with conflicting @id/sameAs/jobTitle prevent reliable entity resolution; AI models may treat them as two different people/orgs or distrust the identity signal. Consolidate to a single canonical @id per entity. |
| Medium schema-speakable-encoded-selector | speakable cssSelector is HTML-entity-encoded, yielding an invalid selector https://nextgrowth.ai/ai-overview-seo-guide/ raw HTML: "cssSelector":[".entry-content > p:first-of-type","h1",".tl-dr"] — the child combinator '>' is emitted as the literal entity '>' inside the JSON-LD string, so the selector cannot match. Present on every BlogPosting sampled. → speakable targeting silently fails on the first-paragraph selector; voice/AI-assistant readability markup does not resolve. Output a raw '>' (or use a descendant selector) in the JSON-LD string. |
| Medium schema-sameas-missing-authority-anchors | sameAs omits Wikipedia/Wikidata and has inconsistent Twitter/X linkage https://nextgrowth.ai/ JSON-LD: Organization/Person sameAs = LinkedIn, GitHub, Twitter/X, Facebook (4 platforms on #thenguyen); Block 1 Organization drops Twitter and adds Reddit. grep wikipedia|wikidata over homepage HTML = 0 matches. → Wikipedia/Wikidata are the strongest cross-platform entity-linking signals for GEO; absence limits AI entity-graph confidence. Add Wikidata (create if needed) and unify the Twitter/X + Reddit links across all nodes. |
| Low schema-blogposting-wordcount-missing | BlogPosting missing wordCount (recommended GEO context property) https://nextgrowth.ai/ai-overview-seo-guide/ BlogPosting #richSnippet has headline, image, datePublished, dateModified, author(@id), publisher(@id), mainEntityOfPage, description, articleSection — but wordCount is MISSING (verified across sampled posts). → wordCount is a minor recommended property that helps AI models gauge content depth; low-effort add to the existing BlogPosting template. |
| Low schema-faqpage-restricted-note | FAQPage present — valid but ineligible for rich results on this site type https://nextgrowth.ai/ai-overview-seo-guide/#faq, /aeo-vs-geo-vs-seo-explained/#faq, /what-is-n8n/#faq all contain FAQPage. Google restricts FAQ rich results to government/health authorities since Aug 2023. → No harm and still useful for AI Q&A extraction; keep it. No action required beyond awareness that it will not render as a Google rich result. |
geo-technical — score 92/100 · 9 finding(s)
| Low tech-ssr-full | Fully server-rendered HTML — AI crawlers see complete content curl https://nextgrowth.ai/ -> 200, content-type text/html, server: LiteSpeed; raw HTML strip-tags = 45,889 chars visible text, 23 <p>, 1 <h1>, 20 <h2>; grep __NEXT_DATA__|__NUXT__ = 0; no <div id=root|app|__next>. Sample article https://nextgrowth.ai/seo-content-optimization-guide/ = 87,324 chars visible text in raw HTML. → Positive: GPTBot/ClaudeBot/PerplexityBot (which do not execute JS) can index all primary content. No remediation needed; protect this in any future re-platform. |
| Low tech-ai-robots-allow | robots.txt explicitly allows major AI crawlers, blocks low-value scrapers https://nextgrowth.ai/robots.txt (200): Allow / for GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-Web, PerplexityBot, Google-Extended, Applebot-Extended, Amazonbot, Cohere-ai, YouBot, Meta-ExternalAgent; Disallow / for CCBot, Bytespider, Diffbot, Omgili. Sitemap: https://nextgrowth.ai/sitemap_index.xml referenced. → Positive: maximizes AI-search visibility (GEO) while controlling abusive scrapers. Verify CCBot block is intentional (CCBot feeds some training/aggregation; some publishers allow it). |
| Low tech-no-csp | No Content-Security-Policy header Response headers from curl -D - https://nextgrowth.ai/ include HSTS, X-Frame-Options SAMEORIGIN, X-Content-Type-Options nosniff, Referrer-Policy strict-origin-when-cross-origin, Permissions-Policy — but NO content-security-policy header present. → Minor XSS hardening gap. All other security headers present, so trust-signal impact on SEO is negligible; add a CSP for defense-in-depth. |
| Medium tech-www-cert-mismatch | www.nextgrowth.ai TLS certificate principal mismatch curl https://www.nextgrowth.ai/ -> exit 60 SEC_E_WRONG_PRINCIPAL (cert SAN does not cover www). Apex http://nextgrowth.ai/ correctly 301 -> https://nextgrowth.ai/. Canonical is apex (self-referencing https://nextgrowth.ai/). → Users/links hitting https://www. get a TLS error instead of a redirect to the canonical apex. Add www to the certificate SAN (or a 301 host redirect with valid cert) to avoid broken entry points and link equity loss. |
| Low tech-css-onload-swap | CSS delivered via JS-onload swap (LiteSpeed async) with noscript fallback grep /tmp/ng_home.html: <link rel=preload as=style onload="this.onload=null;this.rel='stylesheet'" href=.../litespeed/css/...>; rel=stylesheet count = 0 (all async); 4 <noscript> blocks present; 2 inline <style> blocks (critical CSS). 25 scripts: 16 defer, 2 async. → Static LCP-risk reducer (non-render-blocking CSS, critical CSS inlined). noscript fallback present so styled content is not JS-dependent. No action needed; CWV measurement is seo-performance's scope. |
| Low tech-llmstxt-present | llms.txt present curl https://nextgrowth.ai/llms.txt -> 200. → Positive GEO signal — provides an AI-oriented site map of key content. Validate contents in geo-llmstxt (out of scope here). |
| Low tech-meta-complete | Complete, server-rendered meta + social + canonical set grep /tmp/ng_home.html: <title> 'SEO Automation with n8n — NextGrowth.ai' (~38 chars, slightly under 50-60 ideal); meta description 152 chars; self-ref canonical; robots 'follow,index,max-image-preview:large'; viewport width=device-width,initial-scale=1; html lang=en-US; 13 og:* tags incl og:image w/ dimensions; 9 twitter:* (summary card). No hreflang (single-language site — correct). → Indexability and rich previews fully controlled. Optional: lengthen homepage <title> toward 50-60 chars to use more SERP real estate. |
| Low tech-sitemap-valid | Valid Rank Math sitemap with accurate recent lastmod https://nextgrowth.ai/sitemap_index.xml (200) valid XML, 2 child sitemaps w/ lastmod; post-sitemap.xml = 101 <url>, 101 <lastmod>, latest 2026-06-03 (today 2026-06-08). Target apex appears as canonical; article URLs present. → Healthy crawl guidance with trustworthy freshness dates. No action. |
| Low tech-url-structure | Clean flat URL structure Article URLs are root-level descriptive slugs, lowercase, hyphenated, trailing slash, no params: https://nextgrowth.ai/seo-content-optimization-guide/, /content-strategy-seo-best-practices/. → Readable, keyword-rich, no nesting/parameter issues. Minor: flat architecture means no category hierarchy in path — acceptable for a small publisher. |
seo-audit — score 88/100 · 5 finding(s)
| Low title-length-longform-post | Longest post title exceeds ~60 char SERP display width https://nextgrowth.ai/on-page-seo-checklist <title>On-Page SEO Checklist 2026: 30 Items That Move Rankings | NG.ai</title> = 63 chars (grep-verified from rawHtml head). Home=39, About=49, dfs-vs-serpapi within range. → Minor pixel-width truncation risk on the brand suffix in Google SERPs; no ranking effect. Trim suffix or shorten to <=60 chars. |
| Low empty-alt-images | Two images per sampled page carry empty alt="" grep over rawHtml: 2 of 23 (home), 2 of 8 (about), 2 of 44 (on-page post), images match alt="". No images are missing the alt attribute entirely (0 missing across all pages). → If decorative, empty alt is correct and is a non-issue; if content-bearing (e.g., hero/diagram) it loses image-search + a11y value. Spot-check the 2 per page and add descriptive alt where content-bearing. |
| Medium external-link-rel-coverage | External links only partially flagged nofollow/sponsored on-page post: 6 of 20 unique external links carry rel nofollow|sponsored; dfs-vs-serpapi: 6 of 11. Externals include vendor/comparison domains (dataforseo.com, serpapi.com, g2.com, capterra.com) alongside authority citations (developers.google.com, ahrefs.com). → Comparison/review posts link to commercial vendor pages; uncontrolled dofollow to vendors leaks equity and, if any are affiliate/sponsored, risks Google link-spam guideline non-compliance. Audit vendor links and apply rel="nofollow sponsored" where commercial; keep editorial citations dofollow. |
| Low h2-h3-hierarchy-home | Homepage uses 20 H2s with zero H3s (flat heading tree) grep home rawHtml: H1=1, H2=20, H3=0. Posts have correct nesting (on-page: H2=12/H3=42; about: H2=8/H3=8). → Flat H2 list on a long homepage is acceptable for a section-based landing layout; only revisit if any H2 sections grow sub-topics that warrant H3 nesting for outline clarity. |
| Low no-hreflang | No hreflang annotations present grep across home/about/posts head: hreflang=(none). html lang=en-US, og:locale=en_US. → Correct for a single-locale English site; documented here as a deliberate non-issue. Only add hreflang if a localized version is launched. |
seo-backlinks — score N/A · 0 findings (positives only)
seo-google — score 72/100 · 5 finding(s)
| High G1 | 928K impressions, 0.05% CTR, avg pos 27.5 GSC 90d totals → Page-1 moves multiply clicks; traffic already converts at 22% |
| High G2 | High-volume striking-distance pages on page 2-3 GSC: /best-seo-api/ 78,557 imp @22.6 (and GA4 shows it converts 39%); 'seo api' 4,655 imp @26.6; 'dataforseo alternative' 1,030 imp @11.4 → /best-seo-api/ rank lift = clicks x 39% conversion |
| Medium G3 | High-converting pages deserve rank investment (GA4 cross-signal) GA4: /what-is-n8n/ 34% conv, /best-seo-api/ 39%, /coolify-vs-dokploy/ 62% key-event rate → Prioritize internal links + refresh to these proven converters |
| Medium G4 | page-sitemap.xml stale in GSC GSC sitemaps: page-sitemap.xml submitted 2025-08-27 vs post 2026-05-22 → Faster recrawl |
| Low G5 | Branded search healthy (positive) GSC 'nextgrowth' pos 3.6 → Brand entity established |
seo-images — score 75/100 · 3 finding(s)
| Medium I1 | No AVIF / no <picture> (WebP only) grep: 0 <picture>; WebP present; no AVIF source → AVIF cuts image bytes ~20-30% |
| Low I2 | OG image 1024x1024 (non-ideal ratio) seo-visual: og:image 1024x1024 PNG → Better social preview (use 1200x630) |
| Low I3 | Alt + dimensions complete (positive) grep: homepage imgs have alt + width/height → Good CLS + image SEO |
seo-page — score 88/100 · 8 finding(s)
| High home-no-meta-description | Homepage has no <meta name="description"> (only og:description present) https://nextgrowth.ai/ — grep of <head>: name=.description count=0; og:description present = 'I automate SEO with n8n and share every workflow, result, and mistake publicly. 30+ articles published...'. Rank Math active (rank-math markers found) but did not emit a standard meta description tag. → Google may auto-generate a less compelling SERP snippet for the homepage; a hand-written 150-160 char description improves CTR on the brand/primary query. Copy the existing og:description into Rank Math's meta description field. |
| Low home-no-jsonld-in-head-flat | Homepage @type values not flagged on first pass due to escaped JSON; confirmed 3 JSON-LD blocks present and valid https://nextgrowth.ai/ — application/ld+json blocks=3; @type set after unescape = Organization, WebSite, SearchAction, WebPage, Person, CollectionPage, ImageObject. Schema is present and complete for a homepage; this is a NON-issue confirmation, no action needed. → No action required — homepage schema coverage (Organization + WebSite/SearchAction sitelinks-searchbox + Person) is already best-practice. Logged for completeness. |
| Low home-flat-heading-hierarchy | Homepage has 20 H2s but 0 H3s — flat section structure https://nextgrowth.ai/ — H1 count=1 ('I'm Automating the Entire SEO Lifecycle with n8n.'), H2 count=20, H3 count=0. → Twenty sibling H2s with no nesting is acceptable for a landing/portfolio homepage but offers no semantic sub-grouping for assistive tech or AI extraction. Low priority; only refactor if sections grow. |
| Low home-empty-alt-decorative | 2 of 23 homepage images have empty alt text https://nextgrowth.ai/ — 23 <img> tags, 0 missing alt attribute, 2 with alt="". Empty alt is correct for decorative images; verify these 2 are truly decorative (icons/dividers) and not content images. → If the 2 empty-alt images are decorative this is correct accessibility practice. Only add descriptive alt if either conveys meaning. |
| Low post-exemplary-onpage | /dataforseo-review/ is a model on-page implementation (confirmation, no fix) https://nextgrowth.ai/dataforseo-review/ — title 'DataForSEO Review 2026: Honest Verdict After 12 Weeks' (54 chars); meta description present (~157 chars); canonical self-referencing; robots 'follow, index, max-image-preview:large'; og:type=article; H1=1, H2=11, H3=37; 4 JSON-LD blocks incl BlogPosting, Review, SoftwareApplication, AggregateRating, FAQPage(5 Q), BreadcrumbList, SpeakableSpecification; datePublished 2026-03-01, dateModified 2026-05-21. → No action needed. Use this post as the on-page template for other reviews/posts on the site. |
| Low post-title-h1-mismatch | Post SEO title and H1 differ in phrasing (minor) https://nextgrowth.ai/dataforseo-review/ — <title>='DataForSEO Review 2026: Honest Verdict After 12 Weeks'; H1='DataForSEO Reviews 2026: Is the Pay-As-You-Go API Worth It?'. Both contain the primary entity 'DataForSEO Review(s) 2026'. → Intentional title/H1 divergence is a valid tactic (title for SERP CTR, H1 for on-page). Singular vs plural 'Review/Reviews' is the only keyword nuance; harmless. No fix required. |
| Low post-2-empty-alt | 2 of 37 post images have empty alt text https://nextgrowth.ai/dataforseo-review/ — 37 <img> tags, 0 missing alt attribute, 2 alt="". All 37 have explicit width+height and WebP source. → Confirm the 2 empty-alt images are decorative; if any is a chart/screenshot conveying data, add descriptive alt for accessibility and image search. |
| Low both-lazy-loader-not-a-defect | Native loading="lazy" count is low because a JS lazy-loader is in use (not a defect) Home: lazyload=11, data-src=7 markers; loading="lazy" native=1. Post: lazyload=18, data-src=15; native=1. lazysizes/data-src pattern intentionally strips native lazy attr. Per skill guidance, do NOT flag as 'not lazy-loaded'. → Lazy loading is functioning via JS. No action. Logged so downstream agents do not double-report a false 'images not lazy-loaded' issue. |
seo-performance — score 84/100 · 4 finding(s)
| Medium P1 | Heavy homepage payload 1.76 MB + 130 unused CSS Lighthouse total-byte-weight=1,760,852; unused-css-rules=130 → Lighter pages -> faster mobile LCP |
| Medium P2 | LCP element (logo) lazy-loaded above the fold seo-visual: logo has loading=lazy, no fetchpriority/preload → Excluding LCP img from lazyload cuts LCP |
| Medium P3 | Best-Practices 0.77 (lowest category) Lighthouse best-practices=0.77 → Console/3rd-party cleanup |
| Low P4 | CWV measured GOOD (positive) Lighthouse LCP 1832ms, CLS 0.023, TBT 12ms → No desktop CWV remediation; confirm mobile |
seo-sitemap — score 78/100 · 3 finding(s)
| Medium S1 | 12 indexable URLs not in sitemap Crawl: indexable_not_in_sitemap=12 → Complete discovery |
| Medium S2 | page-sitemap.xml stale (resubmit) GSC last_submitted 2025-08-27 → Faster recrawl |
| Low S3 | Flat architecture + category hubs (positive) Firecrawl map ~120 URLs; 5 /category/ hubs → Good clustering base |
seo-visual — score 71/100 · 12 finding(s)
| High VIS-001 | Logo is lazy-loaded while above the fold — likely LCP candidate DOM: img[alt='NextGrowth.ai logo'] has loading='lazy' and data-lazyloaded='1' attribute set by LiteSpeed Cache; no fetchpriority attribute; no <link rel=preload> for this image in <head>. Image renders at top:18px on desktop (inside 1080px viewport). This suppresses browser's preload scanner from fetching it early. → Delays LCP on every page load. Fix: remove loading='lazy' from the logo img (or set loading='eager') and add fetchpriority='high'. Add <link rel='preload' as='image'> in <head> for the .webp logo URL. In LiteSpeed Cache settings, exclude the logo image from lazy-load. |
| Medium VIS-002 | Header is position:absolute — disappears from view on scroll DOM: header element computed style position='absolute', z-index=100, height=80px. Confirmed visually in desktop screenshot: nav floats over hero but is not sticky. On scroll the nav is lost entirely, making navigation require scrolling back to top. → Poor UX on long homepage (page is ~7226px tall on desktop). Returning to navigation requires full scroll-up. Fix: change header CSS to position:sticky; top:0 with appropriate z-index and background. |
| Medium VIS-003 | Blog-card category labels are 19px tall — fail 44px touch target minimum on mobile Mobile DOM: 15+ category label links (e.g., 'SEO AUTOMATION', 'SEO TOOLS', 'N8N INFRASTRUCTURE', 'SEO FUNDAMENTALS', 'SETUP GUIDES') measured at w:230px h:19px. Google/WCAG recommends minimum 44x44px for interactive touch targets. These span the full card width but are only 19px tall, making them easy to miss-tap. → Increases mobile tap errors, hurts UX for a mobile audience. Fix: add padding-top/padding-bottom to category label anchor elements so rendered height reaches at least 44px, or increase line-height and padding in the card CSS. |
| Medium VIS-004 | Newsletter 'Subscribe' button is 23px tall — below 44px touch target floor Mobile DOM: BUTTON text='Subscribe →' measured w:138px h:23px at top:11596. Tablet DOM: same button w:138px h:23px. On desktop the button is also small relative to the form field. This is distinct from the blog-card labels and likely a different component (email opt-in section). → Newsletter subscribe friction on mobile. Fix: add min-height:44px and vertical padding to the subscribe button style in the email opt-in widget. |
| Medium VIS-005 | OG image is 1024x1024 square PNG — not the recommended 1200x630 landscape Head meta: og:image = 'https://nextgrowth.ai/wp-content/uploads/2026/03/Facebook-NextGrowth-1024x1024.png'; og:image:width=1024; og:image:height=1024. Facebook, LinkedIn, and Slack crop square OG images to landscape — the 1:1 square will be letter-boxed or cropped awkwardly. Twitter/X requires 2:1 ratio for large card format. → Reduced click-through when shared on social media. Fix: create a 1200x630px branded OG image and update og:image meta tag. Also add twitter:card='summary_large_image' if not present. |
| Low VIS-006 | Google Fonts uses dns-prefetch only — should be preconnect with crossorigin DOM: <link rel='dns-prefetch' href='//fonts.googleapis.com'>. No preconnect link found for fonts.googleapis.com or fonts.gstatic.com (only dns-prefetch). Preconnect performs DNS+TCP+TLS handshake early; dns-prefetch only resolves DNS. Google's own recommendation for self-hosted or GF fonts is <link rel='preconnect' href='https://fonts.gstatic.com' crossorigin>. → Minor latency increase for font file fetch. Fix: replace dns-prefetch with two preconnect tags: one for fonts.googleapis.com and one for fonts.gstatic.com with crossorigin attribute. This is a theme-level or LiteSpeed Cache setting. |
| High VIS-007 | No LCP image preload — multiple below-fold blog thumbnails carry fetchpriority=high incorrectly DOM: Images at index 7-20 (all below fold, top > 4000px) have fetchpriority='high' with no lazy loading. Only 1 of 24 images has loading='lazy' (the logo). The LCP image (logo or hero text) has no preload hint. WordPress theme/plugin is incorrectly marking off-screen thumbnails as high priority, creating resource contention. → Misaligned fetch priorities force browser to compete for bandwidth loading below-fold thumbnails during initial page load. This delays LCP. Fix: (1) add fetchpriority='high' to the logo / true LCP image only; (2) add loading='lazy' to all blog card thumbnail images; (3) audit the theme or plugin setting that sets fetchpriority=high globally. |
| Low VIS-008 | Mobile primary CTA barely clears the fold — secondary CTA partially clipped Mobile viewport 375x812: 'Get SEVOsmith' CTA bottom = 757px (55px above fold edge, passes). 'See The Roadmap' CTA top = 770px, which means it starts at 770px and likely extends to ~815px — partially off screen. H1 height on mobile is 212px (top:214), with body copy below that, pushing both CTAs near the bottom of the 812px viewport. → On small phones (SE, older Android) both CTAs may be fully below fold. Consider tightening hero section top padding or reducing body copy length above the CTA on mobile via CSS. |
| Low VIS-009 | Hamburger button is 47x44px — just meets minimum but misses 48x48px Google recommendation Mobile DOM: menu-toggle-open button measured w:47px h:44px. Google's Material Design and PageSpeed guidance recommends 48x48px minimum. At 47x44 it is borderline accessible but below the Google-recommended floor by 1px width and 4px height. → Minor tap-target concern. Fix: set min-width:48px; min-height:48px on the hamburger button in mobile CSS. |
| Low VIS-010 | No hero visual image — hero section is text + stats only, no above-fold imagery Desktop/mobile screenshots confirmed: hero area contains H1 text, subtitle copy, two CTA buttons, and a 3-stat counter widget. No hero image, illustration, or video is present above the fold. The first real image (SEVOsmith product screenshot) appears at top:4566px on desktop. This is a design choice but has UX/conversion implications. → Text-only heroes can reduce perceived credibility and visual engagement for first-time visitors. Consider adding a product screenshot, workflow diagram, or author photo to the hero to increase trust signals and visual hierarchy. Low urgency — design decision, not a rendering bug. |
| Low VIS-011 | 5 emoji images lack explicit width/height attributes — minor CLS risk DOM: 5 inline emoji SVG images (gear symbol, checkmark, arrow) have no width or height attributes. They render at 12x12px via CSS but the browser cannot reserve space before they load, creating small layout shifts. All appear below the fold so CLS impact is minimal. → Very minor CLS contribution. Fix: add width='12' height='12' attributes to inline emoji img tags, or switch to CSS-only emoji rendering. |
| Low VIS-012 | No theme-color meta tag — browser chrome stays default on mobile DOM: document.querySelector('meta[name=theme-color]') returns null. Theme-color customizes the browser address bar color on Android Chrome and PWA installs, reinforcing brand identity. → Minor branding miss on Android Chrome. Fix: add <meta name='theme-color' content='#0d1b2a'> (or the site's dark navy brand color) to the <head>. |