Job ID: 76ce033272c7
Run Time: 2026-07-20 16:10:46
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) ls ~/.hermes/profiles/<profile>/cron/output/<job_id>/
The most recent YYYY-MM-DD_HH-MM-SS.md file often contains the ## Script Output section with collected RSS data, even if the final delivery failed. Extract the data and proceed.
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-07-20
═══════════════════════════════════════════
=== BBC World ===
• Trump says US strikes hit Iran in 'honour' of American soldiers killed
Iran responded with attacks in Syria and Jordan, as two ships reportedly exploded in the Strait of Hormuz.
• Ten killed as Russian attacks on merchant ships in Black Sea intensify
Russian strikes on the Odesa region have killed 28 people in July alone, local authorities say.
• Boy, 13, dies during World Cup celebrations in Spain
Two other young people were injured after a fountain partially collapsed in Salamanca's Ciudad Rodrigo.
• Hamas names Khalil al-Hayya as new overall leader
The Palestinian armed group's Qatar-based chief negotiator replaces Yahya Sinwar, who was killed by Israeli forces in Gaza in 2024.
• Police block thousands of 'cockroach' protesters marching on India's parliament
Some protesters demanding education reforms said they were injured in clashes with police who banned the march.
• Scores feared dead after passenger ferry capsizes off Guyana
Sixty-seven people have been rescued but the ferry is thought to have had more than 130 people on board.
• Rare identical quadruplets born in Australia
The parents of the four naturally-conceived girls were taken by "immense surprise" with the pregnancy, the hospital said.
• Newcastle, Liverpool and England legend Keegan dies
Former England captain and manager Kevin Keegan dies at the age of 75, seven weeks after he revealed he had been diagnosed with stage four cancer.
• JD Vance says wife Usha and son 'happy and healthy' after birth of fourth child
The couple welcomed their fourth child, Alec Neel Vance, on Sunday morning.
• Lamine Yamal celebrates World Cup win with little brother who charmed fans
The three-year-old brother of Yamal has been hailed one of Spain's World Cup breakout stars by fans
=== Le Monde International ===
• Afrique du Sud : Thabiso Zulu, le « mort-vivant » de Pietermaritzburg, pourfendeur solitaire de la corruption de l’ANC
Depuis près de dix ans, l’homme de 44 ans mène une vie de bête traquée. Il dort dans un endroit différent presque chaque soir et communique ses lieux de rencontre à la dernière minute.
• Dans le sud du Liban, à l’hôpital du Secours populaire de Nabatiyé, les soignants tentent de surmonter les traumatismes de la guerre
Médecins sans frontières propose des consultations individuelles et des groupes de parole à des professionnels éprouvés par quatre mois de conflit et une situation sécuritaire toujours instable.
• « Si tu réalises que tu risques de ne pas être élu, tu tues » : l’Afrique du Sud hantée par les assassinats politiques
Depuis le début de l’année, 16 membres de partis politiques, principalement des conseillers municipaux, ont été tués par balles. Epicentre du phénomène : la province du Kwazulu-Natal, où se mêlent riv
• Génocide des Tutsi : peine confirmée en appel pour un ancien médecin rwandais condamné à vingt-sept ans de prison
L’ancien médecin-enseignant de l’université de Butare était rejugé pour avoir relayé les mots d’ordre des autorités hutu incitant la population à s’en prendre à la minorité tutsi, notamment lors d’un
• Royaume-Uni : Andy Burnham officiellement nommé premier ministre britannique
Après avoir reçu le soutien d’environ 95 % des députés travaillistes, l’ancien maire du Grand Manchester Andy Burnham est devenu vendredi le chef du Labour, parti majoritaire au Parlement.
• Les Etats-Unis accentuent leur pression sur Cuba en accusant l’île d’avoir « infiltré » leur appareil d’Etat
Depuis le renversement, en janvier, du président vénézuélien, Nicolas Maduro, allié de La Havane, l’administration de Donald Trump laisse planer la menace d’une intervention directe sur l’île.
• Le Hamas annonce l’élection de Khalil Al-Hayya comme nouveau dirigeant du mouvement islamiste palestinien
L’ancien président du bureau politique du Hamas, Yahya Sinouar, avait été tué en octobre 2024 par l’armée israélienne dans la bande de Gaza. Sans désigner immédiatement de successeur, le mouvement ava
• EN DIRECT, guerre en Ukraine : la Russie accuse Kiev d’avoir attaqué un bus, causant la mort de cinq personnes dans l’oblast frontalier de Belgorod
Le gouverneur régional de Belgorod a dénoncé « une attaque ciblée et cynique » ayant visé « un bus transportant des passagers » à Chebekino. Un enfant fait partie des victimes, selon la même source.
• En Cisjordanie occupée, deux Palestiniens ont été tués par l’armée israélienne
L’armée israélienne a déclaré que ses soldats avaient ouvert le feu après que des Palestiniens eurent lancé des pierres en leur direction.
• EN DIRECT, guerre au Moyen-Orient : l’Iran revendique des attaques contre Bahreïn et le Koweït
Les gardiens de la révolution ont affirmé avoir visé, dans les deux pays, des hangars de stockage de matériel militaire américain. Ces frappes ont été menées « en représailles aux agressions de l’armé
=== France Info Monde ===
• Deux agents de l'ambassade de France à Téhéran "cibles d'une action d'intimidation extrêmement grave de la part des services de sécurité iraniens", annonce le ministre des Affaires étrangères
Ils ont été "détenus sans raison pendant plusieurs heures, interrogés et, pour l'un d'eux, molesté", a précisé Jean-Noël Barrot.
• Guerre au Moyen-Orient : les États-Unis envoient des missiles près d'une centrale nucléaire iranienne
Alors que les frappes américaines contre l'Iran se poursuivent pour la neuvième nuit consécutive, les bombardements ont touché la ville de Bouchehr, où se trouve une centrale nucléaire civile. De son
• Des hommes de main recrutés par les politiciens au Kenya
L’élection présidentielle au Kenya aura lieu dans moins d’un an. Les hommes politiques kényans embauchent de plus en plus de goons (hommes de main en français). Leur rôle est de soutenir leur employeu
• Au Japon, des entreprises s'équipent de "frigos pour humains" pour rafraîchir leurs employés
Alors que la canicule frappe le Japon, les entreprises cherchent des moyens de rafraîchir leurs employés, notamment ceux qui travaillent en extérieur. Plusieurs sociétés s'équipent désormais de "frigo
• Dee Dee Bridgewater se rappelle ses débuts : "J'avais envie d'une carrière comme Dionne Warwick"
Dee Dee Bridgewater et China Moses sont les invitées exceptionnelles toute cette semaine du Monde d’Elodie, pour la sortie de leurs albums respectifs, "Elemental", pour la mère et "It’s complicated",
• Le Hamas annonce l'élection de Khalil al-Hayya comme nouveau chef du mouvement
Sa candidature a reçu un soutien quasi unanime, de Gaza comme de l'étranger, selon un haut responsable du mouvement islamiste palestinien.
• Donald Trump hué, échauffourées, Argentins méprisants... Cinq séquences à retenir après la victoire de l'Espagne face à l'Argentine en finale de la Coupe du monde 2026
L'après-match, dimanche, a notamment donné lieu à un affrontement entre les joueurs de la Roja et deux de l'Albiceleste. Et lors de la remise du trophée par Donald Trump, les champions argentins ont o
• En Syrie, le monastère de Saint Siméon porte les stigmates de la guerre et attend sa nécessaire restauration
Une équipe française d'archéologues s'est rendue sur ce site byzantin abandonné inscrit au patrimoine mondial de l'Unesco pour évaluer les dommages provoqués par treize ans de guerre et définir les in
• Un adolescent meurt en Espagne lors des célébrations de la victoire en Coupe du monde
Ce garçon de 13 ans a succombé à ses blessures causées par l'effondrement d'une fontaine sur plusieurs personnes.
• L'incendie à 100 km au nord de Madrid a déjà ravagé 26 000 hectares, entraînant l'évacuation de 1 200 personnes
Ce feu de forêt est parti d'un village, dans la région de Castille-La Manche, dans le centre de l'Espagne. Les pouvoirs publics ont ordonné l'évacuation de 28 hameaux disséminés dans la zone.
=== France 24 ===
• Le négociateur en chef du Hamas Khalil al-Hayya élu à la tête du mouvement
Le mouvement islamiste palestinien Hamas a annoncé lundi l'élection à sa tête de Khalil al-Hayya après des mois de direction collégiale. Il succède à Yahya Sinouar, tué par Israël à la suite d
• LFI de nouveau accusée d'antisémitisme après le concert interrompu de la DJ Barbara Butch
L'interruption samedi soir d'un concert de la DJ Barbara Butch à Grenoble par des militants propalestiniens dans le cadre d'un boycott soutenu par les insoumis locaux a déclenché des accusations d'an
• Centrafrique : le premier ministre tente de rassurer après l'attaque d'Am Dafok
En Centrafrique, le Premier ministre Félix Moloua s'est rendu à Birao après l'attaque du 30 juin près d'Am Dafok. Objectif : rassurer la population, alors qu'aucun bilan officiel n'a été communiqué.
• Mondial 2026 : après la défaite de l'Argentine, Messi et Yamal parodiés avec l'IA
Après la victoire de l'Espagne face à l'Argentine en finale de la Coupe du monde, des vidéos créées par IA, montrant Lionel Messi avec Lamine Yamal bébé, sont devenues virales.
• Andy Burnham : qui est le nouveau Premier ministre britannique ?
🇬🇧 Andy Burnham succède à Keir #Starmer comme Premier ministre britannique. L’ancien maire de #Manchester veut s’attaquer au coût de la vie, renforcer la décentralisation et réformer l’aide sociale.
• Mali : nouvelle attaque contre l’armée dans le Nord du pays entre Anéfis et Gao
Au Mali, des soldats de l'armée malienne et des mercenaires russes sont tombés dans une embuscade samedi dans le nord du pays. L’attaque a eu lieu entre les localités d'Anéfis et de Gao.
• En images : les temps forts d'une Coupe du monde 2026 historique
Au terme de 104 matches, le Mondial 2026 a pris fin dimanche, à New York. Entre rebondissements, politique et football, la compétition de tous les records est entrée dans l'histoire. Retour en images
• Royaume-Uni : le nouveau Premier ministre Andy Burnham promet "de la stabilité"
Le nouveau Premier ministre du parti travailliste Andy Burnham vient de prendre la parole. Le successeur de Keir Starmer défend une politique plus collaborative, plus locale avec un recours aux servi
• Quel chantier attend l'idôle Zidane à la tête des Bleus, favori pour succéder à Deschamps ?
Alors que le Mondial 2026 vient de prendre fin et que Didier Deschamps a quitté son poste, le nom de Zinedine Zidane est déjà sur toutes les lèvres. L'ancien numéro 10 s’apprête à endosser le costume
• Mondial 2026 : la Roja, un collectif soudé porté par des joueurs qui se démarquent
La sélection espagnole est attendue à Madrid pour les célébrations après avoir été sacrée championne du monde de football hier soir. Cette victoire arrivent seize ans après la première étoile de Roja
=== 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/revue_editoriale/sources/rss/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/revue_editoriale/sources/rss/2026-07-20.md. ✅