Job ID: 76ce033272c7
Run Time: 2026-06-14 16:06:47
Schedule: 0 16 *
[IMPORTANT: The user has invoked the "news-briefings" skill, indicating they want you to follow its instructions. The full skill content is loaded below.]
name: news-briefings
description: "Research current events and deliver formatted news briefings to the user's messaging platform (Telegram/WhatsApp). Covers one-shot news queries and recurring cron-based news briefings — aggregating from RSS feeds via curl, structuring summaries by region/topic, and delivering to the user's preferred channel."
version: 1.3.0
metadata:
hermes:
tags: [news, current-events, rss, briefing, delivery, telegram, whatsapp, cron]
prerequisites: {}
Research and deliver current-events briefings to the user's messaging platform. Supports two modes:
When the user asks for news/current events, gather from multiple RSS feeds using curl (browser dependency may be unavailable). Good free RSS sources:
BBC World: https://feeds.bbci.co.uk/news/world/rss.xml
NYT World: https://rss.nytimes.com/services/xml/rss/nyt/World.xml
Le Monde: https://www.lemonde.fr/international/rss_full.xml
France Info: https://www.francetvinfo.fr/monde.rss (⚠️ /monde/rss → 404, utiliser .rss)
France 24: https://www.france24.com/fr/rss
Hacker News: https://news.ycombinator.com/
Apple Newsroom: https://www.apple.com/newsroom/
The Guardian: https://www.theguardian.com/tone/news
⚠️ Avoid sources with aggressive anti-bot protection — Some sites (Reuters/DataDome, Google News, DuckDuckGo, Bing, Searx) are systematically blocked from certain server IPs. When curl hits these, the connection may get a TCP reset that propagates as a "Broken pipe" (Errno 32) crash, killing the whole agent run — far worse than a simple HTTP error. For one-shot queries, if these fail, just skip them. For cron jobs, remove them from the prompt entirely — a runtime error crashes the agent, and "skip and continue" won't help if curl itself segfaults on a blocked domain.
Use delegate_task for heavier research (multiple feeds → extraction → structured summary) so the main thread stays responsive. Pass toolsets=["terminal"] for simple RSS parsing.
For parallel research on multiple topics, use the tasks= array form:
delegate_task(tasks=[
{"goal": "Research {topic A}", "toolsets": ["terminal"]},
{"goal": "Research {topic B}", "toolsets": ["terminal"]},
])
This runs up to 3 subagents concurrently.
Pitfall: delegate_task is for ONE-SHOT queries only. Do NOT use it in cron job prompts — cron agents cannot use delegate_task.
Format with clear sections by region/topic. Use emoji markers per region:
Each section: 2-3 bullet points max. Bold the headline item (not the emoji). Include source attribution at end.
Check the user's preferred delivery platform:
The send_message(action='list') may not show platforms even when they're configured. If the platform is defined in .env (TELEGRAM_BOT_TOKEN, etc.), try send_message(target='telegram') directly — it routes to the home channel.
Set up automated daily/weekly briefings that deliver directly to the user's messaging platform on a schedule.
Use cronjob(action='create') with:
skills=["news-briefings"] to load this skill automatically"0 16 " for daily at 16h, "0 16 * 0" for Sundays"origin" (default) — auto-routes to the conversation's origin platform (Telegram/WhatsApp if the conversation came from there, CLI otherwise)"telegram:CHAT_ID" — explicit Telegram delivery (e.g., "telegram:8818654814")"local" — no delivery, saved locally"whatsapp:PHONE" — explicit WhatsApp deliveryExample with explicit Telegram delivery:
cronjob(
action='create',
name='Veille quotidienne d\'actualités',
prompt="Génère un briefing quotidien en français...",
schedule='0 16 * * *',
skills=['news-briefings'],
deliver='telegram:8818654814',
)
delegate_task — cron sessions cannot spawn subagentsexecute_code — cron sessions cannot use execute_code (blocked for security). Use write_file or terminal for file operations instead.clarify — cron agents cannot ask the user questionssend_message needed — the job's final response auto-delivers to the target platformIf cronjob(action='list') shows the job as state: scheduled but last_run_at stays null even after next_run_at has passed:
hermes gateway start or hermes gateway installhermes gateway status — if not running, the scheduler is not activeEven feeds classified as "reliable" (BBC, Le Monde, France 24) can intermittently trigger a Broken pipe (Errno 32) crash in cron context. This happens when a CDN or reverse proxy intermittently sends a TCP reset — the curl subprocess crashes before any "skip on error" logic runs.
no_agent=False, script=path) that curl-fetches feeds sequentially in a single bash script with || true fallbacks, then let the LLM summarize the collected data. This isolates the crash risk to the script layer.delegate_task(tasks=[...], toolsets=["terminal"]). Fetch the feeds in parallel subagents (max 3), each handles its own curl failure gracefully. Then compose and deliver the briefing manually. This bypasses the Broken pipe crash because each subagent's curl crash is isolated.last_status: "error" with delivery error about "cannot schedule new futures"When last_status: "error" AND the delivery error contains "cannot schedule new futures after interpreter shutdown" or "Broken pipe" appears in the output log:
curl to a blocked domain (DataDome/Cloudflare) causes a TCP reset → "Broken pipe" (Errno 32)execute_code in cron)~/.hermes/cron/output/<job_id>/ for the crash reason. Fix the prompt:execute_code calls with write_file or terminalcronjob(action='run', job_id='...') to test the fixWhen a cron job shows last_status: "error" but last_delivery_error: null:
cronjob(action='run', job_id='...') to re-kick the job manuallyEach cron briefing can also save a copy locally for historical reference, alongside Telegram delivery.
Pattern: Add an instruction at the end of the cron prompt to write the briefing content to a file:
❗ À la fin, archive le briefing dans un fichier : écris le contenu exact du briefing dans /home/sebastien/.hermes/memory/modules/veille_actualite/daily/YYYY-MM-DD.md (remplace YYYY-MM-DD par la date du jour). Crée le fichier avec la commande d'écriture appropriée.
Use a dedicated module structure under ~/.hermes/memory/modules/:
veille_actualite/daily/ — for daily briefingsveille_actualite/weekly/ — for weekly geopolitics briefingsPre-create the directories before setting up the cron — the cron agent has file-write tools but directory creation is more reliable when done ahead of time:
mkdir -p ~/.hermes/memory/modules/veille_actualite/{daily,weekly}
Updating existing cron jobs to add archiving: use cronjob(action='update', job_id='JOB_ID', prompt='...') with the original prompt + the archive instruction appended. Always read the existing prompt from ~/.hermes/cron/jobs.json first so you preserve the full content.
| Frequency | Cron expression |
|---|---|
| Daily at 16h | 0 16 * |
| Daily at 9h | 0 9 * |
| Weekly Sunday 16h | 0 16 0 |
| Every 2 hours | every 2h |
curl for RSS feeds over browser toolssend_message(action='list') can return empty even with configured platforms — try direct targetingdelegate_task with toolsets=["terminal"] rather than doing curl calls in the main thread — keeps context cleanhttps://www.france24.com/fr/rss) is a reliable French-language source for international news — include it for francophone briefings import urllib.request, json
url = f"https://api.telegram.org/bot{TOKEN}/getMe"
resp = urllib.request.urlopen(url)
data = json.loads(resp.read()) # {"ok":true, "result":{...}}
.env via terminal heredoc may corrupt them (redaction system replaces characters). Always verify with xxd after writing. Use printf '\xHH' or direct Python binary writes to bypass redactionThe skill ships with a reusable data-collection script in scripts/collecte-veille.sh.
Purpose: Eliminates the Broken pipe (Errno 32) crash that kills cron briefings when a CDN sends a TCP reset during curl. Each feed is fetched with || true isolation — if one feed crashes, the others continue unaffected.
Usage in cron: Set script='collecte-veille.sh' on the cron job. The script runs first, its stdout is injected into the cron agent's prompt, and the agent summarizes the pre-collected data instead of running its own curls. The prompt should explicitly say: "Utilise les données collectées — ne fais PAS de curl toi-même."
Feeds collected: BBC World, Le Monde International, France Info (via .rss, not /rss), France 24, The Guardian (HTML topic page). Parses 10 items each.
Customization: Modify the script to add/remove feeds, or adjust the item count per feed.
blogwatcher — for ongoing/monitoring RSS feeds (complementary: use for single-feed watching, use this skill for multi-source LLM-synthesised briefings)editorial-review-cycle — for producing structured daily/weekly reviews that update the editorial memory system (topics, hypotheses, briefs archive, index). Use this skill when the user asks for a "revue quotidienne" or "briefing mémoire"; use news-briefings when they ask for "what's happening in the news" to deliver to a messaging platform.references/rss-feeds.md for the full list of tested RSS endpoints and parsing recipes.references/vps-feed-reliability.md for per-server feed status (which feeds work, which are blocked, intermittent failure patterns).The user has provided the following instruction alongside the skill invocation: [IMPORTANT: You are running as a scheduled cron job. DELIVERY: Your final response will be automatically delivered to the user — do NOT use send_message or try to deliver the output yourself. Just produce your report/output as your final response and the system handles the rest. SILENT: If there is genuinely nothing new to report, respond with exactly "[SILENT]" (nothing else) to suppress delivery. Never combine [SILENT] with content — either report your findings normally, or say [SILENT] and nothing more.]
The following data was collected by a pre-run script. Use it as context for your analysis.
═══════════════════════════════════════════
COLLECTE VEILLE QUOTIDIENNE — 2026-06-14
═══════════════════════════════════════════
=== BBC World ===
• Trump says US-Iran deal to be signed on Sunday as Tehran casts doubt on timing
The US president's comments come as Iran says an exact date has not been decided.
• Lebanon says three killed in Israeli strike on Beirut suburb
Israel says it targeted the Iran-backed Hezbollah, as Tehran warns this could derail a US-Iran deal to end the fighting.
• Swiss voters reject 10 million population cap, early projections say
Not all votes have been counted, but the current trend suggests 55% of participants voted against the proposal.
• Teen shot and buses torched in Manhattan after historic NBA win for Knicks
At least 63 people were arrested in the disorder after the Knicks beat the Spurs to clinch the title.
• Tourist train overturns and injures 17 during Cártama tapas festival
Nobody was seriously hurt as a result of the accident in the Spanish town, local authorities say.
• UK and Japan agree £18bn investment deal
Japanese firms will spend billions on UK infrastructure and offshore wind, Downing Street says.
• 'Boyfriend duties call,' Trudeau says after skipping Canada match to watch Perry
Cameras caught Perry running off stage to greet the former Canadian leader with a kiss.
• Fifa to pay Somali referee Artan full World Cup fee
Somali referee Omar Artan, who was denied entry to the United States to officiate at the World Cup, will still receive his tournament fee from Fifa in full.
• Norway braces for verdict in rape trial of crown princess's son Høiby
Marius Borg Høiby will appear via video link, almost three months after his trial came to an end on 40 charges, including four counts of rape.
• Author Chimamanda Adichie accuses hospital of stalling review into son's death
Chimamanda Ngozi Adichie's 21-month old son died in a Lagos hospital, which she says is trying to stop an inquest into the circumstances of his death.
=== Le Monde International ===
• G7 à Evian : des milliers de manifestants à Genève à l’appel de la coalition « No-G7 », pour une « riposte » face au « fascisme » et à « l’impérialisme »
Les autorités suisses ont engagé un important dispositif pour contenir tout débordement et éviter une répétition du fiasco du G8 de 2003, dans la station thermale française, où des groupes violents av
• « La présidence du G7 constitue une occasion unique pour la France de faire de l’antibiorésistance une priorité stratégique de sécurité sanitaire »
Alors que le G7 se réunit à Evian (Haute-Savoie) du 15 au 17 juin, une cinquantaine d’experts appellent, dans une tribune au « Monde », la France à s’emparer de cette menace contre les fondements de l
• Avant le G7, Emmanuel Macron et Narendra Modi consolident leur partenariat stratégique
Les deux dirigeants n’ont cessé d’afficher leur bonne entente ces derniers mois, notamment à l’occasion du voyage d’Emmanuel Macron en Inde en février, juste avant lequel New Delhi a approuvé une comm
• Défense européenne : « La France, l’Allemagne et l’Italie, incapables de coopérer, pourraient finir par développer trois avions de combat distincts »
L’analyste Federico Santopinto estime, dans une tribune au « Monde », que la mise à l’arrêt du système de combat aérien du futur illustre les rivalités stratégiques et économiques à l’œuvre entre les
• Dmitri Mouratov, journaliste russe et Prix Nobel de la paix : « Je suis du côté de la majorité des Russes, qui ne veulent pas que leur pays reste en guerre »
De passage en France pour le Festival international de journalisme, Dmitri Mouratov, cofondateur du journal russe indépendant « Novaïa Gazeta », revient sur les risques qui pèsent sur les médias et l’
• Emmanuel Macron sera l’invité du « 13 heures » de TF1 lundi en marge du G7, un an après sa dernière grande interview télévisée
Le chef de l’Etat répondra aux questions de Marie-Sophie Lacarrau en direct d’Evian, où il accueillera dans la soirée ses pairs du G7.
• EN DIRECT, guerre en Ukraine : Kiev salue une mesure contre « la machine de guerre » de Moscou après l’interception d’un pétrolier de la flotte fantôme russe
Le Royaume-Uni avait dit, un peu plus tôt dans la journée, avoir intercepté un navire de la flotte fantôme russe dans la Manche.
• EN DIRECT, guerre au Moyen-Orient : l’attaque israélienne sur Beyrouth « n’aurait pas dû avoir lieu », juge Donald Trump
« Il ne devrait plus y avoir d’attaques israéliennes nulle part au Liban, mais il ne devrait pas non plus y avoir d’attaques de la part d’aucune autre partie, y compris le Hezbollah, contre Israël »,
• En Roumanie, Adrian Vestea nommé premier ministre après le retrait d’Eugen Tomac
« Je veux un gouvernement politique qui entreprenne de véritables réformes et maintienne la Roumanie sur une trajectoire pro-occidentale », a déclaré Adrian Vestea.
• Avec « Du stade aux barricades », Nikol Dziub réveille les souvenirs du Dynamo Kiev et de ses si remuants supporteurs
La grande équipe de football a eu son rôle à jouer dans le réveil de l’identité nationale ukrainienne. Ce livre lui rend hommage.
=== France Info Monde ===
• Intelligence artificielle, spatial… Emmanuel Macron et Narendra Modi consolident leur "partenariat stratégique" avant le G7
A la veille du G7, les dirigeants français et indien ont inauguré à Nice un salon de l'innovation et des technologies indiennes dimanche.
• En Albanie, la colère des "flamants roses" contre un projet immobilier associé à la famille Trump ne retombe pas
Un projet de complexe immobilier de luxe en Albanie, porté par Jared Kushner et Ivanka Trump, le gendre et la fille du président américain, provoque la colère d'une partie du pays.
• Emmanuel Macron s'entretiendra avec Donald Trump lundi après-midi à Évian, avant l'ouverture du sommet du G7
L'entretien entre les deux chefs d'Etat aura lieu à 17h10 avant l'ouverture officielle du G7 à 19 heures.
• Au Brésil, la collision de deux hélicoptères à Rio de Janeiro fait au moins six morts
D'après les pompiers, aucun passager à bord n'a survécu à cette collision.
• Le Liban accuse Israël d'avoir pulvérisé du glyphosate "à des niveaux de concentration élevés" sur son sol, l'ONU saisie
En février, la mission de maintien de la paix de l'ONU au Liban avait annoncé avoir été informée par Israël de son intention d'épandre une "substance chimique non toxique" près de la frontière.
• Évian-les-Bains, Genève... Des villes barricadées pour un sommet du G7 sous haute tension
Le sommet du G7 s'ouvrira lundi 15 juin à Évian-les-Bains. Près de 16 000 policiers, gendarmes, militaires, pompiers et gardes-frontières seront mobilisés. La surveillance aérienne sera accrue en coll
• "Il y a toujours un effort à faire" : à Berlin, des associations et des entreprises troquent des activités ludiques contre du ramassage de déchets
Dans la capitale allemande, une quarantaine d'associations et d'entreprises œuvrent à initier Berlinois et vacanciers à la protection de l'environnement, dans l'espoir que les pratiques s'ancrent.
• Le président roumain nomme un nouveau Premier ministre, en pleine crise politique
Adrian Vestea, 52 ans, a été chargé de former une nouvelle majorité parlementaire pro-occidentale, après le retrait de la candidature de l'eurodéputé Renew Eugen Tomac, qui souhaitait nommer un gouver
• Coupe du monde 2026 : l'Iran attendu à Los Angeles pour son entrée en lice dans un contexte géopolitique tendu
L'équipe iranienne fera son entrée en lice dans la Coupe du monde, lundi, face à la Nouvelle-Zélande, à Los Angeles (Californie).
• Guerre au Moyen-Orient : "Le Charles-de-Gaulle reste sur zone jusqu’à nouvel ordre", selon le porte-parole du chef d'état-major des Armées
"Aucune décision n’a été prise dans un autre sens", alors que certains médias évoquent le départ du porte-avions français de la Méditerranée orientale.
=== France 24 ===
• Début du Mondial, le pape à la Sagrada Familia, xénophobie en Afrique du Sud : la semaine en images
Retour sur les temps forts de l'actualité de la semaine : le coup d'envoi du Mondial 2026 co-organisé par le Mexique, le Canada et les États-Unis, la visite du pape en Espagne ou encore les suites de
• Tournoi de sumo à Paris, l'arme lourde du Japon ?
Trente ans après leur dernière venue en France, les maîtres du sumo débarquent à Paris pour un grand tournoi exhibition, un événement rarissime en dehors du Japon.
• Au Liban, une série de frappes israéliennes sur la banlieue sud de Beyrouth dimanche
Israël a frappé la banlieue sud de Beyrouth dimanche pour la deuxième fois en une semaine, ainsi que le sud du Liban, en riposte à des tirs du Hezbollah pro-iranien sur le nord d'Israël.
• "Adieu mon amour" : les dernières lettres de fusillés par les nazis enfin remises à leur famille
Il aura fallu attendre 80 ans après la fin de la Seconde Guerre mondiale pour que des lettres retrouvées dans les dossiers d'exécution de victimes des persécutions nazies soient enfin lues par leurs
• Humanoïdes, IA, souveraineté numérique... VivaTech fait son retour sur les Champs Elysées à Paris
L'intelligence artificielle, les robots et la souveraineté numérique face aux géants technologiques américains et chinois seront au centre de la 10e édition du salon VivaTech, plus grand événement eu
• Ville de Tyr, site de Chamaa, forteresse de Beaufort... Au Liban, la mémoire du patrimoine en péril
Le Comité libanais pour la sauvegarde de Tyr a exhorté la communauté internationale à intervenir “sans délai” pour protéger la cité millénaire et son patrimoine archéologique. La ville, et le sud du
• Liban : frappes israéliennes sur la banlieue sud de Beyrouth pour la deuxième fois en une semaine
Israël a frappé la banlieue sud de Beyrouth dimanche pour la deuxième fois en une semaine, ainsi que le sud du Liban, en riposte à des tirs du Hezbollah pro-iranien sur le nord d'Israël.
• Mondial 2026 : l'équipe d'Iran attendue à Los Angeles par l'immense communauté iranienne
À la veille de ses débuts au Mondial, l'équipe de football de l'Iran est attendue dimanche à Los Angeles, où est installée une importante communauté iranienne. Ce match sur le sol américain est écras
• Jusqu'à 38°C attendus : la France face à un nouvel épisode de chaleur dès mercredi
La France connaîtra à partir de mercredi un nouvel épisode de fortes chaleurs, susceptible de devenir la première vague de chaleur de 2026 selon Météo-France. Les températures pourraient atteindre le
• Mondial 2026 : le Maroc tient tête au Brésil
Dans cette édition du Club du Mondial, retour sur le 1er choc de cette Coupe du monde entre le Brésil et le Maroc. Les Lions de l'Atlas très solides face à la Seleção (1-1). La préparation des Bleus
=== The Guardian ===
═══════════════════════════════════════════
FIN DE LA COLLECTE
═══════════════════════════════════════════
Génère un briefing quotidien en français des actualités du jour pour Sébastien.
Les données des flux RSS ont déjà été collectées par le script ci-dessus (section "COLLECTE VEILLE QUOTIDIENNE"). Utilise ces données — ne fais PAS de curl toi-même. Si la section de collecte est vide ou erronée, produis un message d'erreur clair au lieu d'essayer de faire tes propres curls.
Structure la veille avec des emojis par région :
🔴 Moyen-Orient
🟠 Ukraine / Russie
🟡 Amériques / US
🔵 Asie-Pacifique / Chine
🟢 Afrique
🟣 Europe / UE
⚪ Défense / Alliances
🇫🇷 France
2-3 puces max par section. Gras sur le titre principal. Termine par la source et la date.
Message concis, en français, adapté à Telegram (pas de tableaux — listes à puces uniquement).
❗ À la fin, archive le briefing dans un fichier : écris le contenu exact du briefing dans /home/sebastien/.hermes/memory/modules/veille_actualite/daily/YYYY-MM-DD.md (remplace YYYY-MM-DD par la date du jour). Crée le fichier avec write_file.
Briefing livré et archivé dans ~/.hermes/memory/modules/veille_actualite/daily/2026-06-14.md ✅