Claude-skill-registry-data managing-seo-metadata

Strategies for dynamic SEO using Next.js Metadata API. Use to generate social share cards and search-engine-friendly titles for tours.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry-data
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry-data "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/managing-seo-metadata" ~/.claude/skills/majiayu000-claude-skill-registry-data-managing-seo-metadata && rm -rf "$T"
manifest: data/managing-seo-metadata/SKILL.md
source content

SEO and Metadata Strategy

When to use this skill

  • Any page intended for public discovery (Tours, Destinations, Blog).
  • Creating dynamic OpenGraph (OG) images for social media sharing.

Workflow

  • Use
    export const metadata
    for static pages.
  • Use
    export async function generateMetadata
    for dynamic routes (
    tours/[id]
    ).
  • Fetch the tour data inside
    generateMetadata
    to populate tags.

Example (Dynamic Metadata)

export async function generateMetadata({ params }): Promise<Metadata> {
    const { id } = await params;
    const tour = await TourService.getById(id);

    return {
        title: `${tour.title} | Tourly`,
        description: tour.description.substring(0, 160),
        openGraph: {
            images: [tour.images[0]],
        },
    };
}

Instructions

  • Memoization: Next.js automatically deduplicates fetch requests between
    generateMetadata
    and your Page component.
  • Defaults: Set a global
    title.template
    in
    root layout.tsx
    (e.g.,
    %s | Tourly
    ).
  • Canonical: Always include
    canonical
    URLs to prevent duplicate content issues.