import { readFileSync, writeFileSync } from 'node:fs'; import { resolve, dirname } from 'node:path'; import { fileURLToPath } from 'node:url'; const __dirname = dirname(fileURLToPath(import.meta.url)); const root = resolve(__dirname, '..'); const today = new Date().toISOString().split('T')[0]; const staticRoutes = [ { url: '/', priority: '1.0', changefreq: 'weekly' }, { url: '/about', priority: '0.8', changefreq: 'monthly' }, { url: '/services', priority: '0.8', changefreq: 'monthly' }, { url: '/pricing', priority: '0.8', changefreq: 'weekly' }, { url: '/blog', priority: '0.9', changefreq: 'daily' }, { url: '/privacy-policy', priority: '0.3', changefreq: 'yearly' }, { url: '/terms-of-use', priority: '0.3', changefreq: 'yearly' }, ]; let blogRoutes = []; try { const posts = JSON.parse(readFileSync(resolve(root, 'public/blog/posts.json'), 'utf-8')); blogRoutes = posts.map(p => ({ url: `/blog/${p.slug}`, priority: '0.7', changefreq: 'monthly', lastmod: p.date || today, })); } catch { console.warn('Could not read posts.json, skipping blog routes'); } const allRoutes = [ ...staticRoutes.map(r => ({ ...r, lastmod: today })), ...blogRoutes, ]; const xml = ` ${allRoutes.map(r => ` https://ai-impress.com${r.url} ${r.lastmod} ${r.changefreq} ${r.priority} `).join('\n')} `; writeFileSync(resolve(root, 'public/sitemap.xml'), xml, 'utf-8'); console.log(`Sitemap generated with ${allRoutes.length} URLs`);