Job ID: 76ce033272c7
Run Time: 2026-06-30 16:09:36
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-06-30
═══════════════════════════════════════════
=== BBC World ===
• Supreme Court's birthright ruling is major blow to Trump
The BBC’s Gary O’Donoghue explains what the court's landmark ruling means for the US president.
• US Supreme Court upholds bans on transgender women in female school and college sports
It rules that states can ban transgender athletes from competing in women's and girls' sports.
• Angry Venezuelans accuse government of negligence over earthquake response
People in areas devastated by twin earthquakes say they need more support from the government.
• Manhunt after bomb injures Ukrainian oligarch in Monaco
The blast was caused by an explosive device which appeared to contain bolts and pellets, the head of Monaco's government said.
• US envoys in Doha to meet mediators but not Iranians, Qatar says
Qatar's foreign ministry spokesman says no high-level meetings or direct talks between the US and Iran are scheduled.
• Senegalese MPs move to clip presidential powers as tensions mount
The proposed changes agreed by a majority of MPs sparked protests outside parliament.
• Founder of Asian super-app Gojek sentenced to years in jail for corruption
The case against Gojek founder Nadiem Makarim relates to a laptop deal made during his term as Indonesia's education minister.
• Thousands of anti-migrant protesters march in South Africa amid heavy police presence
Foreigners have already left South Africa ahead of the deadline set by anti-migrant groups.
• Flooding hits Ghana's capital killing 13 people - with another storm forecast
People have been urged to relocate to high ground or stay indoors as more rain is expected to come.
• Chinese tycoon sentenced to 30 years in US jail
Guo Wengui branded himself as a China critic, gaining followers who backed his fraudulent schemes.
=== Le Monde International ===
• Des perquisitions sont en cours dans une nouvelle affaire de détournements financiers du RN et de ses alliés au Parlement européen
Cette enquête, ouverte en juillet 2025 sur la base d’un rapport de la direction des affaires financières du Parlement européen, porte sur 4,33 millions d’euros que le groupe Identité et démocratie (ID
• EN DIRECT, guerre en Ukraine | « La défense antiaérienne russe trouée n’est pas une légende » : l’Ukraine affirme avoir ouvert un « corridor » vers Moscou
« Les frappes contre des objectifs à Saint-Pétersbourg, Oust-Louga et Moscou ne sont possibles que grâce à un corridor ouvert dans le système dense de défense antiaérienne sur le territoire ennemi »,
• La Cour suprême des Etats-Unis valide l’exclusion des sportives transgenres de compétitions féminines, une « grande victoire » pour Donald Trump
Cette décision de la Cour suprême est la dernière en date à restreindre les droits des personnes transgenres, mis à mal par des Etats conservateurs mais aussi par l’administration de Donald Trump.
• En Mauritanie, le pouvoir relance le dialogue avec les prisonniers djihadistes
Neuf militants salafistes ont été libérés de prison le 19 juin, une première depuis 2022, confirmant la politique de la main tendue de Nouakchott, afin de « gérer le risque sécuritaire ».
• Faut-il abattre les requins après des attaques mortelles ? La méthode divise en Australie, où quatre personnes ont été tuées en 2026
Le gouvernement de Nouvelle-Galles du Sud, où s’est produite une nouvelle attaque le 13 juin, étudie toutes les options pour protéger sa population.
• Akihiro Miwa, artiste aux multiples talents et icône queer au Japon, est mort
Il avait construit son identité artistique sur le refus d’être enfermé dans un genre. Ce survivant du bombardement atomique de Nagasaki s’est éteint le 20 juin à 91 ans.
• Séismes au Venezuela : plus de 50 000 personnes portées disparues et un « risque accru de flambées de maladies »
L’OMS redoute l’apparition « de maladies à transmission vectorielle et hydrique », comme la fièvre jaune et la dengue. Le bilan officiel du double séisme, très provisoire, a atteint 1 719 morts et 5 0
• Guerre en Iran : les émissaires américains à Doha pour rencontrer des médiateurs qataris, mais pas les négociateurs iraniens
Alors que Washington dépêche une équipe à Doha, les discussions s’annoncent cruciales pour l’équilibre régional et la diplomatie au Moyen-Orient.
• « L’ampleur de la révolution de l’IA aux Etats-Unis conduit Donald Trump à briser le tabou des nationalisations »
Des prises de participation dans les sociétés stratégiques liées à l’intelligence artificielle à leur nationalisation, il n’y a qu’un pas que pourrait franchir Donald Trump, selon les propos tenus par
• Le Royaume-Uni annonce un budget militaire de 300 milliards de livres pour moderniser ses forces armées
Face à un contexte international tendu, Londres mise sur une transformation profonde de ses forces armées pour renforcer sa souveraineté et anticiper les défis de demain.
=== France Info Monde ===
• Un immeuble d'habitations s'effondre à Athènes, des recherches de victimes possibles en cours
Selon la chaîne de télévision grecque ERT, les habitants de l'immeuble ont réussi à sortir à temps.
• Patrouille de France en Amérique : nous avons survolé la statue de la Liberté à New York avec les pilotes français
Le "13 Heures découverte" retrouve les pilotes de la Patrouille de France. Arrivée aux États-Unis après quatre jours de traversée transatlantique, elle survolera tout le pays jusqu'au 4 juillet, jour
• Au bac elle passe de 5 à 20/20
Sa démarche a valu le coup ! Etonnée de sa note au bac, cette ado espagnole a fait une réclamation. Verdict : elle gagne 15 points sur sa note de philo et passe de 5 à 20/20.
• "On sait déjà qu'on va rentrer à la maison" : des supporters suédois appréhendent leur match contre la France ce mardi soir
Aux États-Unis, les Bleus affrontent l'équipe de Suède ce 30 juin en 16e de finale du mondial de foot. Le coup d'envoi est à 23 heures, heure française. En attendant, les supporters sont en ébullition
• Un "guide de retour" de l'agence européenne Frontex accusé de romantiser le parcours des enfants expulsés
Le Parlement européen a adopté le 17 juin le règlement concernant le renvoi des ressortissants de pays tiers en séjour irrégulier. Dans ce contexte, une brochure destinée aux enfants et publiée en 202
• Le "bataillon Monaco", ces oligarques ukrainiens partis illégalement et réfugiés sur le Rocher
Le millionnaire ukrainien Vadim Ermolaev fait partie des blessés dans l'explosion survenue lundi à Monaco. De nombreux oligarques comme lui se sont installés dans la Principauté après l'invasion russe
• La Cour suprême des Etats-Unis valide l'exclusion des sportives transgenres des compétitions scolaires et universitaires féminines
Donald Trump avait ordonné l'année dernière aux agences fédérales de retirer leur financement aux établissements scolaires autorisant les athlètes transgenres à participer aux compétitions sportives f
• "Calamiteuse, lente, ennuyeuse, léthargique" : la presse allemande fustige la Mannschaft après son élimination de la Coupe du monde de foot
Les médias allemands n'y vont pas de main morte après la défaite de leur équipe nationale lundi face au Paraguay. Une humiliation très mal vécue dans ce pays qui est privée des huitièmes de finale pou
• Soupçonné de blanchiment, sanctionné par l'Ukraine... Qui est Vadim Ermolaev, l'oligarque blessé dans l'explosion à Monaco ?
Accusé de verser des impôts à la Russie via une entreprise basée en Crimée, ce magnat de l'immobilier fait l'objet depuis 2023 de sanctions prises par le pouvoir ukrainien.
• Bad Bunny : pourquoi son dernier album est un banger militant
Le dernier album de Bad Bunny "DeBÍ TiRAR MáS FOToS", est au menu de sa tournée européenne et s'annonce comme le plus militant de sa carrière. En filigrane, les destins de Porto Rico et des artistes e
=== France 24 ===
• Les sportives américaines transgenres bannies de compétitions féminines
La Cour suprême américaine a validé, mardi, les lois de plusieurs États interdisant aux sportives transgenres de participer aux compétitions féminines scolaires et universitaires. Donald Trump a salu
• 🔴 En direct : en visite au Sud-Liban, Netanyahu exclut tout retrait israélien face au Hezbollah
• Mali : HRW dénonce de graves abus contre des civils depuis les attaques d'avril
Les jihadistes du JNIM, leurs alliés de la rébellion touareg, l'armée malienne et ses supplétifs russes de l'Africa Corps ont "commis de graves abus contre des civils" depuis les attaques sans précéd
• En Espagne, le plan de régularisation fait le plein de demandes
Près d'un million de sans-papiers ont déposé depuis mi-avril leur dossier en Espagne pour profiter du plan de régularisation extraordinaire lancé par le gouvernement du socialiste Pedro Sánchez, les
• Séismes au Venezuela : les sauveteurs français à pied d'œuvre
Une trentaine de pays tentent mardi d'aider le Venezuela à affronter les urgences après le double séisme qui l'a frappé il y a une semaine, faisant des dizaines de milliers de disparus et, officielle
• Monaco : chasse à l'homme après une "tentative d'assassinat" contre un homme d'affaires
La chasse à l'homme se poursuit mardi à Monaco et autour de la principauté pour retrouver l'auteur d'une "tentative d'assassinat" à l'engin piégé ayant grièvement blessé un richissime homme d'affair
• Canicule en France : à l'heure du tout premier bilan, le gouvernement de plus en plus attaqué
Après 11 jours d'une canicule exceptionnelle et face au lourd bilan humain qui commence à se dessiner, la pression politique s'est encore accentuée sur le gouvernement, accusé d'"incompétence" et d'
• Séismes au Venezuela : La Guaira toujours sous le choc cinq jours après
Cinq jours après le double séisme, notre correspondante Pascale Mariani s’est rendue dans la ville de La Guaira, ‘zone 0’ du tremblement de terre. Entre recherche désespérée de survivants et manque d
• Droit du sol : la Cour suprême inflige un revers à Donald Trump sur sa politique migratoire
• Cuisante défaite pour Donald Trump, la Cour suprême refuse de restreindre le droit du sol
La Cour suprême des États-Unis a rejeté, mardi, la tentative de Donald Trump de restreindre le droit du sol pour les enfants d'immigrés en situation irrégulière aux États-Unis. C'est un échec pour le
=== 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