Job ID: 76ce033272c7
Run Time: 2026-07-18 16:09:07
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-18
═══════════════════════════════════════════
=== BBC World ===
• Russian online retail warehouses hit by deadly Ukrainian strikes
Drones targeted Wildberries facilities near Moscow and in Tambov. Ukraine's leader called them "major logistics facilities" supplying "sanctioned components".
• Many Ukrainian soldiers outraged over removal of defence minister, troops tell BBC
Protests erupted in Ukraine on Thursday after Mykhailo Fedorov's removal - and now soldiers are also criticising the move.
• US strikes hit Iran for seventh consecutive night
Iran has retaliated against US allies in the region, with Kuwait reporting that a power and water plant had been hit.
• Trump threatens new Canada tariffs over fires sending 'filthy' air into US cities
Canadian leader Mark Carney says both the US and Canada have an equal responsibility to fight climate change, which experts say are worsening wildfire conditions.
• Space start-up launches India’s first commercial rocket designed for orbit
India's first space-tech unicorn Skyroot Aerospace successfully launched Vikram-1 on Saturday.
• Laos says it can't determine cause of tourist deaths linked to methanol
Officials say they have no evidence of poisoning over the 2024 deaths because autopsies were not conducted.
• German politician resigns over surrogacy child controversy
Jens Spahn faced criticism over his use of a surrogate, a ban on which he previously backed.
• Indian activist on hunger strike for 20 days forcibly taken to hospital
Cockroach Janta Party founder Abhijeet Dipke has now begun an indefinite fast in Sonam Wangchuk's place.
• White House defends Argentina team over Falklands banner
The comments could further fuel the row over the incident, which has seen Downing Street back calls for Fifa to investigate.
• One anti-war critic fined, another held as Russia clamps down on dissent
While Boris Nadezhdin is barred from running for parliament, blogger Ilya Remeslo is remanded in custody.
=== Le Monde International ===
• Ethiopie : manifestation de soutien au gouvernement, à Addis Abeba, et contre le recrutement forcé dans la région rebelle du Tigré
Début juillet, l’ONG Human Rights Watch avait établi que les autorités régionales du Tigré recrutaient de force des hommes, dont des mineurs parfois âgés d’à peine 15 ans.
• Brésil : la Cour suprême interdit la visite du président argentin, Javier Milei, à l’ancien président Jair Bolsonaro, assigné à résidence
Jair Bolsonaro purge une peine de vingt-sept ans de prison pour avoir ourdi un coup d’Etat en 2022. La justice a également décidé qu’il ne pourrait pas non plus recevoir de visites à « finalité politi
• En Inde, tollé après le coup de force du gouvernement contre Sonam Wangchuk, militant en grève illimitée de la faim
L’activiste avait rejoint le mouvement des « cafards », la protestation des étudiants pour exiger la démission du ministre de l’éducation. Samedi 18 juillet, après vingt et un jours de grève de la fai
• EN DIRECT, guerre au Moyen-Orient : l’Iran n’a pas d’autre choix que de « donner une leçon aux agresseurs », prévient le vice-ministre des affaires étrangères iranien, Kazem Gharibabadi
Les pays du Golfe ont par ailleurs condamné les attaques iraniennes contre des infrastructures civiles de Bahreïn, de la Jordanie et du Koweït, les qualifiant de « crimes de guerre ».
• Turquie : 119 suspects liés à l’organisation Etat Islamique arrêtés lors d’une vaste opération antiterroriste dans 30 provinces
Les suspects sont accusés d’être membres de l’organisation Etat islamique, de faire sa propagande sur les réseaux sociaux et de le financer « par le biais des personnes en lien avec l’organisation ter
• Jens Spahn, chef des députés conservateurs allemands, critiqué pour avoir eu un enfant via la GPA, démissionne
Figure de l’aile droite de la CDU, le parti du chancelier Friedrich Merz, Jens Spahn était attaqué au sein de son propre camp pour avoir eu avec son mari un enfant via une gestation pour autrui aux Et
• 30 000 morts en cinq jours : en Inde, le coût humain exorbitant des canicules
Le pays le plus peuplé au monde est aussi l’un des plus exposé aux chaleurs humides extrêmes. Une étude vient de calculer pour la première fois la surmortalité liée aux chaleurs extrêmes en Inde, de p
• VIDEO Norvège : un incendie détruit plus d’une centaine de logements
Dans le sud de la Norvège, une centaine d’habitants ont été évacués suite à l’un des plus grands feux qu’ait connus dans le pays.
• EN DIRECT, guerre en Ukraine : Volodymyr Zelensky revendique des frappes contre des sites logistiques en Russie
Le président ukrainien a affirmé que l’Ukraine avait frappé deux importantes installations dans les régions de Moscou et de Tambov, utilisées selon lui pour acheminer des composants sous sanctions des
• L’Allemagne et la France relancent une coopération « réaliste » sur la défense
Après l’échec du projet d’avion commun SCAF, Paris et Berlin ont annoncé, lors d’un conseil des ministres franco-allemand, une série d’initiatives pour entretenir la coopération sur des sujets stratég
=== France Info Monde ===
• Guerre un Ukraine : plus de 300 drones lancés vers Moscou
Une attaque de drones ukrainienne a fait au moins 7 m0rts et 25 blessés à Kotovsk, petite ville de l'ouest de la Russie, samedi 18 juillet. Kiev a considérablement intensifié ses offensives ces derniè
• La justice brésilienne interdit une visite du président argentin Javier Milei à l'ancien chef d'Etat Jair Bolsonaro, assigné à résidence
Le chef d'Etat argentin devait rendre visite le 25 juillet prochain à l'ancien président brésilien, condamné à 27 ans de prison et assigné à résidence pour avoir planifié un coup d'Etat en 2022.
• Aux Pays-Bas, un laboratoire clandestin de drogues de synthèse découvert à La Haye, des dizaines de logements évacués
L'enquête a mené à trois autres arrestations après la première interpellation effectuée vendredi sur le site. Les suspects sont quatre hommes âgés de 34 à 71 ans, a précisé la police.
• Attaqué pour avoir eu un enfant par GPA, le chef des députés conservateurs allemands démissionne
L'annonce du recours de Jens Spahn à une mère porteuse, jeudi, dans la presse allemande a entraîné de nombreuses critiques, alors que la pratique est interdite dans le pays.
• Un glissement de terrain meurtrier en Chine
Un glissement de terrain, survenu vendredi 17 juillet, dans le sud-est de la Chine a fait au moins huit morts et 34 disparus, ont annoncé les médias d'Etat et les autorités locales. Le président Xi Ji
• Les médecins cubains à l'étranger, nouvelles victimes du bras de fer entre Washington et La Havane ?
Cuba se débat entre pénuries et coupures d’électricité à répétition depuis le début de l'année et le blocus énergétique imposé par les Etats-Unis.
• Face à la multiplication des accidents en trottinette électrique, l'Italie impose immatriculation et assurance
Depuis cette semaine en Italie, qu'on loue ou possède une trottinette électrique, il est devenu obligatoire d'immatriculer l'engin et de l'assurer. En cinq ans, le nombre annuel de tués a été multipli
• Incendies au Canada : des centaines de feux hors de contrôle, la tension monte avec les États-Unis, atteints par la fumée
Les nombreux incendies poursuivent leur progression au Canada, malgré l'importante mobilisation des secours. Les évacuations se multiplient, tandis que la nappe de fumée traverse la frontière et alime
• Guerre au Moyen-Orient : le détroit d'Ormuz à nouveau bloqué après une septième nuit de bombardements américains contre l'Iran
Les affrontements entre l'Iran et les États-Unis continuent de s'intensifier au Moyen-Orient. La situation perturbe de nouveau le trafic dans le détroit d'Ormuz, passage stratégique pour le commerce m
• EN IMAGES. Incendies au Canada : de Toronto à New York, plusieurs grandes villes nord-américaines aux prises avec une épaisse fumée en raison des feux
Le Canada comptait 950 foyers actifs samedi. Portés par les vents, les panaches de ces incendies ont dégradé la qualité de l'air jusqu'à New York et Washington, poussant les autorités à recommander le
=== France 24 ===
• Au Mali, les indépendantistes touaregs attaquent un convoi de l'armée dans le Nord
La ville d'Anéfis a été samedi le terrain de nouveaux affrontements avec l'attaque d'un convoi de l'armée malienne par des indépendantistes touaregs, rapportent des sources militaires et sécuritaires
• Des "crimes de guerres" comis par l'Iran à Bahreïn, au Koweit et en Jordanie dénoncés
"Les actions de l'Iran représentent une escalade extrêmement dangereuse, une grave violation du droit international, ainsi que des crimes de guerre." Voici les mots du secrétaire général du Conseil d
• 🔴 En direct : les pays du Golfe qualifient de "crimes de guerre" les attaques iraniennes sur des infrastructures civiles
• Rattrapé par un scandale sur la GPA, le conservateur allemand Jens Spahn contraint à la démission
Le chef des députés conservateurs allemands de la CDU-CSU, Jens Spahn, a démissionné samedi après des attaques au sein de son propre camp pour avoir eu, avec son mari, un enfant par le biais d'une ge
• Sécheresse, déforestation, déchets... Haïti face aux défis de la sécurité climatique
À Haïti, le réchauffement climatique frappe la population de plein fouet. Températures extrêmes, sécheresse, ouragan et tempêtes tropicales… le pays est le plus vulnérable des Caraïbes. Cet environne
• Le retour du duo franco-allemand ? Macron et Merz renforcent leur alliance militaire
L'Allemagne va participer "avant la fin de l'année" à un exercice français de dissuasion nucléaire, ont annoncé les dirigeants allemand et français hier soir à l'issue d'un conseil des ministres bila
• Mondial 2026 : La der' de Deschamps, Zidane successeur annoncé
Didier Deschamps va connaitre son 187e et dernier match à la tête de l'Équipe de France pour le match de la 3e place de cette Coupe du monde contre l'Angleterre. Quel bilan pour le sélectionneur reco
• Championnat des nations : le XV de France s'impose à nouveau largement face au Japon
Le XV de France a largement dominé le Japon (42-15) samedi à Tokyo, lors de la troisième journée du Championnat des nations. Les Bleus ont inscrit six essais, dont des doublés de Matthieu Jalibert et
• 🔴 En direct : le Koweït accuse l'Iran de cibler des sites civils et des infrastructures essentielles
• Show de mi-temps à l'américaine, bagues aux vainqueurs : une finale de Mondial façon Super Bowl
La Coupe du monde 2026 va se terminer avec éclat, dimanche, lors de la 104e et dernière rencontre de la compétition. Entre spectacles, récompenses et prix démesurés, la finale entre l'Espagne et l'Ar
=== 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.
📡 Sources : BBC World, Le Monde International, France Info, France 24, The Guardian — 18 juillet 2026
🗂️ Briefing archivé dans revue_editoriale/sources/rss/2026-07-18.md