Job ID: 76ce033272c7
Run Time: 2026-07-08 16:12:23
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-08
═══════════════════════════════════════════
=== BBC World ===
• Trump says ceasefire is 'over' after US and Iran trade strikes
Speaking ahead of a Nato summit, the president says US negotiators can keep talking with the Iranians "if they want".
• US strikes target Iranian military boats
The US has launched the strikes on Iran in response to attacks on three oil tankers in the Strait of Hormuz.
• German doctor jailed for murder of 15 patients and suspected of more
The German palliative care doctor has been sentenced to life imprisonment for killing 15 of his patients.
• Will Le Pen rise again? French nationalist leader defiant after court's ruling
Within hours of a court of appeal confirming a guilty verdict, Marine Le Pen had already launched her presidential campaign.
• Teenager arrested after two girls, 13, seriously injured in German school attack
Police said a major operation was under way in the area of Welfen-Gymnasium secondary school in Schongau, Bavaria.
• Nato allies announce £37bn for new missile project
Prime Minister Sir Keir Starmer will convene around a dozen leaders to discuss the programme in Ankara.
• Eight killed after landslide hits girls' school in Bangladesh
Rescuers pull bodies from the mud after heavy monsoon rains batter the south-eastern coast.
• Nigeria's president demands to know how fake agency was allegedly set up in his office
Adeniyi Adeyemi allegedly forged a letter of appointment and secured funding for an agency the presidency knew nothing about.
• Trains and emergency calls affected after major outage at Australia's largest telecoms company
Servers at data centres in Sydney and Melbourne were to blame but the exact cause remains unknown.
• Khamenei's coffin carried through Shia shrines as ceremonies held in Iraq
The remains of Iran's late supreme leader are transported to Najaf and Karbala, as funeral ceremonies continue for a fifth day.
=== Le Monde International ===
• EN DIRECT, guerre au Moyen-Orient : les Etats-Unis pourraient frapper l’Iran « plus en profondeur » dans la nuit, selon Pete Hegseth, le secrétaire d’Etat à la défense
Donald Trump avait menacé un peu plus tôt, mercredi, de détruire des infrastructures civiles iraniennes et de « prendre le contrôle de l’île de Kharg ». Les bombardements ont repris durant la nuit de
• EWC 2026 à Paris : les coulisses de l’union controversée entre la France et l’Arabie saoudite dans l’e-sport
En organisant l’accueil, à Paris, de ce tournoi de jeux vidéo saoudien, dont la cérémonie d’ouverture a lieu mercredi 8 juillet avec un concert d’Aya Nakamura, l’Elysée valide la domination du royaume
• En Allemagne, attaque dans un collège-lycée en Bavière : deux blessées graves, un adolescent de 16 ans arrêté
Les policiers suspectent une situation d’« amok », terme employé pour désigner un acte délibéré motivé par une folie meurtrière, selon une porte-parole de la police à l’Agence France-Presse.
• « Sa prothèse lui fait mal, mais il supporte pour ne pas montrer qu’il est différent » : à Gaza, le traumatisme des enfants mutilés de guerre
En raison des bombardements menés par Israël depuis le 7 octobre 2023, la bande de Gaza détient le triste record du plus grand nombre d’enfants amputés par habitant au monde, selon l’Organisation mond
• Transport aérien : l’Union européenne renforce les droits des passagers
Les Etats membres ont validé, mercredi, le nouveau texte, qui entrera en vigueur en 2027. Au cœur des discussions, les indemnisations des voyageurs en cas de retard restent finalement les mêmes.
• Pakistan : 42 morts ces quatre derniers jours lors d’attaques dans le Baloutchistan
Le Pakistan lutte contre une insurrection séparatiste au Baloutchistan, où les combattants prennent pour cibles, entre autres, les forces de l’Etat.
• L’économie mondiale résiste mieux que prévu à la crise au Moyen-Orient, selon le FMI, notamment grâce à la croissance de l’IA
L’économie mondiale devrait croître de 3 % cette année, après 3,5 % en 2025, estime le Fonds monétaire international. La croissance est notamment tirée par la production de puces destinées à l’intelli
• « On peut se débarrasser de son stress ici » : à Oakland, loin de la Coupe du monde, le « pouvoir du football » au service des réfugiés
L’organisation Soccer Without Borders est installée au sein d’un lycée de la ville californienne qui n’accueille que des migrants ou des réfugiés.
• Les pays de l’OTAN, y compris les Etats-Unis, réaffirment leur engagement « indéfectible » envers la clause d’assistance mutuelle
« Une attaque contre un allié est une attaque contre tous », rappelle le texte de cette déclaration, publiée au deuxième et dernier jour du sommet de l’Alliance à Ankara.
• « La chute de Mogadiscio est une hypothèse probable » : en Somalie, la mission de paix de l’Union africaine en péril après la fin annoncée du financement américain
Les Etats-Unis ont l’intention de se désengager du Bureau de soutien de l’ONU à Mogadiscio, qui appuie logistiquement la force de l’Union africaine. Un coup dur pour la présidence somalienne, confront
=== France Info Monde ===
• Fin du cessez-le feu en Iran : "La probabilité de la reprise de la guerre" est réelle, estime Adel Bakawan
Invité de franceinfo, le chercheur Adel Bakawan revient sur l'échec du cessez-le-feu, les tensions autour du détroit d'Ormuz et les perspectives d'une reprise des hostilités entre l'Iran et les États-
• VIDEO. Emmanuel Macron annonce de futurs "exercices" militaires des pays de la "Coalition des volontaires" alliés de l'Ukraine
"Le 13 juillet prochain, à Paris, la Coalition des volontaires se réunira à nouveau", a également précisé le chef de l'Etat à l'issue d'un sommet de l'Otan à Ankara.
• Surmortalité liée à la canicule : les autorités fédérales belges ont-elles bien pris la mesure de l'urgence ?
En Belgique, les pouvoirs publics sont pointés du doigt pour leur inaction durant la vague de chaleur qui a frappé l'Europe de l'Ouest fin juin, malgré les prévisions et les avertissements des spécial
• Donald Trump annonce que les Etats-Unis vont autoriser l'Ukraine à fabriquer des missiles Patriot, réclamés de longue date par Kiev pour intercepter les missiles russes
"Nous n'en avons pas encore informé l'entreprise, mais ça va s'arranger", a ajouté le président américain devant la presse jeudi.
• En Thaïlande, un conflit familial ravive une loi sur les donations aux enfants jugés "ingrats"
Un conflit, sur fond d'accusations de violences sexuelles, au sein de la riche famille thaïlandaise Bhirombhakdi met en lumière une loi de 1908 autorisant les parents à révoquer des dons faits à leurs
• "C'est fini, je ne veux plus négocier avec eux" : la guerre va-t-elle reprendre entre les États-Unis et l'Iran, comme l'annonce Donald Trump ?
Des hostilités ont eu lieu dans la nuit du 7 au 8 juillet. L'armée américaine a conduit des frappes sur plus de 80 cibles, et l'Iran a répliqué. Dans la matinée de mercredi, Donald Trump affirme que l
• Plusieurs personnes blessés dans un collège-lycée en Bavière, un suspect arrêté, annonce la police allemande
"Le nombre de personnes concernées et la gravité de leurs blessures sont en cours de clarification", a déclaré la police.
• Cessez-le-feu enterré, cours du pétrole en hausse... Ce que l'on sait de la reprise des hostilités entre les Etats-Unis et l'Iran
Les Américains ont mené dans la nuit de mardi à mercredi leur plus importante opération militaire en Iran depuis l'accord conclu le 17 juin. "C'est simplement une perte de temps de négocier avec eux,
• Donald Trump déclare le cessez-le-feu avec l'Iran "terminé", après la reprise des hostilités
Washington a mené de nouvelles attaques contre l'Iran, après des tirs contre des navires commerciaux dans le détroit d'Ormuz. Téhéran a répondu avec des drones et des missiles contre des positions amé
• Reprises des frappes américaines contre l'Iran après les attaques de navire dans le détroit d'Ormuz
Les hostilités ont repris entre les Etats-Unis et l'Iran. Le Corps des Gardiens de la Révolution dit avoir frappé 85 installations sur des bases américaines au Koweït et à Bahreïn, mercredi 8 juillet.
=== France 24 ===
• Pourquoi Donald Trump s’entête à vouloir vendre des F-35 à la Turquie
En dépit de l'opposition du Congrès américain et d'Israël, Donald Trump a annoncé qu’il était temps de revenir sur l’interdiction de la vente des chasseurs F-35 à la Turquie. Car le président des Éta
• Condamnée, Marine Le Pen se pourvoit en cassation et reste candidate à l'Elysée
La cheffe de file du Rassemblement national (RN), Marine Le Pen, a annoncé mardi sur TF1 qu'elle se pourvoyait en cassation après sa condamnation pour détournement de fonds publics par la cour
• Donald Trump menace l’Iran de frappes "fortes" dans la nuit
Donald Trump a affirmé mercredi que les Etats-Unis allaient frapper "fort" l'Iran cette nuit, à l'issue du sommet de l'Otan à Ankara. "Nous allons les frapper fort cette nuit", a déclaré le président
• Yarn Bombing : quand le tricot devient graffiti
Le tricot, un truc de grand-mère ? En 2005, un nouvel art urbain est né : le yarn bombing, qui consiste à "taguer" les murs avec du fil. Au-delà de l'aspect esthétique, c'est aussi un moyen pour les
• REPLAY - Trump et Al-Charaa : la Syrie et Israël au cœur des échanges
Le président syrien Ahmed Al-Charaa et le président américain Donald Trump ont pris la parole en marge du sommet de l'#Otan à Ankara en Turquie. Donald Trump s'est dit prêt à retirer la Syrie de la l
• Otan : un sommet existentiel ? Parlons-en avec M. Pierini, P. Martin-Genier, C. Bret et A. May
Deuxième jour du sommet de l'Otan à Ankara. Au programme, photo de famille puis réunion de travail entre les 32 membres de l'Alliance. Donald Trump n'en finit plus d'évoquer la déception que ses alli
• REPLAY - Ukraine, Iran : Trump et Zelensky s’expriment au sommet de l’OTAN
Les Etats-Unis vont frapper "fort" l'Iran cette nuit, a prévenu mercredi le président Donald Trump qui a estimé que le cessez-le-feu était terminé après de violents échanges de frappes, tout en laiss
• Au sommet de l’OTAN, Trump se défoule contre les alliés européens
"Je suis très en colère contre l'Otan": Donald Trump a exprimé mercredi sa frustration vis-à-vis de l'Alliance atlantique au dernier jour du sommet d'Ankara, dénonçant, pêle-mêle, l'attitude des alli
• Élection présidentielle 2027 : Marine Le Pen candidate
Marine Le Pen éligible mais condamnée en appel à trois ans de prison dont un an ferme sous bracelet électronique. La cheffe de file des députés RN a, malgré cette condamnation, annoncé être candidate
• Otan : Donald Trump veut maintenir les États-Unis au sein de l’Alliance
Donald Trump a déclaré mercredi lors du sommet de l'Otan qu'il souhaitait que les États-Unis restent au sein de l'alliance transatlantique, a indiqué à Reuters une source au fait des discussions
=== 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 archivé dans ~/.hermes/memory/modules/revue_editoriale/sources/rss/2026-07-08.md ✅