# Seo Internal Linking

> Internal linking strategy and rules for SEO. Use when adding navigation, breadcrumbs, footer links, related products, cross-links, or language switcher components.

- **Type:** Skill
- **Install:** `agentstack add skill-mvstepanek-nextjs-ecommerce-seo-skills-seo-internal-linking`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [mvstepanek](https://agentstack.voostack.com/s/mvstepanek)
- **Installs:** 0
- **Category:** [Developer Tools](https://agentstack.voostack.com/c/developer-tools)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [mvstepanek](https://github.com/mvstepanek)
- **Source:** https://github.com/mvstepanek/nextjs-ecommerce-seo-skills/tree/main/skills/seo-internal-linking

## Install

```sh
agentstack add skill-mvstepanek-nextjs-ecommerce-seo-skills-seo-internal-linking
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Internal Linking SEO Guidelines

Follow these rules when building navigation, breadcrumbs, and cross-linking features.

## Why Internal Linking Matters

Internal links distribute PageRank (ranking power) across your site and help search engines discover pages. A product page with 50 internal links pointing to it will outrank an identical page with only 1 internal link.

## Use next/link for All Internal Links

- **Always use `` from `next/link`** for internal navigation — never raw `` tags
- next/link enables client-side navigation (faster) and prefetching (even faster)
- Raw `` tags trigger full page reloads

```typescript
// GOOD
import Link from 'next/link';

  {product.name}

// BAD

  {product.name}

```

## Breadcrumbs

Every page except the homepage should have visible breadcrumbs AND matching BreadcrumbList schema. Note: as of January 2025, Google no longer displays breadcrumbs in mobile search results (they still appear on desktop). Breadcrumbs remain valuable for desktop SERP display, site hierarchy understanding, and user navigation.

### Implementation Rules

1. **Mirror the URL/site hierarchy** — Home > Category > Subcategory > Product
2. **Every level is a clickable link** except the current page
3. **Current page is plain text** (not a link)
4. **Consistent across locales** — same hierarchy, translated labels
5. **Visible in the page** — not hidden, not only in schema
6. **Minimum 2 breadcrumb items required** for Google to recognize the trail
7. **Represent the user's navigation path**, not necessarily the URL hierarchy

```typescript
// Example breadcrumbs component — adapt to your project
import Link from 'next/link';
import { JsonLd } from './JsonLd';
// Example import — use your project's actual config
import { siteConfig } from '@/config/site';

interface Crumb {
  label: string;
  href?: string;
}

export function Breadcrumbs({ items, locale }: { items: Crumb[]; locale: string }) {
  const schema = {
    "@type": "BreadcrumbList",
    itemListElement: items.map((item, index) => ({
      "@type": "ListItem",
      position: index + 1,
      name: item.label,
      ...(item.href ? { item: `${siteConfig.url}${item.href}` } : {}),
    })),
  };

  return (
    <>
      
      
        
          {items.map((item, index) => (
            
              {item.href ? (
                {item.label}
              ) : (
                {item.label}
              )}
            
          ))}
        
      
    
  );
}

// Usage on a product page:

```

## Anchor Text

Anchor text (the clickable text of a link) tells search engines what the target page is about.

### Rules

- **Use descriptive text** — the product name, category name, or action
- **Never use "click here"** or "read more" or "learn more" as the sole anchor text
- **Include keywords naturally** — "View our industrial widgets" not "click here for products"
- **Vary anchor text** — don't use the exact same text for every link to the same page
- **Don't over-optimize** — natural language, not keyword-stuffed

```typescript
// GOOD

  Wireless Headphones

  {product.name} — {product.shortSpec}

// BAD
Click here
Read more
Link
```

## Related Products / Cross-Linking

Product pages should link to related products:

1. **Same category** — other products in a similar range
2. **Compatible accessories** — add-ons, parts, maintenance kits for this product
3. **Upgrade/downgrade** — next model up/down in the range
4. **Bundles** — if this product is part of a bundle, link to the bundle

```typescript
// components/RelatedProducts.tsx
export function RelatedProducts({ products, locale }: Props) {
  return (
    
      Related Products
      
        {products.map(product => (
          
            
              
              {product.name}
            
          
        ))}
      
    
  );
}
```

## Navigation (Header/Footer)

### Header Navigation
- Include links to top-level categories
- Include subcategory links in dropdown menus
- Links should use the current locale prefix
- Include the language/country switcher

### Footer Navigation
- Include links to: all top-level categories, FAQ, contact, legal, services
- **Consistent across all pages and locales** — same structure, translated labels
- Footer links help search engines discover important pages from every page on the site

### Language Switcher

The language/country switcher MUST:

1. **Link to the same page** in the target locale — not the homepage
2. **Preserve the full URL path** — switching from `/en-GB/products/123/widget-pro` to French → `/fr-FR/products/123/widget-pro`
3. **Be a visible, crawlable link** — not hidden behind JavaScript-only interaction
4. **Use `` from next/link**

```typescript
// components/LanguageSwitcher.tsx
export function LanguageSwitcher({ currentLocale, currentPath }: Props) {
  return (
    
      {ALL_LOCALES.map(locale => (
        
          {getLocaleName(locale)}
        
      ))}
    
  );
}
```

**Why the switcher matters for SEO**: Search engine crawlers use the language switcher to discover locale variants of pages. If the switcher only links to homepages, crawlers won't efficiently find all localized versions.

## Nofollow Usage

Use `rel="nofollow"` sparingly and only where appropriate:

| Link Type | nofollow? | Reason |
|-----------|-----------|--------|
| Internal navigation | No | You want PageRank to flow |
| Internal product links | No | You want PageRank to flow |
| External affiliate links | Yes | Paid/sponsored links |
| User-generated content | Yes | Untrusted content |
| Login/register links | Optional | Low SEO value |
| Social media links | No | But they're external, so limited value |

**Default rule**: Do NOT add nofollow to internal links. Only add it to external untrusted or paid links.

```typescript
// External affiliate link — use nofollow

  Partner Name

// Internal link — NEVER nofollow

  {productName}

```

## Common Mistakes to Avoid

1. **Raw `` for internal links** — always use next/link
2. **"Click here" anchor text** — use descriptive text
3. **Language switcher linking to homepage** — must preserve current page path
4. **Missing breadcrumbs** — required on every page except homepage
5. **Breadcrumb schema without visible breadcrumbs** — both must exist and match
6. **nofollow on internal links** — never nofollow your own pages
7. **Orphan product pages** — every product must be linked from at least one category page

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [mvstepanek](https://github.com/mvstepanek)
- **Source:** [mvstepanek/nextjs-ecommerce-seo-skills](https://github.com/mvstepanek/nextjs-ecommerce-seo-skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-mvstepanek-nextjs-ecommerce-seo-skills-seo-internal-linking
- Seller: https://agentstack.voostack.com/s/mvstepanek
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
