Job ID: 76ce033272c7
Run Time: 2026-06-22 16:09: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)~/.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-22
═══════════════════════════════════════════
=== BBC World ===
• Vance says Iran will allow nuclear inspectors back into the country
The US vice-president says a great deal of progress has been made after the first round of talks between the US and Iran.
• At least 13 killed and dozens injured after Qatar gas explosion
The city's main liquified natural gas (LNG) processing site suffered a "technical accident" in the Ras Laffan industrial zone.
• Myanmar army killed over 700 civilians in six months, UN says
The new UN report says the 702 civilian deaths over six months last year included 153 children.
• Largest ever cocaine bust in Australia after police raid underground bunker
Police seized 2.7 tonnes of cocaine worth an estimated A$816m after searching a property in western Sydney.
• Russian troop build-up threatens city seen as key to seizing Ukraine's Donbas
If Kostyantynivka falls, Russian forces would be able push towards Ukraine's last remaining strongholds in the east.
• Guinea bans exports of raw gold to boost local refining
The prohibition is intended to boost the country's economy by refining gold domestically.
• Schools close as more than half of France under red heat alerts
The health minister warns many citizens "will suffer", with temperatures set to peak on Monday.
• Trump-backed political outsider wins Colombia election, initial count shows
Abelardo de la Espriella appears to have narrowly defeated his rival Iván Cepeda, who says the preliminary count is "not yet official or binding".
• Former Kenyan justice minister blocked from entering Uganda, lawyers' body says
Martha Karua is a lawyer representing detained Ugandan opposition leader Kizza Besigye who is on trial for treason.
• Japan quintuples visa fees in first price hike since 1978
Authorities say they do not expect the hikes to have an "immediate impact on inbound tourism".
=== Le Monde International ===
• Une charte sur la famille et les valeurs, au cœur de l’offensive ultraconservatrice en Afrique
Les promoteurs du texte, en cours de discussion, dénoncent l’influence des idées occidentales imposées à travers les programmes des Nations unies. Leur initiative est soutenue par la droite chrétienne
• Sous la pression des Etats-Unis, Cuba entre dans l’ère de l’économie de marché
Alors que l’île traverse une crise sociale aiguë, le gouvernement castriste a adopté des mesures qui font perdre à l’Etat son rôle directeur, ouvrant l’activité au capital privé et international. Wash
• Le Bürgenstock, citadelle de la diplomatie hôtelière helvétique
Perché sur un éperon rocheux à la verticale du lac des Quatre-Cantons, le complexe, situé en Suisse centrale, abrite les négociations entre Américains et Iraniens. Il a déjà servi à plusieurs négociat
• EN DIRECT, guerre au Moyen-Orient : Marco Rubio se rendra, à partir de mardi, dans trois pays du Golfe, en pleines négociations avec l’Iran
En pleines négociations avec l’Iran pour mettre définitivement fin à la guerre au Moyen-Orient, le chef de la diplomatie américaine se rendra aux Emirats arabes unis, au Koweït et à Bahreïn jusqu’à je
• Le Sri Lanka, nouveau terrain de prédilection des escrocs en ligne
Le pays a procédé depuis le début de l’année 2026 à des centaines d’arrestations de personnes issues de Chine ou d’Asie du Sud-Est soupçonnées d’œuvrer pour le compte de réseaux spécialisés dans les a
• EN DIRECT, guerre en Ukraine : les dirigeants des principales puissances militaires européennes se réuniront mercredi à Berlin
Le gouvernement a fait savoir que la présidente du conseil, Giorgia Meloni, participerait à la réunion avec ses homologues britannique, français, allemand et polonais, afin d’améliorer la coordination
• Le président du Liban, Joseph Aoun, contraint à l’équilibrisme entre l’Iran et les Etats-Unis
Le retour de la République islamique dans le jeu libanais, à la faveur de l’accord avec les Etats-Unis, oblige le chef de l’Etat à dialoguer avec Téhéran pour amener le Hezbollah à un compromis sur so
• En Australie, la hausse des taux peine à freiner la folle surchauffe de l’immobilier
Dans un pays où les emprunts immobiliers sont le plus souvent à taux variables, chaque décision de la banque centrale est scrutée avec anxiété. A Sydney, où les prix de l’immobilier ont plus que quadr
• Ambani lance l’introduction en Bourse du siècle en Inde
L’homme le plus riche du pays prévoit de faire coter Jio Platforms, l’entreprise spécialisée dans la tech de son conglomérat. Elle pourrait lever près de 4 milliards de dollars.
• En Colombie, des manifestations massives pour protester contre l’élection du candidat d’ultradroite Abelardo de la Espriella
L’avocat et homme d’affaires pro-Trump a remporté le second tour de l’élection présidentielle en Colombie, dimanche, en dominant le candidat de gauche, Ivan Cepeda.
=== France Info Monde ===
• Les dégâts, causés par la guerre entre Israël et le Hezbollah au Liban, sont estimés à plus d'un milliard de dollars selon une étude
Le rapport, publié par le Pnud et le CNRS libanais, s'appuie sur la comparaison d'images satellite du 23 octobre 2025 et du 29 avril 2026.
• "Je veux rentrer à Moscou" : distribution de carburant suspendue, touristes affolés... L'armée ukrainienne met la Crimée occupée sous pression
Les plages de la péninsule, d'habitude bondées à cette époque, sont désertes. Et les quelques touristes ont de drôles de surprises sur place.
• En Espagne, l'ancien bras droit de Pedro Sánchez condamné à vingt-quatre ans de prison pour corruption
Sous la pression de l'opposition, le Premier ministre espagnol doit prononcer un discours très attendu mercredi au Parlement.
• "Certains sont déçus de moi" : comment le Premier ministre britannique Keir Starmer, qui a démissionné lundi, a été poussé vers la sortie
Attaqué sur sa gauche comme sur sa droite, jugé indécis et trop austère par une partie des Britanniques, il n'a pas su mettre en œuvre les promesses de changement de la campagne électorale de 2024. Un
• À la découverte des châteaux au bord de la Meuse
Lundi 22 juin, le journal de 13 heures vous emmène en Belgique, à la découverte du château perché de Walzin. Il est très étonnant, accroché à flanc de falaise au bord de la Meuse.
• Canicule : trois questions sur le congé climatique, proposé par Marine Tondelier et déjà déployé en Espagne
Mis en place en Espagne, après les inondations meurtrières de 2024, ce congé climatique prévoit des congés payés en cas d'alerte rouge ou orange, afin de protéger les travailleurs qui ne peuvent pas t
• Six personnes sont mortes dans des frappes russes en Ukraine, dont trois membres d'une famille nombreuse
Kiev a intensifié, dernièrement, ses attaques contre le territoire russe. Les quatre aéroports de Moscou ont été momentanément fermés lundi en raison de vagues de drones ukrainiens.
• Keir Starmer annonce sa démission après deux ans à la tête du gouvernement britannique
Poussé vers la sortie par une fronde grandissante au sein du Parti travailliste, Keir Starmer annonce sa démission après seulement deux ans au pouvoir. Critiqué pour sa politique budgétaire et fragili
• Alan Greenspan, ancien patron de la banque centrale américaine, est mort à l'âge de 100 ans
Ce républicain affiché a réussi à se maintenir à la tête de la Fed pendant près de vingt ans. Mais il a vu sa réputation se ternir avec la crise financière de 2008.
• Polémique : le nouvel Air Force One offert par le Qatar
Pendant que Donald Trump refuse de financer les 300 milliards de dollars nécessaires à la reconstruction de l’Iran et se tourne vers les pays du Golfe, le président américain reçoit un nouvel Air Forc
=== France 24 ===
• Mondial 2026 : comment des équipes sont déjà sont éliminées sans jouer leur 3e match
Le Mondial 2026 apporte un changement subtil. Désormais, les équipes à égalité de points à l'issue de la phase de groupes sont en priorité départagées par les résultats de leurs confrontations direct
• Mondial 2026 : Le "rameur viking” des Norvégiens envahit Times Square
Les supporters norvégiens ont envahi Times Square dimanche, reprenant leur célèbre mouvement viking. La Norvège affrontera le Sénégal le 23 juin lors de son deuxième match de poule.
• Guerre en Ukraine : pourquoi Zelensky lance-t-il un ultimatum à la Biélorussie ?
Le président ukrainien, Volodymyr Zelensky, a donné une semaine au dirigeant biélorusse pour démanteler des installations utilisées par la Russie, selon Kiev, pour envoyer des drones contre l’Ukraine
• Jyeuhair, un artiste sans frontières
Révélé dans la saison 3 de Nouvelle École, Jyeuhair n’a laissé personne indifférent. Dans la musique depuis ses 13 ans, il a d’abord façonné des prods avant de poser sa voix. Inspiré par Lil Wayne, E
• Ebola en RD Congo : plus de 1 000 cas confirmés
En République démocratique du Congo, l’épidémie d’Ebola poursuit sa progression. Les autorités sanitaires recensent désormais 1 003 cas confirmés et 254 décès, franchissant pour la première fois le s
• Erbil SC, un club devenu une institution footballistique en Irak
Ce lundi, la France affronte l’Irak en phase de groupes. Malgré un lourd désavantage dans une poule relevée, cette Coupe du monde reste un événement majeur pour l’Irak, de retour dans la compétition
• Ebola en RD Congo : l'OMS constate une accélération de la transmission
La transmission de l'épidémie d'Ebola en République démocratique du Congo (RDC) s'accélère, malgré le renforcement des mesures de riposte sanitaire, a indiqué l'Organisation mondiale de la santé (OM
• Guerre en Ukraine : Xenia Fedorova, la porte voix du Kremlin
Dans le contexte de la guerre en Ukraine, la Russie s’appuie sur des relais médiatiques pour défendre sa version des faits. Parmi eux, Xenia Fedorova, ancienne figure de l’antenne de RT France, aujou
• Mondial 2026 : sur la route de Boston au camp de base de l’équipe de France
On vous amène dans les coulisses d’une mission #CoupeduMonde, l’événement le plus suivi de la planète. Comment nos journalistes s’organisent sur la route, comment gère-t-on les directs et à quel poin
• Avec De la Espriella, les "droites dures" en Amérique latine enregistrent une nouvelle victoire
Au terme d'un scrutin serré, l'avocat et millionnaire d'ultradroite Abelardo de la Espriella a remporté la présidentielle colombienne face à son rival de gauche, Ivan Cepeda, dimanche. En promettant
=== 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