Ce Qui Se Passe Après la Migration : 8 Jours de Rendements Cumulés
J'ai migré mon blog vers Next.js et j'ai cru que la partie difficile était terminée. Puis les rendements cumulés ont commencé — 6 méga-guides, un assistant IA plus intelligent, une newsletter native, une protection anti-bots et une refonte SEO en 8 jours.
Il y a huit jours, j'ai entièrement reconstruit le backend de mon blog en 4 jours. J'ai migré 485 posts WordPress vers Next.js, ramené Sydney (mon chatbot IA) à la vie, et mis un site en production.
Je pensais que c'était l'histoire. Migration terminée, on célèbre, on passe à autre chose.
J'avais tort. La migration n'était pas la destination — c'était la ligne de départ.
Voici à quoi ressemblait mon site le 5 février contre aujourd'hui :
| Fonctionnalité | 5 fév. (Jour de migration) | 13 fév. (Aujourd'hui) |
|---|---|---|
| Articles de blog | 485 (migrés depuis WordPress) | 492 (6 nouveaux méga-guides) |
| Sydney IA | RAG basique, qualité non testée | Évaluée, optimisée, taux de réussite 81 % |
| Newsletter | Embed Beehiiv (tierce partie) | Native Supabase + Resend, basée sur les intérêts |
| SEO | Sitemap basique + balises meta | Données structurées, FAQ schema, llms.txt, AEO |
| Sécurité | Limitation de taux uniquement | Cloudflare Turnstile + limitation de taux |
| Performance | Vérifications Lighthouse basiques | Profilage systématique avec Chrome DevTools MCP |
| Images à la une | Création manuelle | Pipeline de génération IA (Gemini + auto-optimize) |
Chacune de ces améliorations s'est produite parce que la précédente l'a rendue plus facile. C'est le cumul que je n'avais pas anticipé.
L'Unlock : Ton Blog Est Maintenant du Code
Voici ce que personne ne te dit sur la migration depuis WordPress vers une stack basée sur du code : la migration elle-même n'est pas le but. Le but, c'est ce qui devient possible après.
Quand ton blog est composé de 492 fichiers MDX dans un dépôt Git plutôt que de lignes dans une base de données MySQL, tout change :
- Chaque post est un fichier — Claude Code peut les lire, les rechercher et les modifier à grande échelle
- Chaque changement est un diff — tu peux vérifier exactement ce qui a changé, à travers 50 posts à la fois
- Chaque fonctionnalité est composable — ton système de newsletter peut lire les mêmes métadonnées de post que ton chatbot IA
- Chaque déploiement est une commande —
pnpm build && vercel --prod, terminé
Avec WordPress, mettre à jour 12 articles de blog signifiait se connecter à wp-admin, cliquer à travers chacun, faire des changements, mettre à jour, répéter. Avec des fichiers MDX et Claude Code ? Je pouvais dire « ajoute un lien vers le post pilier des parcs nationaux dans les 12 guides de parcs existants » et il lirait chaque fichier, ajouterait le bon cross-link dans le bon contexte, et me montrerait le diff. Les 12 mises à jour en quelques minutes.
C'est l'unlock. Pas la migration. La vélocité qui vient après.
Six Méga-Guides en 4 Jours
La première chose que j'ai construite après la migration ? Du contenu. Beaucoup.
Je voulais écrire des guides complets pour les expatriés depuis des mois — le genre d'articles piliers de 2 000 à 4 000 mots qui aident vraiment les gens à naviguer dans le chaos du déménagement aux États-Unis. WordPress rendait ça douloureux. Chaque post nécessitait une mise en forme manuelle, des uploads d'images, une configuration du plugin SEO, une gestion des catégories.
Maintenant ? Le pipeline ressemble à ça :
- Brainstormer la structure et le plan du post
- Écrire le MDX complet avec l'optimisation SEO/AEO intégrée
- Générer l'image à la une — Claude lit le post, écrit un prompt, l'envoie à Gemini pour générer l'image
- Optimiser — script Python convertit en WebP, compresse pour le web
- Uploader sur Vercel Blob
- Publier —
git push,vercel --prod,pnpm db:publish - Sydney le sait immédiatement — le post est synchronisé avec Supabase avec des embeddings
Voici ce qui a été publié en ces 4 jours :
| Post | Sujet | Mots |
|---|---|---|
| Guide de santé | HSA, FSA & HDHP expliqués | ~3 200 |
| Construction du crédit | De zéro à un credit score de 720+ | ~3 500 |
| Épargne & Investissement | T-Bills vs HYSA comparatif | ~2 800 |
| Récompenses de cartes de crédit | Stratégie points, miles, cashback | ~3 000 |
| Guide de relocalisation | Playbook complet pour déménager aux US | ~3 800 |
| Parcs nationaux | 26 parcs, 4 road trips | ~4 200 |
Chaque post suit le même schéma AEO : ouvertures réponse-d'abord, tableaux comparatifs, sections de 120 à 180 mots, définitions en gras, FAQ schema en bas. Le genre de structure qui obtient 340 % de citations IA supplémentaires.
Le guide des parcs nationaux était le plus grand — un post pilier renvoyant à 12 critiques de parcs existantes. J'ai aussi construit un composant PhotoGallery pour ça, parce que faire défiler 20 images individuelles était brutal. C'est maintenant une grille propre avec une lightbox. Simple, mais efficace.
Sydney est Devenue Plus Intelligente
Quand j'ai ramené Sydney à la vie lors de la migration, elle fonctionnait — et je l'ai testée manuellement avant le lancement. Elle pouvait répondre aux questions, trouver des posts pertinents, citer des sources. Mais les tests manuels te disent seulement « ça semble correct ». Ça ne te dit pas à quel point, ni où sont les lacunes, ni comment l'améliorer.
Je n'avais aucun moyen systématique de mesurer la qualité — et sans mesure, je n'avais aucun moyen d'améliorer.
Alors j'ai construit un cadre d'évaluation RAG. 32 requêtes de test réparties en 12 catégories, chacune avec des résultats attendus que j'ai curatés à la main. Des questions comme « Quelles cartes de crédit les expatriés devraient-ils obtenir ? » devraient retourner le guide de construction du crédit. « Parle-moi de Yosemite » devrait retourner le compte-rendu de voyage Yosemite.
Ensuite, j'ai testé 30 combinaisons de configuration différentes — 6 seuils de similarité × 5 comptages de résultats — et mesuré le taux de réussite, la précision et la diversité temporelle.
Les résultats étaient révélateurs :
| Métrique | Avant (Défaut) | Après (Optimisé) |
|---|---|---|
| Taux de réussite | ~30 % | 81,2 % |
| Requêtes sans résultat | 6 sur 30 | 0 sur 30 |
| Étendue temporelle | 1,2 ans | 6,7 ans |
La plus grande correction était embarrassante : le SDK OpenAI supprimait silencieusement le paramètre dimensions lors de l'exécution sous Next.js. Sydney générait des embeddings à 1536 dimensions mais cherchait dans un index à 384 dimensions. Pas étonnant que les résultats étaient mauvais. Passer aux appels fetch() directs a tout réglé en une nuit.
J'ai également étendu le prompt système de Sydney pour couvrir tous les 490+ sujets du blog — elle sait maintenant tout sur les parcs nationaux, les cartes de crédit, la santé et l'ensemble de la bibliothèque de contenu pour expatriés. Pas seulement l'IA et le marketing.
Deux commandes pour le tester toi-même :
pnpm eval:rag # Tester contre Supabase local
pnpm eval:rag:prod # Tester contre la production
Maintenant je peux réellement mesurer quand Sydney devient plus intelligente. C'est le genre d'infrastructure que tu ne construis jamais sous WordPress.
SEO et AEO à Grande Échelle
Le SEO en 2026 ne concerne plus seulement Google. Il s'agit d'être cité par ChatGPT, Perplexity et Claude quand quelqu'un pose une question à laquelle ton contenu répond.
J'ai implémenté une stack SEO/AEO complète en un seul week-end :
Pour la recherche traditionnelle :
- Sitemap dynamique (639 pages indexées)
- Données structurées — schemas Person, WebSite, Article, BreadcrumbList, FAQPage
- Flux RSS pour la syndication
- Google Search Console vérifié
Pour les moteurs IA (AEO/GEO) :
llms.txt— un guide de contenu prioritaire pour les crawlers IA (GPTBot, Claude-Web, PerplexityBot tous autorisés dansrobots.txt)- Schéma réponse-d'abord dans chaque ouverture de section (déclaration clé en gras dans les 150 premiers mots)
- H2s en format question qui correspondent à la façon dont les gens interrogent les assistants IA
- Sections FAQ auto-détectées et rendues comme FAQPage schema
Pour la performance :
J'ai utilisé Chrome DevTools MCP pour profiler différents types de pages — page d'accueil, liste d'articles, posts individuels, la page /ask — et j'ai identifié les goulots d'étranglement. Pouvoir exécuter un trace de performance, analyser les résultats et corriger le problème dans la même session Claude Code est... extraordinairement efficace.
Le résultat ? Chaque nouveau post que j'écris reçoit automatiquement des données structurées, un FAQ schema (s'il a une section FAQ), et est formaté pour l'extraction IA. Pas de plugins. Pas de configuration manuelle. C'est juste comme ça que le site fonctionne maintenant.
Beehiiv Dehors, Newsletter Native Dedans
Celui-ci m'a surpris. J'avais une newsletter qui fonctionnait sur Beehiiv. Elle collectait des emails. Elle envoyait des mises à jour. Pourquoi la remplacer ?
Trois raisons :
- Contrôle — je voulais des abonnements basés sur les intérêts. Les abonnés « IA & Technologie » ne devraient pas recevoir du contenu sur les parcs nationaux. Le niveau gratuit de Beehiiv ne supportait pas ça.
- Intégration — mes données d'abonnés vivent maintenant dans la même base de données Supabase que l'index de recherche de Sydney. Une seule source de vérité.
- Coût — Supabase (niveau gratuit) + Resend (niveau gratuit pour faible volume) = 0 $/mois.
Le système que j'ai construit :
- Double opt-in — s'abonner → email de vérification → confirmation → email de bienvenue avec des recommandations personnalisées
- 5 groupes d'intérêts — IA, Vie d'expatrié, Leadership, Marketing, Voyage & Parcs nationaux
- Correspondance intelligente — les catégories de posts correspondent automatiquement aux intérêts des abonnés. Quand je publie un guide de carte de crédit, seuls les abonnés « Vie d'expatrié » sont notifiés.
- Cron quotidien — Vercel exécute un job à 11h PST, trouve les posts des dernières 48 heures, envoie des notifications ciblées
- Déduplication — la table
notification_logempêche les emails en double, à jamais
La meilleure partie ? Le formulaire d'abonnement en bas de chaque article de blog présélectionne automatiquement l'intérêt pertinent en fonction de la catégorie du post. Tu lis un article IA ? La pilule « IA & Technologie » est présélectionnée quand tu fais défiler vers le bas pour t'abonner.
Construire ça de zéro semble beaucoup de travail. C'était environ une soirée d'effort concentré. La migration Supabase, les routes API, les modèles d'email et le cron job — Claude Code a géré l'échafaudage pendant que je me concentrais sur la logique et la rédaction.
Sécurité : Invisible Jusqu'au Moment Nécessaire
Avec un chatbot IA face au public et un formulaire d'inscription à la newsletter, j'avais deux endpoints que les bots adorent abuser. La limitation de taux était déjà en place (Upstash Redis, 5 requêtes par minute), mais je voulais une deuxième couche.
Entrez Cloudflare Turnstile — un CAPTCHA invisible qui n'affiche un défi que s'il suspecte une activité suspecte. Pour 99 % des vrais visiteurs, c'est complètement invisible. Pour les bots ? C'est un mur.
Je l'ai d'abord ajouté à l'endpoint /ask (chat Sydney), puis réutilisé exactement le même schéma pour /api/subscribe. Même bibliothèque de vérification, même dégradation gracieuse :
- Pas de variables d'environnement configurées → bypass (le développement local fonctionne sans)
- L'API Cloudflare est en panne → fail-open (le limiteur de taux est le fallback)
- Token manquant mais la clé secrète est définie → refus (attrape les bots contournant le frontend)
La réutilisation est ce qui fait de ceci une histoire de cumul. L'intégration Turnstile pour la newsletter a pris des minutes, pas des heures, parce que l'infrastructure était déjà là depuis Sydney.
L'Effet de Cumul
Voici ce que je n'avais pas planifié mais qui s'est produit naturellement :
Migration vers Next.js (1-5 fév.)
└─→ Les fichiers MDX permettent à Claude Code de lire/modifier le contenu à grande échelle
└─→ 6 méga-guides écrits avec optimisation SEO/AEO (6-11 fév.)
└─→ Le nouveau contenu expose les problèmes de qualité de recherche de Sydney
└─→ Cadre d'évaluation RAG construit, Sydney optimisée (11 fév.)
└─→ Plus de contenu nécessite une newsletter (pas Beehiiv)
└─→ Newsletter native construite sur Supabase (12 fév.)
└─→ Les endpoints publics nécessitent une protection anti-bots
└─→ Turnstile ajouté à Sydney + subscribe (12-13 fév.)
Rien de tout ça n'était planifié comme une séquence. Chacun révélait le besoin suivant. La migration a rendu la création de contenu rapide. La création rapide de contenu a exposé les lacunes de qualité de recherche. La correction de la recherche m'a fait vouloir une meilleure distribution. Une meilleure distribution avait besoin de protection.
C'est le cumul. Chaque amélioration n'ajoute pas seulement de la valeur — elle multiplie la valeur de tout ce qui est venu avant. :)
Et le fil commun à tout ça ? Chaque pièce de mon site est maintenant du code qui peut être lu, testé et modifié de manière programmatique. C'est le vrai unlock.
Les Chiffres
Parce que je sais que tu te le demandes :
| Métrique | Valeur |
|---|---|
| Jours depuis la migration | 8 |
| Nouveaux articles de blog | 7 (y compris celui-ci) |
| Nouvelles fonctionnalités publiées | 6 (newsletter, Turnstile ×2, éval RAG, stack SEO, PhotoGallery) |
| Articles de blog mis à jour | 12+ (cross-linking, corrections de liens brisés) |
| Lignes de code ajoutées | ~5 600 |
| Tables de base de données ajoutées | 2 (subscribers, notification_log) |
| Endpoints API ajoutés | 4 (subscribe, verify, unsubscribe, cron) |
| Augmentation des coûts | 0 $/mois (tous niveaux gratuits) |
La Suite
Je n'ai pas fini. Le cumul n'a pas cessé :
- Plus de guides pour expatriés — stratégie fiscale, délais de visa, comparaisons bancaires. La série a de l'élan.
- Sydney qui devient plus intelligente — maintenant que je peux mesurer la qualité, je veux pousser le taux de réussite au-delà de 90 %.
- Plus d'analyses approfondies sur la construction avec l'IA — les outils évoluent chaque semaine. Je documente au fur et à mesure. (Dernier en date : construire une app iOS native sans connaître Swift et découvrir que l'IA t'emmène 60 % du chemin — les 40 % restants, c'est là que le produit vit vraiment.)
Mais honnêtement ? Je suis surtout juste ravi de continuer à écrire. Pour la première fois en 17 ans de blogging, publier un nouveau post est vraiment agréable — pas une corvée de 45 minutes sur WordPress. :D
As-tu vécu ce genre de cumul après une migration ou une grande décision technique ? Je suis curieux — quel a été le premier unlock inattendu qui t'a surpris ?
Cordialement,
Chandler
Foire Aux Questions
Qu'est-ce que l'effet de cumul dans le développement web ?
L'effet de cumul, c'est quand chaque amélioration apportée à ton site rend la prochaine amélioration plus rapide et plus facile. Par exemple, migrer vers une stack basée sur du code a permis la création de contenu assistée par IA, ce qui a révélé des problèmes de qualité de recherche, ce qui a conduit à construire un cadre d'évaluation. Chaque étape s'est appuyée sur la précédente.
Comment optimiser les articles de blog pour les moteurs de recherche IA ?
Les moteurs de recherche IA préfèrent le contenu structuré, réponse-d'abord avec des titres clairs et des sections concises. Les techniques clés incluent : des déclarations définitionnelles en gras dans les 150 premiers mots, des titres H2 en format question, des tableaux comparatifs, des sections de 120 à 180 mots et des FAQ schemas. Ces schémas obtiennent jusqu'à 340 % de citations IA supplémentaires.
Qu'est-ce qu'un cadre d'évaluation RAG ?
Un cadre d'évaluation RAG teste à quel point ton assistant IA trouve et retourne du contenu pertinent. Il utilise des requêtes prédéfinies avec des résultats attendus (vérité terrain) et mesure des métriques comme le taux de réussite, la précision et la diversité temporelle. Cela te permet d'optimiser systématiquement tes paramètres de recherche au lieu de deviner.
Pourquoi remplacer Beehiiv par un système de newsletter personnalisé ?
Un système de newsletter personnalisé te donne un contrôle total sur les données des abonnés, le ciblage basé sur les intérêts et l'intégration avec ta base de données existante. En construisant sur Supabase + Resend, j'ai obtenu des abonnements basés sur les intérêts, des notifications automatisées et un hébergement à 0 $/mois — le tout intégré à l'index de recherche de Sydney.
En quoi Cloudflare Turnstile diffère-t-il des CAPTCHAs traditionnels ?
Cloudflare Turnstile est un système de détection de bots invisible qui n'affiche des défis qu'aux visiteurs suspects. Contrairement aux CAPTCHAs traditionnels qui font résoudre des puzzles à chaque utilisateur, Turnstile fonctionne silencieusement pour les utilisateurs légitimes. Il utilise les signaux du navigateur pour détecter les bots sans interrompre l'expérience utilisateur.
Toujours en train de coder, d'apprendre et de regarder l'intérêt composé croître.




