Job ID: 76ce033272c7
Run Time: 2026-07-03 16:09:47
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-03
═══════════════════════════════════════════
=== BBC World ===
• 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 scene of the attack.
• France records 2,025 excess deaths at peak of heatwave as Europe braces for more extreme weather
Forecasters are warning of further extreme temperatures on the continent in the next few days.
• German row over plan for workers to need sick note on first day of illness
A doctors' group says it "borders on madness" that patients will have to obtain the note in person.
• Nasa launches mission to save falling space telescope
A Nasa-funded robot has blasted off to catch a falling telescope in mid-orbit and blast it back to safety before it burns up.
• Iran begins public mourning for Ayatollah killed in February
Ali Khamenei's body will lie in state in Tehran's Grand Mosalla from Friday ahead of days-long funeral events.
• Zuma showing South Africa 'middle finger' by meeting Gupta brother - minister
Former President Zuma's trip to India reignites anger over a decade-old corruption scandal.
• A mayor in Japan announced her maternity leave - and got the whole country talking
In the face of criticism, Shoko Kawata, 35, says she loves her job and is proud to be taking time off to have a baby.
• US withdraws troops from Nigeria after Islamic State mission
The US said the joint operation, which began in December last year, was a success.
• Venezuela quake survivor pulled out alive after eight days
Hernán Gil was trapped under a collapsed multi-storey car park.
• At least 32 dead after overcrowded bus plunges into ravine in Pakistan
The bus was travelling from Quetta to Peshawar, when it crashed in the Dana Sar mountain range.
=== Le Monde International ===
• 250 ans d’indépendance américaine : la droite chrétienne aux avant-postes de la réécriture de l’histoire
« America 250 » (12/13). L’élection de Barack Obama, en 2008, a permis une meilleure prise en compte du rôle des minorités dans la construction nationale. Mais le contrecoup conservateur n’a pas tardé
• EN DIRECT, guerre en Ukraine : au lendemain de l’attaque meurtrière de Kiev, l’ONU regrette que « les civils subissent davantage de destructions, de douleur »
Au moins 30 personnes ont été tuées à Kiev dans l’attaque menée jeudi par l’armée russe, selon un bilan fourni vendredi par les secouristes.
• « Maintenant, tout le monde connaît le Cap-Vert, on existe enfin ! » : l’incroyable parcours des Requins bleus à la Coupe du monde
Petit poucet de la compétition, la sélection nationale de l’archipel affronte l’Argentine de Lionel Messi en seizièmes de finale du Mondial, dans la nuit de vendredi à samedi.
• Les Etats-Unis retirent une grande partie de leurs soldats du Nigeria, mais maintiennent le partage de renseignements
L’armée américaine, en coordination avec les autorités nigérianes, a procédé à plusieurs frappes aériennes dans le pays contre l’insurrection djihadiste ces derniers mois.
• Soudan : alerte rouge de l’ONU face à la « catastrophe » d’El-Obeid
Depuis plusieurs jours, l’ONU, des ONG et divers gouvernements s’inquiètent d’une possible attaque imminente à El-Obeid, grande ville du Soudan assiégée par les paramilitaires. Ils redoutent des dépla
• Présidentielles au Pérou et en Colombie : le vote des expatriés a favorisé la victoire de l’extrême droite
Les Péruviens de l’étranger ont permis l’élection de Keiko Fujimori, minoritaire chez les résidants de son pays. Sans avoir été décisifs, les Colombiens expatriés ont largement privilégié Abelardo de
• Tentative d’assassinat à Monaco : une femme ukrainienne recherchée par Interpol ; les faits « semblent indiquer » que la suspecte « n’a pas agi seule », selon le parquet
La suspecte, dont le « dernier domicile connu » est en Allemagne, a pris la fuite via la France puis l’Italie dans une voiture de location.
• « Beaucoup de secouristes sont repartis sans nous aider » : après les séismes au Venezuela, le désespoir d’une famille qui creuse les décombres à mains nues
Une colère sourde monte contre les autorités, alors que les personnes touchées par le tremblement de terre reprochent aux élus de La Guaira, ville côtière au nord de Caracas, leur absence et le manque
• Moldavie : le premier ministre, Alexandru Munteanu, démissionne
Novice en politique, Alexandru Munteanu, 62 ans, avait été nommé à ce poste à la fin d’octobre 2025 par la présidente, pro-Union européenne, Maia Sandu, dont le Parti action et solidarité avait rempor
• Les ombres d’un anniversaire américain
La célébration du 4 juillet 2026, qui marquera les 250 ans de l’indépendance des Etats-Unis, s’annonce comme une cérémonie d’auto-glorification du président, Donald Trump, dans un pays toujours plus p
=== France Info Monde ===
• La Patrouille de France conquiert 400 000 spectateurs aux États-Unis
Sur la plage d’Ocean City, dans le Maryland, la Patrouille de France a envoûté 400 000 spectateurs lors d’un immense show aérien. Traînées bleu-blanc-rouge, figures millimétrées et émotion partagée :
• Tour de France 2026 : l'effervescence devant la Sagrada Familia à Barcelone avant le coup d'envoi de la course samedi
C'est l'un des événements sportifs les plus suivis au monde. Le Tour de France débute demain, samedi 4 juillet, pour notre plus grand bonheur. La course part cette année de Barcelone, en Espagne, avec
• La Lituanie souhaite faire partie de la dissuasion nucléaire contre la Russie
"Il y a quelques jours, j'ai proposé un amendement constitutionnel pour supprimer la restriction existante sur le possible déploiement d'armes nucléaires en Lituanie", a déclaré le président lituanien
• Une rare copie de la Déclaration d'indépendance américaine retrouvée dans les Archives britanniques
La copie se trouvait parmi des documents saisis par la marine britannique lors de la capture d'un navire américain en 1776.
• VIDEO. Découverte des phoques moines de Méditerranée sur l'île de Céphalonie, une espèce menacée qui se bat pour sa survie
Après avoir frôlé l'extinction, le phoque moine de Méditerranée se reproduit à nouveau. Sur les rivages de Céphalonie, une île ionienne au large de la côte ouest grecque, une ONG participe à protéger
• Frappes russes : nuit de terreur à Kiev
Au moins 21 personnes sont mortes et 90 blessées dans une attaque russe d'une violence inédite sur Kiev. Plus de 570 missiles et drones ont visé plusieurs immeubles d'habitations de la capitale ukrain
• Cinq morts dans une frappe ukrainienne sur une ville sous contrôle russe
Cette frappe ukrainienne a visé Tokmak, ville située dans le sud du pays sous contrôle de Moscou.
• Des moines meurent fauchés par une camionnette conduite par un enfant en Thaïlande
Dix moines sont morts après qu'un enfant de 11 ans a foncé avec le véhicule de ses parents dans un cortège dans le nord-est de la Thaïlande, jeudi 2 juillet.
• "Nous n'avons pas besoin de cette publicité" : les Barcelonais très critiques alors que la ville s'apprête à accueillir le départ du Tour de France
Les habitants de Barcelone, qui s'apprête à accueillir le départ du Tour de France 2026, sont très partagés sur l'évènement, expliquant que la cité catalane est déjà victime de surtourisme.
• REPORTAGE. Funérailles d'Ali Khamenei : derrière la démonstration de force du régime, un discret assouplissement sur le port du voile
En Iran, un étonnant sentiment de liberté est visible dans les rues de Téhéran : il n'est plus rare de voir des femmes sans voile islamique.
=== France 24 ===
• Mondial 2026 : les raisons de l'élimination des Lions
🇸🇳 L'élimination des Lions de la Teranga du Mondial 2026 continue de faire réagir au Sénégal. Alors qu'ils menaient 2-0 durant une grande partie de la rencontre, les Lions se sont finalement inclinés
• "La plume est plus forte que le couteau" : Salman Rushdie parle de censure et de fiction
Plus de trois décennies après la fatwa prononcée contre "Les Versets sataniques" et près de quatre ans après avoir survécu à une agression au couteau qui l'a rendu aveugle d'un œil, Salman Rushdie re
• Guerre en Ukraine : pourquoi les bombardements stratégiques éclipsent la ligne de front
Les frappes de drones ukrainiens en Russie ou les bombardements russes sur les villes ukrainiennes prennent de plus en plus de place dans le récit de la guerre en Ukraine. À tel point que les combats
• Amérique latine : le virage radical à droite
L'Argentine, le Salvador, le Chili, et très récemment la Colombie et le Pérou. Ces dernières semaines, ces derniers mois, l'un après l'autre, ces pays ont basculé à droite, voire à l'extrême droite.
• Au Venezuela, une course contre la montre pour retrouver les derniers survivants
Une semaine après le double #séisme, les recherches se poursuivent à La Guaira pour retrouver les dernières personnes portées disparues, même si les espoirs de retrouver des survivants s'amenuisent.
• Iran : à la veille des funérailles de Khamenei, qui détient les rennes du pays ?
L’Iran s’apprête à rendre un hommage national de trois jours à Ali Khamenei, dont les funérailles devraient rassembler plusieurs millions de personnes à Téhéran, quatre mois après sa mort dans une fr
• Ebola en RDC : Cyril Ramaphosa à Kinshasa pour réaffirmer le soutien de Pretoria face à l'épidémie
Le président sud-africain était en visite à Kinshasa ce jeudi 2 juillet 2026. Ce déplacement de Cyril Ramaphosa en République démocratique du Congo vise à réaffirmer le soutien de Pretoria face au vi
• Les 60 ans du début des essais nucléaires en Polynésie française
Ce jeudi 2 juillet marquait les 60 ans du premier essai nucléaire effectué par la France en Polynésie, le premier d'une série de 193 au total. Un passé douloureux aux conséquences dévastatrices commé
• Ukraine : Kiev en deuil après les frappes russes les plus meurtrières de l’année
À Kiev, les secouristes poursuivent leurs recherches dans les décombres après une série de frappes russes qui ont fait au moins 30 morts et provoqué d’importantes destructions, alors que la ville res
• Monaco : une Ukrainienne de 39 ans, principale suspecte dans l'explosion d'un colis piégé
Une Ukrainienne de 39 ans est la principale suspecte recherchée dans l'affaire du colis piégé à Monaco, dont l'explosion a fait trois blessés lundi, a confirmé vendredi le procureur adjoint de la pr
=== 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