SPB Git forge

spb/websensor

Public
33commits 1branches 0releases
3.4 MBsize
maindefault branch
10 days agolast push
TypeScript 55.4% Python 43.2% SQL 1.2%
101.3 KB · 1,855 lines yaml
Raw Blame History
1# config/sources.d/46-transport-telecom-sports-news.yaml — 2026-09-112# Four blocks: (A) transportation regulators, carriers, rail/transit/shipping and automakers (recall APIs, TFRs,3# Federal Register dockets, official feeds); (B) telecom operators, vendors, regulators and trade press;4# (C) sports — OFFICIAL league/federation APIs, feeds and injury/transaction pages only (llm: false, tiers B/C);5# (D) news media — every media source carries first_party: false, llm: false (new sources), country + language,6# maxItems 40; the founding-file media sources are tagged here via extend (llm is already false there).7# Blocked / dead (checked 2026-09-11, not sensors): Reuters (feeds discontinued, reutersagency.com feed 404,8# reuters.com/rssFeed 401), AP News (403 on every RSS/sitemap path), USA Today (rssfeeds.usatoday.com now9# redirects to the HTML homepage), Chicago Tribune (403), Les Échos + Le Point (403 Datadome), Swissinfo (410/404),10# CTV News (all documented RSS ids 404, no <link rel=alternate>), Toronto Star (search RSS answers 429 to any11# non-trivial polling), Montreal Gazette / Hill Times / Noovo / Le Soleil12# (feed paths return the HTML shell), Kyodo english rss/*.xml (404 → the fzone feed is used instead),13# FCC (fcc.gov 403 Akamai → Federal Register docket used), CRTC (crtc.gc.ca 403 → Canada News Centre API used),14# Ofcom (ofcom.org.uk 403 → gov.uk atom used), ACMA (connection reset), Anatel (empty), América Movil (403),15# AT&T / T-Mobile / Telus / Vodafone / Ericsson (403), IODA (needs epoch from/until, no epoch placeholder),16# FCC ECFS (needs api key, filings have no title), USCG news RSS (Site id returns an Army clinic feed),17# TC recall API (recent → 400/500; year-range → TLS chain not verifiable by Node), MLB transactions (needs yyyy-MM-dd,18# placeholders are ISO datetimes), NBA injury-report PDFs (date-stamped file names), IOC / WADA / CAS / ATP /19# Hockey Canada / FIFA / UEFA / NFL RSS (blocked or client-rendered), Qantas / JAL / ANA / Singapore / Qatar /20# Air France-KLM / American / JetBlue / Toyota / Stellantis (403 or timeout), Maersk / CN / VIA / Heathrow /21# Schiphol / Lufthansa guessed RSS paths (404 — real feeds found are listed below).22sources:23  # ───────────────────────────── (A) TRANSPORTATION ─────────────────────────────24  - id: faa25    extend: true26    country: US27    sensors:28      - { name: temporary flight restrictions, url: "https://tfr.faa.gov/tfrapi/exportTfrList", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: "", keyField: notam_id, titleTemplate: "TFR {notam_id} [{type}] {description}", dateField: creation_date, compareFields: [type, description, facility, state], maxItems: 200 } }29      - { name: airworthiness & rules (Federal Register), url: "https://www.federalregister.gov/api/v1/documents.json?conditions[agencies][]=federal-aviation-administration&conditions[type][]=RULE&order=newest&per_page=50", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: results, keyField: document_number, titleField: title, urlField: html_url, summaryField: abstract, dateField: publication_date, compareFields: [], maxItems: 50 } }30      - { name: newsroom, url: "https://www.faa.gov/newsroom", type: HTML, connector: http, tier: B }31      - { name: airworthiness directives page, url: "https://www.faa.gov/regulations_policies/airworthiness_directives/", type: HTML, connector: http, tier: C }32  - id: ntsb33    extend: true34    country: US35    sensors:36      - { name: Federal Register documents, url: "https://www.federalregister.gov/api/v1/documents.json?conditions[agencies][]=national-transportation-safety-board&order=newest&per_page=50", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: document_number, titleField: title, urlField: html_url, summaryField: abstract, dateField: publication_date, compareFields: [], maxItems: 50 } }37  - id: tsb-canada38    extend: true39    country: CA40    notes: "2026-09-11: the news-release index answers 200 to a browser UA (the fetcher's 403 fallback)."41    sensors:42      - { name: news releases, url: "https://www.tsb.gc.ca/eng/medias-media/communiques/index.html", type: HTML, connector: http, tier: B }43  - id: transport-canada44    extend: true45    country: CA46    notes: "2026-09-11: data.tc.gc.ca recall API fails TLS verification under Node (incomplete chain) and the fr Canada News API ignores dept filters — both dropped."47    sensors:48      - { name: civil aviation safety alerts, url: "https://tc.canada.ca/en/aviation/reference-centre/civil-aviation-safety-alerts", type: HTML, connector: http, tier: C }49  - id: us-dot50    extend: true51    country: US52    notes: "2026-09-11: transportation.gov still 403 — the department's Federal Register dockets are used instead."53    sensors:54      - { name: DOT Federal Register documents, url: "https://www.federalregister.gov/api/v1/documents.json?conditions[agencies][]=transportation-department&order=newest&per_page=50", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: results, keyField: document_number, titleField: title, urlField: html_url, summaryField: abstract, dateField: publication_date, compareFields: [], maxItems: 50 } }55      - { name: FRA Federal Register documents, url: "https://www.federalregister.gov/api/v1/documents.json?conditions[agencies][]=federal-railroad-administration&order=newest&per_page=50", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: document_number, titleField: title, urlField: html_url, summaryField: abstract, dateField: publication_date, compareFields: [], maxItems: 50 } }56      - { name: FMCSA Federal Register documents, url: "https://www.federalregister.gov/api/v1/documents.json?conditions[agencies][]=federal-motor-carrier-safety-administration&order=newest&per_page=50", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: document_number, titleField: title, urlField: html_url, summaryField: abstract, dateField: publication_date, compareFields: [], maxItems: 50 } }57      - { name: PHMSA Federal Register documents, url: "https://www.federalregister.gov/api/v1/documents.json?conditions[agencies][]=pipeline-and-hazardous-materials-safety-administration&order=newest&per_page=50", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: document_number, titleField: title, urlField: html_url, summaryField: abstract, dateField: publication_date, compareFields: [], maxItems: 50 } }58  - id: tsa59    extend: true60    country: US61    sensors:62      - { name: Federal Register documents, url: "https://www.federalregister.gov/api/v1/documents.json?conditions[agencies][]=transportation-security-administration&order=newest&per_page=50", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: document_number, titleField: title, urlField: html_url, summaryField: abstract, dateField: publication_date, compareFields: [], maxItems: 50 } }63  - id: us-coast-guard64    name: United States Coast Guard65    domain: uscg.mil66    homepage: https://www.uscg.mil67    categories: [government, transport, logistics]68    tier: C69    country: US70    aliases: [uscg, coast guard]71    discover: { rss: false }72    notes: "news.uscg.mil RSS.ashx returns an unrelated Army clinic feed and the news pages answer 403 — Federal Register docket only."73    sensors:74      - { name: Federal Register documents, url: "https://www.federalregister.gov/api/v1/documents.json?conditions[agencies][]=coast-guard&order=newest&per_page=50", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: document_number, titleField: title, urlField: html_url, summaryField: abstract, dateField: publication_date, compareFields: [], maxItems: 50 } }75  - id: surface-transportation-board76    name: Surface Transportation Board77    domain: stb.gov78    categories: [government, transport, logistics]79    tier: C80    country: US81    aliases: [stb, surface transportation board]82    sensors:83      - { name: latest news, url: "https://www.stb.gov/feed/", type: RSS, connector: rss, tier: C }84      - { name: Federal Register documents, url: "https://www.federalregister.gov/api/v1/documents.json?conditions[agencies][]=surface-transportation-board&order=newest&per_page=50", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: document_number, titleField: title, urlField: html_url, summaryField: abstract, dateField: publication_date, compareFields: [], maxItems: 50 } }85  - id: federal-maritime-commission86    name: Federal Maritime Commission87    domain: fmc.gov88    categories: [government, logistics, transport]89    tier: C90    country: US91    aliases: [fmc]92    sensors:93      - { name: news feed, url: "https://www.fmc.gov/feed/", type: RSS, connector: rss, tier: C }94      - { name: Federal Register documents, url: "https://www.federalregister.gov/api/v1/documents.json?conditions[agencies][]=federal-maritime-commission&order=newest&per_page=50", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: document_number, titleField: title, urlField: html_url, summaryField: abstract, dateField: publication_date, compareFields: [], maxItems: 50 } }95  - id: aviation-weather-center96    name: NOAA Aviation Weather Center97    domain: aviationweather.gov98    categories: [aviation, weather, government]99    tier: A100    country: US101    aliases: [awc, aviation weather center]102    llm: false103    discover: { rss: false }104    sensors:105      - { name: US SIGMETs / AIRMETs, url: "https://aviationweather.gov/api/data/airsigmet?format=json", type: REST_API, connector: jsonlist, tier: A, config: { itemsPath: "", keyField: rawAirSigmet, titleTemplate: "{airSigmetType} {seriesId} — {hazard} ({icaoId})", dateField: creationTime, compareFields: [hazard, severity, validTimeTo], maxItems: 100, noConditional: true } }106  - id: easa107    extend: true108    country: EU109    sensors:110      - { name: news feed, url: "https://www.easa.europa.eu/en/newsroom-and-events/news/feed.xml", type: RSS, connector: rss, tier: B }111      - { name: press releases feed, url: "https://www.easa.europa.eu/en/newsroom-and-events/press-releases/feed.xml", type: RSS, connector: rss, tier: B }112  - id: icao113    extend: true114    country: INT115    notes: "2026-09-11: icao.int/Newsroom redirects to /news, a thin client-rendered list (confidence 0.3) — no new sensor."116  - id: iata117    extend: true118    country: INT119    sensors:120      - { name: press releases feed, url: "https://www.iata.org/api/rss/pressrelease", type: RSS, connector: rss, tier: B }121  - id: aci-na122    name: Airports Council International – North America123    domain: aci-na.org124    categories: [aviation, transport]125    tier: C126    country: US127    aliases: [aci-na, airports council international north america]128    sensors:129      - { name: news feed, url: "https://aci-na.org/feed/", type: RSS, connector: rss, tier: C }130  - id: lufthansa-group131    extend: true132    country: DE133    sensors:134      - { name: newsroom feed (en), url: "https://newsroom.lufthansagroup.com/feed/en", type: RSS, connector: rss, tier: B }135  - id: iag136    extend: true137    country: GB138    sensors:139      - { name: British Airways media centre, url: "https://mediacentre.britishairways.com/pressrelease", type: HTML, connector: http, tier: B }140  - id: emirates141    name: Emirates142    domain: emirates.com143    categories: [aviation, travel]144    tier: B145    country: AE146    aliases: [emirates airline, emirates group]147    sensors:148      - { name: media centre feed, url: "https://www.emirates.com/media-centre/feed/en-us", type: RSS, connector: rss, tier: B }149  - id: schiphol150    extend: true151    country: NL152    sensors:153      - { name: news feed, url: "https://news.schiphol.com/tagfeed/en/tags/news", type: RSS, connector: rss, tier: B }154  - id: groupe-adp155    extend: true156    country: FR157    language: fr158    sensors:159      - { name: communiqués de presse, url: "https://presse.groupeadp.fr/communiques", type: HTML, connector: http, tier: C }160  - id: network-rail161    name: Network Rail162    domain: networkrail.co.uk163    categories: [transport, infrastructure]164    tier: B165    country: GB166    aliases: [network rail]167    sensors:168      - { name: media centre feed, url: "https://www.networkrailmediacentre.co.uk/feed/rss", type: RSS, connector: rss, tier: B }169      - { name: media centre news, url: "https://www.networkrailmediacentre.co.uk/news", type: HTML, connector: http, tier: C }170  - id: eurostar171    extend: true172    country: FR173    sensors:174      - { name: media centre, url: "https://mediacentre.eurostar.com/", type: HTML, connector: http, tier: C }175  - id: cpkc176    extend: true177    country: CA178    notes: "2026-09-11: cpkcr.com/en/media/news-releases now answers 200 but the list is client-rendered (confidence 0.3) — no sensor."179  - id: stm180    extend: true181    country: CA182    language: fr183    notes: "2026-09-11: stm.info/fr/rss.xml serves HTML to the engine (content negotiation) — only the English feed is kept."184  - id: ttc185    extend: true186    country: CA187    notes: "2026-09-11: alerts.ttc.ca/api/alerts/live-alerts is the JSON behind the service-alerts page (routes, accessibility, siteWide)."188    sensors:189      - { name: live service alerts, url: "https://alerts.ttc.ca/api/alerts/live-alerts", type: REST_API, connector: jsonlist, tier: A, config: { itemsPath: routes, keyField: id, titleTemplate: "{route} {routeType}: {title}", summaryField: description, dateField: lastUpdated, compareFields: [title, description, alertType, severity, effect], maxItems: 100, noConditional: true } }190  - id: nhtsa191    extend: true192    country: US193    sensors:194      - { name: defect investigations (ODI), url: "https://api.nhtsa.gov/investigations?max=50&sort=openDate&order=desc", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: results, keyField: nhtsaId, titleTemplate: "{nhtsaId} [{investigationType}] {subject}", summaryField: description, dateField: openDate, compareFields: [status, latestActivityDate], maxItems: 50 } }195      - { name: Federal Register documents, url: "https://www.federalregister.gov/api/v1/documents.json?conditions[agencies][]=national-highway-traffic-safety-administration&order=newest&per_page=50", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: results, keyField: document_number, titleField: title, urlField: html_url, summaryField: abstract, dateField: publication_date, compareFields: [], maxItems: 50 } }196  - id: waymo197    extend: true198    country: US199    sensors:200      - { name: blog feed, url: "https://waymo.com/blog/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }201  - id: aurora202    name: Aurora Innovation203    domain: aurora.tech204    categories: [automotive, ai, logistics]205    tier: B206    country: US207    aliases: [aurora innovation, aurora driver]208    sensors:209      - { name: newsroom feed, url: "https://aurora.tech/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }210  - id: zoox211    name: Zoox212    domain: zoox.com213    categories: [automotive, ai]214    tier: C215    country: US216    aliases: [zoox]217    notes: "zoox.com/journal is client-rendered; the sitemap is the only machine-readable index."218    sensors:219      - { name: sitemap, url: "https://zoox.com/sitemap.xml", type: SITEMAP, connector: sitemap, tier: C, config: { maxUrls: 500 } }220  - id: uber221    extend: true222    country: US223    sensors:224      - { name: newsroom sitemap, url: "https://www.uber.com/newsroom/sitemap.xml", type: SITEMAP, connector: sitemap, tier: B, config: { maxUrls: 2000 } }225  - id: tesla226    extend: true227    country: US228    sensors:229      - { name: investor relations sitemap, url: "https://ir.tesla.com/sitemap.xml", type: SITEMAP, connector: sitemap, tier: C, config: { maxUrls: 2000 } }230  - id: bmw231    extend: true232    country: DE233    sensors:234      - { name: press club feed, url: "https://www.press.bmwgroup.com/global/rss", type: RSS, connector: rss, tier: B }235  - id: honda236    extend: true237    country: JP238    sensors:239      - { name: Honda News (US) feed, url: "https://hondanews.com/en-US/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }240  - id: hyundai241    extend: true242    country: KR243    sensors:244      - { name: worldwide newsroom, url: "https://www.hyundai.com/worldwide/en/newsroom", type: HTML, connector: http, tier: C }245  - id: mercedes-benz246    extend: true247    country: DE248    sensors:249      - { name: media releases, url: "https://media.mercedes-benz.com/releases", type: HTML, connector: http, tier: C }250  - id: flightglobal251    name: FlightGlobal252    domain: flightglobal.com253    categories: [aviation, media, news]254    tier: B255    country: GB256    language: en257    first_party: false258    llm: false259    aliases: [flightglobal, flight international]260    sensors:261      - { name: news feed, url: "https://www.flightglobal.com/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }262263  # ───────────────────────────── (B) TELECOM ─────────────────────────────264  - id: verizon265    extend: true266    country: US267    sensors:268      - { name: Inside Verizon feed, url: "https://www.verizon.com/about/news/inside-verizon-feed.xml", type: RSS, connector: rss, tier: B }269      - { name: noticias (es) feed, url: "https://www.verizon.com/about/rss/news/noticias-rssfeed.xml", type: RSS, connector: rss, tier: C }270  - id: comcast271    extend: true272    country: US273    notes: "2026-09-11: corporate.comcast.com/rss and the cmcsa.com IR feed answer 200 to a browser UA (fetcher fallback)."274    sensors:275      - { name: corporate newsroom feed, url: "https://corporate.comcast.com/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }276      - { name: investor news releases, url: "https://www.cmcsa.com/rss/news-releases.xml", type: RSS, connector: rss, tier: B }277  - id: huawei278    extend: true279    country: CN280    sensors:281      - { name: Huawei updates feed, url: "https://www.huawei.com/en/rss-feeds/huawei-updates/rss", type: RSS, connector: rss, tier: B }282      - { name: PSIRT feed, url: "https://www.huawei.com/en/rss-feeds/psirt/rss", type: RSS, connector: rss, tier: S }283  - id: samsung284    extend: true285    country: KR286    sensors:287      - { name: Samsung Canada newsroom, url: "https://news.samsung.com/ca/feed", type: RSS, connector: rss, tier: C }288  - id: nokia289    extend: true290    country: FI291    notes: "2026-09-11: press-release index answers 200 to a browser UA (fetcher 403 fallback)."292    sensors:293      - { name: press releases, url: "https://www.nokia.com/about-us/newsroom/press-releases/", type: HTML, connector: http, tier: B }294  - id: ericsson295    extend: true296    country: SE297    notes: "2026-09-11: ericsson.com still 403 — Cision's mirror of the press releases is used."298    sensors:299      - { name: press releases (Cision), url: "https://news.cision.com/ericsson", type: HTML, connector: http, tier: C }300  - id: telia301    extend: true302    country: SE303    sensors:304      - { name: press releases (Cision), url: "https://news.cision.com/telia-company", type: HTML, connector: http, tier: C }305  - id: arista306    extend: true307    country: US308    sensors:309      - { name: press releases, url: "https://www.arista.com/en/company/news/press-release", type: HTML, connector: http, tier: C }310  - id: deutsche-telekom311    extend: true312    country: DE313    sensors:314      - { name: media information, url: "https://www.telekom.com/en/media/media-information", type: HTML, connector: http, tier: C }315  - id: kpn316    extend: true317    country: NL318    sensors:319      - { name: newsroom, url: "https://www.overons.kpn/en/news", type: HTML, connector: http, tier: C }320  - id: softbank321    extend: true322    country: JP323    sensors:324      - { name: SoftBank Group press releases, url: "https://group.softbank/en/news/press", type: HTML, connector: http, tier: C }325  - id: proximus326    name: Proximus327    domain: proximus.com328    categories: [telecom]329    tier: C330    country: BE331    aliases: [proximus, belgacom]332    sensors:333      - { name: news, url: "https://www.proximus.com/en/news", type: HTML, connector: http, tier: C }334  - id: sk-telecom335    name: SK Telecom336    domain: sktelecom.com337    categories: [telecom]338    tier: B339    country: KR340    language: ko341    aliases: [sk telecom, skt]342    sensors:343      - { name: newsroom feed (en), url: "https://news.sktelecom.com/en/feed", type: RSS, connector: rss, tier: B }344      - { name: newsroom feed (ko), url: "https://news.sktelecom.com/feed", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }345  - id: cisco346    name: Cisco347    domain: cisco.com348    homepage: https://newsroom.cisco.com349    categories: [telecom, enterprise, infrastructure]350    tier: B351    weight: 1.2352    country: US353    aliases: [cisco systems]354    notes: "Security advisories live under cisco-security; this entity covers the corporate newsroom."355    sensors:356      - { name: newsroom press releases feed, url: "https://newsroom.cisco.com/c/services/i/servlets/newsroom/rssfeed.json?feed=press", type: RSS, connector: rss, tier: B }357  - id: tia358    name: Telecommunications Industry Association359    domain: tiaonline.org360    categories: [telecom, standards]361    tier: C362    country: US363    aliases: [tia, telecommunications industry association]364    sensors:365      - { name: news feed, url: "https://www.tiaonline.org/feed/", type: RSS, connector: rss, tier: C }366  - id: itu367    extend: true368    country: INT369    sensors:370      - { name: ITU News hub feed, url: "https://www.itu.int/hub/feed/", type: RSS, connector: rss, tier: B }371  - id: crtc372    name: Canadian Radio-television and Telecommunications Commission373    domain: crtc.gc.ca374    categories: [telecom, government]375    tier: B376    weight: 1.2377    country: CA378    aliases: [crtc, conseil de la radiodiffusion et des télécommunications canadiennes]379    discover: { rss: false }380    notes: "crtc.gc.ca answers 403 to non-browser clients; the Canada News Centre API carries its releases."381    sensors:382      - { name: news releases (en), url: "https://api.io.canada.ca/io-server/gc/news/en/v2?dept=canadianradiotelevisionandtelecommunicationscommission&sort=publishedDate&orderBy=desc&pick=50&format=atom&atomtitle=CRTC", type: ATOM, connector: rss, tier: B, config: { maxItems: 50 } }383      - { name: communiqués (fr), url: "https://api.io.canada.ca/io-server/gc/news/fr/v2?dept=canadianradiotelevisionandtelecommunicationscommission&sort=publishedDate&orderBy=desc&pick=50&format=atom&atomtitle=CRTC", type: ATOM, connector: rss, tier: B, config: { maxItems: 50 } }384  - id: ised385    extend: true386    country: CA387    sensors:388      - { name: spectrum management & telecommunications, url: "https://ised-isde.canada.ca/site/spectrum-management-telecommunications/en", type: HTML, connector: http, tier: C }389  - id: fcc390    name: Federal Communications Commission391    domain: fcc.gov392    categories: [telecom, government]393    tier: B394    weight: 1.3395    country: US396    aliases: [fcc]397    discover: { rss: false }398    notes: "fcc.gov (headlines, RSS, EDOCS) is Akamai-protected (403); the Federal Register docket is the machine-readable channel."399    sensors:400      - { name: Federal Register documents, url: "https://www.federalregister.gov/api/v1/documents.json?conditions[agencies][]=federal-communications-commission&order=newest&per_page=50", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: results, keyField: document_number, titleField: title, urlField: html_url, summaryField: abstract, dateField: publication_date, compareFields: [], maxItems: 50 } }401  - id: ntia402    name: National Telecommunications and Information Administration403    domain: ntia.gov404    categories: [telecom, government, internet]405    tier: B406    country: US407    aliases: [ntia]408    sensors:409      - { name: news feed, url: "https://www.ntia.gov/rss.xml", type: RSS, connector: rss, tier: B }410      - { name: Federal Register documents, url: "https://www.federalregister.gov/api/v1/documents.json?conditions[agencies][]=national-telecommunications-and-information-administration&order=newest&per_page=50", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: document_number, titleField: title, urlField: html_url, summaryField: abstract, dateField: publication_date, compareFields: [], maxItems: 50 } }411  - id: ofcom412    name: Ofcom413    domain: ofcom.org.uk414    categories: [telecom, government]415    tier: B416    country: GB417    aliases: [ofcom, office of communications]418    discover: { rss: false }419    notes: "ofcom.org.uk answers 403 to bots; gov.uk publishes the organisation's announcements."420    sensors:421      - { name: gov.uk announcements, url: "https://www.gov.uk/government/organisations/ofcom.atom", type: ATOM, connector: rss, tier: B }422  - id: arcep423    name: ARCEP424    domain: arcep.fr425    categories: [telecom, government]426    tier: B427    country: FR428    language: fr429    aliases: [arcep, autorité de régulation des communications électroniques]430    sensors:431      - { name: communiqués de presse, url: "https://www.arcep.fr/actualites/les-communiques-de-presse.html", type: HTML, connector: http, tier: B }432      - { name: actualités, url: "https://www.arcep.fr/actualites.html", type: HTML, connector: http, tier: C }433  - id: bundesnetzagentur434    extend: true435    country: DE436    language: de437    sensors:438      - { name: Pressemitteilungen feed, url: "https://www.bundesnetzagentur.de/SiteGlobals/Functions/RSSFeed/DE/RSSNewsfeed/RSSNewsfeed_Pressemitteilungen.xml", type: RSS, connector: rss, tier: B }439  - id: comreg440    name: ComReg441    domain: comreg.ie442    categories: [telecom, government]443    tier: C444    country: IE445    aliases: [comreg, commission for communications regulation]446    sensors:447      - { name: news feed, url: "https://www.comreg.ie/rss", type: RSS, connector: rss, tier: C }448  - id: cnmc449    name: CNMC450    domain: cnmc.es451    categories: [telecom, government]452    tier: C453    country: ES454    language: es455    aliases: [cnmc, comisión nacional de los mercados y la competencia]456    sensors:457      - { name: news feed, url: "https://www.cnmc.es/rss.xml", type: RSS, connector: rss, tier: C }458  - id: trai459    name: Telecom Regulatory Authority of India460    domain: trai.gov.in461    categories: [telecom, government]462    tier: C463    country: IN464    aliases: [trai]465    sensors:466      - { name: news feed, url: "https://www.trai.gov.in/rss.xml", type: RSS, connector: rss, tier: C }467  - id: light-reading468    name: Light Reading469    domain: lightreading.com470    categories: [telecom, media, news]471    tier: B472    country: US473    language: en474    first_party: false475    llm: false476    aliases: [light reading]477    sensors:478      - { name: news feed, url: "https://www.lightreading.com/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }479  - id: fierce-network480    name: Fierce Network481    domain: fierce-network.com482    categories: [telecom, media, news]483    tier: B484    country: US485    language: en486    first_party: false487    llm: false488    aliases: [fierce network, fierce wireless, fierce telecom]489    sensors:490      - { name: news feed, url: "https://www.fierce-network.com/rss/xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }491  - id: mobile-world-live492    name: Mobile World Live493    domain: mobileworldlive.com494    categories: [telecom, media, news]495    tier: B496    country: GB497    language: en498    first_party: false499    llm: false500    aliases: [mobile world live]501    sensors:502      - { name: news feed, url: "https://www.mobileworldlive.com/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }503  - id: rcr-wireless504    name: RCR Wireless News505    domain: rcrwireless.com506    categories: [telecom, media, news]507    tier: C508    country: US509    language: en510    first_party: false511    llm: false512    aliases: [rcr wireless]513    sensors:514      - { name: news feed, url: "https://www.rcrwireless.com/feed", type: RSS, connector: rss, tier: C, config: { maxItems: 40 } }515  - id: telecoms-com516    name: Telecoms.com517    domain: telecoms.com518    categories: [telecom, media, news]519    tier: C520    country: GB521    language: en522    first_party: false523    llm: false524    aliases: [telecoms.com]525    sensors:526      - { name: news feed, url: "https://www.telecoms.com/rss.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 40 } }527  - id: cartt528    name: Cartt.ca529    domain: cartt.ca530    categories: [telecom, media, news]531    tier: C532    country: CA533    language: en534    first_party: false535    llm: false536    aliases: [cartt]537    sensors:538      - { name: news feed, url: "https://www.cartt.ca/feed/", type: RSS, connector: rss, tier: C, config: { maxItems: 40 } }539  - id: mobilesyrup540    name: MobileSyrup541    domain: mobilesyrup.com542    categories: [telecom, consumer-tech, media, news]543    tier: C544    country: CA545    language: en546    first_party: false547    llm: false548    aliases: [mobilesyrup]549    sensors:550      - { name: news feed, url: "https://mobilesyrup.com/feed/", type: RSS, connector: rss, tier: C, config: { maxItems: 40 } }551552  # ───────────────────────────── (C) SPORTS — official channels only ─────────────────────────────553  - id: nhl554    extend: true555    country: US556    notes: "2026-09-11: api-web.nhle.com (307 → dated schedule) and the Forge content API are the NHL's own JSON endpoints."557    sensors:558      - { name: schedule (current week), url: "https://api-web.nhle.com/v1/schedule/now", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: "gameWeek[0].games", keyField: id, titleTemplate: "{awayTeam.abbrev} @ {homeTeam.abbrev} — {gameState}", dateField: startTimeUTC, compareFields: [gameState, gameScheduleState, startTimeUTC, awayTeam.score, homeTeam.score], maxItems: 60, noConditional: true } }559      - { name: transactions (official), url: "https://forge-dapi.d3.nhle.com/v2/content/en-us/stories?tags.slug=transactions&$limit=25", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: items, keyField: _entityId, titleField: headline, urlTemplate: "https://www.nhl.com/news/{slug}", summaryField: summary, dateField: contentDate, compareFields: [headline], maxItems: 25 } }560      - { name: news stories (official), url: "https://forge-dapi.d3.nhle.com/v2/content/en-us/stories?tags.slug=news&$limit=25", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: items, keyField: _entityId, titleField: headline, urlTemplate: "https://www.nhl.com/news/{slug}", summaryField: summary, dateField: contentDate, compareFields: [headline], maxItems: 25 } }561      - { name: standings, url: "https://api-web.nhle.com/v1/standings/now", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: standings, keyField: teamAbbrev.default, titleTemplate: "{teamName.default}: {wins}-{losses}-{otLosses}, {points} pts", compareFields: [wins, losses, otLosses, points, clinchIndicator], maxItems: 32, noConditional: true } }562  - id: montreal-canadiens563    extend: true564    country: CA565    sensors:566      - { name: team stories (official API), url: "https://forge-dapi.d3.nhle.com/v2/content/en-us/stories?tags.slug=teamid-8&$limit=20", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: items, keyField: _entityId, titleField: headline, urlTemplate: "https://www.nhl.com/canadiens/news/{slug}", summaryField: summary, dateField: contentDate, compareFields: [headline], maxItems: 20 } }567      - { name: roster, url: "https://api-web.nhle.com/v1/roster/MTL/current", type: JSON, connector: http, tier: C }568  - id: toronto-maple-leafs569    extend: true570    country: CA571    sensors:572      - { name: team stories (official API), url: "https://forge-dapi.d3.nhle.com/v2/content/en-us/stories?tags.slug=teamid-10&$limit=20", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: items, keyField: _entityId, titleField: headline, urlTemplate: "https://www.nhl.com/mapleleafs/news/{slug}", summaryField: summary, dateField: contentDate, compareFields: [headline], maxItems: 20 } }573      - { name: roster, url: "https://api-web.nhle.com/v1/roster/TOR/current", type: JSON, connector: http, tier: C }574  - id: ottawa-senators575    extend: true576    country: CA577    sensors:578      - { name: team stories (official API), url: "https://forge-dapi.d3.nhle.com/v2/content/en-us/stories?tags.slug=teamid-9&$limit=20", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: items, keyField: _entityId, titleField: headline, urlTemplate: "https://www.nhl.com/senators/news/{slug}", summaryField: summary, dateField: contentDate, compareFields: [headline], maxItems: 20 } }579      - { name: roster, url: "https://api-web.nhle.com/v1/roster/OTT/current", type: JSON, connector: http, tier: C }580  - id: vancouver-canucks581    extend: true582    country: CA583    sensors:584      - { name: team stories (official API), url: "https://forge-dapi.d3.nhle.com/v2/content/en-us/stories?tags.slug=teamid-23&$limit=20", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: items, keyField: _entityId, titleField: headline, urlTemplate: "https://www.nhl.com/canucks/news/{slug}", summaryField: summary, dateField: contentDate, compareFields: [headline], maxItems: 20 } }585      - { name: roster, url: "https://api-web.nhle.com/v1/roster/VAN/current", type: JSON, connector: http, tier: C }586  - id: edmonton-oilers587    extend: true588    country: CA589    sensors:590      - { name: team stories (official API), url: "https://forge-dapi.d3.nhle.com/v2/content/en-us/stories?tags.slug=teamid-22&$limit=20", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: items, keyField: _entityId, titleField: headline, urlTemplate: "https://www.nhl.com/oilers/news/{slug}", summaryField: summary, dateField: contentDate, compareFields: [headline], maxItems: 20 } }591      - { name: roster, url: "https://api-web.nhle.com/v1/roster/EDM/current", type: JSON, connector: http, tier: C }592  - id: calgary-flames593    extend: true594    country: CA595    sensors:596      - { name: team stories (official API), url: "https://forge-dapi.d3.nhle.com/v2/content/en-us/stories?tags.slug=teamid-20&$limit=20", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: items, keyField: _entityId, titleField: headline, urlTemplate: "https://www.nhl.com/flames/news/{slug}", summaryField: summary, dateField: contentDate, compareFields: [headline], maxItems: 20 } }597      - { name: roster, url: "https://api-web.nhle.com/v1/roster/CGY/current", type: JSON, connector: http, tier: C }598  - id: winnipeg-jets599    extend: true600    country: CA601    sensors:602      - { name: team stories (official API), url: "https://forge-dapi.d3.nhle.com/v2/content/en-us/stories?tags.slug=teamid-52&$limit=20", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: items, keyField: _entityId, titleField: headline, urlTemplate: "https://www.nhl.com/jets/news/{slug}", summaryField: summary, dateField: contentDate, compareFields: [headline], maxItems: 20 } }603      - { name: roster, url: "https://api-web.nhle.com/v1/roster/WPG/current", type: JSON, connector: http, tier: C }604  - id: nba605    extend: true606    country: US607    notes: "2026-09-11: content-api-prod.nba.com is the JSON behind nba.com/news (browser UA); official.nba.com / pr.nba.com are league-run WordPress sites with feeds. The injury-report index URL is season-specific."608    sensors:609      - { name: news (content API), url: "https://content-api-prod.nba.com/public/1/content/news?limit=25", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: results.items, keyField: id, titleField: title, urlField: permalink, summaryField: excerpt, dateField: date, compareFields: [title], maxItems: 25 } }610      - { name: NBA Communications (pr.nba.com) feed, url: "https://pr.nba.com/feed/", type: RSS, connector: rss, tier: B }611      - { name: NBA Official (referees, rules) feed, url: "https://official.nba.com/feed/", type: RSS, connector: rss, tier: C }612      - { name: injury report index 2025-26, url: "https://official.nba.com/nba-injury-report-2025-26-season/", type: HTML, connector: http, tier: B }613  - id: mlb614    extend: true615    country: US616    notes: "2026-09-11: statsapi.mlb.com is MLB's own Stats API; /transactions needs yyyy-MM-dd dates (no matching URL placeholder) so free agents + schedule are used."617    sensors:618      - { name: schedule (today), url: "https://statsapi.mlb.com/api/v1/schedule?sportId=1", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: "dates[0].games", keyField: gamePk, titleTemplate: "{teams.away.team.name} @ {teams.home.team.name} — {status.detailedState}", dateField: gameDate, compareFields: [status.detailedState, teams.away.score, teams.home.score, gameDate], maxItems: 30, noConditional: true } }619      - { name: free agents (season), url: "https://statsapi.mlb.com/api/v1/people/freeAgents?season=2026", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: freeAgents, keyField: player.id, titleTemplate: "{player.fullName}: {originalTeam.name} → {newTeam.name}", summaryField: notes, dateField: dateSigned, compareFields: [newTeam.name, dateSigned], maxItems: 100 } }620      - { name: postseason schedule, url: "https://statsapi.mlb.com/api/v1/schedule/postseason", type: JSON, connector: http, tier: C }621  - id: nfl622    extend: true623    country: US624    notes: "2026-09-11: nfl.com/injuries is server-rendered (statuses present in HTML); nfl.com/transactions is client-rendered."625    sensors:626      - { name: injury reports (current week), url: "https://www.nfl.com/injuries/", type: HTML, connector: http, tier: B }627  - id: fia628    extend: true629    country: FR630    sensors:631      - { name: press releases feed, url: "https://www.fia.com/rss/press-release", type: RSS, connector: rss, tier: B }632  - id: formula-1633    extend: true634    country: GB635    sensors:636      - { name: latest news feed, url: "https://www.formula1.com/content/fom-website/en/latest/all.xml", type: RSS, connector: rss, tier: B }637  - id: iihf638    extend: true639    country: CH640    sensors:641      - { name: news feed, url: "https://www.iihf.com/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }642  - id: wbsc643    extend: true644    country: CH645    sensors:646      - { name: news, url: "https://www.wbsc.org/en/news", type: HTML, connector: http, tier: C }647  - id: premier-league648    extend: true649    country: GB650    notes: "2026-09-11: premierleague.com/en/news answers 200 but the canonical text is 60 chars (client-rendered) — still no sensor."651  - id: canadian-grand-prix652    extend: true653    country: CA654    notes: "2026-09-11: gpcanada.ca/en/news is a client-rendered shell (7 chars of text) — sitemap only."655  - id: fivb656    name: FIVB657    domain: fivb.com658    categories: [sports]659    tier: C660    country: INT661    llm: false662    aliases: [fivb, international volleyball federation]663    sensors:664      - { name: news feed, url: "https://www.fivb.com/rss", type: RSS, connector: rss, tier: C }665  - id: fisu666    name: FISU667    domain: fisu.net668    categories: [sports, education]669    tier: C670    country: INT671    llm: false672    aliases: [fisu, international university sports federation]673    sensors:674      - { name: news feed, url: "https://www.fisu.net/feed", type: RSS, connector: rss, tier: C }675  - id: espn676    extend: true677    first_party: false678    country: US679    language: en680    sensors:681      - { name: NFL news feed, url: "https://www.espn.com/espn/rss/nfl/news", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }682      - { name: NBA news feed, url: "https://www.espn.com/espn/rss/nba/news", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }683      - { name: MLB news feed, url: "https://www.espn.com/espn/rss/mlb/news", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }684      - { name: soccer news feed, url: "https://www.espn.com/espn/rss/soccer/news", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }685686  # ───────────────────────────── (D) NEWS MEDIA — first_party: false ─────────────────────────────687  # D.1 Tagging + section feeds for the founding-file media sources (llm already false there).688  - id: bbc-news689    extend: true690    first_party: false691    country: GB692    language: en693    sensors:694      - { name: business feed, url: "https://feeds.bbci.co.uk/news/business/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }695      - { name: science & environment feed, url: "https://feeds.bbci.co.uk/news/science_and_environment/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }696      - { name: politics feed, url: "https://feeds.bbci.co.uk/news/politics/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }697      - { name: US & Canada feed, url: "https://feeds.bbci.co.uk/news/world/us_and_canada/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }698  - id: nytimes699    extend: true700    first_party: false701    country: US702    language: en703    sensors:704      - { name: world feed, url: "https://rss.nytimes.com/services/xml/rss/nyt/World.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }705      - { name: politics feed, url: "https://rss.nytimes.com/services/xml/rss/nyt/Politics.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }706      - { name: science feed, url: "https://rss.nytimes.com/services/xml/rss/nyt/Science.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }707      - { name: health feed, url: "https://rss.nytimes.com/services/xml/rss/nyt/Health.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }708  - id: the-guardian709    extend: true710    first_party: false711    country: GB712    language: en713    sensors:714      - { name: science feed, url: "https://www.theguardian.com/science/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }715      - { name: environment feed, url: "https://www.theguardian.com/environment/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }716      - { name: US news feed, url: "https://www.theguardian.com/us-news/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }717      - { name: Canada feed, url: "https://www.theguardian.com/world/canada/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }718  - id: cnbc719    extend: true720    first_party: false721    country: US722    language: en723    sensors:724      - { name: technology feed, url: "https://www.cnbc.com/id/19854910/device/rss/rss.html", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }725      - { name: business feed, url: "https://www.cnbc.com/id/10001147/device/rss/rss.html", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }726      - { name: economy feed, url: "https://www.cnbc.com/id/20910258/device/rss/rss.html", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }727      - { name: finance feed, url: "https://www.cnbc.com/id/10000664/device/rss/rss.html", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }728  - id: cnn729    extend: true730    first_party: false731    country: US732    language: en733    sensors:734      - { name: top stories feed, url: "http://rss.cnn.com/rss/cnn_topstories.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }735      - { name: world feed, url: "http://rss.cnn.com/rss/cnn_world.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }736      - { name: technology feed, url: "http://rss.cnn.com/rss/cnn_tech.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }737      - { name: politics feed, url: "http://rss.cnn.com/rss/cnn_allpolitics.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }738  - id: al-jazeera739    extend: true740    first_party: false741    country: QA742    language: en743  - id: france24744    extend: true745    first_party: false746    country: FR747    language: en748    sensors:749      - { name: fil français, url: "https://www.france24.com/fr/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }750      - { name: business feed, url: "https://www.france24.com/en/business/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }751      - { name: Americas feed, url: "https://www.france24.com/en/americas/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }752      - { name: Europe feed, url: "https://www.france24.com/en/europe/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }753  - id: le-monde754    extend: true755    first_party: false756    country: FR757    language: fr758    sensors:759      - { name: économie, url: "https://www.lemonde.fr/economie/rss_full.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }760      - { name: international, url: "https://www.lemonde.fr/international/rss_full.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }761      - { name: pixels (tech), url: "https://www.lemonde.fr/pixels/rss_full.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }762      - { name: Le Monde in English, url: "https://www.lemonde.fr/en/rss/une.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }763  - id: le-figaro764    extend: true765    first_party: false766    country: FR767    language: fr768    sensors:769      - { name: économie, url: "https://www.lefigaro.fr/rss/figaro_economie.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }770      - { name: international, url: "https://www.lefigaro.fr/rss/figaro_international.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }771      - { name: politique, url: "https://www.lefigaro.fr/rss/figaro_politique.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }772      - { name: high-tech, url: "https://www.lefigaro.fr/rss/figaro_high-tech.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }773  - id: radio-canada774    extend: true775    first_party: false776    country: CA777    language: fr778    sensors:779      - { name: info en continu, url: "https://ici.radio-canada.ca/rss/1000524", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }780      - { name: international, url: "https://ici.radio-canada.ca/rss/96", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }781      - { name: politique, url: "https://ici.radio-canada.ca/rss/4175", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }782  - id: cbc783    extend: true784    first_party: false785    country: CA786    language: en787    sensors:788      - { name: business feed, url: "https://www.cbc.ca/webfeed/rss/rss-business", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }789      - { name: politics feed, url: "https://www.cbc.ca/webfeed/rss/rss-politics", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }790      - { name: world feed, url: "https://www.cbc.ca/webfeed/rss/rss-world", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }791      - { name: technology feed, url: "https://www.cbc.ca/webfeed/rss/rss-technology", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }792  - id: la-presse793    extend: true794    first_party: false795    country: CA796    language: fr797    sensors:798      - { name: affaires, url: "https://www.lapresse.ca/affaires/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }799      - { name: international, url: "https://www.lapresse.ca/international/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }800      - { name: politique, url: "https://www.lapresse.ca/actualites/politique/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }801      - { name: techno, url: "https://www.lapresse.ca/affaires/techno/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }802  - id: le-devoir803    extend: true804    first_party: false805    country: CA806    language: fr807    sensors:808      - { name: économie, url: "https://www.ledevoir.com/rss/section/economie.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }809      - { name: politique, url: "https://www.ledevoir.com/rss/section/politique.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }810      - { name: monde, url: "https://www.ledevoir.com/rss/section/monde.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }811  - id: journal-de-montreal812    extend: true813    first_party: false814    country: CA815    language: fr816    sensors:817      - { name: actualité, url: "https://www.journaldemontreal.com/actualite/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }818      - { name: argent, url: "https://www.journaldemontreal.com/argent/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }819      - { name: monde, url: "https://www.journaldemontreal.com/monde/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }820  - id: tva-nouvelles821    extend: true822    first_party: false823    country: CA824    language: fr825    sensors:826      - { name: argent, url: "https://www.tvanouvelles.ca/argent/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }827  - id: 24-heures828    extend: true829    first_party: false830    country: CA831    language: fr832  - id: globe-and-mail833    extend: true834    first_party: false835    country: CA836    language: en837    sensors:838      - { name: politics feed, url: "https://www.theglobeandmail.com/arc/outboundfeeds/rss/category/politics/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }839      - { name: world feed, url: "https://www.theglobeandmail.com/arc/outboundfeeds/rss/category/world/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }840      - { name: investing feed, url: "https://www.theglobeandmail.com/arc/outboundfeeds/rss/category/investing/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }841      - { name: economy feed, url: "https://www.theglobeandmail.com/arc/outboundfeeds/rss/category/business/economy/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }842  - id: national-post843    extend: true844    first_party: false845    country: CA846    language: en847    sensors:848      - { name: politics feed, url: "https://nationalpost.com/category/news/politics/feed", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }849      - { name: world feed, url: "https://nationalpost.com/category/news/world/feed", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }850  - id: global-news851    extend: true852    first_party: false853    country: CA854    language: en855    sensors:856      - { name: politics feed, url: "https://globalnews.ca/politics/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }857      - { name: money feed, url: "https://globalnews.ca/money/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }858      - { name: Canada feed, url: "https://globalnews.ca/canada/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }859      - { name: Montreal feed, url: "https://globalnews.ca/montreal/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }860  - id: the-logic861    extend: true862    first_party: false863    country: CA864    language: en865  - id: wsj866    extend: true867    first_party: false868    country: US869    language: en870    sensors:871      - { name: US business feed, url: "https://feeds.a.dj.com/rss/WSJcomUSBusiness.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }872      - { name: technology (WSJD) feed, url: "https://feeds.a.dj.com/rss/RSSWSJD.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }873  - id: financial-times874    extend: true875    first_party: false876    country: GB877    language: en878    sensors:879      - { name: home feed, url: "https://www.ft.com/rss/home", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }880      - { name: technology feed, url: "https://www.ft.com/technology?format=rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }881      - { name: companies feed, url: "https://www.ft.com/companies?format=rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }882      - { name: markets feed, url: "https://www.ft.com/markets?format=rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }883  - id: the-economist884    extend: true885    first_party: false886    country: GB887    language: en888    sensors:889      - { name: finance & economics feed, url: "https://www.economist.com/finance-and-economics/rss.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 40 } }890      - { name: business feed, url: "https://www.economist.com/business/rss.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 40 } }891      - { name: science & technology feed, url: "https://www.economist.com/science-and-technology/rss.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 40 } }892  - id: axios893    extend: true894    first_party: false895    country: US896    language: en897  - id: npr898    extend: true899    first_party: false900    country: US901    language: en902    sensors:903      - { name: world feed, url: "https://feeds.npr.org/1004/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }904      - { name: politics feed, url: "https://feeds.npr.org/1014/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }905      - { name: business feed, url: "https://feeds.npr.org/1006/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }906      - { name: technology feed, url: "https://feeds.npr.org/1019/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }907  - id: washington-post908    extend: true909    first_party: false910    country: US911    language: en912    sensors:913      - { name: technology feed, url: "https://feeds.washingtonpost.com/rss/business/technology", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }914      - { name: business feed, url: "https://feeds.washingtonpost.com/rss/business", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }915      - { name: national feed, url: "https://feeds.washingtonpost.com/rss/national", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }916  - id: scmp917    extend: true918    first_party: false919    country: HK920    language: en921    sensors:922      - { name: China feed, url: "https://www.scmp.com/rss/4/feed", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }923      - { name: business feed, url: "https://www.scmp.com/rss/92/feed", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }924      - { name: tech feed, url: "https://www.scmp.com/rss/36/feed", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }925      - { name: world feed, url: "https://www.scmp.com/rss/3/feed", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }926  - id: dw927    extend: true928    first_party: false929    country: DE930    language: en931    sensors:932      - { name: business feed, url: "https://rss.dw.com/rdf/rss-en-bus", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }933      - { name: Europe feed, url: "https://rss.dw.com/rdf/rss-en-eu", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }934      - { name: Top-Themen (de), url: "https://rss.dw.com/xml/rss-de-top", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }935  - id: euronews936    extend: true937    first_party: false938    country: FR939    language: en940    sensors:941      - { name: business feed, url: "https://www.euronews.com/rss?level=vertical&name=business", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }942      - { name: my Europe feed, url: "https://www.euronews.com/rss?level=vertical&name=my-europe", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }943      - { name: next (tech) feed, url: "https://www.euronews.com/rss?level=vertical&name=next", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }944      - { name: fil français, url: "https://fr.euronews.com/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }945  - id: der-spiegel946    extend: true947    first_party: false948    country: DE949    language: de950    sensors:951      - { name: Schlagzeilen, url: "https://www.spiegel.de/schlagzeilen/index.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }952      - { name: Politik, url: "https://www.spiegel.de/politik/index.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }953      - { name: Wirtschaft, url: "https://www.spiegel.de/wirtschaft/index.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }954      - { name: Netzwelt, url: "https://www.spiegel.de/netzwelt/index.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }955  - id: el-pais956    extend: true957    first_party: false958    country: ES959    language: es960    sensors:961      - { name: economía, url: "https://feeds.elpais.com/mrss-s/pages/ep/site/elpais.com/section/economia/portada", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }962      - { name: internacional, url: "https://feeds.elpais.com/mrss-s/pages/ep/site/elpais.com/section/internacional/portada", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }963      - { name: tecnología, url: "https://feeds.elpais.com/mrss-s/pages/ep/site/elpais.com/section/tecnologia/portada", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }964      - { name: English edition, url: "https://feeds.elpais.com/mrss-s/pages/ep/site/english.elpais.com/portada", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }965  - id: semafor966    extend: true967    first_party: false968    country: US969    language: en970  - id: google-news971    extend: true972    first_party: false973    country: US974    language: en975    sensors:976      - { name: Canada top stories (en), url: "https://news.google.com/rss?hl=en-CA&gl=CA&ceid=CA:en", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }977      - { name: technology (US), url: "https://news.google.com/rss/headlines/section/topic/TECHNOLOGY?hl=en-US&gl=US&ceid=US:en", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }978      - { name: business (US), url: "https://news.google.com/rss/headlines/section/topic/BUSINESS?hl=en-US&gl=US&ceid=US:en", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }979  - id: techcrunch980    extend: true981    first_party: false982    country: US983    language: en984    sensors:985      - { name: AI feed, url: "https://techcrunch.com/category/artificial-intelligence/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }986      - { name: startups feed, url: "https://techcrunch.com/category/startups/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }987      - { name: security feed, url: "https://techcrunch.com/category/security/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }988      - { name: transportation feed, url: "https://techcrunch.com/category/transportation/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }989  - id: the-verge990    extend: true991    first_party: false992    country: US993    language: en994    sensors:995      - { name: AI feed, url: "https://www.theverge.com/rss/ai-artificial-intelligence/index.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }996      - { name: policy feed, url: "https://www.theverge.com/rss/policy/index.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }997      - { name: tech feed, url: "https://www.theverge.com/rss/tech/index.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }998      - { name: transportation feed, url: "https://www.theverge.com/rss/transportation/index.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }999  - id: ars-technica1000    extend: true1001    first_party: false1002    country: US1003    language: en1004    sensors:1005      - { name: tech policy feed, url: "https://feeds.arstechnica.com/arstechnica/tech-policy", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1006      - { name: science feed, url: "https://feeds.arstechnica.com/arstechnica/science", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1007      - { name: cars feed, url: "https://feeds.arstechnica.com/arstechnica/cars", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1008      - { name: gadgets feed, url: "https://feeds.arstechnica.com/arstechnica/gadgets", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1009  - id: wired1010    extend: true1011    first_party: false1012    country: US1013    language: en1014    sensors:1015      - { name: business feed, url: "https://www.wired.com/feed/category/business/latest/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1016      - { name: security feed, url: "https://www.wired.com/feed/category/security/latest/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1017      - { name: science feed, url: "https://www.wired.com/feed/category/science/latest/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1018      - { name: AI tag feed, url: "https://www.wired.com/feed/tag/ai/latest/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1019  - id: hacker-news1020    extend: true1021    first_party: false1022    country: US1023    language: en1024    sensors:1025      - { name: best stories, url: "https://hnrss.org/best", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1026      - { name: Show HN, url: "https://hnrss.org/show", type: RSS, connector: rss, tier: C, config: { maxItems: 40 } }1027  - id: the-register1028    extend: true1029    first_party: false1030    country: GB1031    language: en1032    sensors:1033      - { name: security feed, url: "https://www.theregister.com/security/headlines.atom", type: ATOM, connector: rss, tier: B, config: { maxItems: 40 } }1034      - { name: AI/ML feed, url: "https://www.theregister.com/software/ai_ml/headlines.atom", type: ATOM, connector: rss, tier: B, config: { maxItems: 40 } }1035      - { name: networks feed, url: "https://www.theregister.com/on_prem/networks/headlines.atom", type: ATOM, connector: rss, tier: B, config: { maxItems: 40 } }1036  - id: mit-technology-review1037    extend: true1038    first_party: false1039    country: US1040    language: en1041    sensors:1042      - { name: AI feed, url: "https://www.technologyreview.com/topic/artificial-intelligence/feed", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1043      - { name: computing feed, url: "https://www.technologyreview.com/topic/computing/feed", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1044      - { name: climate feed, url: "https://www.technologyreview.com/topic/climate-change/feed", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1045  - id: globo1046    extend: true1047    first_party: false1048    country: BR1049    language: pt1050    sensors:1051      - { name: g1 economia, url: "https://g1.globo.com/rss/g1/economia/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1052      - { name: g1 política, url: "https://g1.globo.com/rss/g1/politica/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1053      - { name: g1 mundo, url: "https://g1.globo.com/rss/g1/mundo/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }10541055  # D.2 New media sources — Canada1056  - id: bnn-bloomberg1057    name: BNN Bloomberg1058    domain: bnnbloomberg.ca1059    categories: [news, media, finance]1060    tier: B1061    country: CA1062    language: en1063    first_party: false1064    llm: false1065    aliases: [bnn bloomberg, bnn]1066    sensors:1067      - { name: news feed, url: "https://www.bnnbloomberg.ca/arc/outboundfeeds/rss/?outputType=xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1068  - id: financial-post1069    name: Financial Post1070    domain: financialpost.com1071    categories: [news, media, finance]1072    tier: B1073    country: CA1074    language: en1075    first_party: false1076    llm: false1077    aliases: [financial post, fp]1078    sensors:1079      - { name: news feed, url: "https://financialpost.com/feed", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1080      - { name: technology feed, url: "https://financialpost.com/category/technology/feed", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1081      - { name: economy feed, url: "https://financialpost.com/category/news/economy/feed", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1082      - { name: real estate feed, url: "https://financialpost.com/category/real-estate/feed", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1083  - id: ipolitics1084    name: iPolitics1085    domain: ipolitics.ca1086    categories: [news, media, politics]1087    tier: B1088    country: CA1089    language: en1090    first_party: false1091    llm: false1092    aliases: [ipolitics]1093    sensors:1094      - { name: news feed, url: "https://www.ipolitics.ca/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1095  - id: journal-de-quebec1096    name: Le Journal de Québec1097    domain: journaldequebec.com1098    categories: [news, media]1099    tier: B1100    country: CA1101    language: fr1102    first_party: false1103    llm: false1104    aliases: [journal de québec, jdq]1105    sensors:1106      - { name: fil principal, url: "https://www.journaldequebec.com/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1107      - { name: actualité, url: "https://www.journaldequebec.com/actualite/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }11081109  # D.3 New media sources — United States1110  - id: bloomberg1111    name: Bloomberg News1112    domain: bloomberg.com1113    categories: [news, media, finance]1114    tier: B1115    weight: 1.31116    country: US1117    language: en1118    first_party: false1119    llm: false1120    aliases: [bloomberg, bloomberg news]1121    sensors:1122      - { name: markets feed, url: "https://feeds.bloomberg.com/markets/news.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1123      - { name: technology feed, url: "https://feeds.bloomberg.com/technology/news.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1124      - { name: politics feed, url: "https://feeds.bloomberg.com/politics/news.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1125      - { name: economics feed, url: "https://feeds.bloomberg.com/economics/news.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1126  - id: nbc-news1127    name: NBC News1128    domain: nbcnews.com1129    categories: [news, media]1130    tier: B1131    country: US1132    language: en1133    first_party: false1134    llm: false1135    aliases: [nbc news, nbc]1136    sensors:1137      - { name: top news feed, url: "https://feeds.nbcnews.com/nbcnews/public/news", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1138      - { name: politics feed, url: "https://feeds.nbcnews.com/nbcnews/public/politics", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1139      - { name: business feed, url: "https://feeds.nbcnews.com/nbcnews/public/business", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1140      - { name: tech feed, url: "https://feeds.nbcnews.com/nbcnews/public/tech", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1141  - id: abc-news1142    name: ABC News1143    domain: abcnews.go.com1144    categories: [news, media]1145    tier: B1146    country: US1147    language: en1148    first_party: false1149    llm: false1150    aliases: [abc news]1151    sensors:1152      - { name: top stories feed, url: "https://abcnews.go.com/abcnews/topstories", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1153      - { name: international feed, url: "https://abcnews.go.com/abcnews/internationalheadlines", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1154      - { name: politics feed, url: "https://abcnews.go.com/abcnews/politicsheadlines", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1155      - { name: business feed, url: "https://abcnews.go.com/abcnews/moneyheadlines", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1156  - id: cbs-news1157    name: CBS News1158    domain: cbsnews.com1159    categories: [news, media]1160    tier: B1161    country: US1162    language: en1163    first_party: false1164    llm: false1165    aliases: [cbs news, cbs]1166    sensors:1167      - { name: latest feed, url: "https://www.cbsnews.com/latest/rss/main", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1168      - { name: world feed, url: "https://www.cbsnews.com/latest/rss/world", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1169      - { name: politics feed, url: "https://www.cbsnews.com/latest/rss/politics", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1170      - { name: MoneyWatch feed, url: "https://www.cbsnews.com/latest/rss/moneywatch", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1171  - id: fox-news1172    name: Fox News1173    domain: foxnews.com1174    categories: [news, media]1175    tier: B1176    country: US1177    language: en1178    first_party: false1179    llm: false1180    aliases: [fox news, fox business]1181    sensors:1182      - { name: latest feed, url: "https://moxie.foxnews.com/google-publisher/latest.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1183      - { name: politics feed, url: "https://moxie.foxnews.com/google-publisher/politics.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1184      - { name: world feed, url: "https://moxie.foxnews.com/google-publisher/world.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1185      - { name: Fox Business latest feed, url: "https://moxie.foxbusiness.com/google-publisher/latest.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1186  - id: politico1187    name: Politico1188    domain: politico.com1189    categories: [news, media, politics]1190    tier: B1191    country: US1192    language: en1193    first_party: false1194    llm: false1195    aliases: [politico]1196    sensors:1197      - { name: politics news feed, url: "https://rss.politico.com/politics-news.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1198      - { name: Congress feed, url: "https://rss.politico.com/congress.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1199      - { name: technology feed, url: "https://rss.politico.com/technology.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1200      - { name: energy feed, url: "https://rss.politico.com/energy.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1201  - id: the-hill1202    name: The Hill1203    domain: thehill.com1204    categories: [news, media, politics]1205    tier: B1206    country: US1207    language: en1208    first_party: false1209    llm: false1210    aliases: [the hill]1211    sensors:1212      - { name: news feed, url: "https://thehill.com/news/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1213      - { name: technology policy feed, url: "https://thehill.com/policy/technology/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1214      - { name: business feed, url: "https://thehill.com/business/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1215  - id: pbs-newshour1216    name: PBS NewsHour1217    domain: pbs.org1218    homepage: https://www.pbs.org/newshour1219    categories: [news, media]1220    tier: B1221    country: US1222    language: en1223    first_party: false1224    llm: false1225    aliases: [pbs newshour, pbs]1226    sensors:1227      - { name: headlines feed, url: "https://www.pbs.org/newshour/feeds/rss/headlines", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1228      - { name: politics feed, url: "https://www.pbs.org/newshour/feeds/rss/politics", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1229      - { name: economy feed, url: "https://www.pbs.org/newshour/feeds/rss/economy", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1230      - { name: world feed, url: "https://www.pbs.org/newshour/feeds/rss/world", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1231  - id: la-times1232    name: Los Angeles Times1233    domain: latimes.com1234    categories: [news, media]1235    tier: B1236    country: US1237    language: en1238    first_party: false1239    llm: false1240    aliases: [los angeles times, la times]1241    sensors:1242      - { name: top news feed, url: "https://www.latimes.com/rss2.0.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1243      - { name: business feed, url: "https://www.latimes.com/business/rss2.0.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1244      - { name: politics feed, url: "https://www.latimes.com/politics/rss2.0.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1245      - { name: technology feed, url: "https://www.latimes.com/business/technology/rss2.0.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }12461247  # D.4 New media sources — Europe1248  - id: politico-europe1249    name: Politico Europe1250    domain: politico.eu1251    categories: [news, media, politics]1252    tier: B1253    country: EU1254    language: en1255    first_party: false1256    llm: false1257    aliases: [politico europe, politico eu]1258    sensors:1259      - { name: main feed, url: "https://www.politico.eu/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1260      - { name: technology feed, url: "https://www.politico.eu/section/technology/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1261      - { name: trade feed, url: "https://www.politico.eu/section/trade/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1262      - { name: competition feed, url: "https://www.politico.eu/section/competition/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1263  - id: euobserver1264    name: EUobserver1265    domain: euobserver.com1266    categories: [news, media, politics]1267    tier: B1268    country: EU1269    language: en1270    first_party: false1271    llm: false1272    aliases: [euobserver]1273    sensors:1274      - { name: news feed, url: "https://euobserver.com/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1275  - id: liberation1276    name: Libération1277    domain: liberation.fr1278    categories: [news, media]1279    tier: B1280    country: FR1281    language: fr1282    first_party: false1283    llm: false1284    aliases: [libération, libe]1285    sensors:1286      - { name: fil principal, url: "https://www.liberation.fr/arc/outboundfeeds/rss/?outputType=xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1287      - { name: économie, url: "https://www.liberation.fr/arc/outboundfeeds/rss-all/category/economie/?outputType=xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1288      - { name: international, url: "https://www.liberation.fr/arc/outboundfeeds/rss-all/category/international/?outputType=xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1289      - { name: politique, url: "https://www.liberation.fr/arc/outboundfeeds/rss-all/category/politique/?outputType=xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1290  - id: rfi1291    name: RFI1292    domain: rfi.fr1293    categories: [news, media]1294    tier: B1295    country: FR1296    language: fr1297    first_party: false1298    llm: false1299    aliases: [rfi, radio france internationale]1300    sensors:1301      - { name: fil français, url: "https://www.rfi.fr/fr/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1302      - { name: English feed, url: "https://www.rfi.fr/en/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1303      - { name: économie, url: "https://www.rfi.fr/fr/economie/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1304      - { name: Afrique, url: "https://www.rfi.fr/fr/afrique/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1305  - id: la-croix1306    name: La Croix1307    domain: la-croix.com1308    categories: [news, media]1309    tier: C1310    country: FR1311    language: fr1312    first_party: false1313    llm: false1314    aliases: [la croix]1315    sensors:1316      - { name: fil principal, url: "https://www.la-croix.com/RSS/UNIVERS", type: RSS, connector: rss, tier: C, config: { maxItems: 40 } }1317      - { name: monde, url: "https://www.la-croix.com/RSS/UNIVERS_WMON", type: RSS, connector: rss, tier: C, config: { maxItems: 40 } }1318  - id: 20-minutes1319    name: 20 Minutes1320    domain: 20minutes.fr1321    categories: [news, media]1322    tier: B1323    country: FR1324    language: fr1325    first_party: false1326    llm: false1327    aliases: [20 minutes, vingt minutes]1328    sensors:1329      - { name: une, url: "https://www.20minutes.fr/feeds/rss-une.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1330      - { name: économie, url: "https://www.20minutes.fr/feeds/rss-economie.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1331      - { name: monde, url: "https://www.20minutes.fr/feeds/rss-monde.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1332      - { name: high-tech, url: "https://www.20minutes.fr/feeds/rss-high-tech.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1333  - id: ouest-france1334    name: Ouest-France1335    domain: ouest-france.fr1336    categories: [news, media]1337    tier: B1338    country: FR1339    language: fr1340    first_party: false1341    llm: false1342    aliases: [ouest-france, ouest france]1343    sensors:1344      - { name: une, url: "https://www.ouest-france.fr/rss/une", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1345      - { name: monde, url: "https://www.ouest-france.fr/rss/monde", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1346  - id: bfmtv1347    name: BFMTV1348    domain: bfmtv.com1349    categories: [news, media]1350    tier: B1351    country: FR1352    language: fr1353    first_party: false1354    llm: false1355    aliases: [bfmtv, bfm business]1356    sensors:1357      - { name: news 24/7, url: "https://www.bfmtv.com/rss/news-24-7/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1358      - { name: économie, url: "https://www.bfmtv.com/rss/economie/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1359      - { name: international, url: "https://www.bfmtv.com/rss/international/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1360      - { name: tech, url: "https://www.bfmtv.com/rss/tech/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1361  - id: lexpress1362    name: L'Express1363    domain: lexpress.fr1364    categories: [news, media]1365    tier: B1366    country: FR1367    language: fr1368    first_party: false1369    llm: false1370    aliases: [l'express, lexpress]1371    sensors:1372      - { name: à la une, url: "https://www.lexpress.fr/arc/outboundfeeds/rss/alaune.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1373      - { name: économie, url: "https://www.lexpress.fr/arc/outboundfeeds/rss/economie.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1374      - { name: monde, url: "https://www.lexpress.fr/arc/outboundfeeds/rss/monde.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1375      - { name: high-tech, url: "https://www.lexpress.fr/arc/outboundfeeds/rss/high-tech.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1376  - id: nouvel-obs1377    name: Le Nouvel Obs1378    domain: nouvelobs.com1379    categories: [news, media]1380    tier: B1381    country: FR1382    language: fr1383    first_party: false1384    llm: false1385    aliases: [nouvel obs, l'obs, nouvelobs]1386    sensors:1387      - { name: fil principal, url: "https://www.nouvelobs.com/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1388      - { name: économie, url: "https://www.nouvelobs.com/economie/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1389      - { name: monde, url: "https://www.nouvelobs.com/monde/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1390      - { name: politique, url: "https://www.nouvelobs.com/politique/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1391  - id: el-mundo1392    name: El Mundo1393    domain: elmundo.es1394    categories: [news, media]1395    tier: B1396    country: ES1397    language: es1398    first_party: false1399    llm: false1400    aliases: [el mundo]1401    sensors:1402      - { name: portada, url: "https://e00-elmundo.uecdn.es/elmundo/rss/portada.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1403      - { name: economía, url: "https://e00-elmundo.uecdn.es/elmundo/rss/economia.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1404      - { name: internacional, url: "https://e00-elmundo.uecdn.es/elmundo/rss/internacional.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1405      - { name: España, url: "https://e00-elmundo.uecdn.es/elmundo/rss/espana.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1406  - id: faz1407    name: Frankfurter Allgemeine Zeitung1408    domain: faz.net1409    categories: [news, media]1410    tier: B1411    country: DE1412    language: de1413    first_party: false1414    llm: false1415    aliases: [faz, frankfurter allgemeine]1416    sensors:1417      - { name: Aktuell, url: "https://www.faz.net/rss/aktuell/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1418      - { name: Wirtschaft, url: "https://www.faz.net/rss/aktuell/wirtschaft/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1419      - { name: Politik, url: "https://www.faz.net/rss/aktuell/politik/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1420      - { name: Technik & Motor, url: "https://www.faz.net/rss/aktuell/technik-motor/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1421  - id: sueddeutsche1422    name: Süddeutsche Zeitung1423    domain: sueddeutsche.de1424    categories: [news, media]1425    tier: B1426    country: DE1427    language: de1428    first_party: false1429    llm: false1430    aliases: [süddeutsche zeitung, sz]1431    sensors:1432      - { name: Topthemen, url: "https://rss.sueddeutsche.de/rss/Topthemen", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1433      - { name: Wirtschaft, url: "https://rss.sueddeutsche.de/rss/Wirtschaft", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1434      - { name: Politik, url: "https://rss.sueddeutsche.de/rss/Politik", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1435      - { name: Digital, url: "https://rss.sueddeutsche.de/rss/Digital", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1436  - id: handelsblatt1437    name: Handelsblatt1438    domain: handelsblatt.com1439    categories: [news, media, finance]1440    tier: B1441    country: DE1442    language: de1443    first_party: false1444    llm: false1445    aliases: [handelsblatt]1446    sensors:1447      - { name: Schlagzeilen, url: "https://www.handelsblatt.com/contentexport/feed/schlagzeilen", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1448      - { name: Wirtschaft, url: "https://www.handelsblatt.com/contentexport/feed/wirtschaft", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1449      - { name: Finanzen, url: "https://www.handelsblatt.com/contentexport/feed/finanzen", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1450      - { name: Unternehmen, url: "https://www.handelsblatt.com/contentexport/feed/unternehmen", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1451  - id: corriere-della-sera1452    name: Corriere della Sera1453    domain: corriere.it1454    categories: [news, media]1455    tier: B1456    country: IT1457    language: it1458    first_party: false1459    llm: false1460    aliases: [corriere della sera, corriere]1461    sensors:1462      - { name: homepage, url: "https://xml2.corriereobjects.it/rss/homepage.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1463      - { name: economia, url: "https://xml2.corriereobjects.it/rss/economia.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1464      - { name: esteri, url: "https://xml2.corriereobjects.it/rss/esteri.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1465      - { name: politica, url: "https://xml2.corriereobjects.it/rss/politica.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1466  - id: la-repubblica1467    name: La Repubblica1468    domain: repubblica.it1469    categories: [news, media]1470    tier: B1471    country: IT1472    language: it1473    first_party: false1474    llm: false1475    aliases: [la repubblica, repubblica]1476    sensors:1477      - { name: homepage, url: "https://www.repubblica.it/rss/homepage/rss2.0.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1478      - { name: economia, url: "https://www.repubblica.it/rss/economia/rss2.0.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1479      - { name: esteri, url: "https://www.repubblica.it/rss/esteri/rss2.0.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1480      - { name: tecnologia, url: "https://www.repubblica.it/rss/tecnologia/rss2.0.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1481  - id: rte-news1482    name: RTÉ News1483    domain: rte.ie1484    categories: [news, media]1485    tier: B1486    country: IE1487    language: en1488    first_party: false1489    llm: false1490    aliases: [rté, rte news, raidió teilifís éireann]1491    sensors:1492      - { name: news feed, url: "https://www.rte.ie/feeds/rss/?index=/news/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1493      - { name: business feed, url: "https://www.rte.ie/feeds/rss/?index=/news/business/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1494      - { name: politics feed, url: "https://www.rte.ie/feeds/rss/?index=/news/politics/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1495      - { name: world feed, url: "https://www.rte.ie/feeds/rss/?index=/news/world/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1496  - id: irish-times1497    name: The Irish Times1498    domain: irishtimes.com1499    categories: [news, media]1500    tier: B1501    country: IE1502    language: en1503    first_party: false1504    llm: false1505    aliases: [irish times]1506    sensors:1507      - { name: Irish news feed, url: "https://www.irishtimes.com/arc/outboundfeeds/feed-irish-news/?outputType=xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1508      - { name: business feed, url: "https://www.irishtimes.com/arc/outboundfeeds/feed-business/?outputType=xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1509      - { name: world feed, url: "https://www.irishtimes.com/arc/outboundfeeds/feed-world/?outputType=xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1510      - { name: technology feed, url: "https://www.irishtimes.com/arc/outboundfeeds/feed-technology/?outputType=xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }15111512  # D.5 New media sources — Asia-Pacific1513  - id: nikkei-asia1514    name: Nikkei Asia1515    domain: asia.nikkei.com1516    categories: [news, media, finance]1517    tier: B1518    country: JP1519    language: en1520    first_party: false1521    llm: false1522    aliases: [nikkei asia, nikkei]1523    sensors:1524      - { name: latest feed, url: "https://asia.nikkei.com/rss/feed/nar", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1525  - id: nhk1526    name: NHK1527    domain: nhk.or.jp1528    homepage: https://www3.nhk.or.jp/news/1529    categories: [news, media]1530    tier: B1531    country: JP1532    language: ja1533    first_party: false1534    llm: false1535    aliases: [nhk, nhk world, 日本放送協会]1536    notes: "NHK World's English news is a JSON list (data[].id → /nhkworld/en/news/{id}/); the Japanese RSS categories are cat0 主要, cat4 政治, cat5 経済, cat6 国際."1537    sensors:1538      - { name: NHK World news (en, JSON), url: "https://www3.nhk.or.jp/nhkworld/data/en/news/all.json", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: data, keyField: id, titleField: title, urlTemplate: "https://www3.nhk.or.jp/nhkworld/en/news/{key}/", summaryField: description, compareFields: [title], maxItems: 40 } }1539      - { name: 主要ニュース, url: "https://www3.nhk.or.jp/rss/news/cat0.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1540      - { name: 経済, url: "https://www3.nhk.or.jp/rss/news/cat5.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1541      - { name: 国際, url: "https://www3.nhk.or.jp/rss/news/cat6.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1542  - id: japan-times1543    name: The Japan Times1544    domain: japantimes.co.jp1545    categories: [news, media]1546    tier: B1547    country: JP1548    language: en1549    first_party: false1550    llm: false1551    aliases: [japan times]1552    sensors:1553      - { name: news feed, url: "https://www.japantimes.co.jp/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1554  - id: kyodo-news1555    name: Kyodo News1556    domain: kyodonews.net1557    homepage: https://english.kyodonews.net1558    categories: [news, media]1559    tier: B1560    country: JP1561    language: en1562    first_party: false1563    llm: false1564    aliases: [kyodo, kyodo news]1565    sensors:1566      - { name: English news feed, url: "https://english.kyodonews.net/list/feed/rss4kyodonews-fzone", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1567  - id: yonhap1568    name: Yonhap News Agency1569    domain: yna.co.kr1570    categories: [news, media]1571    tier: B1572    country: KR1573    language: en1574    first_party: false1575    llm: false1576    aliases: [yonhap, yonhap news]1577    sensors:1578      - { name: English news feed, url: "https://en.yna.co.kr/RSS/news.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1579      - { name: North Korea feed (en), url: "https://en.yna.co.kr/RSS/nk.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1580      - { name: 뉴스 (ko), url: "https://www.yna.co.kr/rss/news.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1581      - { name: 경제 (ko), url: "https://www.yna.co.kr/rss/economy.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1582  - id: korea-herald1583    name: The Korea Herald1584    domain: koreaherald.com1585    categories: [news, media]1586    tier: B1587    country: KR1588    language: en1589    first_party: false1590    llm: false1591    aliases: [korea herald]1592    sensors:1593      - { name: all news feed, url: "https://www.koreaherald.com/rss/newsAll", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1594  - id: straits-times1595    name: The Straits Times1596    domain: straitstimes.com1597    categories: [news, media]1598    tier: B1599    country: SG1600    language: en1601    first_party: false1602    llm: false1603    aliases: [straits times]1604    sensors:1605      - { name: Singapore feed, url: "https://www.straitstimes.com/news/singapore/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1606      - { name: world feed, url: "https://www.straitstimes.com/news/world/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1607      - { name: business feed, url: "https://www.straitstimes.com/news/business/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1608      - { name: Asia feed, url: "https://www.straitstimes.com/news/asia/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1609  - id: times-of-india1610    name: The Times of India1611    domain: timesofindia.indiatimes.com1612    categories: [news, media]1613    tier: B1614    country: IN1615    language: en1616    first_party: false1617    llm: false1618    aliases: [times of india, toi]1619    sensors:1620      - { name: top stories feed, url: "https://timesofindia.indiatimes.com/rssfeedstopstories.cms", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1621      - { name: India feed, url: "https://timesofindia.indiatimes.com/rssfeeds/-2128936835.cms", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1622      - { name: business feed, url: "https://timesofindia.indiatimes.com/rssfeeds/1898055.cms", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1623      - { name: world feed, url: "https://timesofindia.indiatimes.com/rssfeeds/296589292.cms", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1624  - id: the-hindu1625    name: The Hindu1626    domain: thehindu.com1627    categories: [news, media]1628    tier: B1629    country: IN1630    language: en1631    first_party: false1632    llm: false1633    aliases: [the hindu]1634    sensors:1635      - { name: national feed, url: "https://www.thehindu.com/news/national/feeder/default.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1636      - { name: business feed, url: "https://www.thehindu.com/business/feeder/default.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1637      - { name: international feed, url: "https://www.thehindu.com/news/international/feeder/default.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1638      - { name: technology feed, url: "https://www.thehindu.com/sci-tech/technology/feeder/default.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1639  - id: ndtv1640    name: NDTV1641    domain: ndtv.com1642    categories: [news, media]1643    tier: B1644    country: IN1645    language: en1646    first_party: false1647    llm: false1648    aliases: [ndtv]1649    sensors:1650      - { name: top stories feed, url: "https://feeds.feedburner.com/ndtvnews-top-stories", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1651      - { name: world feed, url: "https://feeds.feedburner.com/ndtvnews-world-news", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1652      - { name: NDTV Profit feed, url: "https://feeds.feedburner.com/ndtvprofit-latest", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1653  - id: abc-australia1654    name: ABC News (Australia)1655    domain: abc.net.au1656    categories: [news, media]1657    tier: B1658    country: AU1659    language: en1660    first_party: false1661    llm: false1662    aliases: [abc australia, abc news australia, australian broadcasting corporation]1663    sensors:1664      - { name: top stories feed, url: "https://www.abc.net.au/news/feed/51120/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1665      - { name: just in feed, url: "https://www.abc.net.au/news/feed/2942460/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1666      - { name: world feed, url: "https://www.abc.net.au/news/feed/51892/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1667      - { name: business feed, url: "https://www.abc.net.au/news/feed/45910/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1668  - id: sbs-news1669    name: SBS News1670    domain: sbs.com.au1671    categories: [news, media]1672    tier: B1673    country: AU1674    language: en1675    first_party: false1676    llm: false1677    aliases: [sbs news, sbs]1678    sensors:1679      - { name: latest feed, url: "https://www.sbs.com.au/news/feed", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1680      - { name: world feed, url: "https://www.sbs.com.au/news/topic/world/feed", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1681  - id: smh1682    name: The Sydney Morning Herald1683    domain: smh.com.au1684    categories: [news, media]1685    tier: B1686    country: AU1687    language: en1688    first_party: false1689    llm: false1690    aliases: [sydney morning herald, smh]1691    sensors:1692      - { name: latest feed, url: "https://www.smh.com.au/rss/feed.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1693      - { name: business feed, url: "https://www.smh.com.au/rss/business.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1694      - { name: federal politics feed, url: "https://www.smh.com.au/rss/politics/federal.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1695      - { name: technology feed, url: "https://www.smh.com.au/rss/technology.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1696  - id: afr1697    name: The Australian Financial Review1698    domain: afr.com1699    categories: [news, media, finance]1700    tier: B1701    country: AU1702    language: en1703    first_party: false1704    llm: false1705    aliases: [australian financial review, afr]1706    sensors:1707      - { name: latest feed, url: "https://www.afr.com/rss/feed.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1708      - { name: markets feed, url: "https://www.afr.com/rss/markets.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1709      - { name: technology feed, url: "https://www.afr.com/rss/technology.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }17101711  # D.6 New media sources — Latin America1712  - id: folha1713    name: Folha de S.Paulo1714    domain: folha.uol.com.br1715    categories: [news, media]1716    tier: B1717    country: BR1718    language: pt1719    first_party: false1720    llm: false1721    aliases: [folha, folha de são paulo]1722    sensors:1723      - { name: em cima da hora, url: "https://feeds.folha.uol.com.br/emcimadahora/rss091.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1724      - { name: mercado, url: "https://feeds.folha.uol.com.br/mercado/rss091.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1725      - { name: mundo, url: "https://feeds.folha.uol.com.br/mundo/rss091.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1726      - { name: poder, url: "https://feeds.folha.uol.com.br/poder/rss091.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1727  - id: el-universal1728    name: El Universal (México)1729    domain: eluniversal.com.mx1730    categories: [news, media]1731    tier: B1732    country: MX1733    language: es1734    first_party: false1735    llm: false1736    aliases: [el universal, el universal méxico]1737    sensors:1738      - { name: portada, url: "https://www.eluniversal.com.mx/arc/outboundfeeds/rss/?outputType=xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1739      - { name: nación, url: "https://www.eluniversal.com.mx/arc/outboundfeeds/rss/category/nacion/?outputType=xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1740  - id: reforma1741    name: Reforma1742    domain: reforma.com1743    categories: [news, media]1744    tier: B1745    country: MX1746    language: es1747    first_party: false1748    llm: false1749    aliases: [reforma, grupo reforma]1750    sensors:1751      - { name: portada, url: "https://www.reforma.com/rss/portada.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1752      - { name: nacional, url: "https://www.reforma.com/rss/nacional.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1753      - { name: negocios, url: "https://www.reforma.com/rss/negocios.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1754  - id: la-jornada1755    name: La Jornada1756    domain: jornada.com.mx1757    categories: [news, media]1758    tier: B1759    country: MX1760    language: es1761    first_party: false1762    llm: false1763    aliases: [la jornada]1764    sensors:1765      - { name: edición, url: "https://www.jornada.com.mx/rss/edicion.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1766      - { name: política, url: "https://www.jornada.com.mx/rss/politica.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1767  - id: excelsior1768    name: Excélsior1769    domain: excelsior.com.mx1770    categories: [news, media]1771    tier: B1772    country: MX1773    language: es1774    first_party: false1775    llm: false1776    aliases: [excélsior, excelsior]1777    sensors:1778      - { name: portada, url: "https://www.excelsior.com.mx/rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }17791780  # D.7 State / national wire agencies with public feeds (tagged first_party: false; provenance in notes)1781  - id: xinhua1782    name: Xinhua News Agency1783    domain: news.cn1784    homepage: https://english.news.cn1785    categories: [news, media]1786    tier: B1787    country: CN1788    language: en1789    first_party: false1790    llm: false1791    aliases: [xinhua, xinhuanet, 新华社]1792    notes: "Chinese state news agency — treat as an official-position signal rather than independent reporting."1793    sensors:1794      - { name: world feed (en), url: "https://english.news.cn/rss/worldrss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1795      - { name: China feed (en), url: "https://english.news.cn/rss/chinarss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1796      - { name: business feed (en), url: "https://english.news.cn/rss/businessrss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1797      - { name: sci-tech feed (en), url: "https://english.news.cn/rss/scirss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1798  - id: tass1799    name: TASS1800    domain: tass.com1801    categories: [news, media]1802    tier: C1803    country: RU1804    language: en1805    first_party: false1806    llm: false1807    aliases: [tass, itar-tass]1808    notes: "Russian state news agency — treat as an official-position signal rather than independent reporting."1809    sensors:1810      - { name: English feed, url: "https://tass.com/rss/v2.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 40 } }18111812  # D.8 Press-release wires (aggregators of corporate announcements; first_party: false)1813  - id: globenewswire1814    name: GlobeNewswire1815    domain: globenewswire.com1816    categories: [news, media, commerce]1817    tier: B1818    country: US1819    language: en1820    first_party: false1821    llm: false1822    aliases: [globenewswire, globe newswire]1823    sensors:1824      - { name: news from Canada, url: "https://www.globenewswire.com/RssFeed/country/Canada/feedTitle/GlobeNewswire%20-%20News%20from%20Canada", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1825      - { name: telecommunications, url: "https://www.globenewswire.com/RssFeed/subjectcode/22-Telecommunications/feedTitle/GlobeNewswire%20-%20Telecommunications", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1826      - { name: transportation, url: "https://www.globenewswire.com/RssFeed/subjectcode/35-Transportation/feedTitle/GlobeNewswire%20-%20Transportation", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1827      - { name: automotive, url: "https://www.globenewswire.com/RssFeed/subjectcode/10-Automotive/feedTitle/GlobeNewswire%20-%20Automotive", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1828  - id: pr-newswire1829    name: PR Newswire1830    domain: prnewswire.com1831    categories: [news, media, commerce]1832    tier: B1833    country: US1834    language: en1835    first_party: false1836    llm: false1837    aliases: [pr newswire, prnewswire, cision]1838    sensors:1839      - { name: all news releases, url: "https://www.prnewswire.com/rss/news-releases-list.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1840      - { name: telecommunications, url: "https://www.prnewswire.com/rss/telecommunications-latest-news/telecommunications-latest-news-list.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1841      - { name: automotive & transportation, url: "https://www.prnewswire.com/rss/automotive-transportation-latest-news/automotive-transportation-latest-news-list.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1842      - { name: sports, url: "https://www.prnewswire.com/rss/sports-latest-news/sports-latest-news-list.rss", type: RSS, connector: rss, tier: C, config: { maxItems: 40 } }1843  - id: canada-newswire1844    name: Canada Newswire (CNW)1845    domain: newswire.ca1846    categories: [news, media, commerce]1847    tier: B1848    country: CA1849    language: en1850    first_party: false1851    llm: false1852    aliases: [canada newswire, cnw, cnw group]1853    sensors:1854      - { name: all news releases, url: "https://www.newswire.ca/rss/news-releases-list.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1855