SEOLighthousePerformanceCore Web VitalsClaude CodeUltraship

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.

HouseofMVP's··7 min read

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.js is in there because a dependency pulled it in transitively. dayjs does 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)

CheckWhat it finds
Meta tagsMissing title, description, viewport
Canonical URLsMissing, duplicate, or conflicting canonicals across pages
Heading hierarchySkipped levels (H1 → H3), multiple H1s, empty headings
Image alt textMissing alt attributes on images
SitemapMissing sitemap.xml, broken URLs in sitemap
Robots.txtMissing file, blocking important paths
Structured dataMissing JSON-LD, invalid schema markup
AnalyticsDetects GA4, Plausible, PostHog, and 7 more providers

GEO — Generative Engine Optimization (ChatGPT, Perplexity, Gemini)

CheckWhat it finds
llms.txtMissing file that tells AI crawlers about your site
AI crawler accessGPTBot, PerplexityBot, ClaudeBot blocked in robots.txt
Question headingsH2s phrased as statements instead of questions
AI-extractable dataStructured data that AI engines can parse and cite

AEO — Answer Engine Optimization (Featured snippets, voice assistants)

CheckWhat it finds
FAQPage schemaMissing FAQ structured data for "People Also Ask"
Speakable markupNo speakable schema for voice assistants
Answer paragraphsMissing concise 40-60 word answers after question headings
Definition patternsContent 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:

MetricWhat 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 depSizeLighter alternativeSize
moment.js290KBdayjs2KB
lodash530KBNative JS methods0KB
axios50KBNative fetch0KB
uuid20KBcrypto.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:url presence
  • 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:

  1. SEO agent — 60+ rules across SEO, GEO, and AEO
  2. Security agent — secrets, dependencies, OWASP, headers
  3. Performance agent — Lighthouse, Core Web Vitals, bundle analysis
  4. Code quality agent — N+1 queries, memory leaks, sync I/O
  5. 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

GitHub | npm

Build With an AI-Native Agency

Security-First Architecture
Production-Ready in 14 Days
Fixed Scope & Price
AI-Optimized Engineering
Start Your Build

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

50+ products shipped$10M+ funding raised2-week delivery

Already know your scope? Book a Fixed-Price Scope Review

Get Your Fixed-Price MVP Estimate