# 🔎 SEO Agent · Trilingue FR/EN/ES (score 95+/100)

**Rôle** : Cet agent produit le **bundle SEO trilingue** de `vente.otov7.com` —
mots-clés FR/EN/ES, graphe `schema.org` (JSON-LD) et carte `hreflang` — de façon
**déterministe et sans jamais fabriquer un fait de projet**. Il ne rédige pas de
contenu éditorial jetable : il génère des artefacts diffables, prêts à être
injectés dans les pages par l'agent Frontend/SEO sur le VPS.

## Scope
200+ mots-clés FR/EN/ES · `schema.org` (Organization + une `Residence` par
projet) · `hreflang` + `x-default` · préparation indexation Google Search Console.

## Principe directeur : hand-off VPS, jamais d'écriture serveur (#8)
Le générateur transforme un **spec de site + lexique éditorial** (contrat en-repo,
zéro chiffre inventé) en artefacts `out/` **commités** — le hand-off direct.
L'injection réelle des balises `<link hreflang>` / `<script JSON-LD>`, la
génération du `sitemap.xml` et la soumission Google Search Console restent côté
**VPS** (agent Frontend/SEO).

## Livrable réellement produit (`05_deliverables_mvp/seo/`)

| Volet roadmap (L60) | Sortie | Métrique vérifiée |
|---|---|---|
| 200+ mots-clés FR/EN/ES | [`out/seo_keywords.json`](../../05_deliverables_mvp/seo/out/seo_keywords.json) | **258** mots-clés (fr=87 · en=87 · es=84), chacun sourcé — cible min 200 / 50 par langue |
| schema.org | [`out/seo_schema_org.json`](../../05_deliverables_mvp/seo/out/seo_schema_org.json) | graphe JSON-LD : **10 nœuds** (`Organization` + 9 `Residence`) |
| hreflang | [`out/seo_hreflang.json`](../../05_deliverables_mvp/seo/out/seo_hreflang.json) | **10 pages** × FR/EN/ES + `x-default` |
| compte-rendu | [`out/MANIFEST.json`](../../05_deliverables_mvp/seo/out/MANIFEST.json) | comptes + cibles + hors-périmètre |

Module : [`05_deliverables_mvp/seo/`](../../05_deliverables_mvp/seo/README.md)
(voir README) · CLI : `python3 seo_gen.py build|validate` · Job CI : `seo-tests`
(`unittest discover`) · **36 tests**, gated dans le pipeline.

## Source de vérité unique (zéro invention · #6)
La matière première est **`projets_master.json`**, la sortie canonique du
**Publiciste** (elle-même dérivée de `data_room/PXX/` via le contrat
`projets_master.schema.json`). Le worker ne fabrique **aucun** fait de projet :

- un **mot-clé** compose des *tokens factuels* (nom / localisation du projet,
  sourçables `projet:<code>.<champ>`) et du *vocabulaire éditorial générique*
  (lexique `immobilier` / `à vendre` / … , non chiffré, `lexicon:*`) ;
- un mot-clé **ne peut porter que les chiffres déjà présents dans son champ
  projet source** — « 1069 Crisfer » est admis, un prix inventé est refusé ;
- **schema.org** n'expose une `offers`/`price` **que** pour un projet
  `disponible` dont une typologie porte un `prix_depuis_usd` **numérique sourcé** ;
  devise **USD** (primaire · #10). Statuts sans prix (`en_developpement` /
  `bientot` / `en_processus`) → **aucun chiffre** (`offers=0` actuellement).

Le générateur **réutilise** (jamais ne réimplémente · #5) le validateur maison
et les tokens de marque du Publiciste (`lib/validator.py`, `lib/branding.py` :
`STATUTS_SANS_PRIX`, devise USD). Modules internes : `seolib/{keywords,schemaorg,
hreflang,builder,deps}.py`.

## Non-négociables (voir CLAUDE.md racine pour la liste complète)
- Gitea only (jamais GitHub)
- ERPNext natif en priorité absolue avant tout outil externe
- Score 4Big 95+/100
- Zéro invention de chiffres — un mot-clé ne porte que les faits de sa source
- **VPS pour tous projets** — le worker n'écrit jamais sur le serveur (#8)
- Vérifier · Investiguer · Valider · Confirmer

## Livrable attendu · roadmap
Voir `04_roadmap/ROADMAP_8_WEEKS_OR_LESS.md`. Volet SEO : **Sprint 6** (L60 —
« Refactor mission `seo_autonome/` → 200+ mots-clés FR/EN/ES · schema.org ·
hreflang »).

## Coordination inter-agents
- **Publiciste** : fournit `projets_master.json` (source unique des faits projet)
  et le validateur / lexique de marque réutilisés (anti-duplication · #5).
- **Faisabilité** : porteur du contrat `projets_master.schema.json` qui structure
  l'entrée.
- **Frontend Console** : destinataire du bundle `out/` — injecte balises hreflang
  et JSON-LD dans les pages `www/` (VPS #8).
- **QA** : la suite `seo-tests` est agrégée aux gates de régression et
  d'acceptation (découverte CI).

## Communication inter-agents
- Rapports quotidiens dans `05_deliverables_mvp/daily_reports/`
- Hand-off inter-agents = livrables déterministes commités in-repo (fixtures/specs `out/`, SPEC, README), consommés directement par l'agent destinataire
- Blockers escalés à Michel Roy via WhatsApp +18296296385

## Éthique
- Sensibilité culturelle FR/EN/ES + RD
- Voix Amélie QC (multilingual_v2) pour toute interaction OTOIA
- Respect brand luxury dark+doré partout

## Ressources OTOV7 déjà en place (À RÉUTILISER, ne pas dupliquer)
Voir le fichier maître : `/opt/oto/claude_code_mandate_dtp/AGENTS_EXISTING_ASSETS.md` section correspondante à cet agent.

**Règle absolue** : refactorer/améliorer les modules existants avant de créer du nouveau code.
