Job ID: 76ce033272c7
Run Time: 2026-06-16 16:10:15
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)~/.hermes/cron/output/<job_id>/ for the crash reason. Fix the prompt: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-06-16
═══════════════════════════════════════════
=== BBC World ===
• Tehran selling deal with US as victory – but for Iranians it was necessity
For many Iranians, the question is not whether the deal means victory, but whether it lowers prices and reduces fear of another war.
• Russian artist and Putin critic shot dead in Poland
Robert Kuzovkov, who used the pseudonym Semyon Skrepetsky, has been known for his caricatures of politicians including Vladimir Putin.
• France's oldest female detainee, 79, goes on trial for in-law's grisly murder
A dismembered body found in a chain-bound trunk in the Seine in 1995 was only recently connected to the defendant by DNA evidence.
• Venezuela signs deal with US energy giant to rebuild power grid
The deal with General Electric is the latest sign of co-operation between US firms and Venezuela's interim government.
• Eight dead after US Air Force B-52 bomber crashes in California
The incident occurred on Monday morning while the aircraft had been on a routine test mission.
• Cuba tourism collapses as US pressure campaign bites
The number of foreign visitors is down by 58% compared to last year, Cuban officials say, amid sanctions and an effective oil blockade.
• Hungary's MPs block return of Orbán, limiting rule of PM to eight years
The vote fulfils a promise by new PM Péter Magyar to stop his predecessor from becoming prime minister again.
• 'Dancing girl's' bare torso restored in Indian textbook after backlash
A picture in a new school textbook had covered up the naked torso of the famous figurine with dark shading.
• Somaliland opens Jerusalem embassy after Israel's recognition of its independence
The move comes six months after Israel became the first country to recognise the breakaway East African state.
• FBI thwarted plot targeting White House UFC event, Patel says
In newly unsealed court documents, the government alleges that the plan would have used drones. The FBI boss says multiple suspects are in custody.
=== Le Monde International ===
• EN DIRECT, guerre en Ukraine : le ministère de la défense britannique dit enquêter sur un incident impliquant un navire de guerre russe dans la Manche
D’après le média britannique « The Telegraph », un navire de guerre russe a tiré des coups de semonce en direction d’un yacht britannique.
• « L’Afrique et le G7 ont tout à gagner à s’associer pour la transition verte, car aucun des deux blocs ne peut, seul, construire une résilience climatique »
La députée kényane Umulkher Harun Mohamed et la représentante spéciale de l’ONU pour l’énergie durable, Damilola Ogunbiyi, appellent, dans une tribune au « Monde », les pays du G7 à s’associer au dyna
• Coupe du monde 2026 : pour le Sénégal, Pape Gueye assure que « c’est un rêve de pouvoir jouer face aux Bleus »
Le buteur en finale de la Coupe d’Afrique des nations contre le Maroc, le 18 janvier, ne cache pas les ambitions du Sénégal pour le Mondial. Avant de rencontrer l’équipe de France, mardi, le milieu de
• En RDC, Félix Tshisekedi lorgne un troisième mandat, au risque d’une confrontation avec la rue
Le président congolais s’apprête à promulguer une loi qui pourrait lui permettre de se faire réélire en 2028. Vendredi 12 juin, deux manifestants sont morts à l’issue d’un sit-in de protestation devan
• Thales et Renault s’associent pour produire un drone militaire nommé « Toutatis »
La production de ces munitions téléopérées pourrait démarrer en 2027, avec une capacité de 1 000 unités par mois dès la première année, ont fait savoir les deux groupes, mardi, dans un communiqué com
• Guerre au Moyen-Orient : Trump répond à Nétanyahou et veut impliquer la Syrie au Liban
Le président américain a fait ces déclarations en marge du sommet du G7, affirmant avoir fait part de son mécontentement au premier ministre israélien après les récentes frappes de l’Etat hébreu sur B
• La mort de Jean Ziegler, accoucheur des mauvaises consciences suisses
Sociologue, écrivain, homme politique, il s’était fait le pourfendeur « de l’ordre cannibale du monde ». Il s’est éteint le 10 juin à l’âge de 92 ans.
• Un sommet UE - Royaume-Uni prévu le 22 juillet à Bruxelles pour relancer le rapprochement post-Brexit
« Mon gouvernement travailliste tient la promesse de réinitialiser notre relation et de replacer le Royaume-Uni au cœur de l’Europe », a affirmé le premier ministre britannique, Keir Starmer.
• EN DIRECT, G7 à Evian : Emmanuel Macron donnera une interview au « 20 heures » de France 2 jeudi soir
« Après l’accord conclu entre les Etats-Unis et l’Iran, la paix est-elle enfin proche ? Le détroit d’Ormuz va-t-il rouvrir et le prix du carburant baisser ? Comment stabiliser la situation au Proche-O
• « Aux Etats-Unis, les contradictions de l’alliance entre le monde de la tech et le mouvement MAGA ne peuvent plus être étouffées »
Dans une tribune au « Monde », l’Américain Stephen Holmes, professeur de droit, met au jour la divergence avec l’exemple du marché de l’électricité : les particuliers, soumis à une violente volatilité
=== France Info Monde ===
• Un caricaturiste russe critique de Vladimir Poutine abattu en Pologne, deux arrestations
Selon les autorités polonaises, l'artiste a été tué lundi matin dans la rue par un homme non identifié, qui a tiré trois coups de feu avec une arme de poing.
• Bombardements sur Kiev : la cathédrale en flammes
Une célèbre cathédrale de Kiev, classée au patrimoine mondial de l’UNESCO, a été touchée par une attaque de drones russes. Cette frappe a fait 11 morts.
• Blocus du détroit d'Ormuz : pourquoi la prudence reste de mise malgré l'annonce de l'accord entre les Etats-Unis et l'Iran
Donald Trump a promis que le corridor serait entièrement rouvert ce vendredi, lors de la signature d'un accord-cadre avec l'Iran. Mais les principaux acteurs affichent plus de prudence.
• Sommet du G7 à Évian : rencontre entre Volodymyr Zelensky et Donald Trump
Le sommet du G7 à Évian se poursuit ce mardi 16 juin avec la rencontre entre Volodymyr Zelensky et Donald Trump. Une première réunion a eu lieu alors que les bombardements entre Kiev et Moscou se mult
• Une "menace potentielle" déjouée pour le show de MMA à la Maison Blanche lors de l'anniversaire de Donald Trump
Le chef du FBI annonce que plusieurs individus ont été interpellés en dehors de la région de Washington.
• Sommet du G7 : un groupe de hackers pro-russes revendique une cyberattaque contre plusieurs sites internet en Haute-Savoie
Le piratage a eu lieu au premier jour du sommet du G7, lundi, et ont continué mardi, rapporte ICI Pays de Savoie. La préfecture confirme que les conséquences de l'attaque sont "mineures", précisant av
• Volodymyr Zelensky : l'homme du jour au G7
🇺🇦 Volodymyr Zelensky est l'homme du jour au G7 : à Évian, il a été accueilli par Emmanuel Macron dans une mise en scène de complicité. Le président ukrainien a deux objectifs : obtenir plus d'aide mi
• Le Parlement européen donne son feu vert final à un accord commercial avec les Etats-Unis, pour éviter les menaces de droits de douane de Donald Trump
Les eurodéputés estiment avoir mis en place les garde-fous nécessaires pour protéger les intérêts européens face au président américain.
• Guerre en Ukraine : "C'est à Donald Trump de décider de quel côté il est", estime une politologue ukrainienne à l'occasion du sommet du G7
Le président ukrainien Volodymyr Zelensky est arrivé mardi au G7 d’Évian, où il doit participer à une réunion de travail consacrée à la paix et la sécurité pour l'Ukraine et l'Europe. La position amér
• La playlist franceinfo : le nouvel album de Bongeziwe Mabandla
Cette semaine, dans la Playlist de franceinfo, le nouvel album d'un artiste sud-africain fascinant, déjà beaucoup évoqué par ici : Bongeziwe Mabandla.
=== France 24 ===
• Guerre au Moyen-Orient : la très inconfortable perspective de paix pour Netanyahu
Le Premier ministre Benjamin Netanyahu est présenté comme le grand perdant de l’accord d’entente entre les États-Unis et l’Iran. Pour les experts de la région, le dirigeant israélien, mis sur la touc
• Mondial 2026 : Times Square, nouvel épicentre des supporters de football
Alors que la France et le Sénégal s'apprêtent à faire leur entrée mardi dans la Coupe du monde, les supporters se préparent à la fête à Times Square. La mythique place située au cœur de New York est
• "On va faire du poulet pané" : les supporters sénégalais confiants avant France-Sénégal
“On va faire du poulet pané” : à l’approche du choc France-Sénégal, les supporters sénégalais affichent leur confiance et promettent une ambiance électrique autour des Lions de la Teranga.
• Quand Emmanuel Macron reçoit les chefs d'État au château de Versailles
Emmanuel Macron a convié Donald Trump mercredi à un dîner au château de Versailles "pour célébrer les 250 ans de l'indépendance américaine". C'est la quatrième fois que le président français reçoit u
• G7 : un sommet qui fait briller Donald Trump ?
Donald Trump a déclaré mardi que le protocole d'accord visant à mettre fin à la guerre entre l'Iran et les Etats-Unis était un "accord équitable" et répété que l'accord définitif, qui doit encore
• Présidentielle en Colombie : deux visions radicalement opposées s'affrontent au deuxième tour
La Colombie choisira un président le 21 juin entre le candidat d'extrême droite Abelardo de la Espriella, vainqueur du premier tour, et le favori de gauche Ivan Cepeda. Ces deux hommes proposent deux
• Le G7 fait monter la pression contre Moscou pour arrêter la guerre avec l'Ukraine
Les dirigeants du G7, réunis à Evian en présence de Volodymyr Zelensky, ont signalé mardi leur volonté commune d'intensifier la pression sur Moscou pour arrêter la guerre en Ukraine, Donald Trump pr
• Mondial-2026 : c'est le grand jour pour les Bleus
L'équipe de France, emmenée par sa ligne d'attaque magique Mbappé-Dembélé-Olise, débute son aventure au Mondial-2026 en se frottant au Sénégal, mardi à East Rutherford, un premier gros choc censé lan
• Roxane Stojanov, danseuse étoile : "J'ai tout donné pour saisir ma chance"
Danseuse étoile de l’Opéra de Paris, Roxane Stojanov enchaîne les défis entre La Bayadère et The Seasons' Canon. De la Macédoine du Nord aux plus grandes scènes parisiennes, elle revient sur son parc
• Argentine-Algérie : les Fennecs rêvent déjà de faire tomber Messi
Championne du monde en titre, l'Argentine entre en lice dans la nuit de mardi à mercredi contre l'Algérie. Les coéquipiers de Lionel Messi se lancent dans la défense de leur couronne face à des Fenne
=== 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/veille_actualite/daily/YYYY-MM-DD.md (remplace YYYY-MM-DD par la date du jour). Crée le fichier avec write_file.
Briefing livré et archivé dans ~/.hermes/memory/modules/veille_actualite/daily/2026-06-16.md. ✅