nas-runbooks/hermes-nyora/veille-nexum-email-enrichi.md

2.7 KiB

Veille Dr. Nexum — Email enrichi (fin du bug "email illisible")

Date : 2026-07-03 Tags : nyora, dr-nexum, veille, email, n8n, cron

Problème

L'email quotidien "Veille IA Dr. Nexum" (envoyé via veille_ia_matin.py → webhook n8n veille-nexum-email → SMTP ik.me) n'apportait que titre + lien + score brut, alors que le message Telegram équivalent contenait l'analyse complète (pourquoi c'est pertinent, titre vidéo suggéré, angle unique). Cause : le script Python envoyait l'email avant que Hermes fasse l'enrichissement (l'email était construit directement dans le script, l'analyse n'existait que dans la réponse finale de l'agent, livrée uniquement à Telegram).

Solution

Découplage scraping / enrichissement / envoi email :

  1. veille_ia_matin.py (cron veille-ia-nexum-4ee61494, 11h30 UTC quotidien) : scrape 13 chaînes YouTube + HN + VentureBeat, score, top 5, écrit /opt/data/veille_raw.json (données brutes). N'envoie plus d'email lui-même.
  2. Hermes analyse le top 5 (pourquoi pertinent / titre vidéo / angle) → format Telegram livré automatiquement (HERMES_CRON_AUTO_DELIVER_PLATFORM=telegram).
  3. Hermes écrit /tmp/veille_enrich.json avec les mêmes analyses (même ordre que veille_raw.json) via un heredoc bash à guillemets simples (<< 'EOF') — jamais de f-string Python avec {...} inline dans une commande bash (voir piège accolades documenté dans common/).
  4. Hermes exécute python3 /opt/data/veille_email_send.py — ce script fusionne veille_raw.json + veille_enrich.json, construit un HTML avec le thème Nyora (cards sombres, dégradé rose/or #e94560, footer doré) contenant le même contenu que Telegram, et POST vers le webhook n8n veille-nexum-email (workflow VEILLE | Email Dr. Nexum → Nabil TT, id uwjTfOlzKmzHkO9Q).

Fichiers

Fichier Rôle
/opt/data/veille_ia_matin.py Scraping + scoring, écrit veille_raw.json
/opt/data/veille_raw.json Données brutes du run (écrasées à chaque exécution)
/tmp/veille_enrich.json Analyse Hermes du jour (éphémère)
/opt/data/veille_email_send.py Fusion raw+enrich → HTML → POST n8n

Détail complet du prompt cron et du format Telegram/email : voir skill hermes-nyora/data/skills/nyora/dr-nexum-production/references/veille-quotidienne-cron.md.

Règle à ne jamais casser

L'email ne doit jamais repartir en arrière vers "titre + lien + score brut". Si le contenu enrichi (why/video_title/angle) manque, veille_email_send.py envoie quand même l'email mais log un WARN — c'est un signal que l'étape 3 (écriture de veille_enrich.json) a été oubliée dans le prompt cron, pas un comportement normal.