Skip to content
Skillpedia
SEO48k · #3688

nextjs-seo-indexing

Lets your agent fix SEO and indexing issues in Next.js apps. It improves search engine visibility and site health.

What it does

This tool helps fix issues with how Google finds and displays your Next.js website's pages. It checks if SEO settings are correct, if Google can crawl your site efficiently, and if there are errors preventing it from indexing your pages.

When to use it

  • ✓When Google Search Console shows indexing errors.
  • ✓Before launching major site updates to ensure SEO isn't negatively impacted.
  • ✓To check if important pages are being found and displayed correctly by Google.

Example of what to ask your AI

“Check my Next.js site's indexing issues.”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/nextjs-seo-indexing/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/nextjs-seo-indexing/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

The tool analyzes your Next.js site's configurations, such as canonical tags, 'noindex' rules, the sitemap, and how pages are generated. It compares these settings against best practices to ensure Google can crawl and index your content.

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add sickn33/agentic-awesome-skills --skill nextjs-seo-indexing

Or download just the file:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/nextjs-seo-indexing/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

Next.js SEO Indexing & Crawl Budget Skill

Fix Google Search Console coverage issues, canonical problems, sitemap errors, and crawl budget waste in Next.js apps.


When to Use

  • Use when a Next.js site has Google Search Console coverage issues such as duplicate canonicals, accidental noindex, crawl waste, or discovered-but-not-indexed URLs.
  • Use when auditing sitemap, robots.txt, redirect, internal-linking, or static-rendering problems before an SEO release.
  • Use when you need framework-specific examples for Next.js App Router metadata, generateMetadata, robots.js, and sitemap routes.

Understanding Search Console Coverage States

Status Meaning Fix
Crawled – not indexed Google crawled but chose not to index Improve content quality + canonical + internal links
Duplicate without canonical Multiple URLs serve same content, no canonical Add explicit canonical to the preferred URL
Excluded by noindex noindex tag present Remove noindex if page should be indexed
Duplicate, Google chose different canonical Google prefers a different URL than you specified Align canonical with the URL Google naturally picks
Alternative page with proper canonical Correct — non-preferred duplicate pointing to canonical Expected behavior, not a problem
Not found 404 Page deleted or URL changed Add redirect or restore page
Discovered – not indexed Google knows it exists but hasn't crawled it Improve internal linking + crawl budget
Page with redirect Redirect chain or redirect to wrong target Shorten redirect chain, verify destination

Step 1 — Canonical Audit

Next.js App Router (metadata export)

// app/blog/my-post/page.js
export const metadata = {
  title: 'My Post Title',
  alternates: {
    canonical: 'https://www.yourdomain.com/blog/my-post',
  },
};

Next.js App Router (generateMetadata)

export async function generateMetadata({ params }) {
  return {
    alternates: {
      canonical: `https://www.yourdomain.com/blog/${params.slug}`,
    },
  };
}

Common canonical mistakes to fix:

// ❌ WRONG — relative URL
canonical: '/blog/my-post'

// ❌ WRONG — missing trailing slash inconsistency  
// (pick one and stick with it sitewide)

// ✓ CORRECT — absolute URL, consistent scheme + subdomain
canonical: 'https://www.yourdomain.com/blog/my-post'

Step 2 — Noindex Audit

Find pages that are accidentally noindexed:

# Search for noindex in metadata
rg -n --glob '*.{js,ts,jsx,tsx}' 'noindex|robots.*noindex' app pages

# Check layout.js — a noindex here affects ALL pages
grep -n "robots" app/layout.js

In Next.js App Router, robots in the root layout applies globally. Only set it there if you want the whole site affected.

// app/layout.js — only set robots if you need sitewide control
export const metadata = {
  // ✓ Allow indexing
  robots: { index: true, follow: true },
  // ❌ This would noindex the entire site:
  // robots: { index: false }
};

Step 3 — Sitemap Health

Verify sitemap routes return 200 + valid XML

curl -sI https://www.yourdomain.com/sitemap.xml | grep -i "content-type\|status"
curl -s https://www.yourdomain.com/sitemap.xml | head -20

Next.js App Router sitemap (recommended pattern)

// app/sitemap.js
export default async function sitemap() {
  const baseUrl = 'https://www.yourdomain.com';
  
  // Static pages
  const staticPages = [
    { url: baseUrl, lastModified: new Date(), changeFrequency: 'daily', priority: 1.0 },
    { url: `${baseUrl}/about`, lastModified: new Date(), changeFrequency: 'monthly', priority: 0.8 },
  ];
  
  // Dynamic pages (fetch from DB or CMS)
  const posts = await getPosts(); // your data fetch
  const dynamicPages = posts.map(post => ({
    url: `${baseUrl}/blog/${post.slug}`,
    lastModified: new Date(post.updatedAt),
    changeFrequency: 'weekly',
    priority: 0.7,
  }));
  
  return [...staticPages, ...dynamicPages];
}

Multiple sitemaps (sitemap index)

// app/sitemap-tools/sitemap.js  
// app/sitemap-blog/sitemap.js
// Each returns an array of URL entries

Step 4 — Static Rendering Verification

Pages must be statically generated (or SSR with metadata in HTML) for Google to see SEO tags.

# Check build output — pages should show ● (static) not λ (dynamic)
npm run build 2>&1 | grep -E "○|●|λ|/blog|/tools"

…
FAQ

What are canonical tags?

These are instructions that tell Google which is the main version of a page when multiple URLs have the same content, preventing confusion.

What does 'noindex' mean?

It's an instruction that tells Google not to show a specific page in search results.

What is 'crawl budget'?

It's the amount of resources Google dedicates to crawling your website. Good optimization ensures Google spends this 'budget' on your most important pages.

Details

Original description by the author

Fix SEO indexing issues, crawl budget problems, and Search Console coverage errors for Next.js apps. Covers canonical tags, noindex audits, sitemap health, static rendering, and internal linking.

repo: sickn33/agentic-awesome-skills

Popularity

GitHub stars
48k
Ranking position
#3688
License
MIT
Updated
10/15/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills