AI Skills · 6 min read
Google Can't See Your Vibe-Coded Site: 19 Fixes and the Claude Skill That Runs Them
Lovable and Bolt ship pretty sites, not indexable ones. Here are the 19 SEO fixes that make Google actually see your site, the one prompt that runs them all, and a ready-made Claude skill you can drop into any project.
"Key Takeaways"
- AI site builders optimize for the demo, not the search result. Most vibe-coded sites launch with no sitemap, stray noindex tags, and zero schema.
- The fix is 19 items in three passes: make it findable, make it fast, make it credible.
- One prompt (included below) makes Claude Code run the whole checklist and report a status table.
- There is also a ready-made skill file, so Claude remembers the checklist in every future session. Free download at the end.
Summarize this article with
Your vibe-coded site looks great. Google has no idea it exists. That is not bad luck: Lovable, Bolt, and every AI builder generate what the demo needs, and a demo does not need a sitemap.
The good news is that almost everything Google wants lives in code, and Claude can write code. Here is the full checklist in three passes, then the prompt that runs it, then the skill file that makes it permanent.
Pass 1: make it findable
- sitemap.xml. Generate one listing every public route. In Next.js that is a single app/sitemap.ts file; Astro has an official integration; plain sites can ship a static file. Without it, Google discovers your pages by accident.
- robots.txt. Allow crawling and point it at the sitemap. If you find Disallow: / on a production site, that alone explains everything.
- Kill every stray noindex. Template scaffolds often ship with noindex left on from development. Grep for it in meta tags, headers, and framework metadata.
- Canonical tags. One per page, absolute URL, self-referencing by default. This stops Google treating your own URL variants as duplicate content.
- Meta titles. Unique per page, roughly 50 to 60 characters, carrying the keyword a human would search.
- Meta descriptions. Unique per page, roughly 140 to 160 characters, written to earn the click rather than to stuff keywords.
- Schema markup. JSON-LD only. WebSite and Organization at minimum; add Article, Product, or FAQPage only where the content genuinely matches.
- Search Console. The one step code cannot do for you: verify the domain, submit the sitemap, request indexing. Five minutes, and it is how you find out what Google actually sees.
Pass 2: make it fast
- Compress images. Convert heavy PNG and JPG files to WebP or AVIF, use the framework's image component, and set explicit width and height so the layout does not shift while loading.
- Core Web Vitals basics. Lazy-load images below the fold, preload the hero image and fonts, and defer third-party scripts that block rendering.
- Mobile. Viewport meta present, no fixed widths wider than a phone, tap targets a thumb can hit.
- HTTPS everywhere. No http:// asset or link references; mixed content quietly breaks trust with both browsers and crawlers.
- Clean slugs. Routes like /page2-final-v3 get descriptive kebab-case names, with redirects from the old paths so existing links keep working.
Pass 3: make it credible
- Exactly one H1 per page, containing the page's actual topic.
- Proper heading hierarchy. No jumping from h1 to h3 because the h3 looked nicer; headings are structure, not styling.
- Alt text. Descriptive on content images, empty on decorative ones. Google reads it, and so do screen readers.
- Internal links. Every page reachable within three clicks of home, with anchor text that says where the link goes.
- Fix broken links, and add an OG image: og:title, og:description, and a 1200 by 630 image, so shared links stop looking like grey rectangles.
The one-prompt version
Open Claude Code in your project folder and paste this. It detects your framework first, then works through all 19 items:
Audit and fix this project's SEO so Google can see it. Detect the framework first, list what is missing, then fix in code: 1) sitemap.xml listing every public route 2) robots.txt that allows crawling and points to the sitemap 3) remove every stray noindex 4) self-referencing canonical tag on each page 5) unique meta titles around 50-60 characters 6) unique meta descriptions around 140-160 characters 7) JSON-LD schema, WebSite plus Organization minimum, never fake ratings 8) give me exact Search Console verification steps 9) compress heavy images to WebP/AVIF with explicit width and height 10) lazy-load below-the-fold images, preload the hero, defer render-blocking third-party scripts 11) viewport meta and no mobile overflow 12) no http:// mixed content 13) clean kebab-case slugs with redirects from old paths 14) exactly one H1 per page 15) no skipped heading levels 16) descriptive alt text on content images 17) contextual internal links with descriptive anchors 18) fix or remove broken internal links 19) og:title, og:description, og:image at 1200x630 and twitter card meta. Finish with a status table per item: fixed, needs my action, or not applicable. And don't touch anything else.
The golden rule: and don't touch anything else
That last line is not decoration. An SEO pass that also refactors your components is how a working site breaks the night before launch. The prompt and the skill both end with the same instruction: minimal, reversible changes, nothing outside the checklist.
Make it permanent: the skill file
A prompt works once. A skill is the same checklist saved into your project, so any future Claude session knows it: you type a request like fix my SEO and it runs the full audit with the golden rule built in.
Download the skill file from the button below, save it in your project as .claude/skills/seo-audit/SKILL.md, then start Claude Code and say: run the seo-audit skill. To have it available in every project, save the same file under ~/.claude/skills/seo-audit/ instead.
What no prompt can do
Backlinks are earned off-site; no code change creates them, and anyone selling coded backlinks is selling you a penalty.
If your site is a client-side-rendered SPA with no prerendering, that is often the real reason Google sees nothing. The skill flags this honestly and proposes your framework's prerender or SSG option as a separate decision, because it is a bigger change than an SEO pass.
Quick questions
Does this need a paid SEO tool?
No. Everything here runs inside Claude Code on the plan you already have. Search Console, the one external tool involved, is free.
How long until Google shows my site?
The fixes take minutes; indexing takes days to a few weeks. Submitting the sitemap and requesting indexing in Search Console after you deploy is what starts the clock.
I don't use Claude Code yet. Where do I start?
Install it once with: npm install -g @anthropic-ai/claude-code, then open your project folder in the terminal and type claude. From there the prompt above, or the skill file, does the rest.
Will this work on my framework?
The skill detects the stack first: Next.js, Astro, SvelteKit, Nuxt, Vite with React, or plain HTML. The checklist is the same; only the file names change.
Get the skill file
One file, free, no sign-up. Save it as .claude/skills/seo-audit/SKILL.md in your project, tell Claude to run the seo-audit skill, and check the status table it hands back before your next deploy.
Download the seo-audit skill