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 metadatafor static pages. - • Use
export async function generateMetadatafor dynamic routes (tours/[id]). - • Fetch the tour data inside
generateMetadatato populate tags.
Example (Dynamic Metadata)
typescript
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
generateMetadataand your Page component. - •Defaults: Set a global
title.templateinroot layout.tsx(e.g.,%s | Tourly). - •Canonical: Always include
canonicalURLs to prevent duplicate content issues.