Job ID: 76ce033272c7
Run Time: 2026-07-21 16:08:17
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-21
═══════════════════════════════════════════
=== BBC World ===
• Trump slaps 50% tariffs on Canada and Carney vows to 'intensify' trade talks
The duties mark a major escalation in trade tensions between the North American neighbours.
• US launches fresh strikes on Iran, as Trump warns of retaliation for deaths of soldiers
Iran says it has hit two ships in the Strait of Hormuz as well as targets in Bahrain and Jordan.
• Lebanese army says troops deploying in 'pilot zone' after Israeli withdrawal
A US-brokered agreement should see Israeli troops pulling out of a small part of Lebanon occupied during their conflict with Hezbollah.
• Row escalates in Ukraine over army chief's future
Protesters are demanding Oleksandr Syrskyi be removed and former defence minister Mykhailo Fedorov reinstated by Friday.
• Dozens hurt in Bologna protests after man dies while being restrained by police
Thousands of people took to the streets demanding justice for a Moroccan-born man who died on Sunday.
• Israeli air strike in Gaza City kills family of six, medics say
Firas al-Masri, his wife and their four children died in the attack, which the Israeli military says targeted a Hamas operative.
• Shock and anger after top Ghanaian politician sentenced to 20 years for illegal mining
Bernard Antwi Boasiako, known as "Chairman Wontumi", was also fined more than $10,000 (£7,450).
• 'Anti-ICE' army veteran started fire outside Manhattan federal building, say officials
Andrew Arrabaca, 43, was armed with two axes, a machete, three knives and fireworks, says the FBI.
• India's 'cockroach' protest continues a day after police crackdown
Delhi witnessed overwhelming violence on Monday, with at least 60 protesters wounded. Police said 118 of their men were also injured.
• Police officers arrested for allegedly seeking roadside bribe from Nigeria's anti-corruption boss
They are accused of stopping Musa Aliyu at a fake roadblock and telling him to drive to a cash machine.
=== Le Monde International ===
• Ma vie d’exilée russe à Paris : « Même plusieurs années plus tard, je comprends qu’on ne peut pas lutter contre la bureaucratie française »
« Une Russe à Paris » (1/6). La journaliste Elizaveta Osetinskaya, arrivée en France en 2022 en raison de son opposition à la guerre en Ukraine, évoque les difficultés rencontrées auprès de la préfect
• Le parti de Viktor Orban perquisitionné en raison de soupçons de corruption
En juin, six personnes, dont Balazs Bus, membre du Fidesz et ancien vice-président du Fonds national pour la culture, avaient été mises en examen pour détournement de fonds et placées en détention dan
• Flottille pour Gaza : le Parquet national antiterroriste ouvre une nouvelle enquête pour tortures
L’enquête préliminaire a été ouverte à la suite des plaintes de deux personnes ayant participé à une flottille pour Gaza en octobre 2025. Une autre enquête avait été ouverte par le PNAT début juin con
• El Mahdi Lyoubi, rappeur marocain emprisonné pour ses textes critiques envers la monarchie
L’artiste, connu sous le nom de scène de Mehdi Black Wind et résident français, a été arrêté alors qu’il effectuait des repérages pour un documentaire. Il est poursuivi pour « outrage à une institutio
• Une nouvelle espèce de singe identifiée dans le parc national de la Lomami, en République démocratique du Congo
Photographié pour la première fois en 2008, ce petit colobe aux lèvres rose orangé vient d’être officiellement décrit par une équipe internationale de chercheurs. Il pourrait être directement classé c
• Attaque armée à Stade dans un centre d’accueil, en Allemagne : l’auteur s’est suicidé en prison
Le jour de l’attaque, à la fin du mois de juin, l’homme avait rendez-vous avec plusieurs des victimes afin de discuter de la garde de sa fille, qui se trouvait sur les lieux avec sa mère. Quatre femme
• Cyberarnaques en Asie : l’ONU alerte sur « l’ampleur spectaculaire de cette économie criminelle »
Dans un rapport, les Nations unies notent que ces activités se poursuivent malgré l’arrestation des chefs de file et évoluent grâce à l’essor de l’intelligence artificielle.
• EN DIRECT, guerre en Ukraine : l’aviation russe attaque plusieurs villes, dont Zaporijia, Odessa, Sloviansk et la région de Kherson
Au cours de la nuit de lundi à mardi, l’armée russe a attaqué l’Ukraine avec 58 drones, dont 46 ont été neutralisés par les forces de défenses aériennes, assure l’armée ukrainienne. Un drone russe a t
• Israël en seconde ligne face à l’Iran, en pleine escalade entre Téhéran et Washington
Impliqué directement lors de la première phase de la guerre contre l’Iran, l’Etat hébreu se dit prêt à mener des actions « aussi bien défensives qu’offensives ».
• Bande de Gaza : L’ONU dénonce « l’intensification » récente des frappes israéliennes sur le territoire palestinien
Entre le 13 et le 20 juillet, le Haut-Commissariat de l’ONU aux droits de l’homme a recensé au moins 57 Palestiniens tués, dont six enfants et huit femmes. Parmi eux, 34 ont été tués loin de la “ligne
=== France Info Monde ===
• L'Union Européenne supprime définitivement sa subvention pour la Biennale de Venise en raison de la présence russe
Cette dotation accordée à la plus grande manifestation d'art contemporain au monde devait s’élever à deux millions d’euros.
• Deux Américains découvrent à 38 ans qu'ils ont été échangés à la naissance
À 38 ans, deux Américains découvrent grâce à un test ADN qu’ils ont été échangés à la naissance. Nés le même jour dans la même clinique, ils cherchent aujourd’hui à comprendre comment cette erreur a p
• Un doctorant iranien de l'université d'Orléans condamné en appel à de la prison ferme pour apologie du terrorisme
Lors de sa soutenance, l'homme a notamment dédié sa thèse à l'ancien guide suprême iranien, Ali Khamenei.
• Dee Dee Bridgewater et China Moses, un amour de la France : "C'est notre deuxième pays"
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",
• Confrontation violente en mer de Chine méridionale
Des heurts ont eu lieu en mer de Chine méridionale entre marins philippins et chinois, lundi 20 juillet. Les deux pays se rejettent la responsabilité de l’incident. Manille affirme qu’un de ses marins
• La Coupe du monde a attisé les discours haineux sur les réseaux sociaux, constate l'Observatoire espagnol du racisme et de la xénophobie
L'organisme a recensé plus de 40 000 messages haineux sur les réseaux sociaux au mois de juin. ll identifie le monde du sport comme le deuxième facteur déclencheur le plus fréquent, rapporte la RTVE.
• L'incendie à 100 km de Madrid est "l'un des plus complexes" de l'histoire de l'Espagne, selon les autorités
Ce feu est complexe car il s'est déclaré dans une zone presque vide de population, particulièrement aride avec énormément de broussailles laissées à l'abandon, facilitant sa propagation rapide.
• REPORTAGE. "Qui sera le prochain enlevé ?" : au sud du Liban, des familles s'inquiètent de la disparition de leurs proches
Des Libanais sont arrêtés ou enlevés par l'armée israélienne, puis détenus sans que leurs proches aient de leurs nouvelles. Un symbole inquiétant de l'occupation du pays par l'État hébreu.
• Les critiques fusent à l'encontre de LFI après le concert interrompu de Barbara Butch à Grenoble
L’artiste, boycottée par des militants pro palestiniens à la suite de son soutien à la proposition de loi Yadan, a dû interrompre son concert organisé par la municipalité, samedi dernier.
• Espagne : 26 000 hectares brûlés et des habitants évacués face à un incendie hors de contrôle
En Espagne, les incendies continuent de ravager plusieurs régions. Dans le centre du pays, plus de 26 000 hectares ont brûlé en cinq jours, contraignant des centaines d’habitants à évacuer. Les fortes
=== France 24 ===
• Royaume-Uni : première mesure pour le pouvoir d'achat, premières questions sur son coût
La suppression de la TVA sur l'électricité, première mesure contre la vie chère annoncée mardi par le Premier ministre britannique Andy Burnham, suscite déjà des interrogations sur son financement, a
• Ormuz et Bab el-Mandeb bloqués ? Le scénario d'un "siège" maritime du Golfe persique
Les Houthis yéménites ont annoncé, lundi, vouloir imposer un "embargo maritime" aux navires saoudiens dans le détroit de Bab el-Mandeb, à l'entrée de la mer Rouge. Et ce alors que le détroit d'Ormuz
• Italie : manifestation après la mort d’un homme lors d’une interpellation policière
Des centaines de personnes ont manifesté à Bologne après la mort d’Abderrahim Fakir, un homme de 42 ans d'origine marocaine décédé lors de son interpellation par la police.
• Le Parlement valide la nomination du sénateur LR François-Noël Buffet comme Défenseur des droits
Le sénateur de droite François-Noël Buffet, dont le profil jugé conservateur suscite l'inquiétude du monde associatif, va succéder à Claire Hédon au poste de Défenseur des droits, sa candidature prop
• Le Gabon et la France ouvrent une nouvelle page de leur coopération
En visite d'État de trois jours en France, le président gabonais Brice Clotaire Oligui Nguema a conclu trois accords avec les autorités françaises. Ils portent notamment sur la cession du camp milita
• Moyen-Orient : quelles conséquences économiques après la reprise des hostilités ?
Deux semaines après la reprise des hostilités avec les Etats-Unis, l'Iran a intensifié mardi ses attaques au Moyen-Orient dans ce qui est désormais une "guerre totale" selon Téhéran, et le conflit me
• Au Liban, "de nombreuses écoles ne seront pas prêtes à rouvrir en septembre"
À deux mois de la rentrée scolaire, au moins 100 000 enfants pourraient être privés de cours au Liban. Une évaluation menée avec le soutien de l'Unicef recense 340 établissements endommagés ou détrui
• IA : Microsoft signe un accord avec Mistral pour utiliser ses infrastructures en Europe
Le géant américain Microsoft a signé un accord de "plusieurs milliards" de dollars avec le champion français de l'intelligence artificielle (IA), Mistral, afin d'utiliser la puissance de calcul de se
• Loi d'urgence agricole : comment deux pesticides interdits vont être réintroduits
Division au sein du gouvernement et parmi les agriculteurs, fureur des ONG... La loi d'urgence agricole, en passe d'être adoptée par le Parlement, prévoit la réintroduction dérogatoire pour quelques
• France : l'Assemblée adopte la loi d'urgence agricole après des débats houleux
Dans une nouvelle séance crispée, l'Assemblée nationale a adopté dans la nuit de lundi à mardi la loi d'urgence agricole, et la possibilité de réintroduire de manière dérogatoire certains pesticides,
=== 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 /home/sebastien/.hermes/memory/modules/revue_editoriale/sources/rss/2026-07-21.md ✓