← ClaudeAtlas

nextjs-seolisted

Next.js App Router SEO optimization and auditing. Use when implementing or fixing SEO in a Next.js app — metadata and generateMetadata, viewport/themeColor, Open Graph and og/twitter images (file conventions + ImageResponse), web app manifest, favicons/icons, sitemap.xml, robots.txt, canonical URLs, hreflang/i18n alternates, JSON-LD structured data and rich results, Core Web Vitals (LCP/INP/CLS), AI search/GEO and AI crawler rules (GPTBot, OAI-SearchBot), or diagnosing Google indexing problems (Search Console, "Discovered/Crawled - currently not indexed"). Also use to run an SEO audit checklist. Not for general Next.js feature work unrelated to SEO.
laguagu/claude-code-nextjs-skills · ★ 42 · Web & Frontend · score 86
Install: claude install-skill laguagu/claude-code-nextjs-skills
# Next.js SEO Optimization Comprehensive SEO guide for Next.js App Router applications. ## Quick SEO Audit Run this checklist for any Next.js project: 1. **Check robots.txt**: `curl https://your-site.com/robots.txt` 2. **Check sitemap**: `curl https://your-site.com/sitemap.xml` 3. **Check metadata**: View page source, search for `<title>` and `<meta name="description">` 4. **Check JSON-LD**: View page source, search for `application/ld+json` 5. **Check Core Web Vitals**: Use PageSpeed Insights (pagespeed.web.dev) and the Search Console CWV report for field data — Lighthouse is lab-only and can't measure INP ## Essential Files ### app/layout.tsx - Root Metadata ```typescript import type { Metadata, Viewport } from 'next'; // Viewport must be a separate export — `themeColor`, `colorScheme`, and // `viewport` inside the `metadata` object are not supported. export const viewport: Viewport = { width: 'device-width', initialScale: 1, maximumScale: 5, userScalable: true, themeColor: [ { media: '(prefers-color-scheme: light)', color: '#ffffff' }, { media: '(prefers-color-scheme: dark)', color: '#0a0a0a' }, ], }; export const metadata: Metadata = { metadataBase: new URL('https://your-site.com'), title: { default: 'Site Title - Main Keyword', template: '%s | Site Name', }, description: 'Compelling description with keywords (150-160 chars; Google typically displays this range)', keywords: ['keyword1', 'keyword2', 'keyword3'], openGraph: {