Aller au contenu
duxt

SEO

Ce que chaque page émet pour les robots et les cartes sociales, quel module l'écrit, et la seule valeur que la couche ne peut pas deviner.

Chaque page émet un head complet, une description structurée d'elle-même, une carte sociale et une entrée dans la sitemap. L'essentiel est écrit par Nuxt SEO, que la couche installe comme un seul bundle ; le reste est la partie qui dépend des versions et des traductions, et elle appartient à la couche. Une valeur doit venir de vous.

Par page

  • Meta — le titre suivi du nom du site, la description, et le couple og:/twitter: qui en découle. og:type et og:url sont posés par page ; og:locale et ses alternatives viennent des langues que le site sert.
  • JSON-LD — un graphe par page : un WebSite (et votre Organization, une fois définie) déclarés à l'échelle du site, plus un TechArticle et une BreadcrumbList construite à partir du fil que dessine le fil d'Ariane.
  • Une image Open Graph, rendue depuis le gabarit propre à la couche — sur la page d'accueil aussi. Fournissez un composant du même nom pour la remplacer.
  • canonical et robots, qui forment la moitié versionnée — voir URL et versions. Le canonique d'une ancienne version pointe vers la version courante ; c'est pourquoi la couche l'écrit elle-même au lieu de laisser celui du module.

La page d'erreur porte noindex, follow : une 404 indexée concurrence la page que le lecteur cherchait, et les suggestions qu'elle propose sont de vraies pages qu'un robot doit encore pouvoir atteindre.

À l’échelle du site

/sitemap.xml liste les pages de la version par défaut, par langue. Une version qui n'est pas celle par défaut en est exclue puisque ses pages portent de toute façon noindex, et une version eol en est exclue qu'elle soit la version par défaut ou non : lister l'une ou l'autre revient à demander à un robot d'aller chercher exactement ce que la page lui dira ensuite d'écarter. /robots.txt est généré à côté.

duxt.organization est ce qui nomme l'éditeur — voir Configuration. Non défini, le site se décrit toujours comme un WebSite ; ce qu'il perd, c'est l'entité derrière, celle que lit un panneau de connaissances ou un résumé d'IA pour créditer une source.

Ce qui est vérifié, et ce qui est seulement signalé

pnpm check:seo lit les pages construites et échoue sur un second canonical, un hreflang absent, une page d'erreur indexable, un og:locale au mauvais format, ou un graphe qui ne s'analyse pas. Il tourne dans pnpm check après le build, parce que ces balises n'existent que dans le HTML rendu.

Le vérificateur de liens signale au lieu d'échouer. Un lien qui ne mène nulle part fait déjà échouer le build via les vérifications de build propres à la couche, celles qui comprennent les versions et les replis de langue ; l'apport du module ici, c'est le panneau devtools et la vérification en direct pendant la rédaction.

La seule valeur que vous devez indiquer

L’origine. hreflang, canonical, le sitemap et les images Open Graph sont toutes des URL absolues, et une couche ne peut pas connaître le domaine sur lequel elle sera déployée. Définissez i18n.baseUrl ou NUXT_PUBLIC_I18N_BASE_URL ; la couche le copie vers site.url, où les modules SEO vont le chercher.

Laissée vide, chacune retombe sur une sortie relative plutôt que d’inventer un domaine. C’est le choix délibéré : un canonical relatif se résout toujours correctement, alors qu’un canonical deviné est activement faux — il dirigerait un robot vers le site de quelqu’un d’autre.

Une variable de plus pour un déploiement progressif

NUXT_OG_IMAGE_SECRET signe les URL des images Open Graph. Sans elle, un secret est généré par compilation, ce qui convient pour une instance et non pour deux : une carte dont l’URL a été signée par une instance est rejetée par la suivante, et un lien partagé pendant un déploiement progressif perd donc son image. Générez-la une fois ; elle ne tourne pas.

Cette page vous a-t-elle été utile ?