Louis-Étienne Girard

Référencement de restaurants

Site pSEO de référencement de restaurants. 5 millions d'impressions Google cumulées… pour ~30 €/mois de revenus au pic.

C'était un site de référencement de restaurants construit en SEO programmatique (pSEO) : environ 150 000 pages générées automatiquement, une par ville, une par restaurant, indexées par Google, positionnées sur des requêtes locales à fort volume. Construit seul, juste après l'arrêt d'Alara, avec un objectif volontairement inversé : ne plus bâtir un produit compliqué avant de chercher des utilisateurs, mais un site simple, gratuit, monétisé par la publicité et pensé dès le départ pour encaisser l'échelle. La machine à trafic a fonctionné au-delà de mes attentes.

Le problème : après Alara, apprendre le SEO programmatique plutôt que vendre un produit

Alara m'avait laissé une leçon : construire un produit compliqué d'abord, chercher les utilisateurs ensuite, ne fonctionne pas. Plutôt qu'un produit B2B à vendre, un pari B2C gratuit : personne à convaincre de payer, la monétisation viendrait de la publicité affichée autour du contenu. Restait à trouver un sujet capable d'encaisser du volume, ce que la découverte du SEO programmatique (pSEO) a fourni comme cadre : générer automatiquement des milliers de pages à partir de données structurées, plutôt que les écrire une par une.

« Où manger ce soir à [ville] ? » est l'une des requêtes locales les plus tapées de France, et la SERP était occupée par des annuaires génériques mal structurés. Le sujet avait surtout l'avantage de fournir un jeu de données à la fois immense (toutes les villes et tous les restaurants de France) et accessible. Aucune étude de concurrents n'a été menée : l'objectif n'était pas de percer commercialement, mais de se confronter concrètement au pSEO, au référencement à grande échelle et aux problèmes de volumétrie que ça pose, quelques vues sur des dizaines de milliers de pages plutôt que beaucoup de vues sur quelques pages.

La solution : générer 150 000 pages statiques en Next.js

Un générateur de pages ville × restaurant, avec un maillage entre les deux, soit environ 150 000 pages uniques, chacune répondant à une requête locale précise qu'aucun annuaire généraliste ne traitait correctement.

Les fonctionnalités

  • Des données structurées sur chaque fiche (schema.org LocalBusiness), pour que Google comprenne le contenu sans avoir à le deviner.
  • Un maillage interne en rotation, où chaque ville et chaque restaurant reçoit et distribue des liens vers d'autres entités du site, pour faire circuler l'autorité sans dépendre d'une poignée de pages de tête.
  • Des sitemaps segmentés, pour piloter l'indexation famille de pages par famille de pages plutôt qu'en bloc.

Ce que ça a donné

Le site est monté très vite, de septembre à février, avant de passer en roue libre : plus aucun développement actif, juste le site qui tourne seul, en tâche de fond, jusqu'à la décision d'arrêt en 2025. Il reste en ligne aujourd'hui. Le SEO programmatique, sans réserve : indexation massive, positions durables sur la longue traîne locale, trafic organique réel et récurrent. 5 millions d'impressions Google cumulées, pour environ 30 €/mois de revenus au pic. La machine marchait, le business non, et la partie 2 explique précisément où la chaîne casse.

Les chiffres, mois par mois

Relevés automatiquement aux sources (Play Console, AdMob, Search Console), les mêmes que sur Traction.

impressions Google cumulées5 000 000dernier relevé, juin 25
impressions Google cumulées
janv. 220
juil. 22120 000
janv. 23480 000
juil. 231 100 000
janv. 241 900 000
juil. 242 900 000
janv. 254 000 000
juin 255 000 000

Répartition estimée : le total est réel, sa ventilation est reconstituée faute d'un export à la source.

revenus AdSense106,56 €dernier relevé, juin 25
revenus AdSense
oct. 240,35 €
nov. 2410,42 €
déc. 2429,71 €
janv. 254,76 €
févr. 2518,62 €
mars 2527,65 €
avr. 259,51 €
mai 250,89 €
juin 254,65 €
impressions Google1 131 019dernier relevé, juin 25
impressions Google
mars 25791 559
avr. 25223 383
mai 2578 058
juin 2538 019

Sous le capot : Next.js statique, Playwright et data.gouv.fr

Le site est entièrement statique, généré au build avec Next.js, sans aucun backend : l'objectif était la latence la plus faible possible, ne servir que du HTML/CSS déjà prêt. Une base de données regroupe toutes les villes et tous les restaurants, utilisée à la génération. Les données viennent de deux sources : data.gouv.fr pour la liste exhaustive des communes françaises, et Playwright pour scraper les données de restaurants, ville par ville. Hébergé d'abord sur Vercel, migré ensuite sur OVH quand Vercel n'a plus suivi la volumétrie du site, environ 150 000 pages et le trafic qui va avec.

C'est sur ce projet que j'ai appris ce que des dizaines de milliers de pages font à un crawl budget, comment Google traite un site neuf à cette échelle, et comment lire la Search Console au-delà des vanity metrics. Générer des pages est trivial ; les faire crawler, indexer et tenir dans le temps est le vrai métier.

Les chiffres, en clair

MétriqueValeur
Impressions Google cumulées5 000 000+
Pages générées et indexées~150 000
Revenus au pic~30 €/mois (display)
Coût annueldomaine ~10 €/an + hébergement ~71 €/an
Durée de vie~3 ans (2022 – 2025), toujours en ligne

Ce qui a marché

La preuve technique est faite : je sais construire une machine à trafic, génération statique en Next.js, scraping Playwright, indexation, maillage, à l'échelle de 150 000 pages. Et cette compétence, contrairement au site lui-même, ne s'est pas arrêtée avec le projet : elle m'a confirmé que je pouvais ramener du monde par le SEO, et que produire du contenu de masse est, au début, plus facile que produire du contenu de niche monétisé.

Ce qui a raté

La monétisation. Une audience « où manger ce soir ? » a une intention forte mais une valeur publicitaire faible : pas de produit à lui vendre, pas d'affiliation sérieuse, un RPM display dérisoire. 5 millions d'impressions pour le prix d'une pizza par mois. Le trafic n'était pas le problème, l'alignement entre l'intention de recherche et un revenu possible l'était.

Les leçons (transférables)

  1. Choisir la verticale par la monétisation, pas par le volume. Mes projets suivants visent des requêtes où l'intention et le revenu sont alignés : paie, statuts, finance.
  2. Le trafic est une compétence, le revenu est un modèle. Les deux se construisent séparément ; le premier ne crée pas le second par magie.
  3. Le contenu de masse se produit plus facilement, au début, que le contenu de niche monétisé. Utile pour apprendre vite, insuffisant pour construire un revenu.

La suite

Le savoir-faire pSEO, génération statique à grande échelle, scraping, données structurées, lecture fine de la Search Console, reste un actif transférable. Mais la vraie leçon, elle, gouverne tout ce que je construis depuis : choisir une verticale où l'intention de recherche et le revenu peuvent s'aligner, et penser la distribution avant le produit. C'est exactement l'angle de l'app Calcul Salaire Brut Net, une requête à forte demande, un produit utile, l'ASO comme vrai chantier, et c'est ce que je décortique chaque mois sur /traction.