portfolio_v2/app/robots.ts
franck ec005b1622 Refonte du portfolio : profil GitHub, CV, SEO, export statique
- Accueil façon profil GitHub (bio, homelab, projets épinglés, parcours)
  avec fond dégradé et panneaux liquid glass
- /cv : consultable en ligne (thème sombre), imprimable en PDF propre
  (thème clair, 1 page) ; numéro de téléphone non scrapable
- Pages d'erreur 404 / 500 / global-error animées (GSAP)
- Métadonnées : Open Graph, Twitter, JSON-LD Person, sitemap, robots
  (allowlist Google + bots d'aperçu, reste bloqué)
- Images OG et favicon en PNG statiques
- Contenu du CV : Saint-Paul, langues, expériences détaillées
- Export statique (output: export) + DEPLOY.md
- Retrait de l'indicateur de dev Next.js et des fichiers du starter

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T3hzMzvei419MwkKFZkvMX
2026-09-08 19:33:47 +04:00

62 lines
1.3 KiB
TypeScript

import type { MetadataRoute } from "next";
export const dynamic = "force-static";
// Moteurs de recherche + robots d'aperçu de lien (pour que le référencement
// et les cartes Open Graph continuent de fonctionner quand tu partages le site).
const ALLOWED = [
"Googlebot",
"Google-InspectionTool",
"Bingbot",
"DuckDuckBot",
"facebookexternalhit",
"Twitterbot",
"LinkedInBot",
"Slackbot-LinkExpanding",
"Discordbot",
"TelegramBot",
"WhatsApp",
];
// Robots d'entraînement IA et scrapers connus : bloqués explicitement.
const BLOCKED = [
"GPTBot",
"ChatGPT-User",
"OAI-SearchBot",
"ClaudeBot",
"Claude-Web",
"anthropic-ai",
"Google-Extended",
"PerplexityBot",
"CCBot",
"Bytespider",
"Amazonbot",
"Applebot-Extended",
"Meta-ExternalAgent",
"FacebookBot",
"cohere-ai",
"Diffbot",
"Omgilibot",
"ImagesiftBot",
"YouBot",
"AhrefsBot",
"SemrushBot",
"MJ12bot",
"DotBot",
"DataForSeoBot",
"Scrapy",
];
export default function robots(): MetadataRoute.Robots {
return {
rules: [
...ALLOWED.map((userAgent) => ({ userAgent, allow: "/" })),
...BLOCKED.map((userAgent) => ({ userAgent, disallow: "/" })),
// Tout le reste : interdit.
{ userAgent: "*", disallow: "/" },
],
sitemap: "https://francktwl.fr/sitemap.xml",
host: "https://francktwl.fr",
};
}