Job ID: 76ce033272c7
Run Time: 2026-07-11 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-07-11
═══════════════════════════════════════════
=== BBC World ===
• US wants Iran to pledge to stop shooting at ships in Strait of Hormuz
US media say Iran has told US officials an attack on ships crossing the strait early this week was "a mistake".
• Spain battles to contain one of its deadliest wildfires as at least 12 killed
At least four Britons are believed to be among the victims of the blaze, which left another 23 people missing.
• Trump administration subpoenas New York Times journalists over Air Force One reporting
The reporters received the legal summons after they reported on alleged security issues with the president's new plane, which was gifted by Qatar.
• Indian tourists among 15 killed as speedboat capsizes in Vietnam
Local media say 21 people were saved after the boat overturned in rough seas near an island in south Vietnam.
• China braced for second typhoon in a week as Bavi approaches landfall
Hundreds of thousands of people are evacuated from eastern Zhejiang province, with the city of Wenzhou close to the path of the storm.
• More than 40 kidnapped children and teachers freed after Nigerian army operation
"I feel happy and elated… I feel joy," the head of the local teachers' union tells the BBC.
• South Africa World Cup midfielder Adams dies aged 25
South Africa and Mamelodi Sundowns midfielder Jayden Adams dies at the age of 25, just weeks after featuring for his country at the World Cup.
• US pays out $3m to victims of mystery Havana Syndrome condition reported by spies
US officials and diplomats and their families began reporting a mysterious illness a decade ago.
• Landmark US housing bill becomes law despite Trump protest
The president had wanted voter ID legislation passed before the housing law, which aims to reduce costs and increase supply.
• New dinosaur species as long as cricket pitch discovered in Thailand
The plant-eating dinosaur, named Uragasaurus kalasinensis, is thought to have lived about 150 million years ago.
=== Le Monde International ===
• EN DIRECT, guerre en Ukraine : les dernières informations
Les autorités ukrainiennes ont revendiqué, samedi, l’attaque de 28 navires de la flotte fantôme russe en mer d’Azov. Pour la troisième fois cette semaine, la ville de Kiev a été la cible de bombardeme
• Canal Seine-Nord Europe : plus d’un millier de personnes mobilisées dans le Pas-de-Calais pour protester contre le chantier
Ce projet vise à créer d’ici à 2032 une liaison fluviale à grand gabarit pour faciliter le transport de marchandises entre la région parisienne et la mer du Nord. Ses opposants dénoncent notamment la
• Typhon Bavi : près de 2 millions de personnes évacuées en Chine, des pluies très abondantes attendues dans l’est du pays
Le typhon devrait toucher la province du Zhejiang (Est) dimanche matin. Samedi, c’est surtout sur Taïwan qu’il a déversé de fortes pluies.
• En Iran, le Guide suprême, Mojtaba Khamenei, menace les Etats-Unis dans un message écrit en promettant de venger la mort de son père
Ali Khamenei, l’ancien dirigeant de la République islamique d’Iran, a été tué le 28 février dans des frappes américano-israéliennes. Retardées en raison de la guerre, ses funérailles ont eu lieu cette
• Pologne : un « mur du souvenir » sera érigé pour les victimes du « génocide » commis par les « nationalistes ukrainiens »
Le contentieux autour des massacres de civils polonais pendant la seconde guerre mondiale, qui dure depuis des décennies entre l’Ukraine et la Pologne, a sensiblement tendu les relations entre les deu
• VIDEO. Au moins 12 morts dans un violent incendie qui ravage l’Andalousie
Plusieurs centaines de pompiers et de militaires continuent de lutter contre le sinistre, qui connaît samedi une évolution favorable, selon les autorités.
• Le président sud-africain, Cyril Ramaphosa, bousculé sur la scène diplomatique africaine, s’offre un répit à Paris
Ciblés par de violentes manifestations contre les étrangers, près de 50 000 migrants illégaux ont quitté l’Afrique du Sud ces dernières semaines. Des images qui ont profondément choqué en Afrique, con
• Sionisme et antisionisme : les regards croisés de la sociologue Sylvaine Bulle et du philosophe Michel Feher
L’autrice d’« Israël après le 7-Octobre », qui critique les impasses d’un antisionisme militant, et l’auteur de « Redevenir juif. La fin d’un pacte de blanchiment réciproque », qui revendique une iden
• Espagne : le violent incendie qui ravage l’Andalousie a évolué « favorablement » pendant la nuit, annoncent les autorités ; 6 600 hectares brûlés
Les autorités attendent les premières autopsies pour pouvoir en dire plus sur le bilan de cet incendie, qui a fait au moins 12 morts, de nationalités différentes.
• Un câble électrique abandonné serait à l’origine de l’incendie de Los Gallardos, en Andalousie, qui a fait 12 morts
Vingt-trois personnes resteraient portées disparues, samedi 11 juillet au matin, en Espagne, tandis que le feu continuait de ravager la province d’Almeria.
=== France Info Monde ===
• Incendie en Espagne : des Français face aux flammes
L'incendie dans le sud de l'Espagne a déjà ravagé 6 600 hectares et causé la mort de 12 personnes. Face à ce brasier inarrêtable, 1 500 habitants ont été évacués, dont des touristes français. Le feu r
• Près de 2 millions de personnes évacuées en Chine à l'approche du typhon Bavi
Le typhon devrait provoquer des "pluies exceptionnellement abondantes" dans les provinces du Zhejiang et du Fujian (est), selon un média d'Etat.
• "L'armée américaine est prête à détruire complètement toutes les régions d'Iran" : comment la trêve entre Washington et Téhéran a volé en éclats cette semaine
Depuis mardi, les deux pays s'accusent mutuellement de violer l'accord signé le 17 juin, qui visait à permettre la reprise du trafic maritime dans le détroit d'Ormuz.
• La rose de Damas, une fleur aux nombreuses vertus
Notre série un air d'ailleurs nous mène aujourd'hui en Syrie où la culture de la rose de Damas est centrale, un véritable trésor national, récolté à la main, elle se transforme en huiles essentielles,
• Incendie dans le sud de l'Espagne : "Franchement, j'ai vu la mort", témoigne une touriste française
L'incendie dans le sud Espagne a déjà ravagé 6 000 hectares et causé la mort de 12 personnes. Face à ce brasier inarrêtable, 1 400 habitants ont été évacués, dont des touristes français. Le feu reste
• Le guide suprême iranien affirme que "la vengeance doit s'accomplir inévitablement" après la mort d'Ali Khamenei
L'ancien guide suprême a été tué fin février dans des frappes israélo-américaines.
• Varsovie va ériger un mur du souvenir pour les victimes du "génocide" commis par les "nationalistes ukrainiens" pendant la Seconde Guerre mondiale
Cette bataille autour des massacres de populations commis de part et d'autre entre 1939 et 1945 empoisonne les relations entre les deux pays.
• Le régime iranien veut-il assassiner Donald Trump ?
La tension ne retombe pas entre l'Iran et les États-Unis. Après les funérailles du guide suprême iranien Ali Khamenei qui se sont déroulées jusqu'au 10 juillet, des banderoles contre Donald Trump ont
• En Italie il y a 50 ans, la catastrophe de Seveso provoquait un "tournant dans la conscience écologique européenne"
Le 10 juillet 1976 se produisait la catastrophe de Seveso, du nom de la commune proche de Milan où une usine chimique provoquait une vaste pollution à la dioxine. La ville a laissé son appellation à u
• Au Royaume-Uni, la police ouvre une enquête pour meurtre après la mort d'une ancienne députée, un suspect relâché
Ann Widdecombe, 78 ans, était une fervente supportrice du Brexit.
=== France 24 ===
• Présomption de légitime défense pour les forces de l'ordre : la LDH dénonce "un permis de tuer"
Au programme de votre magazine cette semaine, une pétition qui recueille pas loin de 600.000 signatures à ce jour, pour dire NON à une loi adoptée à l'Assemblée nationale. Un texte qui fait polémique
• Mondial 2026 : le milieu sud-africain Jayden Adams retrouvé mort à 25 ans
L'international sud-africain Jayden Adams, milieu de terrain des Bafana Bafana, a été retrouvé mort à 25 ans, quelques jours seulement après avoir disputé trois matches à la Coupe du monde, a annonc
• Depuis quand fait-on des cahiers de vacances ?
C'était peut-être un incontournable de vos vacances d'été. Mais savez-vous d'où vient le célèbre cahier de vacances, compagnon estival indispensable des écoliers comme des adultes ?
• Ukraine : de nouvelles frappes russes font au moins six morts et des dizaines de blessés
La capitale et plusieurs régions de l'Ukraine ont été visées par des frappes russes très tôt samedi matin, faisant 6 morts et des dizaines de blessés, dont 12 à Kiev. Plus de 120 drones et 12 missile
• Canicule : 37 départements en vigilance rouge dimanche, les autorités appellent à la vigilance sur les feux
• Mondial 2026 : Kane vs Haaland, le duel retentissant du quart de finale Angleterre-Norvège
Le choc des leaders s'opère samedi et verra s'opposer les géants Harry Kane et Erling Haaland. L'Anglais et le Norvégien vont s'affronter sur la pelouse du stade de Miami sous le sifflet du Français
• Iran : le guide suprême Mojtaba Khamenei a juré de venger la mort de son père
Le guide suprême iranien Mojtaba Khamenei a juré de venger la mort de son père, Ali Khamenei, tué fin février dans des frappes israélo-américaines, affirmant dans un message écrit diffusé samedi que
• "Notre terre, notre ciel" : en Cisjordanie occupée, des cerfs-volants face aux colonies israéliennes
Un festival est organisé chaque année depuis 2009 dans le village de Burin, en Cisjordanie occupée, pour protester contre l'expansion des colonies israéliennes et l'accaparement des terres agricoles.
• Mondial 2026 : des Argentins au mental d'acier avant leur quart de finale face à la Suisse
Après avoir buté sur les équipes africaines, l'Argentine doit se relancer dans la nuit de samedi à dimanche face à la Suisse en quarts de finale. Avec un billet pour le dernier carré à la clé, les co
• France : le projet de loi sur l'usage des armes à feu par les forces de l'ordre divise
Le texte, adopté mardi dans une Assemblée nationale fracturée, prévoit qu'un policier ou un gendarme soit systématiquement "présumé avoir agi" dans le cadre légal lorsqu'il fait usage de son arme à f
=== 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 revue_editoriale/sources/rss/2026-07-11.md. Bonne journée Sébastien !