pounce/frontend/src/app/sitemap.ts
yves.gugger 6323671602 feat: Transparent auction valuations & comprehensive SEO optimization
AUCTION VALUATIONS (Transparent):
- All auctions now include real-time valuation from ValuationService
- Shows: estimated_value, value_ratio, potential_profit, confidence
- Displays exact formula: "$50 × Length × TLD × Keyword × Brand"
- value_ratio helps identify undervalued domains (> 1.0 = opportunity)
- Added valuation_note in API response explaining methodology

VALUATION FORMULA EXPLAINED:
  Value = $50 × Length_Factor × TLD_Factor × Keyword_Factor × Brand_Factor

  Examples from API response:
  - healthtech.app: $50 × 1.0 × 0.45 × 1.3 × 1.32 = $40
  - blockchain.tech: $50 × 1.0 × 0.35 × 3.0 × 1.12 = $60
  - metaverse.ai: $50 × 1.6 × 1.2 × 3.0 × 1.1 = $315

SEO OPTIMIZATIONS:
- Root layout: Full Metadata with OpenGraph, Twitter Cards, JSON-LD
- JSON-LD Schema: Organization, WebSite, WebApplication with SearchAction
- robots.txt: Allows all crawlers including GPTBot, Claude, ChatGPT
- sitemap.ts: Dynamic sitemap with all pages + popular TLD pages
- Auctions layout: Page-specific meta + ItemList schema
- TLD Pricing layout: Product comparison schema

LLM OPTIMIZATION:
- robots.txt explicitly allows AI crawlers (GPTBot, Anthropic-AI, Claude-Web)
- Semantic HTML structure with proper headings
- JSON-LD structured data for rich snippets
- Descriptive meta descriptions optimized for AI summarization

FILES ADDED:
- frontend/src/lib/seo.ts - SEO configuration & helpers
- frontend/src/app/sitemap.ts - Dynamic sitemap generation
- frontend/src/app/auctions/layout.tsx - Auctions SEO
- frontend/src/app/tld-pricing/layout.tsx - TLD Pricing SEO
- frontend/public/robots.txt - Crawler directives
2025-12-08 13:57:06 +01:00

102 lines
2.3 KiB
TypeScript

import { MetadataRoute } from 'next'
const siteUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://pounce.ch'
// Popular TLDs to include in sitemap
const popularTlds = [
'com', 'net', 'org', 'io', 'ai', 'co', 'dev', 'app', 'tech', 'xyz',
'de', 'ch', 'uk', 'eu', 'fr', 'nl', 'at', 'it', 'es', 'pl',
'info', 'biz', 'me', 'online', 'site', 'store', 'shop', 'blog', 'cloud',
]
export default function sitemap(): MetadataRoute.Sitemap {
const now = new Date().toISOString()
// Static pages
const staticPages: MetadataRoute.Sitemap = [
{
url: siteUrl,
lastModified: now,
changeFrequency: 'daily',
priority: 1.0,
},
{
url: `${siteUrl}/tld-pricing`,
lastModified: now,
changeFrequency: 'hourly',
priority: 0.9,
},
{
url: `${siteUrl}/pricing`,
lastModified: now,
changeFrequency: 'weekly',
priority: 0.8,
},
{
url: `${siteUrl}/auctions`,
lastModified: now,
changeFrequency: 'hourly',
priority: 0.8,
},
{
url: `${siteUrl}/about`,
lastModified: now,
changeFrequency: 'monthly',
priority: 0.6,
},
{
url: `${siteUrl}/blog`,
lastModified: now,
changeFrequency: 'weekly',
priority: 0.6,
},
{
url: `${siteUrl}/contact`,
lastModified: now,
changeFrequency: 'monthly',
priority: 0.5,
},
{
url: `${siteUrl}/careers`,
lastModified: now,
changeFrequency: 'monthly',
priority: 0.5,
},
{
url: `${siteUrl}/privacy`,
lastModified: now,
changeFrequency: 'yearly',
priority: 0.3,
},
{
url: `${siteUrl}/terms`,
lastModified: now,
changeFrequency: 'yearly',
priority: 0.3,
},
{
url: `${siteUrl}/imprint`,
lastModified: now,
changeFrequency: 'yearly',
priority: 0.3,
},
{
url: `${siteUrl}/cookies`,
lastModified: now,
changeFrequency: 'yearly',
priority: 0.3,
},
]
// TLD detail pages (high value for SEO)
const tldPages: MetadataRoute.Sitemap = popularTlds.map((tld) => ({
url: `${siteUrl}/tld-pricing/${tld}`,
lastModified: now,
changeFrequency: 'daily' as const,
priority: 0.7,
}))
return [...staticPages, ...tldPages]
}