Run a free Astro SEO audit. Catch missing sitemaps, broken ViewTransitions canonicals, island CLS, and AI crawler gaps before they cost you organic rankings.
Run Free Audit →No credit card required · Results in under 2 minutes
Astro's island architecture, zero-JS-by-default philosophy, and support for both SSG and SSR make it one of the most performance-friendly frameworks available. But that developer freedom comes with a configuration responsibility that almost every new Astro project underestimates. Sitemap generation is an optional integration you have to install separately. There is no default robots.txt. ViewTransitions — one of Astro's most compelling features — can silently break canonical rendering. And the growing ecosystem of island components introduces CLS risks that a Lighthouse test on one page will never surface across your full site.
seo.yatna.ai crawls your Astro site the way Google and AI assistants do — evaluating static HTML output, checking meta tags on every crawled URL, validating JSON-LD, and scoring across 7 weighted categories. The result is a site-wide picture of your SEO health, not a spot-check on your homepage.
@astrojs/sitemap not configured — The Astro sitemap integration is not included by default. It must be installed as a separate package and added to astro.config.mjs. Freshly scaffolded Astro projects have no sitemap at all — meaning Google has no structured map of your content and must discover pages entirely through link crawling.
No default robots.txt generation — Unlike Next.js (which can generate robots.ts) or Nuxt (which has a robots module), Astro generates no robots.txt unless you manually create /public/robots.txt. Projects launched without this file leave all crawler behavior undefined, and AI crawler directives are universally absent.
ViewTransitions breaking canonical rendering — Astro's <ViewTransitions /> component enables SPA-like page transitions in a static site. A known side effect: when navigating between pages, the <head> doesn't fully re-evaluate in some browser and crawler scenarios, causing canonical tags from a previous page to persist into the next. Google may index the wrong canonical as a result.
Island components causing CLS if they load above-fold content — Astro islands hydrate on the client after initial HTML paint. If an island component renders visible content — a hero section, a navigation item, a pricing card — the layout shift between the static placeholder and the hydrated element contributes directly to your CLS score.
Missing <meta name="description"> on generated pages — Astro's default layouts and page templates don't include a description meta tag out of the box. Developers building quickly often add titles without descriptions, leaving a significant on-page SEO signal blank across every page.
OG images not auto-generated per post — Astro has no built-in OG image generation. Without a dedicated integration (like astro-og-canvas or a custom API endpoint), every page shares the same static OG image or has none at all — undermining social sharing and AI snippet previews.
JSON-LD schema must be added manually — Astro has no plugin ecosystem comparable to WordPress's Yoast or RankMath. Every JSON-LD schema block — Article, Organization, BreadcrumbList, FAQ — must be written manually into each layout or page component. The vast majority of Astro sites in production have no schema at all.
AI crawlers not addressed in manual robots.txt — When developers do create a robots.txt, they typically copy a minimal template: User-agent: * Allow: /. This grants access to all crawlers but provides no explicit guidance to GPTBot, ClaudeBot, PerplexityBot, or Amazonbot. As AI-generated search overviews become a meaningful traffic source, absence from AI training sets compounds over time.
loading="lazy" on all images by default — Astro sets loading="lazy" as the default for its built-in <Image /> component. For hero images and above-fold content, lazy loading defers the fetch until the user scrolls — which never happens because the image is already visible. This is the most common LCP failure pattern in Astro sites.
No llms.txt — llms.txt provides AI assistants with a structured, authoritative description of your site's content and purpose. Astro has no built-in mechanism to generate or serve this file. Without it, AI assistants rely entirely on crawled content to describe your site, which may be incomplete, outdated, or misrepresentative.
seo.yatna.ai scores your Astro site across 7 weighted categories:
robots.txt for GPTBot/ClaudeBot, llms.txt presence, schema structured for AI citationloading attribute on LCP images, format (WebP/AVIF), dimensionsA typical Astro site audited on seo.yatna.ai returns results like this:
| Category | Score | Key Finding |
|---|---|---|
| E-E-A-T | 48/100 | No author schema on any blog posts |
| Technical SEO | 55/100 | No sitemap.xml present |
| On-Page SEO | 67/100 | 11 pages missing meta description |
| Schema | 22/100 | No JSON-LD schema site-wide |
| Performance | 74/100 | CLS from hydrating island component |
| AI Readiness | 15/100 | No robots.txt; no llms.txt |
| Images | 58/100 | Hero images using lazy loading |
| Overall | 52/100 | 19 actionable issues found |
Each finding links to the specific URL where the issue was detected and includes a code snippet showing the Astro-specific fix.
Does this audit work for Astro sites deployed on Vercel, Netlify, or Cloudflare Pages? Yes. seo.yatna.ai crawls your live site's rendered output — it doesn't need access to your repo or deployment platform. It evaluates what Google and AI crawlers actually see when they fetch your URLs.
The ViewTransitions canonical issue — how do I fix it?
The safest approach is to ensure every page's canonical tag is set in the server-rendered <head> using a static value based on Astro.url.pathname, not derived from client-side navigation state. Our audit flags any pages where the canonical appears to be inconsistent with the URL being served.
How is this different from running Lighthouse on my Astro homepage? Lighthouse checks one URL for performance. seo.yatna.ai crawls up to 500 pages (depending on tier), validates schema and canonical tags on every page, checks AI crawler configuration at the domain level, and produces a site-wide SEO score — not a single-page snapshot.
My Astro site is fast. Does speed matter that much for SEO? Performance is 10% of the overall score. A fast site with no schema, no sitemap, and no AI crawler configuration will still score poorly overall. The audit shows you exactly which of the remaining 90% to tackle first.
Astro's performance defaults give you a head start. The audit tells you what to add to turn that performance foundation into a site that ranks and gets cited by AI assistants.
Related reading:
7 AI agents. 7 audit categories. One score. Free for your first audit.
Run Free Audit →