Job ID: 76ce033272c7
Run Time: 2026-07-02 16:07:06
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-02
═══════════════════════════════════════════
=== BBC World ===
• Venezuela quake survivor pulled out alive after eight days
Hernán Gil was trapped under a collapsed multi-storey car park, and encouraged them as they inched closer to him.
• 'Most massive' Russian attack on Kyiv kills at least 20
Kyiv's mayor declares a day of mourning after the major drone and missile attack on the Ukrainian capital.
• People smuggler convicted in France found by BBC living in UK and seeking asylum
Once described as "the godfather" of French migrant camps, he has been working in a Leicestershire village.
• Vatican excommunicates hundreds of thousands of splinter sect followers
Around 600,000 followers of the Society of Saint Pius X, a Catholic sect, are affected.
• China says pilot crashed small plane into skyscraper for 'personal reasons'
The 66-year-old, who died in the crash, had anxiety and referenced "ending his life" in his diary.
• South Africa and Ghana in diplomatic row over alleged killing of migrant
South Africa denies claims that a Ghanaian citizen was killed in anti-migrant protests in Cape Town.
• Aunt of Venezuelan boy pulled from rubble tells BBC she will give him 'mother's warmth'
Kleiber Moran, 2, was rescued on Wednesday, six days after last week's deadly earthquakes.
• Canadian boy, 11, dies of rabies after waking to bat on his face
Rabies infections are rare in Canada. There have been 28 human deaths due to rabies in the country since 1924.
• Nine Thai monks killed after 11-year-old driver collides with procession
The group of 35 monks and five lay followers were walking by the roadside when the truck ploughed into them.
• Alleged Scattered Spider hacker arrested in Finland
The 19-year-old dual American-Estonian national has been extradited to the US, where he is facing federal charges.
=== Le Monde International ===
• Au Burkina Faso, le Haut-Commissariat de l’ONU aux droits de l’homme va fermer fin novembre son bureau après sa suspension par le régime militaire
Cette annonce survient trois mois après que les autorités burkinabées ont suspendu les activités du bureau à la suite d’un communiqué de presse du Haut-Commissariat les appelant à « préserver l’espace
• Le Niger, le Mali et le Burkina Faso se retirent de la Cour pénale internationale, en dénonçant un « instrument sélectif et politisé »
Après Niamey, Bamako et Ouagadougou ont formellement notifié, le 24 juin, leur retrait du traité fondateur de la CPI au secrétaire général des Nations unies, Antonio Guterres. Mais il faudra attendre
• Guo Wengui, richissime homme d’affaires chinois exilé aux Etats-Unis, condamné à 30 ans de prison pour avoir escroqué des centaines de personnes
Ancien intermédiaire d’un chef du renseignement chinois devenu pourfendeur du régime et proche des milieux trumpistes, il a été reconnu coupable, lundi, par une cour de justice de New York.
• « Le blocage des IA d’Anthropic et d’OpenAI illustre les dilemmes des Etats-Unis vis-à-vis de cette technologie et de la Chine »
Les capacités de disruption de l’intelligence artificielle contraignent l’administration américaine à une surveillance accrue. Donald Trump, après avoir dérégulé le secteur, a été contraint de faire m
• Suisse-Algérie : Riyad Mahrez, le talent brut qui n’a jamais cessé de croire en lui
Le capitaine des Fennecs, 35 ans, a fait taire les critiques en inscrivant un doublé face à l’Autriche, en clôture de la phase de groupes du Mondial. Il aura une autre occasion de briller, jeudi, face
• En Allemagne, le gouvernement veut introduire une dose de flexisécurité dans son droit du travail, sur un modèle nordique
Multipliant les projets de réforme, Berlin s’est engagé sur la voie d’un assouplissement des conditions de licenciement associé à des mesures d’aide au reclassement, afin d’alléger le coût de l’échec
• Séismes au Venezuela : un homme de 43 ans sorti vivant des décombres, six jours après les séismes
Des équipes venues de sept pays ont creusé pendant plus de trois jours pour libérer cet homme de 43 ans, enseveli dans la guérite de sécurité de l’immeuble où il travaillait à Catia La Mar, dans le no
• Damas : une explosion a tué au moins cinq personnes dans un café du centre de la ville, selon les autorités syriennes
L’agence officielle SANA a ajouté que les autorités tentaient d’en déterminer l’origine. Selon la télévision officielle, la déflagration « a été provoquée par un engin explosif qui avait été placé sur
• Le pape Léon XIV, en excommuniant des évêques intégristes, défend avec fermeté l’héritage du concile Vatican II
Le Vatican a prononcé, jeudi, l’excommunication des quatre évêques ordonnés la veille par la Fraternité sacerdotale Saint-Pie X, fondée en 1970 par l’archevêque français Marcel Lefebvre, ainsi que cel
• « Pour changer un simple pneu, il faut attendre son tour pendant des semaines » : en Algérie, la vie chère pèse sur le moral des familles
Appelés à élire leurs députés le 2 juillet, les Algériens s’inquiètent de l’érosion de leur pouvoir d’achat, aggravée par la dévaluation du dinar et la politique de restriction des importations imposé
=== France Info Monde ===
• Dans les Vosges, un homme soupçonné d'avoir dirigé un réseau de passeurs mis en examen
Les enquêteurs estiment que le réseau aurait permis à 400 à 600 ressortissants syriens de rejoindre la France entre 2021 et 2025, en passant notamment par la Turquie, le Venezuela, le Brésil puis la G
• Le président libanais assure qu'il ne cédera "pas un seul pouce" de territoire à Israël
Le ministre israélien de la Défense, Israël Katz, a déclaré mercredi que l'armée de l'Etat hébreu resterait "pour une durée indéterminée" au Liban, en Syrie et dans la bande de Gaza.
• Moyen-Orient : "C'est l'Iran qui a remporté cette guerre", estime Siavosh Ghazi, journaliste correspondant pour France 24 et RFI
Jeudi 2 juillet, Siavosh Ghazi, correspondant pour France 24 et RFI en Iran, était l'invité de la matinale de franceinfo. Selon lui, le régime iranien sorti victorieux de ce conflit, après avoir résis
• Une attaque massive russe sur Kiev fait au moins 17 morts
En Ukraine, une attaque d'une ampleur inédite a eu lieu dans la nuit de mercredi 1er à jeudi 2 juillet sur la ville de Kiev. Les frappes russes ont fait au moins 17 morts et 86 blessés. Les autorités
• Le Premier ministre britannique présente des excuses officielles pour le scandale d'adoptions forcées après la Seconde Guerre mondiale
Au total, plus de 185 000 enfants nés de mères non mariées ont été adoptés sur une période allant de 1949 à 1976 en Angleterre et au pays de Galles, selon une évaluation de la commission parlementaire
• La justice française inflige une amende d'un million d'euros au pétrolier de la flotte fantôme russe arraisonné dans l'Atlantique
La somme d’un million d'euros a déjà été versée, a précisé le procureur. La société propriétaire du navire "a pris l'engagement d'obtenir dans les meilleurs délais un nouveau pavillon, licite".
• Siavosh Ghazi raconte sa vie sous les bombes en Iran: "Je n'arrivais pas à me lever tellement j'étais fatigué et surpris par la puissance des frappes"
Tous les jours, une personnalité s'invite dans le monde d'Élodie Suigo. Jeudi 2 juillet 2026, le journaliste franco-iranien Siavosh Ghazi. Il publie "Carnet de guerre : 40 jours dans Téhéran sous les
• Le pilote à l'origine du crash d'un petit aéronef à Pékin vendredi avait des pensées suicidaires, affirment les autorités chinoises
Un petit avion s'est écrasé vendredi dans la tour Citic, ont annoncé samedi les autorités locales. Le pilote, seul à bord, est mort dans l'accident, qui a également fait 13 blessés.
• DIRECT. Guerre en Ukraine : des attaques sur Kiev font au moins 21 morts, Zelensky affirme que son pays ripostera
"La Russie frappe des cibles civiles uniquement pour contraindre l'Ukraine à renoncer à son État", a déclaré Volodymyr Zelensky, jeudi.
• Le négociateur en chef iranien appelle "à venger" la mort d'Ali Khamenei avec une forte participation à ses funérailles
Les autorités attendent entre 15 et 20 millions de participants rien qu'à Téhéran pour cet hommage de trois jours dans la capitale, où passera lundi un cortège funèbre.
=== France 24 ===
• Venezuela : un survivant coincé huit jours sous les décombres, suite aux séismes, a été sauvé
Après être resté coincé huit jours dans les décombres d'un bâtiment au Venezuela, suite au double séisme qui a fait plus de 2 000 morts et des dizaines de milliers de disparus, un homme a été sauvé c
• La fortune de Donald Trump bondit depuis son retour à la présidence des États-Unis
Un rapport officiel qui vient de paraître nous apprend que le président américain s'est terriblement enrichi depuis son retour à la Maison Blanche il y a 18 mois. Il aurait engrangé deux milliards de
• Ruée sur les ventilateurs à l'approche d'une nouvelle canicule en France
Une nouvelle hausse des températures est attendue en France ces prochains jours. À travers le pays, les climatiseurs et les ventilateurs sont devenus des denrées rares; l'enseigne Lidl en a fait les
• La Russie pilonne Kiev et promet "d'augmenter la pression"
Le bilan humain atteint des sommets en Ukraine. Au moins 17 personnes sont mortes cette nuit à Kiev après des attaques russes massives. Les explosions ont duré plusieurs heures dans la capitale. Des
• Ukraine : attaque massive russe sur Kiev
La Russie a lancé dans la nuit de mercredi à jeudi une attaque de drones et de missiles contre la capitale de l'Ukraine, Kyiv, faisant au moins 18 morts selon les services d'urgence, dans une offen
• Séismes au Venezuela : un homme vivant sorti des décombres huit jours plus tard
Une personne a été retrouvée vivante, jeudi, soit huit jours après le double sésisme qui a frappé de plein fouet l'État de La Guaira, au Venezuela. Hernan Gil, un agent de sécurité âgé de 43 ans, a é
• Mondial 2026 : Vladimir Petkovic retrouve la Suisse mais sur le banc algérien
L'Algérie de Vladimir Petkovic devra tenir tête, vendredi matin, à la Suisse, son ancien amour qu'il a dirigé pendant sept ans. Pour obtenir un ticket pour les 16es de finale, le sélectionneur entre
• Harry Roselmack : "L'amour est un acte de résistance"
Journaliste emblématique de "Sept à Huit", Harry Roselmack dévoile une autre facette de lui-même. Dans son nouvel essai, "L'amour malgré la peur", il explore ce qui nous empêche d'aimer, interroge no
• Quelle est l'orgine du tube de l'été ?
Chaque été, c'est la même histoire : il y a une chanson à laquelle personne ne peut échapper. Mais qui a inventé le tube de l'été ? Et pourquoi on l'entend partout pendant la période estivale ? On vo
• Syrie : l'explosion d'une bombe fait au moins cinq morts et seize blessés dans un café à Damas
Une explosion due à une bombe dans un café du centre-ville de Damas, en Syrie, a fait au moins cinq morts et seize blessés jeudi, selon les médias d'État syriens. Elle n'a pour le moment pas été rev
=== 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.
Le briefing a été archivé dans ~/.hermes/memory/modules/revue_editoriale/sources/rss/2026-07-02.md. Bonne journée Sébastien ! 📰