Job ID: 76ce033272c7
Run Time: 2026-07-24 16:07:40
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 toolsweb_extract may fail when the backend is DuckDuckGo (search-only). Use the fallback technique in references/curl-extraction-fallback.md when this happens: download HTML with curl -o /tmp/page.html then extract text with the Python cleanup recipe documented theresend_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).references/curl-extraction-fallback.md for extracting text from web pages when web_extract or the browser are unavailable — the curl+Python HTML-stripping recipe tested on major French news sites.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-24
═══════════════════════════════════════════
=== BBC World ===
• Tens of thousands evacuated from French tourist spot and near Madrid as wildfires spread
The fire has raged in the region for several days with officials now ordering the evacuation of the entire Cap Ferret peninsula.
• US hits dozens of countries with new wave of tariffs
Imposed citing forced labour concerns, the levies replace a temporary global duty brought in after the US Supreme Court struck down tariffs in February.
• US and Iran trade more strikes in Gulf as fears of escalation mount
It comes as Iran condemned the US plan to use frozen Iranian assets to pay for war damages.
• Indonesian babies were trafficked to Singapore. What happens to them now?
At least 12 babies have been trafficked from Indonesia to Singapore, but what will happen to them remains unclear.
• South Africa's president wins bid to temporarily halt impeachment inquiry over 'Farmgate'
Ramaphosa has faced scrutiny following the theft of large sums of cash from his private farm in 2020.
• Four Palestinians and two Israelis killed in West Bank shooting
Palestinians say villagers came under attack by settlers, while the Israeli military says a Palestinian stole a weapon and opened fire on hikers.
• Nigeria's president approves largest military expansion in recent times
The government is under intense pressure to tackle a slew of armed groups, many of whom attack civilians.
• India's 'cockroach' protesters hold talks with government as stalemate continues
The meeting came hours after activist Sonam Wangchuk announced he was ending his 26-day hunger strike.
• Tanzanian lecturer arrested over anti-government protests charged with terrorism
He is among more than 130 people detained over planned protests calling for democratic reforms.
• Tech titan ordered to pay ex-wife $644m in divorce settlement
The divorce, involving the chairman of one of South Korea's biggest companies, has gripped the nation.
=== Le Monde International ===
• VIDEO Wildberries : le « Amazon russe » en feu après des frappes de drones ukrainiens
Depuis le 18 juillet 2026, plusieurs entrepôts du Amazon russe ont été touchés par des drones, alors que l’armée ukrainienne continue de diversifier ses cibles pour faire entrer la guerre dans le quot
• Ma vie d’exilée russe à Paris : « Devenir cliente d’une banque française quand on vient de Moscou relève de l’exploit »
« Une Russe à Paris » (4/6). La journaliste Elizaveta Osetinskaya, réfugiée en France depuis l’invasion de l’Ukraine par la Russie en 2022, relate ses déboires pour ouvrir un compte bancaire alors que
• L’Espagne décrète l’état d’urgence pour tenter de contenir le « pire incendie de l’histoire » de la région de Madrid
Vendredi après-midi, deux des trois incendies en cours ont fusionné, formant un gigantesque brasier à une soixantaine de kilomètres à l’ouest de la capitale espagnole.
• Sur l’île suédoise de Fårö, à la recherche de l’âme d’Ingmar Bergman
Chaque été, nombreux sont les étudiants, cinéphiles, réalisateurs qui se pressent sur la petite île de la Baltique pour s’imprégner de l’esprit du cinéaste. Fasciné par la rigueur de ses paysages, le
• Mark van Bommel nommé à la tête de la sélection masculine belge de football, après Rudi Garcia
L’ancien international néerlandais de 49 ans a été choisi pour prendre le poste de sélectionneur des Diables rouges à la suite du Français, dont la non-prolongation du contrat en dépit des objectifs r
• Les Etats-Unis sanctionnent l’armée soudanaise pour l’usage d’armes chimiques
La décision américaine intervient après le largage de barils de chlore en septembre 2024. Des faits étayés par des enquêtes du « New York Times » et de France 24, que l’armée soudanaise continue de ni
• EN DIRECT, guerre au Moyen-Orient : Bahreïn dénonce des attaques iraniennes ; la Jordanie déclare avoir intercepté sept missiles et six drones iraniens
Le détroit d’Ormuz « reste ouvert au transit malgré les récentes attaques menées par le corps des gardiens de la révolution islamique iranien », selon l’armée américaine, qui a affirmé avoir ciblé la
• EN DIRECT, guerre en Ukraine : Volodymyr Zelensky rencontrera Donald Trump à Washington mardi
Le ministère de la défense russe a de son côté revendiqué, vendredi en fin d’après-midi, l’attaque ayant tué au moins dix personnes près de Kiev, plus tôt dans la journée.
• La Hongrie annonce enquêter sur un troupeau de zèbres appartenant à un proche de Viktor Orban
Ces animaux sont la propriété de Lorinc Meszaros, l’un des hommes les plus riches de Hongrie, considéré comme le prête-nom de Viktor Orban.
• Mort de Daniel Siad : pas de « traces de violences récentes pouvant être en lien avec le décès » selon l’autopsie
Le rabatteur présumé de Jeffrey Epstein était visé par plusieurs plaintes, notamment pour viol. Des analyses complémentaires, notamment toxicologiques et sur des tissus prélevés, ont été requises.
=== France Info Monde ===
• La Roumanie abat un drone dans son espace aérien pour la première fois depuis le début de l'invasion russe de l'Ukraine
Selon le gouvernement, les radars roumains ont détecté l'engin avant que des avions de chasse italiens, engagés dans la mission de police du ciel de l'Otan, puis roumains, ne soient déployés.
• Dee Dee Bridgewater raconte son duo avec Ray Charles : "Il a accepté parce qu'il aimait ma voix"
Dee Dee Bridgewater et China Moses sont les invitées exceptionnelles toute cette semaine du Monde d’Elodie, pour la sortie de leurs albums respectifs, "Elemental", pour la mère et "It's complicated",
• En Corée du Sud, le tarot divinatoire pour animaux de compagnie séduit de plus en plus de propriétaires
Votre lézard fait-il une dépression ? Votre chien est-il jaloux de votre hamster ? En Corée du Sud, de plus en plus de personnes se tournent vers des cartomanciennes pour essayer de comprendre les pen
• Dee Dee Bridgewater et China Moses, à la conquête de la liberté : "Elle ne doit jamais être prise pour acquis"
Dee Dee Bridgewater et China Moses sont les invitées exceptionnelles toute cette semaine du Monde d’Elodie, pour la sortie de leurs albums respectifs, "Elemental", pour la mère et "It’s complicated",
• En Ukraine, 10 morts et près de 100 blessés dans une attaque de missile russe près de Kiev
L'attaque de Moscou visait une exposition annoncée sur les réseaux sociaux et rassemblant des professionnels du secteur de la défense. Le procureur général d'Ukraine a annoncé l'ouverture d'une enquêt
• "C'est une catastrophe" : plus de 26 000 personnes évacuées dans la région de Madrid, où sévit le "pire incendie de l'histoire" de la zone
L'Union européenne a annoncé déployer quatre avions bombardiers d'eau pour lutter contre les feux en Espagne, un dispositif qui s'ajoute aux trois avions annoncés dès jeudi pour la France.
• Quatre Palestiniens et deux Israéliens tués dans des affrontements en Cisjordanie occupée, l'armée israélienne annonce une "vaste opération antiterroriste"
Le Premier ministre israélien, Benyamin Nétanyahou, jurant d'agir "avec fermeté" après ce qu'il a qualifié "d'attentat meurtrier", a annoncé "l'accélération de la légalisation d'avant-postes" de colon
• 5, 10, 20, 50 euros... Vous pouvez choisir vos futurs billets
La présidente de la Banque centrale européenne, Christine Lagarde, a dévoilé les dix propositions des futurs billets en euros, jeudi 23 juillet. Les Européens sont désormais invités à choisir leurs de
• Canada, Mexique, Union européenne, Chine... Les Etats-Unis lancent une nouvelle salve de droits de douane contre une soixantaine d'économies
Cette nouvelle surtaxe de 10 ou 12,5% sur un certain nombre de produits sanctionne, selon Washington, les pays qui ne luttent pas assez contre le commerce de produits issus du travail forcé. Elle est
• En Pologne, des rassemblements pour dénoncer la haine anti-ukrainienne dans le pays, alors que la propagande russe s'intensifie
A Wrocław, dimanche, les participants ont appelé la population à réagir face aux agressions verbales et physiques dont sont victimes les Ukrainiens, a rapporté la radio publique polonaise Polskie Radi
=== France 24 ===
• Tour de France : Tadej Pogcar dompte l'Alpe d'Huez en battant le record de Pantani
Sans concurrence, le maillot jaune Tadej Pogacar s'est imposé vendredi au sommet de l'Alpe d'Huez lors de la 19e étape du Tour de France. Au passage, il a battu le vieux record de la montée de Marco
• Park Chan-wook aux Rencontres d'Arles : du cinéma à la photo
On le savait cinéaste virtuose, on le découvre désormais photographe. Le réalisateur sud-coréen Park Chan-wook, récompensé pour "Oldboy ou "Decision to Leave", président du jury du dernier Festival d
• Sécheresse : alerte au manque d'eau en Outre-mer
De la Caraïbe au Pacifique, en passant par l'océan Indien, la sécheresse s'installe. A Futuna, l'absence de pluie menace les cultures. Sept communes subissent des restrictions à La Réunion, comme en
• Sénégal : l'ex-président Macky Sall défend sa candidature à l’ONU
Macky Sall a participé au premier débat des six candidats au poste de secrétaire général de l'ONU. L'ancien président sénégalais y a défendu une vision axée sur le dialogue, les réformes et le rétabl
• Trump relance la guerre commerciale avec de nouveaux droits de douane
Les nouveaux droits de douane que le président Donald Trump souhaite mettre en place sur les produits provenant des principaux partenaires commerciaux des Etats-Unis devraient être annoncés "très pro
• Canicule en France : vers une nouvelle vague de chaleur ?
La France pourrait faire face à une quatrième canicule depuis le début de l’été. Après une nouvelle vague de chaleur exceptionnelle, marquée par un indicateur thermique national à 28,1 °C, soit plus
• Incendies en Espagne : 19 000 personnes évacuées ou confinées dans la région de Madrid
Au moins 19 000 personnes ont déjà été évacuées ou sont confinées dans la région de Madrid en raison du "pire incendie de l'histoire" de la région, qui a déjà ravagé 6.000 hectares, a annoncé vendred
• 🔴 En direct : 12 500 hectares de forêt "détruits" dans le Sud-Ouest, 44 000 personnes évacuées en Gironde
• Incendies : plus de 40 000 personnes évacuées du Cap-Ferret
Plus de 10 000 hectares de forêt sont partis en fumée dans la Gironde et dans les Landes, poussant les autorités à décréter une évacuation totale de la presqu’île du Cap-Ferret dans la nuit de jeudi
• Incendie à Biscarrosse : 18 000 personnes évacuées, une habitante témoigne
Le feu de forêt qui menace depuis jeudi Biscarrosse (Landes) et a parcouru 2.600 hectares vendredi à la mi-journée, a fait d'importants dégâts avec 105 habitations et bâtiments touchés par les flamme
=== 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-24.md. Bonne journée Sébastien ! 🌞