Cyber SEO : 50% de réduction sur tous les abonnements annuels
Préférences

La confidentialité est importante pour nous. Vous avez donc la possibilité de désactiver certains types de stockage qui peuvent ne pas être nécessaires au fonctionnement de base du site Web. Le blocage des catégories peut avoir un impact sur votre expérience sur le site Web. Plus d'informations (Politique de cookies)

Accepter tous les cookies

SEO Next.js : rendu, métadonnées, sitemap et un blog qui se positionne

Guide SEO Next.js : choisir SSG, SSR ou ISR, définir métadonnées et canoniques, générer sitemap.xml, alimenter un blog par webhook et rester lisible par les IA.

Publié le :
25/10/2026
-
Mis à jour le :
25/10/2026
Couverture du guide Sorank sur le SEO Next.js, avec une page rendue côté serveur, ses métadonnées, son sitemap et ses routes de blog

Outils

Thibault Besson-Magdelain, fondateur de Sorank

À propos de l'auteur

Thibault Besson-Magdelain

Fondateur de Sorank, plus de 7 ans d'expérience en SEO, passionné de GEO.
Sur cette page

En bref

Next.js est l'un des meilleurs frameworks React pour le référencement, car il envoie aux robots un HTML complet au lieu d'une coquille vide. Pour vous positionner, prérendez les pages de contenu (génération statique ou ISR), définissez titres, descriptions et canoniques avec la Metadata API, générez sitemap.xml et robots.txt depuis le dossier app, utilisez de vrais liens et des codes HTTP corrects, et gardez le contenu principal hors du code exécuté seulement dans le navigateur, car la plupart des robots des IA n'exécutent pas JavaScript.

Pour aller plus loin, demandez à

Quiz rapide

Le SEO est-il fait pour vous, et comment commencer ?

4 questions rapides pour voir si Google peut vous amener des clients.

Question 1 sur 425%
Les gens cherchent-ils sur Google ce que vous vendez ?

Le SEO Next.js consiste surtout à faire le bon choix route par route : ce qui est rendu sur le serveur, ce qui est mis en cache, et ce qui arrive dans le HTML avant l'exécution du moindre script. Google explique dans ses bases du SEO JavaScript qu'il traite les applications JavaScript en trois phases (exploration, rendu, indexation) et que le rendu côté serveur ou le prérendu « reste une excellente idée ». Next.js le fait par défaut. Ce guide couvre l'App Router (Next.js 13 et suivants), avec des remarques pour l'ancien Pages Router.

Next.js est-il bon pour le SEO ?

Oui. Une application React classique rendue côté client envoie un fichier HTML presque vide et construit la page dans le navigateur ; les moteurs doivent l'exécuter, et beaucoup de robots ne le font jamais. Next.js rend React sur le serveur : la réponse HTML contient déjà les titres, le texte, les liens et les métadonnées. Notre guide du SEO JavaScript explique pourquoi cette différence compte pour l'indexation.

Dans l'App Router, les composants sont des Server Components par défaut. Même les composants marqués 'use client' sont prérendus en HTML sur le serveur. Le point faible, ce sont les données : tout ce que vous chargez dans useEffect, ou seulement après un clic, est absent du HTML initial. Récupérez le contenu dans des Server Components et réservez les composants client à l'interactivité.

SSG, SSR, ISR ou CSR : quel mode de rendu choisir ?

Next.js permet de mélanger les modes route par route. Le choix influe sur la fraîcheur, la vitesse et ce que reçoivent les robots.

ModeQuand le HTML est construitVerdict SEOUsage idéal
Génération statique (SSG)Au moment du buildLe meilleur : HTML complet, très rapidePages d'atterrissage, documentation, articles de fond
Régénération statique incrémentale (ISR)Au build, puis rafraîchi en arrière-plan ou à la demandeLe meilleur pour les sites gros ou changeantsBlogs, catalogues produits, pages issues d'un CMS
Rendu côté serveur (SSR)À chaque requêteBon : HTML complet, dépend de la vitesse du serveurPages personnalisées ou en temps réel
Rendu côté client (CSR)Dans le navigateurFaible : contenu invisible pour la plupart des robotsTableaux de bord derrière une connexion

La documentation Next.js sur l'ISR en liste les avantages : mettre à jour du contenu statique « sans reconstruire tout le site » et gérer un grand nombre de pages sans builds interminables. Une route avec export const revalidate = 3600 est régénérée au plus une fois par heure ; pour un contrôle exact, appelez revalidatePath ou revalidateTag quand le contenu change. L'ISR ne fonctionne pas avec un export statique (output: 'export'). Pour les applications qui doivent rester rendues côté client, notre guide du SEO des applications monopages détaille les solutions.

Astuce

Vérifiez ce que reçoivent les robots, pas ce qu'affiche votre navigateur : lancez curl sur l'URL ou ouvrez le code source (view-source) et cherchez une phrase de l'article. Si elle n'est pas dans le HTML brut, elle dépend de JavaScript.

Comment définir titres, descriptions et canoniques avec la Metadata API ?

La Metadata API remplace next/head dans l'App Router. Selon la documentation Next.js sur les métadonnées, vous exportez un objet metadata statique depuis un layout ou une page, ou une fonction generateMetadata quand les valeurs dépendent de données, et Next.js génère les balises du head. Les deux ne sont pris en charge que dans les Server Components.

export async function generateMetadata({ params }) {
  const { slug } = await params
  const post = await getPost(slug)
  return {
    title: post.title,
    description: post.excerpt,
    alternates: { canonical: `/blog/${slug}` },
    openGraph: { images: [post.cover] },
  }
}

Cinq règles qui évitent la plupart des problèmes :

  • Définissez metadataBase dans le layout racine (votre domaine de production), pour que les canoniques relatives et les URL Open Graph deviennent absolues.
  • Utilisez un modèle de titre dans le layout racine, par exemple '%s | Marque', pour que chaque page ait un titre unique avec la marque une seule fois.
  • Donnez à chaque page indexable une canonique vers elle-même via alternates.canonical ; elle protège des doublons créés par les paramètres d'URL et les barres obliques finales. Notre fiche sur la balise canonique en rappelle les règles.
  • Rédigez une description par page, générée à partir du contenu dans generateMetadata, jamais une valeur par défaut pour tout le site.
  • Ajoutez des images Open Graph avec un fichier opengraph-image dans le dossier de la route, et contrôlez le résultat avec un outil d'aperçu Open Graph.

Sur les pages dynamiques, Next.js diffuse les métadonnées en flux après les premiers octets pour accélérer l'affichage. La documentation précise que ce flux est désactivé pour les robots qui attendent les métadonnées dans le head, détectés par leur user agent (Bingbot, Twitterbot et Slackbot font partie des exemples), et que l'option htmlLimitedBots permet d'adapter la liste. Si un robot qui compte pour vous n'y figure pas, ajoutez-le. Sur le Pages Router, l'équivalent est le composant Head de next/head, avec un attribut key pour éviter les balises en double.

Comment générer sitemap.xml et robots.txt avec Next.js ?

Ce sont deux fichiers spéciaux du dossier app. Un fichier sitemap.ts qui exporte une fonction renvoyant des URL devient /sitemap.xml ; un fichier robots.ts devient /robots.txt. La référence sur le sitemap indique que le fichier est mis en cache par défaut et que la limite de Google est de 50'000 URL par sitemap ; au-delà, generateSitemaps le découpe en plusieurs fichiers.

import type { MetadataRoute } from 'next'

export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const posts = await getPosts()
  return posts.map((p) => ({
    url: `https://example.com/blog/${p.slug}`,
    lastModified: p.updatedAt,
  }))
}

N'y mettez que des URL canoniques, indexables et qui répondent 200, avec la vraie date de mise à jour dans lastModified. Le sitemap accepte aussi alternates.languages pour les sites multilingues. Dans robots.ts, indiquez l'adresse du sitemap et décidez quels robots d'IA peuvent explorer le site ; notre article sur le robots.txt pour les robots des IA les recense. Le format est détaillé dans notre fiche sur le sitemap XML.

Quels détails techniques cassent le plus souvent le SEO d'un site Next.js ?

ProblèmeConséquenceCorrection
Navigation par onClick et router.pushGoogle ne suit que les éléments a dotés d'un hrefUtiliser le composant Link de next/link, qui produit un vrai lien
Contenu introuvable servi en page 200« Soft 404 » dans Search ConsoleAppeler notFound() pour que la route renvoie un statut 404
Redirections temporaires pour des pages déplacéesredirect() envoie un 307Utiliser permanentRedirect() ou permanent: true dans next.config (308)
Barres obliques finales mélangéesDeux URL pour la même pageEn choisir une avec l'option trailingSlash et garder des canoniques cohérentes
Déploiements de préproduction indexésCopies du site en double dans GoogleEnvoyer noindex sur les domaines hors production
Contenu d'onglets chargé au clicTexte absent du HTMLRendre tout le contenu sur le serveur, quitte à le masquer en CSS

Tous ces défauts réduisent l'explorabilité : un robot doit pouvoir découvrir chaque URL par des liens et obtenir un code de statut propre.

Comment ajouter des données structurées dans Next.js ?

La documentation Next.js recommande de rendre le JSON-LD dans une balise script de type application/ld+json directement dans le composant de page ou de layout, à partir des mêmes données que la page, en échappant le caractère < dans le JSON sérialisé pour éviter toute injection. Comme il est rendu sur le serveur, Google et les robots des IA le voient dans le HTML brut. Utilisez Article (ou BlogPosting) pour les articles, Organization dans le layout racine, BreadcrumbList pour les pages profondes et Product en e-commerce. Un générateur de schema vous donne un bloc valide de départ, puis validez la page avec le test des résultats enrichis de Google.

Comment rendre un site Next.js assez rapide pour les Core Web Vitals ?

Next.js fournit les composants qui traitent les causes habituelles de mauvais Core Web Vitals :

  • next/image : redimensionne les images, sert des formats modernes, charge en différé par défaut et exige des dimensions, ce qui évite les décalages de mise en page. Marquez l'image principale au-dessus de la ligne de flottaison comme prioritaire pour qu'elle ne soit pas différée (c'est souvent l'élément du Largest Contentful Paint).
  • next/font : héberge les polices sur votre domaine et évite le décalage dû au remplacement tardif des polices.
  • next/script : charge les scripts tiers avec une stratégie (afterInteractive, lazyOnload) au lieu de bloquer la page.
  • Moins de JavaScript côté client : chaque frontière 'use client' ajoute du code à télécharger et à hydrater, ce qui pèse sur l'Interaction to Next Paint sur mobile.

Mesurez les données de terrain, pas seulement un score de laboratoire : notre guide de PageSpeed Insights montre comment lire les deux.

Comment faire un blog Next.js qui se positionne ?

Un blog Next.js prend en général l'une de ces trois formes : des fichiers MDX ou Markdown dans le dépôt (simple, mais chaque article demande un commit et un déploiement), un CMS headless (Sanity, Contentful, Strapi, Payload) interrogé dans des Server Components, ou un webhook de publication qui reçoit les articles d'un outil externe. Dans les trois cas, le schéma SEO est le même : une route dynamique app/blog/[slug] avec generateStaticParams, generateMetadata, l'ISR, un sitemap alimenté par la même source et une page d'index qui relie tous les articles.

Le webhook sort la publication du cycle de déploiement. Un Route Handler reçoit l'article, l'enregistre, puis revalide les pages concernées :

// app/api/publish/route.ts
import { revalidatePath } from 'next/cache'

export async function POST(request) {
  if (request.headers.get('authorization') !== `Bearer ${process.env.PUBLISH_SECRET}`) {
    return new Response('Unauthorized', { status: 401 })
  }
  const article = await request.json()
  await savePost(article)
  revalidatePath('/blog')
  revalidatePath(`/blog/${article.slug}`)
  return Response.json({ ok: true })
}

Attention

Protégez le point d'entrée par un secret et revalidez le chemin public exact. La documentation sur l'ISR prévient qu'avec plusieurs instances de serveur et le cache fichier par défaut, la revalidation à la demande ne vide que l'instance qui reçoit l'appel ; utilisez un gestionnaire de cache partagé.

Comment le SEO Next.js aide-t-il à être cité par les IA ?

Le rendu serveur est la première condition du GEO (optimisation pour les moteurs génératifs). L'analyse de Vercel de décembre 2024, The rise of the AI crawler, conclut qu'« aucun des grands robots d'IA n'exécute actuellement JavaScript », en citant GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot et PerplexityBot, et compte 569 millions de requêtes de GPTBot et 370 millions de Claude sur son réseau en un mois. Une page Next.js qui prérend son texte, ses titres et son JSON-LD est lisible par tous ; une page rendue côté client ne l'est pas.

La seconde condition, c'est un contenu digne d'être cité : des articles qui répondent à une question par section, avec sources, chiffres et définitions nettes, publiés régulièrement. C'est la partie qu'automatise Sorank, notre produit. Sorank est un logiciel SEO et GEO en autopilote : il trouve vos mots-clés, et son générateur d'articles de blog rédige 20, 60 ou 120 articles par mois avec sources, liens internes et images. Sur un site Next.js, il se connecte par le webhook personnalisé décrit sur la page d'installation : votre Route Handler reçoit chaque article, l'enregistre et revalide le blog. Le suivi des mentions dans les IA vérifie ensuite chaque semaine si ChatGPT, Claude et Gemini citent votre marque.

Formulaire du générateur d'articles de blog Sorank qui crée un article SEO à partir d'un mot-clé cible

En résumé : prérendez chaque page que vous voulez voir trouvée, définissez les métadonnées sur le serveur et alimentez le sitemap depuis la même source que le contenu. Next.js fournit les outils ; les positions et les citations par les IA viennent de ce que vous publiez avec. Pour alimenter un blog Next.js en articles, consultez les offres Sorank, à partir de 49€ par mois avec 3 jours offerts.

Questions fréquentes

Next.js est-il meilleur que React pour le SEO ?

Next.js est construit sur React : la comparaison porte donc sur le mode de rendu. Une application React monopage par défaut se construit dans le navigateur et envoie un HTML presque vide, alors que Next.js prérend les pages sur le serveur ou au build. Les robots, y compris ceux des IA qui n'exécutent pas JavaScript, reçoivent un contenu complet avec Next.js sans réglage supplémentaire.

Next.js génère-t-il un sitemap automatiquement ?

Pas tout seul. Dans l'App Router, vous ajoutez au dossier app un fichier sitemap.ts qui renvoie vos URL, et Next.js le sert à l'adresse /sitemap.xml. Pour les gros sites, generateSitemaps répartit la liste en plusieurs fichiers, car Google accepte jusqu'à 50'000 URL par sitemap.

Faut-il choisir l'App Router ou le Pages Router pour le SEO ?

Les deux peuvent bien se positionner, car les deux prérendent le HTML. L'App Router est le choix recommandé pour un nouveau projet : les Server Components réduisent le JavaScript côté client, et la Metadata API, sitemap.ts et robots.ts gèrent nativement les fichiers SEO. Sur un site existant en Pages Router, migrer vaut rarement la peine pour le seul SEO.

Notre blog pour les entreprises ambitieuses

Nos outils SEO gratuits

Voir tous nos outils gratuits

ILS ONT ESSAYÉ SORANK AVANT VOUS

Les témoignages de fondateurs ambitieux

Croissance organiqueE-commerce

0 à 10000 visiteurs en 5 mois

Celio Fabianomonrobotlavevitre.fr
Croissance organiqueLogiciel

0 à 5'000 clients en 8 mois

Thibault BMsorank.com
Croissance organiqueLoisirs et aviation

0 à 1104 clics en 4 mois

Dominiqueflight-sensations-idf.com
Croissance organiqueLogiciel musical

x30 clics en 4 mois

Valentin Cordiertiger-sounds.com
Croissance organiqueSanté et bien-être

x30 clics en 4 mois

Rodrigue Bretonalthevia.com