Summary

Ahrefs API status: All endpoints returning Insufficient plan — the connected API key does not have access to Site Explorer, Rank Tracker, GSC, or Brand Radar tools. No Ahrefs data could be pulled this run. Upgrade the Ahrefs plan to re-enable API access.

Audit method this run: Direct technical audit via HTTP crawl of slateup.ai + source code review of the slate-landing repository.


Critical Finding: Site Has Zero Google Indexing

A site:slateup.ai search returns 0 results. Despite having robots: index, follow and a sitemap with 70+ URLs, Google has not indexed a single page.

Root cause: The site is a React SPA (client-side rendered). Every URL — homepage, features page, and all 70+ blog posts — returns the exact same HTML shell:

<div id="root"></div>

Content only appears after JavaScript executes in the browser. Google can render JS, but it is slow and unreliable. More critically, the index.html had a hardcoded canonical pointing to the homepage for all pages, which told Google every URL was a duplicate of /.


Issues Found (by Priority)

🔴 P1 — Blocking Indexation

1. Hardcoded canonical pointed every page to homepage

File: frontend/public/index.html

The <link rel="canonical" href="https://slateup.ai/"> tag was in the shell HTML served for ALL routes. A crawl of /blogs/best-ai-study-tools-jee-neet-2026 returned canonical = https://slateup.ai/. Google treated all 70+ blog posts as duplicates of the homepage.

✅ Fixed — canonical removed from index.html. Each page's useSeoMeta hook now controls the canonical per-route.

2. No per-page HTML for blog posts

Each blog post URL returned identical HTML. Google's crawler saw no unique title, description, or content for any blog post.

✅ Fixed — Added scripts/inject-page-meta.mjs (postbuild script). After every Vercel build, this script creates a dedicated index.html for each of the 70+ blog routes and key static pages with correct per-page title, description, canonical, OG title/description/URL, and Twitter Card tags — all before JS runs.

Also added "postbuild": "node scripts/inject-page-meta.mjs" to package.json.