AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Seo Internal Linking

skill-mvstepanek-nextjs-ecommerce-seo-skills-seo-internal-linking · by mvstepanek

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

No reviews yet
0 installs
42 views
0.0% view→install

Install

$ agentstack add skill-mvstepanek-nextjs-ecommerce-seo-skills-seo-internal-linking

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-mvstepanek-nextjs-ecommerce-seo-skills-seo-internal-linking)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
5mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Seo Internal Linking? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

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
// 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
// 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
// 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
// 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
// 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.

// 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.

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

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.