feat: trim integration pages from 75 to 25 + migrate to MDX
- 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)
This commit is contained in:
@@ -1,9 +1,13 @@
|
||||
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 },
|
||||
@@ -13,20 +17,33 @@ export default function sitemap(): MetadataRoute.Sitemap {
|
||||
{ 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.map((i) => ({
|
||||
url: `/integrations/${i.id}`,
|
||||
priority: 0.7,
|
||||
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'),
|
||||
}
|
||||
})
|
||||
|
||||
const allRoutes = [...publicRoutes, ...integrationRoutes]
|
||||
|
||||
return allRoutes.map((route) => ({
|
||||
url: `${BASE_URL}${route.url}`,
|
||||
lastModified: new Date(),
|
||||
changeFrequency: route.changeFrequency,
|
||||
priority: route.priority,
|
||||
}))
|
||||
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,
|
||||
})),
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user