Job ID: 76ce033272c7
Run Time: 2026-07-05 16:10:01
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-05
═══════════════════════════════════════════
=== BBC World ===
• Iran's supreme leader absent as senior officials attend ayatollah's funeral
Mojtaba Khamenei has not been seen in public since the attack which killed his father at the outset of the US-Israel war with Iran.
• US marks 250th birthday with fireworks, flyovers and extreme weather
US President Donald Trump's speech included some of his political agenda but also honoured war veterans and American history.
• From 'a beautiful night' to 'world's greatest hangover', guests react to Taylor and Travis's wedding
Some of the famous guests have been posting on social media about the big day in New York.
• Evacuations in Guam as super typhoon Bavi approaches
The storm is forecast to bring winds in excess of 160mph and waves nearly 11m high when it makes landfall on Monday.
• Australia probes mystery space balls that washed up on beach
Officials are searching for the origins of six pieces of space debris discovered on Forrest Beach in Queensland.
• Moment of destiny for France's Le Pen in verdict to decide her future in presidential race
Far-right leader Marine Le Pen is appealing against a verdict which found her guilty of misusing EU funds.
• Nigeria says two nationals killed in South Africa amid rise of anti-migrant attacks
Nigeria's government said one of its nationals was reportedly killed by police officers "using gruesome interrogation techniques".
• Thousands welcome home Cape Verde footballers after stunning World Cup run
Tens of thousands of fans formed an ocean of blue outside the airport in capital city, Praia.
• Chinese underground church figure Jin Mingri freed from prison
The Zion Church founder's release comes after a direct plea to Xi Jinping from Donald Trump.
• Ukraine hits major oil terminal in Russia's St Petersburg
Ukrainian President Volodymyr Zelensky says the target is key infrastructure "that generates revenue for Russia's war".
=== Le Monde International ===
• La course hippique Durban July, un « Ascot sud-africain » miroir des aspirations multiraciales et des fractures sociales du pays
Chaque premier samedi de juillet, la plus prestigieuse course de chevaux d’Afrique se tient à Durban. Un rendez-vous mondain qui aspire à être imperméable aux divisions de la société.
• Au Venezuela, le séisme a mis en lumière une situation économique et sociale catastrophique : « J’ai peur qu’on connaisse à nouveau des pénuries »
Alors que les « barrios » de Caracas menacent de s’effondrer après les séismes du 24 juin, la population tente de s’organiser face à l’urgence humanitaire et à l’inflation galopante. Le ressentiment g
• « Il aurait fallu être plus équitable » : la frustration du Mexique, à l’heure d’accueillir son dernier match de la Coupe du monde 2026
Dans une atmosphère d’unité nationale, la sélection mexicaine doit affronter l’Angleterre, lundi, en huitièmes de finale, au stade Azteca de Mexico. C’est le dernier des 13 matchs programmés dans le p
• « La Palestine est devenue un étalon de vertu, mais aussi une métaphore »
La sociologue Laetitia Bucaille analyse, dans une tribune au « Monde », la manière dont le conflit au Proche-Orient génère des postures qui figent les individus et les sociétés dans des représentation
• EN DIRECT, guerre en Ukraine : Kiev annonce avoir frappé plusieurs sous-stations électriques et une base aérienne en Crimée annexée ; un mort dans l’attaque d’une station-service ukrainienne à Izioum
De son côté, la Russie dit avoir intercepté et détruit 71 drones ukrainiens au-dessus de ses territoires et de ceux de l’Ukraine qu’elle occupe, lors de cette même nuit.
• VIDÉO – La qualification du Maroc et de la France en quarts de finale de la Coupe du monde
Les Lions de l’Atlas ont remporté leur match contre le Canada (3-0) tandis que les Bleus se sont sortis d’un match compliqué face au Paraguay (1-0). Les deux équipes s’affronteront en quarts de finale
• En Espagne, l’incendie qui a parcouru plus de 2 000 hectares en Catalogne et ravagé une partie de l’espace naturel protégé des Gavarres est stabilisé
Le feu, qui serait dû à une négligence, s’est déclaré vendredi matin près de Gérone. Les pompiers s’attendent dimanche à « une journée compliquée ».
• Au Yémen, 16 soldats tués dans une attaque des rebelles houthistes
En guerre contre les forces du gouvernement depuis 2015, les houthistes contrôlent de larges pans du pays, dont la capitale, Sanaa.
• VIDÉO – 250 ans des Etats-Unis : les images des célébrations et du discours de Donald Trump
A Washington, le président américain n’a pu prononcer son discours qu’après 23 heures, la foule ayant été évacuée durant plusieurs heures du National Mall en raison d’un risque d’orages violents.
• Iran : à Téhéran, grande prière pour les funérailles d’Ali Khamenei, en l’absence de son fils Mojtaba
Le président iranien, Massoud Pezeshkian, et des membres du gouvernement – dont l’influent Mohammad Bagher Ghalibaf, président du Parlement et chef de l’équipe de négociation iranienne – étaient prése
=== France Info Monde ===
• REPORTAGE. "On peut voir toutes les marques de l’histoire récente" : en Syrie, les touristes font leur retour à Palmyre
Près d'un an et demi après la chute de Bachar al-Assad, les touristes reviennent dans le site archéologique de Palmyre, partiellement détruit par l'Etat islamique.
• Désengagement américain, menaces de la Russie : l'Otan à la croisée des chemins
Le sommet de l'Otan qui s'ouvre mardi à Ankara sera officiellement consacré aux dépenses militaires. Mais derrière les engagements budgétaires, une question bien plus fondamentale se pose : les Europé
• Égypte : des tombes scellées depuis 2000 ans et les vestiges d'une cité byzantine découverts dans le désert à l'ouest de la ville d'Alexandrie
Le site mis à jour par des archéologues égyptiens serait celui de l'ancienne ville de Leukaspis, un port méditerranéen prospère entre les périodes hellénistique et byzantine.
• Emmanuel Macron va se rendre en Syrie, selon la présidence syrienne, une première pour un président français depuis 2009
La visite du chef d'Etat français sera aussi la première d'un responsable d'une grande puissance occidentale depuis la prise de pouvoir Ahmed al-Charaa.
• EN IMAGES. Les funérailles d'Etat de l'ayatollah Ali Khamenei rassemblent une foule de pèlerins à Téhéran
La Grande Mosalla de Téhéran, immense complexe politico-religieux au cœur de la capitale, continue d'accueillir la foule au deuxième jour des cérémonies. Celui-ci a été marqué par une prière funéraire
• "Ce serait un exploit pour nous, on y croit !" : l'impatience des supporters franco-marocains avant la rencontre entre les Bleus et les Lions de l'Atlas en Coupe du monde de football
La France affrontera le Maroc en quart de finale de la Coupe du monde le 9 juillet prochain, une affiche qui enthousiasme les supporters franco-marocains.
• REPORTAGE. "Nous n’achetons plus que ce qui nous est nécessaire" : en Iran, les obsèques d'Ali Khamenei ne font pas oublier les difficultés de la vie quotidienne
Alors que l'Iran tente de montrer la force de son régime au cours de trois jours d'obsèques de l'ayatollah Ali Khamenei, l'inflation continue de rendre le quotidien de la population du pays très diffi
• DIRECT. Funérailles d'Ali Khamenei : une grande prière organisée à Téhéran en hommage à l'ancien guide suprême, en l'absence de son fils et successeur Mojtaba
Dimanche et lundi ont été déclarés jours fériés dans tout le pays pour permettre aux Iraniens de venir se recueillir dans la capitale, avant que les funérailles se poursuivent dans d'autres villes d'I
• Donald Trump qualifie les Etats-Unis de "chef d'œuvre de l'histoire de l'humanité", les célébrations des 250 ans de l'indépendance perturbées par les orages
La météo a joué des tours au public venu en nombre à Washington, samedi, pour assister aux célébrations en grande pompe de l'anniversaire de la Déclaration d'indépendance.
• Le pape Léon XIV exhorte à faire plus pour les migrants
En visite à Lampedusa (Italie), le pape Léon XIV a lancé un nouvel appel en faveur des migrants, dénonçant les responsabilités politiques et économiques à l'origine des drames en Méditerranée. Sur cet
=== France 24 ===
• Super Typhon "Bavi" : les îles américaines de Guam se barricadent
Avec des vents à 280 km/h - équivalents à un ouragan de catégorie 5 et des rafales pouvant atteindre 333 km/h, Bavi devrait atteindre la zone tôt lundi matin. Dimanche, les véhicules sont rares sur l
• Iran : grande prière pour les funérailles d'Ali Khamenei à Téhéran
Abdallah Malkawi est en direct de Téhéran.
• Guerre à Gaza : l'école, une survie pour les enfants gazaouis
Alexandre Chatillon, directeur général de l'ONG Super Novae, et Rami Abou James, journaliste à Gaza, sont nos invités.
• Funérailles d'Ali Khamenei : son successeur absent, de hauts responsables iraniens réunis à Téhéran
Les funérailles nationales de l'Ayatollah Ali Khamenei se poursuivent, dimanche, à la Grande Mosalla de Téhéran, où de hauts responsables iraniens se sont réunis pour une grande prière. Trois de ses
• Mondial 2026 : Les Bleus malmenés par le Paraguay mais qualifiés en quarts
L'Equipe de France a su se défaire du Paraguay grâce à un penalty accordé à la 70ème minute, et transformé par Kylian Mbappé. Les Bleus ont été chahutés mais filent en quarts de finale. Ils rejoignen
• Mondial 2026 : l'Angleterre prête à écrire son propre chapitre face au Mexique
L'Angleterre vise dimanche l'accès aux quarts de finale du Mondial 2026, lors de sa confrontation avec le Mexique. Un match en terrain hostile, dans le mythique stade Azteca, nécéssitant une adaptati
• Elan de contestations en Iran : un combat démocratique silencieux ?
Klan Habibian, co-fondateur de "We are Iranian Students", est notre invité.
• La France en quarts de finale du Mondial : les français derrière les Bleus !
Quelque 12,2 millions de téléspectateurs en moyenne ont regardé sur M6 la victoire de l'équipe de France contre le Paraguay (1-0) samedi soir lors du Mondial-2026, "un record d'audience historique" a
• Frappes sur Kiev, séismes au Venezuela, 250e anniversaire des États-Unis : la semaine en images
Retour sur les temps forts de l'actualité de la semaine : une attaque massive russe provoque des incendies à Kiev, la France domine la Suède lors de la Coupe du monde, les États-Unis célèbrent 250 an
• La France rejoint les quarts de finale en battant le Paraguay dans la douleur
L'Équipe de France s'est qualifiée pour les quarts de finale de la Coupe du monde en battant le Paraguay (1-0) à Philadelphie samedi. Kylian Mbappé a marqué le seul but d'un match très tendu sur péna
=== 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.
RuntimeError: [Errno 32] Broken pipe