Job ID: 76ce033272c7
Run Time: 2026-07-04 16:07:20
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-04
═══════════════════════════════════════════
=== BBC World ===
• Brutal heat cancels Fourth of July events, from DC to Philadelphia
More than 165 million people are enduring dangerous heat and humidity, with temperatures expected to stay at 38C (100F) for several days.
• 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".
• Large crowds gather in Tehran on first day of Ayatollah Khamenei's funeral
Ali Khamenei's body will lie in state in Tehran's Grand Mosalla until Monday, before travelling across Iran and Iraq.
• Injury ends Williams' Wimbledon comeback
Serena Williams pulls out of her planned Wimbledon doubles appearance with older sister Venus because of a knee injury.
• Pope urges Europe to do more for migrants while visiting gateway island
The pontiff pays tribute to migrants who lost their lives at sea at a cemetery on the Italian island of Lampedusa.
• Row after Indian state drops eggs from school lunch menu
West Bengal's move to replace eggs in some school meals has sparked a wider debate over nutrition and choice.
• Taylor Swift marries Travis Kelce in NYC ceremony officiated by Adam Sandler
The star-studded celebration saw several streets in Midtown Manhattan shut, as hordes of fans gathered outside the arena.
• Keiko Fujimori declared winner of Peru's presidential election weeks after vote
The daughter of disgraced president Alberto Fujimori is declared winner of tight race nearly a month after voting took place.
• Anguished families left to identify Venezuela quake victims at makeshift morgue
The disaster has overwhelmed local services, with bodies put outside or in tents for identification.
• Ukrainian suspect hunted by police after Monaco bomb attack was 'disguised as a man'
Officials believe the suspect may not have acted alone and spent days casing out the scene of the attack.
=== Le Monde International ===
• Au Portugal, un millier de pompiers tentent toujours de venir à bout d’un feu de forêt
Frappé par une intense vague de chaleur, le Portugal connaît également ses premiers feux de forêt majeurs de l’été, qui ont fait neuf blessés, dont deux civils dans un état grave.
• En images : Léon XIV rend hommage aux migrants morts en Méditerranée et envoie un message à l’UE
A Lampedusa, île italienne devenue le symbole du drame des migrants morts en tentant de traverser la mer Méditerranée, le pape a exhorté le Vieux Continent à mieux répondre à l’« appel historique » de
• EN DIRECT, 4-Juillet : les Etats-Unis fêtent leurs 250 ans, des célébrations récupérées par Donald Trump. Suivez une journée de festivités démesurées
Les Etats-Unis célèbrent samedi leur fête nationale et le 250ᵉ anniversaire de leur indépendance, entre parade civile et militaire et feu d’artifice géant à Washington. Donald Trump a fait de cette jo
• EN DIRECT, Canada-Maroc : suivez le huitième de finale de la Coupe du monde de football
Pays hôte, le Canada découvre les huitièmes de finale pour la première fois de son histoire, tandis que le Maroc espère retrouver les quarts, quatre ans après son magnifique parcours au Qatar, où il a
• Dans le sud de la Chine, l’IA donne un coup de fouet aux usines
Dans le delta de la rivière des Perles, l’écosystème industriel mise sur l’intelligence artificielle mêlée à l’automatisation pour assurer l’avenir de sa base manufacturière, menacée par le déclin dém
• EN DIRECT, guerre en Ukraine : les frappes ukrainiennes nocturnes sur Saint-Pétersbourg et Kronstadt ne resteront pas « sans réponse », affirme le ministère de la défense russe
L’armée ukrainienne a confirmé, samedi, avoir pris pour cible le terminal pétrolier de Saint-Pétersbourg et la base navale de Kronstadt, voisine de la ville, où des incendies se sont, selon elle, décl
• « La rigueur budgétaire ne réduit pas durablement le taux d’endettement public »
Seule une inflation élevée non compensée par les taux d’intérêt permettrait de réduire la dette, mais au prix d’un coût politique important pour les épargnants, observe l’économiste Patrick Artus, dan
• A Dongguan, bastion manufacturier du sud de la Chine, un synchrotron au service des industries de pointe
La ville de Dongguan s’est portée volontaire pour financer et accueillir un équipement national de recherche fondamentale. Elle l’adapte à présent aux besoins du secteur des microprocesseurs.
• En images, les funérailles du Guide suprême iranien Ali Khamenei
L’hommage public à l’ayatollah a commencé officiellement, samedi à Téhéran, où des milliers de fidèles ont afflué sur la Grande Mosalla.
• La Chine critiquée à l’étranger après l’entrée en vigueur d’une loi sur la « sinisation » des minorités ethniques
Le texte donne la primauté au mandarin et prévoit des poursuites, y compris à l’étranger, contre quiconque porterait atteinte à l’« unité ethnique » de la Chine. L’UE et l’ONU dénoncent une loi aux ré
=== France Info Monde ===
• Giorgia Meloni s’inspire-t-elle toujours du fascisme en Italie ?
La présidente du Conseil des ministres italiens, Giorgia Meloni, n'a jamais caché son admiration pour le dictateur Benito Mussolini, fondateur du fascisme. Après son élection, ce penchant faisait crai
• Giorgia Meloni a-t-elle retourné sa veste face à Bruxelles ?
Pourquoi Giorgia Meloni soutient-elle désormais l'Union européenne ? Si la Première ministre italienne a longtemps prôné la sortie de l'euro, elle est aujourd'hui une partenaire incontournable de Brux
• "Independance Day" : les Etats-Unis célèbrent le 250e anniversaire de leur déclaration d'indépendance
L'actualité remise en perspective chaque samedi, grâce à l'historien Fabrice d'Almeida.
• Statue de la Liberté : La France offre un cadeau d'anniversaire pour les 250 ans des États-Unis
Pour la première fois de son histoire, la statue de la Liberté est au centre d'un spectacle musical et visuel créé à l'initiative de la France pour célébrer les 250 ans des Etats-Unis.
• "J'ai refusé de faire le service militaire" : un réfugié russe en France raconte son incroyable évasion
L'Ukraine a frappé des infrastructures pétrolières dans la région de Saint-Pétersbourg (Russie), dans la nuit du vendredi 3 au samedi 4 juillet. Dans ce contexte de conflit qui s'enlise, un témoignage
• "The Best Immigrant", le jeu qui vous fait gagner une carte de séjour
Dans "The Best Immigrant", les auteurs imaginent une Belgique coupée en deux, des étrangers chassés, et une émission de téléréalité qui offrirait au gagnant une carte de séjour pour rester.
• "Un exercice de communication très organisé" : des millions d'Iraniens attendus aux funérailles du guide suprême Ali Khamenei
À Téhéran (Iran), l'un des plus grands rassemblements de l'histoire de la République islamique a débuté samedi 4 juillet. Jusqu'à 20 millions de personnes sont attendues selon les autorités pour les f
• Moscou prévient que les frappes ukrainiennes qui ont ciblé la Russie dans la nuit ne resteront pas "sans réponse"
Des drones ukrainiens se sont abattus dans la région de Saint-Pétersbourg, région natale du président russe.
• Incendies en Espagne : la Catalogne en proie aux flammes qui forcent le confinement de milliers d'habitants
En Catalogne, le feu progresse, porté par le vent. L'inquiétude grandit alors qu'un violent incendie ravage le massif des Gavarres, près de la Costa Brava, depuis vendredi 3 juillet. Des milliers d'ha
• "Il est temps d’agir avant que l’AfD ne soit en mesure de gouverner seule" : en Allemagne, des militants antifascistes font du porte-à-porte contre l'extrême-droite
Alors que l'AfD, le parti d'extrême-droite allemand, s'apprête à tenir son congrès en Thuringe, des militants antifascistes sonnent aux portes et distribuent des tracts depuis des mois dans la région
=== France 24 ===
• Virus Ebola : le premier cas identifié en France est "guéri"
Un médecin humanitaire, premier cas d'Ebola diagnostiqué en France, est "sorti de l'hôpital" après avoir été "guéri", a annoncé samedi la ministre de la Santé, Stéphanie Rist.
• 250 ans des Etats-Unis : des festivités instrumentalisés autour de Trump
Romuald Sciora, essayiste franco-américain et directeur de l'Observatoire politique des Etats-Unis, est notre invité.
• Mondial 2026 : France-Paraguay, "Independence day" et canicule à Philadelphie
France 24 est à Philadelphie, où l'équipe de France affronte le Paraguay en 8es de finale de la Coupe du monde. Le coup d'envoi sera donné en plein 4 juillet – jour des célébrations des 250 ans de l'
• Gestion de la canicule : le gouvernement français sommé de s'expliquer
Dans ce magazine, nous reviendrons sur le bilan encore très provisoire de la dernière vague de chaleur extrême en France. Selon Santé Publique France, au moins 2025 personnes ont succombé à la canicu
• Hommage public à Khamenei, des milliers d'Iraniens affluent aux funérailles
Paymon Azmoudeh, consultant en géopolitique chez Foward Global, est notre invité.
• Attaques coordonnées au Mali : Gao, Anéfis, Sévaré et Kéniéroba visés
Wassim Nasr décrypte la situation.
• Rugby : le XV de France échoue face aux All Blacks pour le premier match du Championnat des nations
Le XV de France n'est pas parvenu à battre les All Blacks (34-32) samedi à Christchurch, en Nouvelle-Zélande, pour le premier match du Championnat des nations. Cependant, ils décrochent deux points d
• Mali : Des attaques coordonnées dans des localités et contre une prison
🇲🇱 Au Mali, plusieurs attaques coordonnées ont été menées ce samedi par des jihadistes du Jnim et des rebelles du Front de libération de l’Azawad. Les assauts ont visé les localités de Gao, Anéfis, A
• Mondial 2026 : Les Capverdiens à deux doigts de l'exploit face à l'Argentine
Les Requins bleus ont fait trembler l'Albiceleste et l'ont menée en prolongations. Les champions du monde s'en sont néanmoins sortis (3-2) et filent en 8èmes. De son côté, l'Egypte se qualifie au bou
• Les origines du festival "Off" d'Avignon
Savez-vous pourquoi il y a deux festivals de théâtre à Avignon ? Voici l'histoire du "Off" d'Avignon, un festival dissident qui fête ses 60 ans et débute aujourd'hui.
=== 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 archivé dans /home/sebastien/.hermes/memory/modules/revue_editoriale/sources/rss/2026-07-04.md ✅