Skill: daily-briefing
Quand utiliser cette skill
Déclenchement automatique à 7h00 via cron OpenClaw (@daily-briefing).
Peut aussi être invoqué manuellement : "Albert, donne-moi mon briefing".
Destinataire unique : fondateur solo. Canal de sortie : Telegram (markdown sobre, émojis).
Workflow
STEP 1 — Leads chauds
find_all_leads(hotLeadScore_min=0.7, limit=20)
→ Trier par (hotLeadScore × fraîcheur_signal) DESC
→ Conserver top 3 pour affichage
STEP 2 — Signaux nuit
detect_bodacc_signals(event_types=["creation","modification"], days_back=1)
→ Compter créations / modifications
→ Identifier signal le plus saillant (type + nom entité)
STEP 3 — Santé infra
get_workers_status()
→ Parser statut de chaque crawler
→ Si status == "error" sur >=1 worker → flag ALERTE_INFRA = true
STEP 4 — Lire pipeline (MEMORY.md)
Extraire : leads contactés, RDV planifiés, signatures en attente
STEP 5 — Générer priorités
Règle P1 : si ALERTE_INFRA → "Résoudre incident crawler [nom]"
Règle P2 : lead score le plus élevé avec signal < 24h → "Contacter [NOM]"
Règle P3 : RDV le plus proche dans pipeline → "Préparer RDV [NOM] à [HEURE]"
Fallback P3 : "Prospecter lot [département] leads score 0.6-0.7"
STEP 6 — Formatter output Telegram → envoyer
Instructions
Calcul du score de fraîcheur
score_tri = hotLeadScore × fraîcheur
fraîcheur = 1.0 si signal_date == aujourd'hui
0.7 si signal_date == hier
0.4 si signal_date <= 7 jours
0.1 si pas de signal récent
Trier top_leads par score_tri DESC avant d'afficher les 3 premiers.
Règles de génération des priorités
| Condition | Priorité générée |
|---|---|
get_workers_status retourne error |
P1 bloquant : résoudre incident crawler |
Lead avec score_tri >= 0.85 ET signal < 24h |
Contacter immédiatement (email ou LinkedIn) |
| RDV confirmé dans MEMORY.md dans les 48h | Préparer brief association avant le RDV |
| Aucun lead chaud ET aucun signal BODACC | Lancer prospection batch sur département prioritaire |
Format output Telegram
*Briefing Albert — [DATE JJ/MM/AAAA] — [HH:MM]*
*Pipeline*
• Leads chauds (>0.7) : [N]
• Signaux BODACC nuit : [N] créations / [N] modif
• RDV en attente : [N]
• Dernier crawl JOAFE : [DATETIME]
*Top 3 Leads du jour*
1\. [NOM\_ASSOCIATION] ([dept]) — score [X.XX] — [signal\_court]
2\. [NOM\_ASSOCIATION] ([dept]) — score [X.XX] — [signal\_court]
3\. [NOM\_ASSOCIATION] ([dept]) — score [X.XX] — [signal\_court]
*Alertes infra* : [OK / ERREUR crawler\_name]
*3 priorités*
1\. [priorité P1]
2\. [priorité P2]
3\. [priorité P3]
Règles de formatage Telegram :
- Markdown mode
MarkdownV2: échapper.()-avec\- Jamais de blocs de code ou tableaux (illisibles sur mobile)
[signal_court]= 3 mots max ex. "création BODACC", "modif statuts", "subv éligible"[NOM_ASSOCIATION]tronqué à 30 chars si nécessaire +…
Gestion des cas limites
| Cas | Comportement |
|---|---|
find_all_leads retourne 0 résultats |
Afficher "Aucun lead chaud aujourd'hui" + P1 = prospection |
detect_bodacc_signals timeout |
Afficher "Signaux BODACC indisponibles" + continuer |
get_workers_status retourne error |
P1 = incident, bloquer outreach jusqu'à résolution |
| MEMORY.md absent ou vide | Afficher "Pipeline vide — initialiser MEMORY.md" |
Mise à jour MEMORY.md post-briefing
Après génération, ajouter en tête de MEMORY.md :
## Briefing [DATE]
- Leads chauds : [N] | Signaux nuit : [N] | Crawl JOAFE : [DATETIME]
- Priorités : [P1 résumé] / [P2 résumé] / [P3 résumé]