Skip to content

SEO: lire le sitemap plutôt que mapper fichier→URL à la main #703

@lacatoire

Description

@lacatoire

Problème

Le script `scripts/ping-indexers.ts` introduit dans #702 rejoue à la main la logique fichier→URL dans `filesToUrls()`. Ce mapping est partiel et va inévitablement diverger du sitemap réel :

  • Modifier `src/app/layout.tsx` ou `src/app/globals.css` impacte toutes les pages, aucune URL n'est pingée.
  • Modifier `data/navigation.ts`, `data/testimonials.ts`, `data/jobs.ts` impacte les pages correspondantes, aucune URL n'est pingée.
  • Modifier `src/app/article/[slug]/page.tsx` (template) est skip (`.includes("[")`), alors qu'une modif de template devrait idéalement re-ping tous les articles.
  • Tout nouveau type de route (parallel route, intercepting route) ne sera pas capté tant que le regex du script n'est pas mis à jour.

Solution

Remplacer `filesToUrls()` par une lecture du sitemap généré ou un import de `src/app/sitemap.ts`. Piste :

  • Après le build, parser `out/sitemap.xml` pour extraire toutes les URLs publiques.
  • Comparer avec la liste du déploiement précédent pour calculer les URLs nouvelles/modifiées (diff de sitemap + heuristique `lastModified`).
  • OU : ping l'intégralité du sitemap à IndexNow (qui accepte un sitemap comme source) et laisser Bing décider quoi recrawler.

Acceptance

  • `scripts/ping-indexers.ts` ne code plus le mapping fichier→URL en dur.
  • Les modifications de `layout.tsx`, `data/`, `src/lib/` déclenchent un ping approprié.
  • La logique a des tests unitaires.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions