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.mdsource 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
for static pages.export const metadata - Use
for dynamic routes (export async function generateMetadata
).tours/[id] - Fetch the tour data inside
to populate tags.generateMetadata
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
and your Page component.generateMetadata - Defaults: Set a global
intitle.template
(e.g.,root layout.tsx
).%s | Tourly - Canonical: Always include
URLs to prevent duplicate content issues.canonical