sitemap.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { MetadataRoute } from 'next';
  2. import { fetchBoardList } from '@/lib/api/forum/board';
  3. const BASE_URL = 'https://bitforum.io';
  4. export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  5. // 정적 페이지
  6. const staticPages: MetadataRoute.Sitemap = [
  7. { url: BASE_URL, changeFrequency: 'daily', priority: 1.0 },
  8. { url: `${BASE_URL}/login`, changeFrequency: 'monthly', priority: 0.3 },
  9. { url: `${BASE_URL}/register`, changeFrequency: 'monthly', priority: 0.3 },
  10. { url: `${BASE_URL}/news`, changeFrequency: 'daily', priority: 0.7 },
  11. { url: `${BASE_URL}/docs`, changeFrequency: 'weekly', priority: 0.5 },
  12. { url: `${BASE_URL}/support/faq`, changeFrequency: 'monthly', priority: 0.4 },
  13. { url: `${BASE_URL}/support/guide`, changeFrequency: 'monthly', priority: 0.4 },
  14. { url: `${BASE_URL}/support/contact`, changeFrequency: 'monthly', priority: 0.3 },
  15. ];
  16. // 동적: 게시판 목록
  17. let boardPages: MetadataRoute.Sitemap = [];
  18. try {
  19. const res = await fetchBoardList();
  20. if (res.success && res.data?.list) {
  21. boardPages = res.data.list
  22. .filter(b => b.isActive)
  23. .map(b => ({
  24. url: `${BASE_URL}/board/${b.code}`,
  25. changeFrequency: 'daily' as const,
  26. priority: 0.8,
  27. }));
  28. }
  29. } catch {
  30. }
  31. return [...staticPages, ...boardPages];
  32. }