How to Run SEO Audits and Lighthouse Performance Tests in Claude Code
TL;DR: Audit SEO, run Lighthouse, check Core Web Vitals, track bundle sizes, and optimize OG tags inside Claude Code using Ultraship. 60+ rules. Free forever.
TL;DR
- Most developers deploy without checking SEO or running Lighthouse. Then wonder why Google de-ranks them.
- Ultraship runs 60+ SEO rules, Lighthouse via headless Chrome, bundle tracking, and OG tag validation — inside Claude Code.
- Covers traditional SEO, GEO (AI search), and AEO (featured snippets/voice).
- Free Claude Code plugin:
claude plugin add ultraship.
Why Developers Ignore SEO and Performance
You're building a SaaS product. Your focus is on features, not meta tags. You'll "do SEO later." If you're using Claude Code for MVP development, adding an automated SEO audit step before deploy takes minutes and saves weeks of ranking recovery.
Here's what "later" looks like:
- Your LCP (Largest Contentful Paint) is 4.2 seconds. Google considers anything above 2.5 seconds "poor." Your page is being de-ranked and you don't know it.
- Your OG tags are broken. Your Product Hunt launch post on Twitter shows a gray box instead of your preview image. You don't notice for 6 hours.
- Your bundle is 2.3MB.
moment.jsis in there because a dependency pulled it in transitively.dayjsdoes the same thing in 2KB. - ChatGPT and Perplexity can't cite your content because you blocked AI crawlers in
robots.txt. You didn't even know that was a thing.
These aren't edge cases. These are the default outcomes when SEO and performance aren't part of your deploy workflow. For a complete treatment of what GEO optimization requires beyond the audit, read the GEO guide for 2026.
How to Run an SEO Audit in Claude Code
What does Ultraship's SEO audit check?
Ultraship's /seo command scans across three optimization layers:
Traditional SEO (Google, Bing)
| Check | What it finds |
|---|---|
| Meta tags | Missing title, description, viewport |
| Canonical URLs | Missing, duplicate, or conflicting canonicals across pages |
| Heading hierarchy | Skipped levels (H1 → H3), multiple H1s, empty headings |
| Image alt text | Missing alt attributes on images |
| Sitemap | Missing sitemap.xml, broken URLs in sitemap |
| Robots.txt | Missing file, blocking important paths |
| Structured data | Missing JSON-LD, invalid schema markup |
| Analytics | Detects GA4, Plausible, PostHog, and 7 more providers |
GEO — Generative Engine Optimization (ChatGPT, Perplexity, Gemini)
| Check | What it finds |
|---|---|
| llms.txt | Missing file that tells AI crawlers about your site |
| AI crawler access | GPTBot, PerplexityBot, ClaudeBot blocked in robots.txt |
| Question headings | H2s phrased as statements instead of questions |
| AI-extractable data | Structured data that AI engines can parse and cite |
AEO — Answer Engine Optimization (Featured snippets, voice assistants)
| Check | What it finds |
|---|---|
| FAQPage schema | Missing FAQ structured data for "People Also Ask" |
| Speakable markup | No speakable schema for voice assistants |
| Answer paragraphs | Missing concise 40-60 word answers after question headings |
| Definition patterns | Content not in "[Term] is [definition]" format |
How to run the SEO audit
claude plugin add ultraship
/seo
Or run the scanner directly:
node tools/seo-scanner.mjs ./your-project
How to Run Lighthouse in Claude Code
What does Ultraship's Lighthouse audit measure?
Ultraship runs Lighthouse via headless Chrome and extracts:
| Metric | What it measures | "Good" threshold |
|---|---|---|
| LCP (Largest Contentful Paint) | Time until the largest visible element renders | < 2.5 seconds |
| CLS (Cumulative Layout Shift) | Visual stability — how much the page jumps around | < 0.1 |
| TBT (Total Blocking Time) | Time the main thread is blocked by scripts | < 200ms |
| FCP (First Contentful Paint) | Time until the first text or image renders | < 1.8 seconds |
| SI (Speed Index) | How quickly content is visually populated | < 3.4 seconds |
| TTI (Time to Interactive) | Time until the page is fully interactive | < 3.8 seconds |
Plus:
- LCP element identification (which element is slowest)
- Unused JS/CSS quantification (how much code you're loading but not using)
- Third-party impact analysis (which external scripts slow you down)
- Top 10 opportunities ranked by potential savings
How to run a Lighthouse audit
/perf
Or run directly:
node tools/lighthouse-runner.mjs https://your-app.com
Bundle Size Tracking
Why does bundle size matter for SEO?
Google uses page speed as a ranking factor. Your bundle size directly affects:
- LCP — larger bundles take longer to parse and render
- TBT — more JavaScript means more main thread blocking
- TTI — the page can't be interactive until scripts finish executing
A 2MB bundle on a 3G connection takes 8+ seconds to download. Your users are gone before the page loads.
How to track bundle size in Claude Code
/bundle
Ultraship's bundle tracker:
- Analyzes
dist/,build/,.next/,out/directories - Reports JS/CSS/image sizes with largest files
- Detects heavy dependencies with lighter alternatives
- Saves reports for before/after comparison
- Warns on unexpected growth between builds
What heavy dependencies does Ultraship detect?
| Heavy dep | Size | Lighter alternative | Size |
|---|---|---|---|
| moment.js | 290KB | dayjs | 2KB |
| lodash | 530KB | Native JS methods | 0KB |
| axios | 50KB | Native fetch | 0KB |
| uuid | 20KB | crypto.randomUUID() | 0KB |
OG Tag Validation
What are OG tags and why do they matter?
Open Graph (OG) tags control how your page appears when shared on Twitter, LinkedIn, Facebook, Slack, and Discord. Broken OG tags mean:
- No preview image on social shares
- Wrong title or description
- Broken links in social cards
How to validate OG tags
node tools/og-validator.mjs ./your-project
Ultraship checks:
og:title,og:description,og:image,og:urlpresence- Image URL reachability (returns HTTP 200 with correct content-type)
- Twitter card meta tags
- Correct image dimensions (1200x630 recommended)
Content Quality Scoring
How to check content readability
/content
Ultraship's content scorer measures:
- Flesch Reading Ease — higher is easier to read (aim for 60-70 for general audiences)
- Flesch-Kincaid Grade Level — the US school grade needed to understand your content
- Keyword density — with optional target keyword
- Thin content detection — pages with fewer than 300 words
- Wall-of-text warnings — paragraphs longer than 150 words
- GEO heading analysis — are your H2s phrased as questions for AI search?
The /ship Command: Everything at Once
Instead of running SEO, performance, and security audits separately, use /ship:
/ship
One command dispatches 5 parallel agents:
- SEO agent — 60+ rules across SEO, GEO, and AEO
- Security agent — secrets, dependencies, OWASP, headers
- Performance agent — Lighthouse, Core Web Vitals, bundle analysis
- Code quality agent — N+1 queries, memory leaks, sync I/O
- Browser agent — automated smoke tests
Auto-fixes what it can. Produces a scorecard. Score above 80 = ready to ship.
Frequently Asked Questions
What is the best Claude Code plugin for SEO?
Ultraship is the best Claude Code plugin for SEO because it scans 60+ rules across three optimization layers — traditional SEO (Google/Bing), GEO (AI search engines), and AEO (featured snippets/voice assistants). No other Claude Code plugin covers all three.
How do I run Lighthouse inside Claude Code?
Install Ultraship (claude plugin add ultraship) and run /perf. It runs Lighthouse via headless Chrome and extracts all Core Web Vitals, LCP element identification, unused code analysis, and optimization opportunities.
How do I check my Core Web Vitals?
Run /perf with Ultraship installed. It reports LCP, CLS, TBT, FCP, SI, and TTI with comparisons against Google's "good" thresholds.
What is a good Lighthouse score?
A Lighthouse performance score of 90+ is considered "good." Scores between 50-89 are "needs improvement." Below 50 is "poor." Ultraship's /ship command uses 80 as the minimum threshold for deployment readiness. For SaaS products where page speed directly impacts conversion rates, hitting 90+ on every core page should be a launch requirement. The MVP launch checklist includes Lighthouse targets alongside other production readiness gates.
How do I reduce my bundle size?
Run /bundle with Ultraship. It identifies your largest files, detects heavy dependencies (moment.js, lodash, axios) and suggests lighter alternatives (dayjs, native methods, fetch). Save reports with --save to track size changes over time.
Is Ultraship free?
Yes. Free forever. MIT license. No pro tier. No paywalls. 1 dependency. Zero telemetry. For solo founders shipping SaaS products, Ultraship combines with the Claude Code security audit guide and TDD workflow to cover the full pre-deploy checklist. Use the AI Readiness Assessment to evaluate where your current workflow needs the most reinforcement before adding tooling for AI integration projects.
Audit Your Site
claude plugin add ultraship
/ship
Build With an AI-Native Agency
Free: 14-Day AI MVP Checklist
The exact checklist we use to ship production-ready MVPs in 2 weeks. Enter your email to download.
Free Estimate in 2 Minutes
Already know your scope? Book a Fixed-Price Scope Review
