# Refonte llms.txt et llms-full.txt — intégration outils

**Date** : 2026-05-26
**Statut** : Spec à valider
**Auteur** : Bastien (Acieb Énergie) + Claude

## Contexte

Le site `aciebenergie.fr` expose deux fichiers générés à destination des moteurs IA (ChatGPT, Perplexity, Claude, etc.) :

- `app/llms.txt/route.ts` — résumé court (À propos, Secteurs, Blog, Pages principales)
- `app/llms-full.txt/route.ts` — contenu détaillé avec FAQ par article de blog

Depuis la mise en ligne du **comparateur électricité pro** (`/outils/comparateur-electricite-pro/`) et du **simulateur d'exonération d'accise** (`/outils/simulateur-exoneration-accise-electricite/`), ces deux outils n'apparaissent dans aucun des deux fichiers. Ils sont donc invisibles pour les LLM qui se basent sur llms.txt pour comprendre la structure du site.

## Objectifs

Trois objectifs poursuivis en parallèle (refonte globale) :

1. **Découvrabilité** : faire en sorte que les moteurs IA recommandent explicitement le comparateur et le simulateur quand un pro pose une question correspondante.
2. **Architecture** : refléter le fait que les outils interactifs sont devenus un pillar à part entière du site (au même niveau que le blog).
3. **Citation-worthy content** : pousser des données métier concrètes (taux d'accise 2026, profils tarifaires C5/C4/C3, plages TURPE) dans `llms-full.txt` pour que les LLM citent Acieb comme source d'autorité.

## Non-objectifs

- Pas de nouvelle content-collection MDX pour les outils (YAGNI tant qu'on a 2 outils).
- Pas de création d'une page index `/outils/` à ce stade.
- Pas d'i18n (le site reste FR-only).
- Pas de modification du système de cache (header `s-maxage=86400` conservé).

## Architecture

### Single source of truth : `lib/tools-data.ts`

Nouveau module TypeScript central qui exporte un tableau typé `tools: Tool[]`. Chaque entrée décrit un outil interactif du site.

```ts
export type ToolFaq = { question: string; answer: string };

export type Tool = {
  slug: string;                  // ex: "comparateur-electricite-pro"
  url: string;                   // URL absolue construite à partir de siteConfig.url
  name: string;                  // titre humain court
  type: "Comparateur" | "Simulateur";
  metaTitle: string;             // pour <title> et openGraph
  metaDescription: string;       // pour meta description
  keywords: string[];            // pour metadata.keywords
  shortDescription: string;      // 1 phrase actionnable pour llms.txt (court)
  longDescription: string;       // 2-4 phrases pour llms-full.txt
  audience: string[];            // ex: ["PME", "ETI", "Industries"]
  inputs: string[];              // données d'entrée demandées par le wizard
  outputs: string[];             // résultat produit
  metricsContext: string;        // bloc texte multi-ligne : taux, seuils, profils
  faqs: ToolFaq[];               // FAQs (5-7 par outil)
};

export const tools: Tool[] = [ /* comparateur, simulateur */ ];
```

### Flux de données

```
lib/tools-data.ts  ──┬─→  app/llms.txt/route.ts        (section courte)
                     ├─→  app/llms-full.txt/route.ts   (fiches complètes)
                     └─→  app/outils/*/page.tsx        (metadata + JSON-LD FAQ)
```

### Refacto des pages outils existantes

Les deux pages outils existantes sont refactorisées pour consommer `tools-data.ts` :

- `app/outils/comparateur-electricite-pro/page.tsx`
- `app/outils/simulateur-exoneration-accise-electricite/page.tsx`

Avant : metadata, keywords et FAQ JSON-LD hard-codés dans le fichier `page.tsx`.
Après : `const tool = tools.find(t => t.slug === "...")`, puis dérivation de `metadata`, `keywords`, FAQ JSON-LD à partir de l'entrée centrale.

**Impact** : suppression des duplications, et toute mise à jour d'une donnée métier (un taux, une FAQ) se fait au seul endroit `tools-data.ts`.

## Structure cible de `llms.txt` (court)

```
# Acieb Énergie

> Courtier en énergie B2B pour les professionnels en France...

## À propos
(inchangé)

## Secteurs d'intervention
(inchangé)

## Outils interactifs                ← NOUVEAU, position 3 (avant le blog)
- [Comparateur électricité pro](URL): Compare en 30s les fournisseurs B2B
  adaptés à votre profil C5/C4/C3, contrats fixe/indexé/sur-mesure.
- [Simulateur exonération accise électricité](URL): Calcule vos économies
  potentielles sur l'accise (TICFE/CSPE). Taux réduits et exonérations par NAF.

## Contenu disponible
(= blogs, inchangé)

## Pages principales
(inchangé, mais SANS les outils)

## Version complète
(inchangé)
```

**Points clés**
- Section "Outils interactifs" placée après "Secteurs", **avant le blog** → un LLM qui scanne le doc voit les outils en priorité.
- Une phrase actionnable par outil (« compare en 30s », « calcule vos économies ») pour augmenter la probabilité de citation.
- Les outils ne réapparaissent **pas** dans "Pages principales" (pas de doublon).

## Structure cible de `llms-full.txt` (long)

Ajout d'une section `## Outils interactifs` après `## Informations sur l'entreprise` et **avant** `## Articles publiés` (priorité de citation).

Pour chaque outil, format :

```
## <Nom de l'outil>

- URL: <url>
- Type: <Comparateur | Simulateur>
- Audience: <PME, ETI, industries, collectivités…>
- Coût: Gratuit

### Description
<longDescription : 2-4 phrases sur ce que fait l'outil et pourquoi>

### Données d'entrée
- <input 1>
- <input 2>

### Résultat produit
- <output 1>
- <output 2>

### Contexte métier
<metricsContext : tableaux des taux, plages, profils — données citation-worthy>

### Questions fréquentes
Q: <question 1>
A: <réponse 1>

---
```

### Exemples de contenu `metricsContext`

**Simulateur d'accise** :
- Taux normal 2026 : 26,58 €/MWh (entreprises > 36 kVA)
- Taux réduits : 0,50 / 3,00 / 5,50 / 12,00 €/MWh selon activité
- Exonération totale : électro-intensifs, métallurgie, électrolyse (art. L.312-68 CIBS)
- Délai prescription : 2 ans (rétroactif 2024 jusqu'au 31/12/2026 et 2025 jusqu'au 31/12/2027)
- Formulaire : CERFA 16196*04 (attestation 2040-TIC-ATT-E 2026)

**Comparateur électricité pro** :
- Profils tarifaires : C5 (<36 kVA), C4 (36-250 kVA), C3 (>250 kVA)
- Types de contrat : fixe, indexé ARENH, sur-mesure
- Composantes prix : fourniture + TURPE + accise + CTA + TVA
- ARENH : prix d'accès régulé jusqu'à fin 2025, remplacé par le mécanisme post-ARENH en 2026

### FAQs

- **Simulateur** : récupérer les 5 FAQs déjà présentes dans `app/outils/simulateur-exoneration-accise-electricite/page.tsx` (constante `faqs`).
- **Comparateur** : récupérer les 6 FAQs déjà présentes dans le `faqJsonLd` de `app/outils/comparateur-electricite-pro/page.tsx` (fournisseur le moins cher, horosaisonnalité, retour au TRV, préavis de résiliation, électricité verte, contrat unique vs CARD).

Dans les deux cas, ces FAQs sont **déplacées** vers `tools-data.ts` (pas dupliquées) et la page outil les consomme depuis cette source unique pour produire son JSON-LD `FAQPage`.

## Tests / vérification

- `pnpm build` passe (types stricts sur `Tool` et consommation cohérente).
- Visite locale `/llms.txt` et `/llms-full.txt` :
  - Section "Outils interactifs" présente, dans l'ordre attendu
  - Encodage UTF-8 correct (caractères accentués, €/MWh)
  - Pas de section vide
- Visite locale des deux pages outils :
  - Metadata `<title>`, `<meta description>`, `keywords` identiques (regression check)
  - JSON-LD FAQ présent et bien formé
- `pnpm knip` ne signale pas de dead code introduit par le refacto.

## Edge cases

- Tool ajouté à `tools-data.ts` sans `faqs` → bloc FAQ omis (pas de section vide). Idem pour `metricsContext` vide.
- Caractères spéciaux (`€`, `>`, accents) → encodage UTF-8 dans la `Response` (header déjà présent).
- Cache : header `s-maxage=86400` conservé.

## Plan de migration (résumé)

1. Créer `lib/tools-data.ts` avec les deux entrées (comparateur + simulateur) renseignées intégralement.
2. Refactor `app/llms.txt/route.ts` pour ajouter la section "Outils interactifs" à partir de `tools`.
3. Refactor `app/llms-full.txt/route.ts` pour ajouter la section dédiée par outil.
4. Refactor `app/outils/comparateur-electricite-pro/page.tsx` pour consommer `tools-data.ts`.
5. Refactor `app/outils/simulateur-exoneration-accise-electricite/page.tsx` pour consommer `tools-data.ts`.
6. Tests manuels + `pnpm build` + `pnpm knip`.
7. Commit conventionnel (`feat:`) + PR `feature/llms-txt-tools-refresh`.

Le plan d'implémentation détaillé (avec checkpoints) sera produit par le skill `writing-plans` dans la foulée.
