Le Signal

← Retour à l'accueil

Cron Job: Veille quotidienne d'actualités

Brief Publié le 2026-07-25

Cron Job: Veille quotidienne d'actualités


Job ID: 76ce033272c7

Run Time: 2026-07-25 16:10:04

Schedule: 0 16 *


Prompt


[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: {}



News Briefings


Research and deliver current-events briefings to the user's messaging platform. Supports two modes:


Mode 1: One-shot queries (live conversation)


1. Gather news data


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.


2. Structure the summary


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.


3. Delivery to messaging platform


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.


Mode 2: Recurring cron briefings


Set up automated daily/weekly briefings that deliver directly to the user's messaging platform on a schedule.


Creating the job


Use cronjob(action='create') with:


Example 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',
)

Rules for cron prompts



Troubleshooting


Cron job not running despite being scheduled


If cronjob(action='list') shows the job as state: scheduled but last_run_at stays null even after next_run_at has passed:



Intermittent Broken pipe on feeds that normally work


Even 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.



Cron job shows 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:

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.


When a cron job shows last_status: "error" but last_delivery_error: null:


Local archiving


Each 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/:


Pre-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.


Schedule examples


FrequencyCron expression
Daily at 16h0 16 *
Daily at 9h0 9 *
Weekly Sunday 16h0 16 0
Every 2 hoursevery 2h

Pitfalls



Bundled Scripts


The 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.


Related Skills



References



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.]


Script Output

The following data was collected by a pre-run script. Use it as context for your analysis.


═══════════════════════════════════════════
 COLLECTE VEILLE QUOTIDIENNE — 2026-07-25
═══════════════════════════════════════════

=== BBC World ===
• Trump takes swipes at press during White House Correspondents' Dinner
  The event celebrated press freedom after the first dinner was cancelled by a shooting in April.

• Iran-backed Houthis claim missile attack on Saudi Arabia
  US military says it disabled a tanker that was attempting to evade the American blockade on Iranian ports.

• Ten killed in Russian attack on drone exhibition near Kyiv
  The event, attended by prominent members of the Ukrainian defence industry, was hit by ballistic missiles in the middle of the day.

• Zelensky tries to fix crisis over removal of defence minister and counts the cost
  Protests have continued over Zelensky's decision to dismiss Mykhailo Fedorov, and some commentators believe he has been damaged politically.

• 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.

• ICC top prosecutor removed over sexual misconduct allegations
  Karim Khan denies allegations of engaging in an improper sexual relationship with a junior ICC staff member and seeking to stop her pursuing her complaint.

• Texts reveal 14-year-old allegedly murdered by singer D4vd had pregnancy and abortion
  Prosecutors allege D4vd started abusing the girl when she was 13 and she had threatened to expose him.

• Trump vows to investigate EU over fining of US tech companies
  The US president says fines against Google, as well as Apple, Meta and Amazon, should be "entirely reversed."

• Trump orders Smithsonian to post warnings about 'inaccurate' US history
  The Trump administration has often accused the world's largest research museum of harbouring an anti-American bias.

• 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.


=== Le Monde International ===
• Les images des incendies dans la région de Madrid
  Trois incendies font rage dans la région de Madrid depuis lundi 20 juillet, et près de 25 000 hectares ont été brûlés.

• Droits de douane : les nouvelles menaces de Trump douchent les espoirs d’apaisement des Européens
  Un an après l’accord commercial transatlantique et sa promesse de stabilité, le président américain continue de souffler le chaud et le froid. Il menace désormais de se venger d’une amende européenne

• Ma vie d’exilée russe à Paris : « Ce qui, à Moscou, peut vous valoir de longues années de prison n’est ici qu’une façon de passer son samedi après-midi »
  « Une Russe à Paris » (5/6). La journaliste Elizaveta Osetinskaya, exilée dans l’Hexagone depuis 2022 en raison de son opposition à la guerre en Ukraine, raconte quatre expériences de rassemblements d

• OTAN : soupçons d’espionnage au quartier général du commandement militaire de l’organisation
  La justice belge a annoncé, samedi, l’arrestation d’une Canadienne d’origine chinoise, soupçonnée d’avoir profité d’un stage au siège de l’Alliance atlantique pour se livrer à des « faits d’espionnage

• EN DIRECT, guerre en Ukraine : le président du Kazakhstan a dit à Vladimir Poutine, lors d’une rencontre, que les combats en Ukraine devaient être « arrêtés »
  « Comment sortir de cette situation ? Personne ne le sait, parce qu’il y a les positions des deux parties. D’un autre côté, il y a, en ce moment, cette possibilité de geler tout cela », a déclaré le p

• L’ONU appelle la communauté internationale à accompagner et à soutenir le peuple syrien
  La visite en Syrie du secrétaire général de l’ONU, Antonio Guterres, survient plus d’un an et demi après la chute, à la fin de 2024, du président Bachar Al-Assad, renversé par une coalition de rebelle

• Le typhon Noul s’approche de la Chine, plus de 20 000 personnes évacuées dans la province du Guangdong
  Le typhon devrait toucher terre dans la zone côtière s’étendant de Hongkong à la province du Guangdong (sud) entre samedi dans la soirée et dimanche matin, a déclaré le Centre météorologique national

• La Tunisie, autopsie d’un basculement autoritaire
  Depuis que le processus de concentration des pouvoirs s’est enclenché, le 25 juillet 2021, le chef de l’Etat tunisien a peu à peu verrouillé l’espace public. Arrestations et condamnations se sont mult

• EN DIRECT, guerre au Moyen-Orient : l’Iran considère qu’il n’y a « pas de solution militaire » au conflit entre les houthistes, du Yémen, et l’Arabie saoudite
  Dans une interview publiée samedi par le quotidien d’Etat « Iran Daily », le ministre des affaires étrangères iranien, Abbas Araghtchi, a appelé au « dialogue » entre les Saoudiens et les houthistes,

• La marine française arpente l’océan Atlantique à la recherche de « clients », ces navires chargés de cocaïne en route vers l’Europe
  « L’Afrique sous emprise » (6/6). La France assure depuis 1990 une présence militaire quasi permanente le long du littoral ouest-africain pour tenter d’endiguer le trafic de drogue qui inonde l’Europe


=== France Info Monde ===
• Enquête. Pourquoi la fin du support physique bouleverse l'économie du jeu vidéo et tourmente les joueurs ?
  Si le marché mondial du jeu vidéo est d'ores et déjà en grande majorité dématérialisé, Sony décide de prendre les devant en annonçant la fin de leur production disque Blu-Ray.

• Donald Trump plaisante sur un éventuel nouveau mandat
  Trois mois après avoir échappé à une nouvelle tentative d'assassinat, Donald Trump était de retour au gala de la presse, vendredi 24 juillet. Il en a profité pour attaquer les journalistes et plaisant

• Des frappes en Ukraine et en Russie font au moins 15 morts
  Dans la partie occupée de la région de Zaporijjia, le responsable installé par Moscou a déclaré qu'une attaque ukrainienne sur un village au bord de la mer d'Azov avait tué huit personnes.

• En Inde, le ministre de l'Education annonce sa démission, les étudiants mettent fin à leur mobilisation
  Le départ de Dharmendra Pradhan était demandé en raison d'une série de fraudes aux examens universitaires.

• "Peut-être qu'il est raciste" : la surprenante accusation de Donald Trump à l'encontre de la star de la NBA LeBron James
  Le président américain a émis l'hypothèse que le nouveau joueur de Philadelphie serait raciste, vendredi, lors d'une conférence de presse à la Maison-Blanche.

• En Espagne, les incendies dans les régions de Madrid et d'Avila ont ravagé jusqu'à 25 000 hectares
  Le Premier ministre a déclaré samedi matin que la priorité était de "sauver des vies" alors que des vents "erratiques" risquent d'aggraver la situation.

• La maison natale d'Adolf Hitler transformée en commissariat
  La maison dans laquelle Adolf Hitler est né, à Braunau-sur-Inn (Autriche), a été transformée en poste de police. L'inauguration a eu lieu mardi 22 juillet. Coût des travaux : 20 M€. L'objectif est de

• Une stagiaire de l'Otan, soupçonnée d'espionnage, arrêtée en Belgique
  Cette ressortissante canadienne d'origine chinoise travaillait au quartier général stratégique des Puissances Alliées en Europe de l'Otan, à Mons.

• Les Houthis revendiquent une frappe en Arabie saoudite, après des attaques de Ryad
  Ces insurgés pro-Iran ont pris pour cible des navires circulant en mer Rouge ces derniers jours, étendant le conflit au Moyen-Orient.

• "Quand je vais partir, vous allez tous faire faillite" : malaise palpable entre Donald Trump et les journalistes au dîner des correspondants de la Maison Blanche
  Lors de cette soirée, le président américain s'en est pris aux journalistes, les qualifiant notamment "de personnes atteintes du syndrome de délire anti-Trump".


=== France 24 ===
• Incendies : plus de 1 500 militaires mobilisés en renfort des sapeurs-pompiers
  À partir de samedi soir, 1 500 militaires seront déployés en renfort pour faire face aux incendies qui touchent le sud ouest de la France. Ils participeront notamment aux évacuations, à la protection

• Espagne : le feu gagne du terrain, le poste de commandement évacué
  Le village de Cenicientos, où était installé le poste de commandement des pompiers mobilisés contre le gigantesque incendie dans l'ouest de Madrid, a dû être évacué. Comme l'explique notre correspond

• Incendie à Biscarrosse : plus de 5 000 personnes évacuées, le feu ravage 1 200 hectares
  Un violent incendie, déclenché jeudi après-midi par un véhicule près de Biscarrosse (Landes), a parcouru près de 1 200 hectares de forêt en quelques heures. Les flammes, attisées par des conditions f

• À Arcachon, face aux incendies, un ballet de vacanciers et d'évacués en quête d'une "respiration"
  Depuis mercredi, les incendies qui frappent la Gironde ont forcé l'évacuation de près de 170 000 personnes. Sur le front de mer d'Arcachon, à quelques kilomètres des feux, vacanciers et sinistrés se

• Tour de France : Carapaz vainqueur de l'étape reine, Seixas n'a pas réussi à renverser le podium
  Richard Carapaz (EF Education-EasyPost) est l'homme de la troisième semaine du Tour de France 2026. L'Équatorien a signé samedi à l'Alpe d'Huez (Isère) son deuxième succès en trois jours sur le Tou

• RDC : les ADF multiplient les attaques sur fond de progression d'Ebola
  Dans l'est de la République démocratique du Congo, une vingtaine de personnes ont été tuées lors d'une nouvelle attaque attribuée au groupe djihadiste ADF, selon la société civile. Affiliée au groupe

• Gironde : le point sur les incendies
  L'incendie historique qui ravage la Gironde a déjà détruit plus de 32 000 hectares et entraîné l'évacuation de 167 000 personnes, Le point sur la situation avec nos confrères de France 2.

• Cuba : manifestations nocturnes à La Havane face aux coupures d'électricité
  Plongée dans de fréquents black-outs de plus de 24 heures, La Havane est le théâtre de manifestations nocturnes répétées contre le délabrement des services publics et l'aggravation des pénuries d'eau

• Incendies en Gironde : Bordeaux accueille les évacués face à l'avancée des flammes
  Hors de contrôle, les incendies ravagent la Gironde et se rapprochent de Bordeaux, entraînant des dizaines de milliers d'évacuations qui se poursuivent sans relâche. Dans les gymnases bordelais trans

• Incendies en Gironde : un bombardier A400M déployé sur demande du Premier ministre
  Face à l'ampleur des incendies qui ravagent la Gironde, Matignon a annoncé le déploiement dès ce samedi d'un avion de transport militaire A400M, une décision prise à la demande du Premier ministre Sé


=== 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.


Response


Briefing livré et archivé dans revue_editoriale/sources/rss/2026-07-25.md