Media watch: who is covering Storm Charles
Kept by incident.media@web-summit.dinis for the incident team (WS-214), at Dinis Cruz's word of 10 November 2026, ~23:40 UTC: "a mapping for the social media, the media watch ... who are all the journalists, who is everybody covering". First read: 10 November, 23:45 UTC. Everything here is evidence (reported by others) or, where it ranks or compares, analysis; none of it is a fact about the storm. Not a warning service: follow IPMA and ANEPC.
What is here
| File | What it holds |
|---|---|
| coverage.json | Every article, live blog and video page we could read: outlet, URL, title, the publication time the page itself gives (UTC), the by-line as printed, when we read it, the sha256 of our capture. Then official (the official channels) and social (organisations' accounts; public conversation, counted) |
| outlets.json | Each outlet: counts, by-lines as printed, what it does best (derived from the counts) |
| ranking.md | Who was first on each of six keyed facts; who is most sourced; the wire underneath |
| facts.json, first-on-each-fact.json | The six facts (primary time, where it comes from, the pattern that matches an item) and the table as data |
| live-entries.json | The timed entries inside three live blogs (Jornal de Negócios, Diário de Notícias, RTP), for the six facts only |
| wikipedia.json | The Wikipedia pages on the storm (pt, en) and their edit history: revision times and sizes, no editors' names |
| feeds.json, seeds.txt | The public feeds and news sitemaps read; URLs that have scrolled out of a feed |
| tools/ | harvest.mjs, live.mjs, social.mjs, wikipedia.mjs, rank.mjs: no dependencies, re-runnable; this folder is built by them, not by hand |
The read so far, in short (11 November, 00:15 UTC)
- The press: 214 items from 16 outlets, published between 9 November 08:34 and 11 November 00:01 UTC. 88 carry Lusa's by-line, 45 a reporter's, 35 the outlet's desk; on 46 the by-line could not be read. Wire share: 52% of the items whose by-line we read are Lusa's (per outlet:
wire_sharein outlets.json). - Who was first, with the live blogs' entries timed (ranking.md): the live blogs lead on five of the six facts. Diário de Notícias' live blog had the red wind warning at 08:05 and the schools closing at 09:14; Jornal de Negócios' had the mayor's line at 13:19 and is the only report we found of the government's recommendation before the decision (17:53). On Day 2, ECO and TEK (articles, 19:41), Negócios (19:42), DN (19:45) and RTP (19:47) are within six minutes of each other, 33 to 38 minutes after the organisers' page.
- Nobody had the 21:23 change. IPMA moved Lisbon's red rain warning to 09:00 at 21:23 (its CAP message). By 00:15 UTC no article title and no live-blog entry we could read reported it. A title match can miss it inside a longer piece; it is still the one fact of the six where the press we read was behind the source by hours.
- Official accounts: Web Summit's Bluesky account last posted at 17:36 ("wrap on Day 1"): nothing there about Day 2 by 23:51. The decision is on its website (and by email) only, of the channels readable without a login. IPMA and ANEPC have no account we could find on Bluesky or Mastodon; their websites are the channels (see
official). - Social, readable without a login: on Bluesky, "depressão Charles" and "borrasca Charles" each fill the API's page of 100 posts since 9 November (59 and 70 accounts); "Storm Charles" 67 posts; "Web Summit" with "Charles" 18. On Mastodon the tags are small (4 to 8 posts each). VOST Portugal (a volunteers' association, not an authority) and Spain's AEMET are the organisations posting most about it; RTP Notícias has 7 videos on YouTube.
- Wikipedia: Portuguese has an article, Depressão Charles, created 10 November 13:07 UTC: 8 revisions, 17,395 bytes at 20:01. English has no article: Storm Charles is a redirect, made 10 November 22:46 UTC, to 2026–27 European windstorm season, which had 20 revisions on 9 and 10 November (82,184 bytes at 20:32). "Tempestade Charles" (pt) and "Borrasca Charles" (es) do not exist.
The rules this folder keeps
- People: a person appears only as a by-line printed on a public article, or not at all. A name and a count of items: no contact details, no profile, no account handles of individuals. Posts by individuals on social platforms are counted, never listed.
- Press text: titles only, as short excerpts with a link. No article text is kept. Our captures of the pages stay outside git; the file keeps each capture's sha256.
- Labels: every item is
evidence. A body's own channel is listed underofficialand becomes afactonly when read there (the researcher's and the conductor's job). - Reading politely: one request a second per run, a plain bot User-Agent, feeds and news sitemaps that each site lists for machines. Where a site answers 403 to a bot, we stop there. Wikipedia: its REST API, one request every 5 seconds.
Limits (read before quoting a number)
- Absent is not silent. SIC Notícias, Jornal de Notícias, TSF, Renascença, The Guardian and AP refused a bot (403) on feed and sitemap. They are covering the storm; they are not in the counts.
- Renascença runs a purpose-built tracker for the storm, rr.pt/tempestade-charles-avisos-e-ocorrencias (reported by incident.weatherwatch@; it answered 403 to our bot at 23:59 UTC on 10 November, so it is named here and not read).
- Weather sites and how each presents the storm are incident.weatherwatch@'s map (
research/weather-sites/sites.json, when it lands on dev); this folder covers the press and social channels and does not repeat it. - Expresso, The Portugal News and Bloomberg list their articles in a feed or sitemap but refuse the page: title and time are theirs, the by-line was not read.
- Three live blogs have their entries timed, for the six facts only (Jornal de Negócios, Diário de Notícias, RTP). Notícias ao Minuto's prints no time per entry; Observador had no live blog on the storm that we could find. Negócios prints a clock time only on the day itself (after midnight, the date), and DN's entry list is in its page data on some reads and not others: entry times come from our capture of 23:5x UTC on 10 November.
- The six tables match an article by its title. An article that reports a fact under another headline is missed.
- Feeds scroll. Items older than a feed's window at 23:45 UTC on 10 November are missing unless cited elsewhere in the incident.
- Correio da Manhã and Jornal de Negócios give a date without a time of day; those items are left out of the speed tables.
- X, Instagram, Facebook, LinkedIn, Threads and TikTok cannot be read without a login and are not here.
- "Most sourced" counts links to primary sources and kinds of by-line. It does not read the articles.
Run it
MEDIA_RAW=<a directory outside git> node research/media/tools/harvest.mjs
MEDIA_RAW=<the same> node research/media/tools/live.mjs
node research/media/tools/social.mjs
node research/media/tools/wikipedia.mjs
MEDIA_RAW=<the same> node research/media/tools/rank.mjs
A wrong time, a wrong or missing by-line, a missing article: contribute.