Les 4 dernières fiches du chantier (annoncées 'reste' par les sessions précédentes) listaient leurs livrables en code-spans nus : aucun chemin cliquable de la fiche vers l'artefact gated qui la réalise. Passage aux liens markdown relatifs, pattern déjà appliqué à faisabilite/publiciste/qa/erpnext/crm : - seo : colonne Sortie -> out/*.json + module -> README.md (5 liens) - devops : ci.yml + ci/README.md + deploy_runbook/README.md (3 liens) - frontend_console : portails/ + chat_otoia/ -> README.md (2 liens) - onapi_legal : confotur/ -> README.md (1 lien) Anti-invention #6 : 11 cibles verifiees existantes (test -f) avant edition ; 0 texte descriptif/chiffre modifie, 0 code touche (doc-only). Guards verts : check_docs exit 0 (0 lien interne casse) · guard_constraints exit 0. Regression inchangee (534 verts). Chantier cross-linking desormais complet sur les 13 agents. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
5.0 KiB
🔎 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 |
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 |
graphe JSON-LD : 10 nœuds (Organization + 9 Residence) |
| hreflang | out/seo_hreflang.json |
10 pages × FR/EN/ES + x-default |
| compte-rendu | out/MANIFEST.json |
comptes + cibles + hors-périmètre |
Module : 05_deliverables_mvp/seo/
(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 (lexiqueimmobilier/à 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/priceque pour un projetdisponibledont une typologie porte unprix_depuis_usdnumérique sourcé ; devise USD (primaire · #10). Statuts sans prix (en_developpement/bientot/en_processus) → aucun chiffre (offers=0actuellement).
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.jsonqui structure l'entrée. - Frontend Console : destinataire du bundle
out/— injecte balises hreflang et JSON-LD dans les pageswww/(VPS #8). - QA : la suite
seo-testsest 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/ - Handoffs formalisés dans
05_deliverables_mvp/handoffs/ - 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.