Job ID: 76ce033272c7
Run Time: 2026-07-13 16:08:41
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-13
═══════════════════════════════════════════
=== BBC World ===
• At least 28 killed, 25 critically injured after fire engulfs Bangkok bar
Firefighters arrived at the scene in the Chatuchak district to find patrons running through flames to escape.
• 'Hero, legend, sweetheart': Tributes to Jurassic Park actor Sam Neill, who has died aged 78
Friends, politicians and fellow film stars remember Neill following his "sudden and unexpected" death.
• Senator Lindsey Graham died of aortic tear, examiner says
Graham, a close Republican ally of Donald Trump, died at the age of 71 on Saturday evening.
• Wildfire raging south of Paris could have been set deliberately, says minister
It was the first time firefighting planes had been sent up from the normally drier and hotter south of the country to tackle fires in the Paris region.
• Men disguised as police kill Ecuadorean drug lord's brother
The victim, David Macías, was the brother of drug lord 'El Fito', who is awaiting trial in the US.
• Infantino opens door to 64-team World Cup
Plans for a 64-team men's world cup are set to be picked up and assessed in detail after the 2026 tournament with Fifa boss Gianni Infantino saying football needs to be "for the whole world".
• German court convicts Iraqi couple of enslaving Yazidi girls
The pair, named only as Twana H.S. and Asia R. A., left Germany for Iraq in 2015 and became members of the Islamic State group.
• South Africa says more than 53,000 foreigners deported in migration campaign
South Africa is cracking down on undocumented migrants following widespread anti-immigration protests.
• US Senator Mitch McConnell says absence due to fall and pneumonia
The veteran Republican says he will not return to work "quite yet", in his first statement following weeks of speculation about his health.
• Heavy rains and flash floods in Bangladesh leave 51 dead
Thousands have lost their homes as flash floods and landslides have hit large parts of the country.
=== Le Monde International ===
• En Syrie, la fin des subventions et la libéralisation de l’économie accentuent la paupérisation de la société : « Il n’y a pas de stratégie, c’est le chaos »
Alors que les prix de l’électricité flambent, la livre syrienne dégringole face au dollar, accentuant la perte de pouvoir d’achat et la colère des ménages contre le gouvernement d’Ahmed Al-Charaa, acc
• Incendie en Andalousie : quatre Britanniques et une Française parmi les victimes ; le feu est désormais stabilisé
Annoncée dimanche par les autorités, la maîtrise du sinistre a permis le retour progressif de centaines d’habitants évacués, certains ayant pu regagner leur domicile dès la nuit de samedi à dimanche.
• A Genève, l’argent prospère à l’abri des regards indiscrets
La ville de Jean Calvin et de la Réforme est devenue le refuge des grandes fortunes d’hier et d’aujourd’hui et l’une des plus grandes places financières offshore du monde. Si les grandes familles prot
• En Inde, l’embarrassant scandale des dons détournés du temple de Ram fragilise le parti du premier ministre
Le temple de Ram, érigé sur les ruines de la mosquée Babri et présenté comme la « mère des batailles » des nationalistes hindous, est au cœur d’une affaire de détournement de fonds. Le scandale impliq
• Mégalevée de fonds pour Helsing, start-up européenne d’IA de défense, valorisée 18 milliards de dollars désormais
L’entreprise a annoncé, lundi, avoir récolté 1,8 milliard de dollars lors de son sixième tour de table.
• EN DIRECT, guerre en Ukraine : neuf pays européens et l’Ukraine créent une coalition pour développer des « capacités antibalistiques » en Europe
Un communiqué a été diffusé par l’Elysée à l’issue d’une réunion de la coalition des volontaires organisée au ministère des affaires étrangères. Les Etats membres ont salué « l’expérience unique de l’
• Meurtre d’Ann Widdecombe : la police antiterroriste britannique saisie de l’enquête
Le chef adjoint de la police locale avait initialement affirmé ne disposer « d’aucune information permettant d’affirmer qu’il s’ag[issait] d’un crime à caractère politique ».
• VIDEO Lors de son dernier discours aux armées, Emmanuel Macron dresse son bilan
En tant que chef des armées, le président aura doublé le budget de la défense et remis l’armée française au cœur des priorités du pays. C’est la dernière fois qu’il s’adressait aux armées en tant que
• EN DIRECT, guerre au Moyen-Orient : Donald Trump affirme rétablir le blocus naval des ports iraniens
Le président américain a également déclaré vouloir instaurer une taxe de 20 % sur le fret maritime dans le détroit d’Ormuz.
• En grève de la faim, le militant sahraoui Naâma Asfari, incarcéré depuis 2010 au Maroc, dénonce une détention arbitraire
Cette figure du droit à l’autodétermination du Sahara occidental est le porte-voix d’un groupe de 19 prisonniers arrêtés en novembre 2010. Condamné en 2013, il purge une peine de trente ans de prison.
=== France Info Monde ===
• "Si nous restons les bras croisés, nous serons tous à la merci de juges étrangers" : Washington s'en prend avec force à la Cour pénale internationale
Les relations entre l'administration Trump et la CPI basée à La Haye sont exécrables et plusieurs magistrats de la cour, dont le procureur général, font déjà l'objet de sanctions.
• Procida, l'île enchantée du golfe de Naples
Petite île volcanique du golfe de Naples, Procida séduit par ses façades colorées, son authenticité et ses traditions préservées. Entre patrimoine, pêche et gastronomie, ses habitants perpétuent un ar
• Moyen-Orient : pourquoi les hostilités ont repris dans le détroit d'Ormuz
Le cessez-le-feu théoriquement en vigueur entre l'Iran et les États-Unis est une nouvelle fois mis à mal. Pour la deuxième nuit consécutive, les États-Unis ont lancé des frappes massives contre l'Iran
• Au Moyen-Orient, des frappes d'une ampleur inédite depuis le début de la trêve
Les hostilités ont bel et bien repris au Moyen-Orient. Les États-Unis ont à nouveau bombardé l'Iran cette nuit. Téhéran a riposté ce matin du lundi 13 juillet, en visant des pays de la région alliés d
• Japan Expo : des parents et grands-parents venus participer sans rien connaître
La 25e édition de la Japan Expo s'est tenue du jeudi 9 au dimanche 12 juillet au Parc des Expositions, à Paris. Plusieurs dizaines de milliers de visiteurs ont participé à cet évènement sur la pop cul
• Incendie meurtrier en Espagne : une Française figure parmi les premières victimes identifiées par les autorités
Le ministère des Affaires étrangères français avait annoncé samedi soir qu'une Française en vacances en Andalousie était disparue après avoir fui la zone en voiture quand le feu s'est déclaré.
• Après l'incendie meurtrier en Andalousie, le Premier ministre espagnol Pedro Sanchez appelle à une culture de la "prévention" de la population
Le dirigeant socialiste s'est exprimé lors d'un déplacement dans le sud de l'Espagne, sur les lieux de l'un des incendies les plus meurtriers de l'histoire récente du pays. Au total, 13 personnes ont
• En Corée du Sud, des temples bouddhistes aident les célibataires à trouver leur âme sœur
Pour relancer la natalité, la Corée du Sud songe à faire appel aux moines bouddhistes. Plusieurs temples organisent maintenant des retraites spéciales pour aider des jeunes célibataires à trouver l’âm
• Menace d'attentat à Sarcelles : le ministre de l'Intérieur demande un renforcement des mesures de sécurité près des lieux fréquentés par la communauté juive
Après la découverte d'armes et de chargeurs dans un véhicule stationné à Sarcelles, samedi soir, le ministère demandent aux préfets d'assurer des surveillances de police et de gendarmerie près des lie
• "Ce n'est plus le fleuve qui se jette dans la mer, c'est l'inverse" : en Italie, les associations écologistes et les agriculteurs démunis face à la sécheresse
Les canicules s'enchaînent aussi en Italie, avec d'ores et déjà des conséquences sur les fleuves et les cultures.
=== France 24 ===
• Les États-Unis peurent la mort de Lindsey Graham : Trump salue "un des plus grands"
Salué en Europe pour son soutien à l'Ukraine, l'influent sénateur américain Lindsey Graham, décédé soudainement à l'âge de 71 ans, a été salué par Donald Trump comme "un des plus grands". Corresponda
• J-1 avant les célébrations du 14-Juillet : les coulisses des répétitions
Une pluie d'étoiles colorées ... À la veille des célébrations du 14-Juillet, immersion dans les répétitions du spectacle de drones qui sera offert aux Parisiens. Reportage France 2.
• Liban : la guerre dans tous les esprits
Un été avec les correspondants de France 24 : escale au Liban où la guerre se poursuit dans le sud avec l'armée israélienne. Correspondance de Serge Berberi pour France 24.
• Trump rétablit le blocus naval des ports iraniens après des frappes sans précédent depuis avril
Donald Trump a annoncé le retour du blocus naval des ports iraniens dans le secteur du détroit d'Ormuz, au coeur de frappes d'une ampleur sans précédent depuis le cessez-le-feu d'avril dans cette gue
• Sénégal : Pape Thiaw limogé par la FSF après l'élimination des Lions au Mondial
Au Sénégal, c'était une décision attendue. La Fédération sénégalaise de football a mis fin aux fonctions de Pape Thiaw après le parcours jugé décevant des Lions de la Teranga au Mondial. La sentence
• Face aux sanctions, la Russie tente des exportations masquées
Face aux sanctions occidentales, Moscou tente des exportations masquées à travers sa flotte fantôme. Récit de Léo Paichard avec August Hakansson.
• La France prête à défendre "la liberté et le droit", "au prix du sang s'il le faut" (Macron)
Le président français Emmanuel Macron appelle à poursuivre les projets industriels européens en matière de défense dans son traditionnel et dernier discours aux Armées à la veille de la fête national
• Flotte fantôme russe, menace fantôme ? Parlons-en avec P. Tourret, E. Volochine et G. Rybinksi
Aujourd'hui dans Parlons-en s'intéresse à la flotte dite "fantôme" russe. Permet-elle, comme le soutient Vladimir Poutine, de continuer à financer son effort de guerre en vendant plus ou moins discrè
• Sénégal : le sélectionneur Pape Thiaw après l'élimination au Mondial
En poste depuis fin 2024, Pape Thiaw a été démis de ses fonctions de sélectionneur du Sénégal, éliminé en 16e de finale du Mondial-2026, a annoncé la Fédération sénégalaise de football (FSF), pointan
• Incendies en forêt de Fontainebleau : "Le feu n'est pas fixé"
L'incendie en cours en forêt de Fontainebleau "n'est pas fixé" et les pompiers combattent un nouveau départ de feu dans le secteur de la Faisanderie, non loin de la ville de Fontainebleau, a indiqué
=== 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, Le Monde, France Info, France 24, The Guardian — 13 juillet 2026
Archivé dans ~/.hermes/memory/modules/revue_editoriale/sources/rss/2026-07-13.md ✅