Job ID: 76ce033272c7
Run Time: 2026-07-06 16:10: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-06
═══════════════════════════════════════════
=== BBC World ===
• Trump confirms he asked Fifa to review Balogun ban
President Donald Trump confirms he asked Fifa to review United States striker Folarin Balogun's one-match suspension at the World Cup.
• Ukraine warns of interceptor missile shortage as 22 killed in Kyiv region
President Zelensky says Sunday's "massive Russian attack" on Kyiv consisted of 68 missiles and 351 strike drones.
• Huge crowds fill Tehran streets for Khamenei's funeral procession
Many people were waving Iranian flags and red banners symbolising vengeance for the former supreme leader's war death.
• Wildfire in southern France forces evacuation of 10,000 people
Tour de France organisers ban spectators from stage three as a wildfire hits the Pyrénées-Orientales region.
• 'I ate ketchup and cheese,' says Venezuelan girl trapped under quake rubble for 32 hours
Fabiana was trapped in the rubble of a 10-storey residential building after two earthquakes rocked Venezuela in June.
• Sri Lanka prison riots leave 26 dead and more than 100 injured
The two days of violence at Negombo Prison are the worst prison riots in the country in years.
• Marine Le Pen appeal verdict: Why this moment matters for France
The leader of France's National Rally leads the opinion polls ahead of the 2027 presidential election and will now find out if she can stand.
• Australian PM apologises for 'inappropriate' comments about Kylie Minogue
Albanese has apologised 'unequivocally' after his remarks prompted a backlash.
• Super Typhoon Bavi makes landfall on US Pacific islands with huge wind gusts
The storm, with winds of nearly 290km/h (180mph) and gusts of 350km/h, is lashing the island of Rota.
• Australia space agency has found 'likely source' of mystery space balls
The agency says that they "appear to be pressure vessels from a space launch vehicle".
=== Le Monde International ===
• Le Festival d’Avignon fait venir des pépites sombres de Corée du Sud
Vingt pour cent du programme du festival sont consacrés à des spectacles en langue coréenne, qui s’inspirent de l’histoire du pays ou du répertoire classique.
• Comment Starlink a réussi à s’imposer en Afrique
La firme du milliardaire américain Elon Musk propose désormais ses services dans 26 des 54 Etats africains. De nombreux pays, initialement réfractaires au fournisseur d’Internet par satellite, espèren
• Au sein de LR, le cas du général Gomart, révélateur des ambiguïtés de Bruno Retailleau
L’eurodéputé français, dont les propos critiques envers la junte burkinabée ont servi de prétexte à une rupture avec Paris, est accusé par ses détracteurs de défendre une position prorusse auprès du p
• Un mort et 35 survivants dans le naufrage d’un bateau de migrants en Grèce
L’’homme mort lors de ce drame au large de l’île grecque de Samos, en mer Egée, est un Soudanais d’une vingtaine d’années, selon la chaîne de télévision ERT.
• En Algérie, des élections législatives verrouillées et boudées par la population
Le scrutin du 2 juillet a été marqué par une abstention record de près de 80 %, selon un décompte provisoire des autorités. Contrairement à 2021, le régime n’a pas laissé de place aux candidats indépe
• Au Brésil, les deux principaux partis politiques s’allient pour ne pas respecter les quotas de candidats noirs et de candidates
Le Parti des travailleurs du président Luiz Inacio Lula da Silva et le Parti libéral de Flavio Bolsonaro demandent au Tribunal supérieur électoral d’assouplir l’application des lois sur les quotas de
• Au Sri Lanka, au moins 23 morts après des violentes émeutes dans une prison
Selon la police, les affrontements ont opposé les détenus de deux organisations criminelles concurrentes impliquées dans le trafic de drogue.
• A Kiev, une « allée des héros » déçoit les familles des soldats morts au combat
Après huit mois de travail, le mémorial dédié aux soldats du district de Desniantsky, à Kiev, a été inauguré le 30 juin. Le résultat, jugé trop éloigné du projet initial, mécontente de nombreuses fami
• Marc Pierini, diplomate : « Le président turc entend monnayer son appui sécuritaire à l’Europe »
Octroyer à Recep Tayyip Erdogan un rôle central dans l’architecture européenne de sécurité reviendrait à atteler la défense du continent à un chef d’Etat qui, à l’unisson de ses partenaires au Kremlin
• EN DIRECT, guerre en Ukraine : Kiev demande une réunion en urgence du Conseil de sécurité de l’ONU après les frappes russes nocturnes
Volodymyr Zelensky a condamné l’« attaque massive » lancée par la Russie dans la nuit de dimanche à lundi, qui a fait au moins 15 morts dans la capitale ukrainienne et 7 autres dans son oblast, selon
=== France Info Monde ===
• George Clooney recevra un Lion d'or d'honneur à la Mostra de Venise pour l'ensemble de sa carrière
"Cela signifie probablement aussi que je vieillis, mais c'est très bien ainsi", a ironisé en réponse l'acteur américain.
• "Cette épave est devenue le lieu le plus visité de Grèce après l'Acropole" : découverte de l'île de Zakynthos et sa plage du naufrage
Direction, ce lundi 6 juillet, la Grèce et l'île de Zakynthos. Ce lieu magique à l'eau turquoise abrite l'épave d'un bateau, échoué en 1980, où se pressent chaque année des millions de touristes.
• Dernier hommage massif à Ali Khamenei dans les rues de Téhéran
🇮🇷Le cortège funèbre de l'ancien Guide suprême Ali Khamenei, constitué d'une foule immense, traverse les rues de Téhéran au troisième jour d'obsèques nationales conçues comme une démonstration de forc
• Quatre personnes sont mortes au Liban dans une frappe israélienne dans le sud du pays
La directrice d'une école, sa mère, une employée de maison étrangère et un ouvrier syrien ont été tués par "un drone israélien ayant visé leur véhicule" au retour d'une visite d'inspection du domicile
• Le Premier ministre australien contraint de s'excuser après une blague sexiste sur Kylie Minogue
Malgré les excuses d'Anthony Albanese, lundi, la plaisanterie n'est pas passée inaperçue en Australie. Et encore moins auprès de la sphère politique auprès de qui elle a suscité de vifs débats dans le
• REPORTAGE. "Cette procession va briser le record du monde d'affluence" : à Téhéran, des millions de fidèles du régime défilent pour rendre hommage à Khamenei
Quatre mois après la mort de l'ayatollah Ali Khamenei, ses funérailles rassemblent des millions de personnes à Téhéran. Des adeptes du pouvoir venus rendre hommage à l'ayatollah tué par une frappe amé
• "Des munitions qui sauvent des vies" : après une nouvelle attaque meurtrière sur Kiev, l'Ukraine alerte sur l'épuisement de ses défenses aériennes
Volodymyr Zelensky appelle ses alliés à accélérer les livraisons de munitions antiaériennes, tandis que l'Ukraine multiplie les frappes contre les infrastructures énergétiques russes.
• Un avion russe intercepté après une action "dangereuse" près d'un porte-avions britannique
L'appareil "est passé à basse altitude et inutilement près du 'HMS Prince of Wales' et a largué un grand nombre de bouées acoustiques à proximité immédiate du porte-avions", a déclaré un porte-parole
• Le Hamas annonce la dissolution de ses instances dirigeantes à Gaza, ouvrant la voie à une administration du territoire palestinien par un comité technique
Un comité technocratique déjà formé, le NCAG, pourrait prendre en charge l'administration quotidienne du territoire enclavé.
• En Thaïlande, un conflit familial ravive une loi sur les donations aux enfants jugés "ingrats"
Un conflit, sur fond d'accusations de violences sexuelles, au sein de la riche famille thaïlandaise Bhirombhakdi met en lumière une loi de 1908 autorisant les parents à révoquer des dons faits à leurs
=== France 24 ===
• Mondial 2026 : dans les coulisses de l'opération américaine pour sauver le soldat Balogun
La décision prise dimanche par la Fifa d'annuler la suspension pour un match du buteur star des États-Unis est intervenue après un coup de fil entre Donald Trump et le président de la fédération inte
• Tour de France : Pogacar remporte la troisième étape aux Angles et s'empare du maillot jaune
Tadej Pogacar a remporté lundi la troisième étape du Tour de France, longue de 195,9 kilomètres, entre Granollers (Espagne) et Les Angles (Pyrénées-Orientales), devant le Danois Jonas Vingeg
• Trump confirme avoir demandé à la Fifa un réexamen du carton rouge de Balogun
Donald Trump a confirmé lundi avoir appelé le président de la Fifa Gianni Infantino pour demander un réexamen du carton rouge infligé à l'attaquant américain Folarin Balogun, afin qu'il puisse partic
• Syrie : lent rebond de l'économie après la levée des sanctions internationales
La Syrie sort épuisée d'une longue guerre civile, à laquelle la prise du pouvoir en décembre 2024 par une coalition islamiste a mis fin. Depuis, les autorités s'emploient à réunifier le pays morcelé
• "J'aurais voulu mourir à sa place" : les adieux des partisans d'Ali Khamenei à leur Guide
Au son des slogans à la gloire du défunt Ali Khamenei scandés par la foule de ses partisans, Téhéran, où le deuil se mêle à la colère, vit au rythme des funérailles nationales de l’ancien Guide suprê
• Pyrénées-Orientales : 700 pompiers mobilisés, le feu n'est pas fixé
Toujours pas fixé, l'incendie dans les Pyrénées-Orientales, qui a entraîné l'évacuation de 10.000 personnes et chamboulé l'arrivée de l'étape du Tour de France, a provoqué d'importants dégâts lundi e
• Guerre au Moyen-Orient : Damas, un soutien fiable pour Beyrouth ?
Serge Berberi, notre correspondant à Beyrouth, analyse la situation.
• L'Assemblée rejette la motion de censure écologiste dénonçant la gestion de la canicule
L'Assemblée nationale a massivement rejeté lundi une motion de censure des Écologistes, soutenus par La France insoumise. Ses auteurs dénonçaient une mauvaise gestion par le gouvernement des épiso
• Mondial-2026 : Trump remercie la Fifa d'avoir suspendu le carton rouge à Balogun
Cédric Ferreira, notre envoyé spécial à New-York, analyse la situation.
• Etats-Unis : les interférences de Donald Trump lors de la Coupe du monde 2026
Matthieu Mabin, notre correspondant à Washington D.C., décrypte la situation.
=== 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 du jour archivé dans /home/sebastien/.hermes/memory/modules/revue_editoriale/sources/rss/2026-07-06.md