- Add dedicatedPage flag to integration registry (25 true, 50 false) - Delete hardcoded nextjs/react/vue/wordpress route pages (wrong metadata) - Hub page routes non-dedicated integrations to /integrations/script-tag - Add 301 redirects for 50 removed slugs → /integrations/script-tag - Migrate guide content from TSX to MDX (content/integrations/*.mdx) - Add gray-matter, next-mdx-remote, remark-gfm dependencies - Add content loader (lib/integration-content.ts) matching ciphera-website pattern - Add prebuild script for integration guide index generation - Sitemap reduced from 83 to 35 URLs with real lastmod dates - Remove seoDescription from registry (now in MDX frontmatter)
50 lines
1.8 KiB
TypeScript
50 lines
1.8 KiB
TypeScript
import type { MetadataRoute } from 'next'
|
|
import { integrations } from '@/lib/integrations'
|
|
import { getIntegrationGuides } from '@/lib/integration-content'
|
|
|
|
const BASE_URL = 'https://pulse.ciphera.net'
|
|
|
|
export default function sitemap(): MetadataRoute.Sitemap {
|
|
const guides = getIntegrationGuides()
|
|
const guidesBySlug = new Map(guides.map((g) => [g.slug, g]))
|
|
|
|
const publicRoutes = [
|
|
{ url: '', priority: 1.0, changeFrequency: 'weekly' as const },
|
|
{ url: '/about', priority: 0.8, changeFrequency: 'monthly' as const },
|
|
{ url: '/features', priority: 0.9, changeFrequency: 'monthly' as const },
|
|
{ url: '/pricing', priority: 0.9, changeFrequency: 'monthly' as const },
|
|
{ url: '/faq', priority: 0.7, changeFrequency: 'monthly' as const },
|
|
{ url: '/changelog', priority: 0.6, changeFrequency: 'weekly' as const },
|
|
{ url: '/installation', priority: 0.8, changeFrequency: 'monthly' as const },
|
|
{ url: '/integrations', priority: 0.8, changeFrequency: 'monthly' as const },
|
|
{ url: '/integrations/script-tag', priority: 0.6, changeFrequency: 'monthly' as const },
|
|
]
|
|
|
|
const integrationRoutes = integrations
|
|
.filter((i) => i.dedicatedPage)
|
|
.map((i) => {
|
|
const guide = guidesBySlug.get(i.id)
|
|
return {
|
|
url: `/integrations/${i.id}`,
|
|
priority: 0.7,
|
|
changeFrequency: 'monthly' as const,
|
|
lastModified: guide?.date ? new Date(guide.date) : new Date('2026-03-28'),
|
|
}
|
|
})
|
|
|
|
return [
|
|
...publicRoutes.map((route) => ({
|
|
url: `${BASE_URL}${route.url}`,
|
|
lastModified: new Date('2026-03-28'),
|
|
changeFrequency: route.changeFrequency,
|
|
priority: route.priority,
|
|
})),
|
|
...integrationRoutes.map((route) => ({
|
|
url: `${BASE_URL}${route.url}`,
|
|
lastModified: route.lastModified,
|
|
changeFrequency: route.changeFrequency,
|
|
priority: route.priority,
|
|
})),
|
|
]
|
|
}
|