Job ID: 76ce033272c7
Run Time: 2026-07-09 16:11:11
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-09
═══════════════════════════════════════════
=== BBC World ===
• Tehran launches more strikes after explosions reported in southern Iran
Centcom says it hit 90 Iranian targets in the latest round of strikes, with the Iranian health ministry saying 14 people were killed since Tuesday.
• Big drop in oil, gas and cargo ships crossing Strait of Hormuz after new strikes
Data shows a decline in the number of ships - many carrying oil and gas - going through the waterway after attacks this week.
• Democrat Graham Platner suspends campaign for key US Senate race after assault allegation
The decision came days after a woman accused him of sexual assault, an accusation he says is "categorically false".
• Ukraine strikes Russian ships near Crimea, escalating attacks on fuel supplies
The attacks appear to be the latest phase of Ukraine's bid to choke off supplies and routes into and out of occupied Crimea.
• Factory fire kills at least 28 in China's 'shoe capital'
Footage shows huge flames rising from a building and thick, black smoke rising into the sky.
• International court tells BBC of breakthrough in Sudan war crimes probe
The ICC has been looking into atrocities committed in Darfur over the past three years.
• Starmer gifted gun and ammunition by Turkish president at Nato
The weapon has not been brought back to the UK and has instead been left with British officials in Turkey.
• Wealthy AI workers send San Francisco house prices soaring
The median cost of a home in the city is now $1.7m, a record high, according to the latest figures.
• Arizona toddler found alive in morgue after being declared dead from drowning
After he was discovered to still be alive, the 18-month-old was flown to another hospital and survived.
• Nato allies announce £37bn for new missile project
Prime Minister Sir Keir Starmer will convene around a dozen leaders to discuss the programme in Ankara.
=== Le Monde International ===
• En 2011, après le rapt de deux jeunes Français au Niger, le message de fermeté tourne au fiasco filmé
« Dans les coulisses des prises d’otages » (3/4). Après l’enlèvement, en janvier 2011, d’Antoine de Léocour et de Vincent Delory, à Niamey, par des djihadistes, les militaires français interceptent le
• EN DIRECT, guerre en Ukraine : les attaques ukrainiennes ne font que « prolonger » le conflit, dénonce le Kremlin
Un cargo et un remorqueur russes ont aussi été atteints par des frappes, tout comme un terminal pétrolier dans la région de Rostov et un dépôt de munitions dans la république autoproclamée de Louhansk
• En Chine, un incendie fait au moins 28 morts dans une usine de chaussures
Des personnes sont encore coincées à l’intérieur plusieurs heures après le début du sinistre. Près de 200 pompiers et secouristes sont mobilisés.
• Au Sénégal, le président Bassirou Diomaye Faye poursuit son émancipation
Après avoir limogé son ancien camarade Ousmane Sonko de la primature, le chef de l’Etat lance sa propre formation politique. A six mois des prochaines élections locales, il tente de se constituer légi
• « Derrière la souffrance, il y a des personnes qui aiment la vie, l’art et la paix » : à Gaza, les mots d’espoir d’un concours de poésie
Une soixantaine d’étudiants gazaouis, âgés de 18 à 25 ans, ont envoyé, à l’appel de l’Institut français de Gaza et de l’ONG Academic Solidarity with Palestine, des poèmes ou des vidéos dans lesquelles
• Au Liban, les examens de fin d’année perturbés par une année très éprouvante pour des centaines d’étudiants : « On se sent en état de stress post-traumatique »
A l’université publique de Hadath, dans la banlieue sud de Beyrouth, l’enseignement a basculé en ligne pendant plusieurs semaines durant le second semestre. Les partiels de fin d’année ont dû être rep
• En Albanie, le gouvernement fait scandale en subventionnant un concert de Kanye West à hauteur de 4 millions d’euros
Interdit de séjour ou de scène dans plusieurs pays européens pour ses propos antisémites et néonazis, le rappeur américain doit se produire le 11 juillet, à Tirana. De nombreux manifestants accusent l
• France-Maroc : le milieu de terrain, enjeu-clé d’un quart de finale de Coupe du monde au goût de revanche
Les Lions de l’Atlas disposent de joueurs très techniques dans l’entrejeu. Ceux-ci risquent de poser des problèmes aux Bleus, qui, dans leur approche offensive, seront en sous-effectif dans cette zone
• L’Allemagne va acheter des missiles de longue portée américains Tomahawk
Lors du sommet d’Ankara, le chancelier allemand, Friedrich Merz, affirme avoir obtenu l’accord américain pour acheter ces armes dont la portée avoisine les 1 500 kilomètres.
• EN DIRECT, guerre au Moyen-Orient : la Jordanie dit que l’attaque iranienne sur la base d’Azraq n’a fait ni victime ni dégâts
L’armée jordanienne dit avoir intercepté tous les missiles et drones iraniens, après une attaque revendiquée par les gardiens de la révolution. Il s’agit de la dernière attaque en date depuis la repri
=== France Info Monde ===
• La Ville de Bayeux obtient 1 066 tickets gratuits pour l'exposition de la tapisserie de Bayeux au British Museum à Londres
Ce nombre de billets fait référence à la date de la bataille d'Hastings, représentée sur la tapisserie de Bayeux, qui s'est déroulée au cours de la conquête normande de l'Angleterre, le 14 octobre 106
• DIRECT. Coupe du monde 2026 : l'équipe de France affronte le Maroc à 22 heures pour une place en demi-finale, suivez le match avec nous
Auteurs jusqu'à présent d'un parcours sans faute, les Bleus font face à de redoutables Lions de l'Atlas, qu'ils avaient battus lors du Mondial 2022.
• Qui est le mystérieux "Comte Tête-de-poubelle", qui défie Nigel Farage au Royaume-Uni lors d'une élection législative partielle ?
En plein scandale, le candidat fantaisiste "Count Binface" est pour l'instant le seul à se positionner face au leader de Reform UK lors de l'élection législative partielle de Clacton-on-Sea, boycottée
• "Ça peut durer longtemps" : nouvelle nuit de frappes entre les États-Unis et l'Iran, le détroit d'Ormuz au cœur des crispations
Les États-Unis ont frappé une centaine de sites militaires en Iran la nuit dernière : le bilan est de 14 morts, selon le régime iranien. Téhéran a riposté en attaquant des bases américaines au Koweït
• À New York, le football se joue jusqu'au bout de la nuit sous l'impulsion du maire Zohran Mamdani
À l'occasion de la Coupe du monde, la mairie de New York ouvre des terrains de football accessibles toute la nuit dans chacun des cinq arrondissements de la ville. Une initiative portée par le maire d
• Le président turc Recep Tayyip Erdogan offre des revolvers gravés à leurs noms aux dirigeants présents au sommet de l'Otan
Le cadeau surprenant de l'hôte du sommet d'Ankara, en état de marche et accompagné de six balles réelles, a provoqué un casse-tête pour les services de sécurité des destinataires.
• Soutien à l'Ukraine, guerre au Moyen-Orient, Groenland... Ce qu'il faut retenir du sommet de l'Otan en Turquie
La reprise des frappes entre les Etats-Unis et l'Iran s'est invitée dans les échanges entre dirigeants. Malgré les déclarations parfois explosives et incohérentes de Donald Trump, les Etats membres on
• Quel est le dispositif de sécurité prévu pour le match France-Maroc en quarts de finale de la Coupe du monde 2026 ?
Pour l'occasion, 20 000 policiers et gendarmes sont déployés jeudi sur le territoire national, dont environ 8 000 à Paris, selon les informations de France Télévisions. Dans la capitale, la fermeture
• Frappes américaines contre l'Iran : Donald Trump publie des vidéos de frappes... de l'an dernier, dans une autre ville iranienne
Le Président américain est accusé de propager de fausses informations après avoir relayé plusieurs vidéos de frappes sur l'Iran datant du mois de juin 2025. Le président américain n'a pas démenti.
• DOCUMENT FRANCEINFO. A bord du porte-avions "Charles-de-Gaulle", de retour d'une mission au Moyen-Orient
Initialement déployé pour un exercice militaire en Méditerranée, le porte-avions français a été redirigé vers le Moyen-Orient, où il a évolué pendant plusieurs mois dans un contexte de guerre dans la
=== France 24 ===
• Mondial 2026 : le point sur les quarts de finale
Après 27 jours de compétition et 96 matches, le Mondial-2026 fait relâche mercredi avant le début des quarts de finale jeudi que les huit sélections - six européennes, une africaine et une sud-améric
• Des intercepteurs Patriot "made in Ukraine" : Kiev a-t-elle le temps d'attendre ?
Donald Trump a annoncé, mercredi, que l'Ukraine allait recevoir la licence pour fabriquer ses propres systèmes de défense antiaérienne Patriot pour contrer la menace des missiles balistiques russes.
• La junte bukinabè exerce un "terrorisme d'État", dit le journaliste en exil Inoussa Ouédraogo
Dans un entretien accordé à FRANCE 24, le journaliste burkinabè en exil Inoussa Ouédraogo accuse la junte au pouvoir d'exercer un "terrorisme d'État". Il affirme que le peuple est "pris en otage" ent
• Madagascar : une vague de disparitions inquiétantes plonge Antananarivo dans la peur
À Madagascar, une vague de disparitions inquiétantes plonge Antananarivo dans la peur. Ces dernières semaines, 172 cas de disparitions ont été recensés selon un bilan de la police nationale. Face à c
• Hélicoptères militaires : à quoi servent-ils vraiment ? Le général Palomeros répond
À quoi servent vraiment les hélicoptères de l'armée française ? Le général Jean-Paul Palomeros, ancien chef d'état-major de l'Armée de l'air, décrypte leur rôle réel, au-delà de la vitrine. Une quest
• Conflits communautaires : au Tchad, un bilan fait état de 300 morts en deux ans
Plus de 300 morts en deux ans au Tchad, c’est le bilan officiel des conflits intercommunautaires qui se sont multipliés dans le pays. Jamais leur fréquence et leur intensité n’ont atteint de tels niv
• Soutien à l'Ukraine, guerre au Moyen-Orient... que retenir du dernier sommet de l'Otan en Turquie ?
Les alliés de l'Otan ont affiché leur unité mercredi à Ankara, à l'issue d'un sommet au cours duquel le président américain a alterné virulentes attaques et un ton extraordinairement conciliant. Les
• Derrière l'image : comment la Fifa gagne-t-elle de l'argent avec la Coupe du Monde ?
La 23e Coupe du monde de l’histoire devrait rapporter 9 milliards de dollars à la Fédération internationale de football association (FIFA). Mais comment se rémunère-t-elle ? Qu’en est-il de son modèl
• Funérailles d'Ali Khamenei : une démonstration de force du régime iranien ?
Le cercueil de l'ayatollah Khamenei est arrivé jeudi en avion à Machhad, ville du nord-est de l'Iran où le guide suprême doit être inhumé dans la journée, a rapporté l'agence officielle Irna.
• L'épidémie d'Ebola en RD Congo se propage plus rapidement que toutes les précédentes
L'épidémie d'Ebola qui sévit en République démocratique du Congo se propage plus rapidement que toutes les précédentes, a indiqué jeudi l'agence de santé de l'Union africaine. L'épidémie causée par l
=== 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.
🔴 Moyen-Orient
🟠 Ukraine / Russie
🟡 Amériques / US
🔵 Asie-Pacifique / Chine
🟢 Afrique
🟣 Europe / UE
⚪ Défense / Alliances
🇫🇷 France
📡 Sources : BBC World, Le Monde, France Info, France 24, The Guardian — 09/07/2026
📁 Briefing archivé dans revue_editoriale/sources/rss/2026-07-09.md