agentleFS
ek33450505ek33450505/claude-agent-team/skills/seo-checklist/SKILL.md

seo-checklist

Skill8 starsChanged 32 days agoMITView on GitHub

SEO and GEO (Generative Engine Optimization) checklist for web projects. Load when reviewing page metadata, structured data, technical SEO, Core Web Vitals, and generative-engine optimization. Covers classic search visibility and LLM-crawler optimization.

2 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

6 rules. About 0 are common, 3 are distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Format: Use JSON-LD in <script type="application/ld+json"> blocks (preferred by both Google and modern LLM crawlers).

    line 20
  2. Distinctive:

    Validation: Test with schema.org examples and Google's Rich Results Test.

    line 23
  3. Distinctive:

    Duplicate content: Avoid multiple URLs serving identical content.

    line 30
  4. Very specific:

    Metadata export: Use Next.js 13+ metadata export in page.tsx instead of HTML <meta> tags.

    line 55
  5. Distinctive:

    next/image: Always use for images to enable automatic format negotiation, responsive sizing, and lazy-loading (improves CWV).

    line 64
  6. Very specific:

    Dynamic routes: If using generateStaticParams(), ensure all variants are covered for SEO discoverability.

    line 65

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

SEO & GEO Checklist

Metadata Basics

  • Page <title>: Unique, descriptive, ≤60 characters (fits Google SERP). For React/Next: use dynamic <title> tag or Next.js metadata export.
  • Meta description: 120–160 characters, clearly summarizes page value. Should answer "why visit this page?"
  • Canonical URL: Prevents duplicate-content penalties. Set <link rel="canonical" href="..."> or via Next.js metadata.metadataBase.
  • Open Graph tags: For social sharing and preview cards. Include og:title, og:description, og:image (1200×630 px recommended), og:url, og:type.
  • Twitter Card tags: twitter:card, twitter:title, twitter:description, twitter:image for Twitter/X sharing preview.

Structured Data (JSON-LD)

  • Format: Use JSON-LD in <script type="application/ld+json"> blocks (preferred by both Google and modern LLM crawlers).
  • Schema types: Choose applicable types: Organization (company info), Article (blog posts/news), Product (e-commerce), BreadcrumbList (site navigation), FAQPage (Q&A content).
  • Why it matters: Enables Google rich results (star ratings, recipes, job listings) AND helps LLM crawlers understand semantic structure for more accurate citations/excerpts.
  • Validation: Test with schema.org examples and Google's Rich Results Test.

Technical SEO

  • Sitemap.xml: Submit to search engines via robots.txt or Search Console. For Next.js: use next-sitemap or manually generate and serve from /public/sitemap.xml.
  • robots.txt: Define crawl budget and disallowed paths. Basic rule: User-agent: * + Allow: /. For Vercel: robots.txt auto-generated; check /robots.txt.
  • Semantic HTML: Single <h1> per page, no skipped heading levels (h1 → h2/h3, not h1 → h4). Use <header>, <main>, <nav>, <article>, <section> landmark elements. Overlaps with accessibility-first HTML — see typescript-conventions Accessibility section.
  • Duplicate content: Avoid multiple URLs serving identical content. Use canonical tags to point to preferred version.
  • Index coverage is a separate question: Everything above is "is the page well-formed". Whether a URL is actually in Google's index — and why not — is diagnosed differently: Discovered – currently not indexed is a crawl-budget signal, Crawled – currently not indexed is a content-quality verdict, and only GSC URL Inspection reports either. For that, plus the inspection quota arithmetic, stratified sampling, sitemap segmentation for per-family coverage, and the soak-window rule, load seo-index-census.

Core Web Vitals (CWV)

Target thresholds (Google's metric for rank/user experience):

  • LCP (Largest Contentful Paint): ≤2.5s. Optimized images, preload critical resources.
  • INP (Interaction to Next Paint): ≤200ms. Break long JavaScript tasks, defer non-critical work.
  • CLS (Cumulative Layout Shift): ≤0.1. Reserve space for late-loading fonts/ads, set image dimensions.

Common React/Vite culprits:

  • Unoptimized images (use <img> with width/height or lazy-load). In Next.js, use next/image for automatic optimization.
  • Late-loading web fonts (specify font-display: swap or preload via <link rel="preload">).
  • JavaScript bundle size; code splitting with dynamic imports for route-based or intersection-observer-based chunks.
  • Hydration cost on initial page load (minimize render work in client-side React, consider streaming SSR).

GEO (Generative Engine Optimization)

  • llms.txt: An emerging convention (not universally adopted yet) analogous to robots.txt for AI crawlers. Place at /.well-known/llms.txt or /llms.txt. Specifies which content is quotable/extractable and any usage policies. Example: Allow: /blog/* (LLMs may cite blog posts). Check llms.txt specification for current status before relying on it.
  • Quotable content: Structure facts and claims clearly near the top of the page. LLMs prioritize declarative, extractable statements over marketing fluff. Avoid burying key information in prose; use lists, tables, or Q&A formats.
  • Q&A sections: Direct question-answer content maps well to LLM-answer-engine excerpting. Pair each Q with a concise A. Markup with <dl> + schema FAQPage or QAPage JSON-LD for best results.
  • Byline and metadata: Attribution, publication date, author expertise signals improve trustworthiness in LLM citations.

Next.js-Specific

  • Metadata export: Use Next.js 13+ metadata export in page.tsx instead of HTML <meta> tags.
    export const metadata: Metadata = {
      title: "Page Title",
      description: "Page description",
      openGraph: { title: "...", description: "...", images: [{ url: "..." }] },
    };
  • Sitemap and robots.txt: Auto-generated by Next.js. Customize in app/sitemap.ts and app/robots.ts (App Router).
  • next/image: Always use for images to enable automatic format negotiation, responsive sizing, and lazy-loading (improves CWV).
  • Dynamic routes: If using generateStaticParams(), ensure all variants are covered for SEO discoverability.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.