Skip to content

SEO lot 2 : pages Tour de Growth statiques (/projets/, /en/projects/) - #73

Merged
ScratchMe merged 1 commit into
mainfrom
claude/cv-repo-seo-gb9joz
Sep 24, 2026
Merged

ScratchMe merged 1 commit into
mainfrom
claude/cv-repo-seo-gb9joz

Conversation

@ScratchMe

Copy link
Copy Markdown
Owner

Mission SEO du 24/09/2026, lot 2.

Ce qui change

  • Une page française et une anglaise par entrée de PROJECT_DETAILS : projets/<slug>.html et en/projects/<slug>.html, entièrement générées depuis scripts/templates/project.html. Aucun code à ajouter pour un nouveau projet.
  • Chaque page : canonical sur soi, hreflang fr/en/x-default, description de la mission (PROJECT_DETAILS.metaDescription), JSON-LD WebPage + BreadcrumbList + WebApplication (creator = #person), contenu complet sans JavaScript.
  • project-detail.html devient l'ancienne adresse : redirection des slugs connus en tête du <head> (vers l'anglais si lang=en), « Projet introuvable » + noindex posé par JS sinon. Ni canonical, ni noindex, ni GoatCounter dans son HTML ; un lien par projet en <noscript>.
  • project-detail.js lit le slug sur <body data-slug> et la langue dans le chemin. langSuffix, syncUrl et lang-pending disparaissent.
  • Liens vers l'étude de cas dans la langue de la page partout : carte, pieds de page, PDF.
  • Sitemap : les deux nouvelles URL avec hreflang, plus de ?slug=. Workflows étendus à projets/. GoatCounter compte le chemin seul.

Vérifications

  • node scripts/check-seo.mjs : 126 critères au vert. Cela inclut les 11 du lot 2, et les critères 4, 8, 9 et 12 du lot 1 appliqués aux pages projet.
  • Généricité : une fausse entrée ajoutée à PROJECT_DETAILS produit ses deux pages et sa redirection ; une fois l'entrée retirée, ses pages sont supprimées.
  • La page projet est identique au pixel près à la capture de référence du lot 0 (390 et 1 440 px).
  • PDF 5 / 5 / 2 / 2 pages ; leurs liens mènent aux nouvelles adresses, dans la bonne langue.

🤖 Generated with Claude Code

https://claude.ai/code/session_011xf6atLum6g68MUw2hi81e


Generated by Claude Code

L'étude de cas vivait à project-detail.html?slug=tour-de-growth : une URL à
paramètre, un pré-rendu unique quel que soit le slug, l'anglais seulement en
JavaScript sur ?lang=en, une description de 97 caractères qui ne disait ni de
qui était le projet ni ce que faisait l'outil, et aucune donnée structurée.

- Une page française et une anglaise par entrée de PROJECT_DETAILS,
  projets/<slug>.html et en/projects/<slug>.html, entièrement générées depuis
  scripts/templates/project.html ; aucun code à ajouter pour un nouveau
  projet (vérifié avec une fausse entrée : deux pages produites, redirection
  ajoutée, pages supprimées une fois l'entrée retirée).
- Chaque page : canonical sur soi, hreflang fr/en/x-default, description de la
  mission (PROJECT_DETAILS.metaDescription), JSON-LD WebPage + BreadcrumbList
  + WebApplication créée par #person, contenu complet sans JavaScript.
- project-detail.js lit le slug sur <body data-slug> et la langue dans le
  chemin ; plus de ?slug=, de ?lang=, de canonical réécrit ni de lang-pending
  (langSuffix/syncUrl supprimés d'i18n.js).
- project-detail.html n'est plus que l'ancienne adresse : redirection des
  slugs connus en tête du <head> (vers l'anglais si lang=en), « Projet
  introuvable » + noindex posé par JS sinon ; ni canonical, ni noindex, ni
  GoatCounter dans son HTML ; un lien par projet en <noscript>.
- Liens vers l'étude de cas dans la langue de la page partout (carte, pieds
  de page, PDF) : i18n.projectUrl() en JS, data-project-href dans les gabarits.
- Sitemap : les deux nouvelles URL avec hreflang, plus de ?slug= ; workflows
  (git add -A sur en/ et projets/, lastmod par correspondance générique) ;
  GoatCounter compte le chemin seul ; README (date du changement d'adresse
  dans GoatCounter) et CLAUDE.md à jour.

check-seo.mjs : 126 critères au vert, dont les 11 du lot 2 et les critères
4, 8, 9 et 12 du lot 1 appliqués aux pages projet ; captures identiques au
pixel à la référence du lot 0 ; PDF 5 / 5 / 2 / 2 pages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011xf6atLum6g68MUw2hi81e
@ScratchMe
ScratchMe merged commit 262159e into main Sep 24, 2026
1 check passed
@ScratchMe
ScratchMe deleted the claude/cv-repo-seo-gb9joz branch September 24, 2026 23:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants