Faire remonter son nom sur Google : le SEO d'un portfolio Next.js, sans budget
Ce qu'il faut réellement faire pour qu'un portfolio sorte en premier sur la recherche de son propre nom. Données structurées, sameAs, sitemap — et les leviers gratuits hors du code.
Un portfolio qui ne sort pas quand un recruteur tape votre nom ne sert à rien. Le cas est particulier : sur une requête de marque — votre nom — la concurrence est quasi nulle, mais Google doit d'abord comprendre que ce nom vous désigne, et que ce site vous appartient. Voici la démarche complète, sans un euro dépensé.
Le nom de domaine porte le premier signal
Un domaine du type mon-projet-xi.vercel.app ne contient pas votre nom. Sur Vercel, renommer le projet coûte deux minutes et donne une URL en votre-nom.vercel.app : la correspondance exacte entre la requête et le domaine est l'un des signaux les plus lisibles pour un moteur sur une requête de marque. Un vrai domaine reste supérieur à terme, mais le sous-domaine gratuit fait déjà 80 % du travail.
Données structurées : relier le nom, la personne et le site
Le JSON-LD n'améliore pas le classement directement. Il fait autre chose, plus utile ici : il dit explicitement à Google que l'entité Person nommée X est la même que celle dont les profils LinkedIn et GitHub portent ce nom, et que ce site est son site officiel. C'est le rôle de sameAs.
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Person",
"@id": "https://exemple.dev/#person",
"name": "Prénom Nom",
"alternateName": ["pseudo", "Prenom Nom"],
"url": "https://exemple.dev",
"sameAs": [
"https://www.linkedin.com/in/pseudo/",
"https://github.com/pseudo",
"https://dev.to/pseudo"
]
},
{
"@type": "WebSite",
"@id": "https://exemple.dev/#website",
"url": "https://exemple.dev",
"name": "pseudo",
"publisher": { "@id": "https://exemple.dev/#person" }
}
]
}Le @graph avec des @id qui se référencent vaut mieux que trois blocs isolés : les entités forment un ensemble cohérent au lieu de trois affirmations sans lien.
Les métadonnées Next.js qu'on oublie
Dans l'App Router, quatre champs font une vraie différence et sont rarement renseignés : la balise canonique, les directives robots explicites, l'image de partage, et le sitemap.
export const metadata = {
metadataBase: new URL(SITE_URL),
alternates: { canonical: "/" },
robots: {
index: true,
follow: true,
googleBot: {
index: true,
follow: true,
"max-image-preview": "large", // autorise la grande vignette
"max-snippet": -1,
},
},
};max-image-preview: large est ce qui autorise Google à afficher une grande image dans le résultat. Sur une requête de nom propre, c'est la différence entre une ligne de texte et un bloc visuel qui occupe l'écran.
L'image de partage, générée par le framework
Next embarque next/og : un fichier app/opengraph-image.js qui exporte un composant React suffit à produire une image 1200×630 à la volée. Aucune dépendance, aucun outil de design. Sans elle, un lien partagé sur LinkedIn ou WhatsApp affiche un rectangle vide.
Le contenu reste le seul levier durable
Un portfolio d'une seule page offre une seule page à indexer. Un blog en offre une par article, chacune capable de ressortir sur des requêtes que le nom seul n'atteindra jamais. Deux articles techniques sincères valent mieux que vingt textes creux : Google mesure le temps passé sur la page, et un texte creux se voit.
Les leviers gratuits en dehors du code
- Google Search Console : ajouter la propriété, soumettre le sitemap, puis demander l'indexation de l'URL à la main. Sans cette étape, l'attente se compte en semaines.
- Bing Webmaster Tools : importable en un clic depuis Search Console. Bing alimente aussi les réponses de plusieurs assistants IA.
- Le champ « site web » du profil LinkedIn : un lien depuis un domaine à forte autorité vers le vôtre, gratuit, et souvent laissé vide.
- Le lien du profil GitHub, la bio des réseaux sociaux, la signature d'un profil de plateforme freelance : autant de liens cohérents qui pointent vers la même URL.
- Republier un article sur dev.to ou Hashnode avec une balise canonique vers l'original : la visibilité de la plateforme, sans le duplicate content.
Le délai réel
Compter de quelques jours à trois semaines entre la demande d'indexation et l'apparition stable sur la requête de nom. Ce n'est pas instantané, et aucun outil payant n'accélère ça de façon fiable. La régularité de publication, elle, accélère tout le reste.