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%
105.8 KB · 1,053 lines yaml
Raw Blame History
1# config/sources.d/45-science-health.yaml — science & health depth (2026-09-11).2# Detects: new papers/preprints by field, retractions/corrections/expressions of concern (Crossref, OpenAlex,3# Europe PMC), clinical-trial status changes and stopped trials (ClinicalTrials.gov v2, per sponsor/condition),4# drug & device approvals, recalls and shortages (openFDA), public-health alerts and outbreaks (CDC HAN/MMWR/5# outbreak feeds, PHAC, PAHO), journal tables of contents (Nature portfolio, Science, Cell Press, Lancet, JAMA,6# PLOS, APS, IOP, Wiley, RSC, ASCO…), space missions & launches (NASA, ESA, CelesTrak new objects, GraceDB GW7# candidates), volcano alert levels (USGS HANS), and science/health media (first_party: false, heuristics only).8# Every URL below was fetched and parsed by apps/engine/src/validate.ts before being kept. Sources that already9# exist in sources.yaml / 16 / 21 / 24 are extended (`extend: true`); ids declared here are new.10sources:11  # ───────────────────────── preprints & scholarly infrastructure ─────────────────────────12  - id: arxiv13    extend: true14    country: US15    notes: "45-science-health: arXiv API Atom per category (50 newest submissions each, tier B/C) + daily listing RSS. Volume is several hundred papers/day — the founding source has llm unset (true); consider llm: false there."16    sensors:17      - { name: cs.CV api feed, url: "https://export.arxiv.org/api/query?search_query=cat:cs.CV&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: B, config: { maxItems: 50 } }18      - { name: cs.DC api feed, url: "https://export.arxiv.org/api/query?search_query=cat:cs.DC&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }19      - { name: cs.SE api feed, url: "https://export.arxiv.org/api/query?search_query=cat:cs.SE&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }20      - { name: cs.RO api feed, url: "https://export.arxiv.org/api/query?search_query=cat:cs.RO&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }21      - { name: cs.NE api feed, url: "https://export.arxiv.org/api/query?search_query=cat:cs.NE&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }22      - { name: cs.IR api feed, url: "https://export.arxiv.org/api/query?search_query=cat:cs.IR&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }23      - { name: cs.HC api feed, url: "https://export.arxiv.org/api/query?search_query=cat:cs.HC&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }24      - { name: cs.CY api feed, url: "https://export.arxiv.org/api/query?search_query=cat:cs.CY&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }25      - { name: cs.DB api feed, url: "https://export.arxiv.org/api/query?search_query=cat:cs.DB&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }26      - { name: cs.PL api feed, url: "https://export.arxiv.org/api/query?search_query=cat:cs.PL&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }27      - { name: cs.MA api feed, url: "https://export.arxiv.org/api/query?search_query=cat:cs.MA&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }28      - { name: cs.NI api feed, url: "https://export.arxiv.org/api/query?search_query=cat:cs.NI&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }29      - { name: cs.AR api feed, url: "https://export.arxiv.org/api/query?search_query=cat:cs.AR&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }30      - { name: stat.ML api feed, url: "https://export.arxiv.org/api/query?search_query=cat:stat.ML&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: B, config: { maxItems: 50 } }31      - { name: stat.ME api feed, url: "https://export.arxiv.org/api/query?search_query=cat:stat.ME&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }32      - { name: q-bio.GN api feed, url: "https://export.arxiv.org/api/query?search_query=cat:q-bio.GN&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }33      - { name: q-bio.NC api feed, url: "https://export.arxiv.org/api/query?search_query=cat:q-bio.NC&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }34      - { name: q-bio.QM api feed, url: "https://export.arxiv.org/api/query?search_query=cat:q-bio.QM&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }35      - { name: q-bio.PE api feed, url: "https://export.arxiv.org/api/query?search_query=cat:q-bio.PE&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }36      - { name: quant-ph api feed, url: "https://export.arxiv.org/api/query?search_query=cat:quant-ph&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: B, config: { maxItems: 50 } }37      - { name: gr-qc api feed, url: "https://export.arxiv.org/api/query?search_query=cat:gr-qc&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }38      - { name: hep-ph api feed, url: "https://export.arxiv.org/api/query?search_query=cat:hep-ph&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }39      - { name: hep-ex api feed, url: "https://export.arxiv.org/api/query?search_query=cat:hep-ex&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }40      - { name: hep-th api feed, url: "https://export.arxiv.org/api/query?search_query=cat:hep-th&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }41      - { name: astro-ph.EP api feed, url: "https://export.arxiv.org/api/query?search_query=cat:astro-ph.EP&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }42      - { name: astro-ph.HE api feed, url: "https://export.arxiv.org/api/query?search_query=cat:astro-ph.HE&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }43      - { name: astro-ph.CO api feed, url: "https://export.arxiv.org/api/query?search_query=cat:astro-ph.CO&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }44      - { name: cond-mat.mtrl-sci api feed, url: "https://export.arxiv.org/api/query?search_query=cat:cond-mat.mtrl-sci&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }45      - { name: cond-mat.supr-con api feed, url: "https://export.arxiv.org/api/query?search_query=cat:cond-mat.supr-con&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }46      - { name: physics.med-ph api feed, url: "https://export.arxiv.org/api/query?search_query=cat:physics.med-ph&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }47      - { name: physics.ao-ph api feed, url: "https://export.arxiv.org/api/query?search_query=cat:physics.ao-ph&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }48      - { name: physics.soc-ph api feed, url: "https://export.arxiv.org/api/query?search_query=cat:physics.soc-ph&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }49      - { name: physics.optics api feed, url: "https://export.arxiv.org/api/query?search_query=cat:physics.optics&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }50      - { name: math.OC api feed, url: "https://export.arxiv.org/api/query?search_query=cat:math.OC&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }51      - { name: math.ST api feed, url: "https://export.arxiv.org/api/query?search_query=cat:math.ST&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }52      - { name: econ.GN api feed, url: "https://export.arxiv.org/api/query?search_query=cat:econ.GN&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }53      - { name: econ.TH api feed, url: "https://export.arxiv.org/api/query?search_query=cat:econ.TH&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }54      - { name: q-fin.PM api feed, url: "https://export.arxiv.org/api/query?search_query=cat:q-fin.PM&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }55      - { name: q-fin.RM api feed, url: "https://export.arxiv.org/api/query?search_query=cat:q-fin.RM&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }56      - { name: eess.SP api feed, url: "https://export.arxiv.org/api/query?search_query=cat:eess.SP&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }57      - { name: eess.IV api feed, url: "https://export.arxiv.org/api/query?search_query=cat:eess.IV&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }58      - { name: eess.AS api feed, url: "https://export.arxiv.org/api/query?search_query=cat:eess.AS&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }59      - { name: eess.SY api feed, url: "https://export.arxiv.org/api/query?search_query=cat:eess.SY&sortBy=submittedDate&sortOrder=descending&max_results=50", type: ATOM, connector: rss, tier: C, config: { maxItems: 50 } }60      - { name: cs.LG listing feed, url: "https://rss.arxiv.org/rss/cs.LG", type: RSS, connector: rss, tier: C, config: { maxItems: 400 } }61      - { name: cs.CV listing feed, url: "https://rss.arxiv.org/rss/cs.CV", type: RSS, connector: rss, tier: C, config: { maxItems: 400 } }62      - { name: stat.ML listing feed, url: "https://rss.arxiv.org/rss/stat.ML", type: RSS, connector: rss, tier: C, config: { maxItems: 300 } }63      - { name: quant-ph listing feed, url: "https://rss.arxiv.org/rss/quant-ph", type: RSS, connector: rss, tier: C, config: { maxItems: 300 } }64      - { name: q-bio listing feed, url: "https://rss.arxiv.org/rss/q-bio", type: RSS, connector: rss, tier: C, config: { maxItems: 300 } }65      - { name: econ listing feed, url: "https://rss.arxiv.org/rss/econ", type: RSS, connector: rss, tier: C, config: { maxItems: 200 } }66      - { name: astro-ph listing feed, url: "https://rss.arxiv.org/rss/astro-ph", type: RSS, connector: rss, tier: C, config: { maxItems: 300 } }67      - { name: hep-ph listing feed, url: "https://rss.arxiv.org/rss/hep-ph", type: RSS, connector: rss, tier: C, config: { maxItems: 300 } }68      - { name: cond-mat listing feed, url: "https://rss.arxiv.org/rss/cond-mat", type: RSS, connector: rss, tier: C, config: { maxItems: 300 } }69      - { name: math.OC listing feed, url: "https://rss.arxiv.org/rss/math.OC", type: RSS, connector: rss, tier: C, config: { maxItems: 200 } }70      - { name: eess listing feed, url: "https://rss.arxiv.org/rss/eess", type: RSS, connector: rss, tier: C, config: { maxItems: 300 } }71  - id: biorxiv72    extend: true73    country: US74    sensors:75      - { name: genomics feed, url: "https://connect.biorxiv.org/biorxiv_xml.php?subject=genomics", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }76      - { name: genetics feed, url: "https://connect.biorxiv.org/biorxiv_xml.php?subject=genetics", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }77      - { name: cancer biology feed, url: "https://connect.biorxiv.org/biorxiv_xml.php?subject=cancer_biology", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }78      - { name: immunology feed, url: "https://connect.biorxiv.org/biorxiv_xml.php?subject=immunology", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }79      - { name: microbiology feed, url: "https://connect.biorxiv.org/biorxiv_xml.php?subject=microbiology", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }80      - { name: synthetic biology feed, url: "https://connect.biorxiv.org/biorxiv_xml.php?subject=synthetic_biology", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }81      - { name: evolutionary biology feed, url: "https://connect.biorxiv.org/biorxiv_xml.php?subject=evolutionary_biology", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }82      - { name: cell biology feed, url: "https://connect.biorxiv.org/biorxiv_xml.php?subject=cell_biology", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }83      - { name: molecular biology feed, url: "https://connect.biorxiv.org/biorxiv_xml.php?subject=molecular_biology", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }84      - { name: biochemistry feed, url: "https://connect.biorxiv.org/biorxiv_xml.php?subject=biochemistry", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }85      - { name: systems biology feed, url: "https://connect.biorxiv.org/biorxiv_xml.php?subject=systems_biology", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }86      - { name: biophysics feed, url: "https://connect.biorxiv.org/biorxiv_xml.php?subject=biophysics", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }87      - { name: ecology feed, url: "https://connect.biorxiv.org/biorxiv_xml.php?subject=ecology", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }88      - { name: plant biology feed, url: "https://connect.biorxiv.org/biorxiv_xml.php?subject=plant_biology", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }89      - { name: bioengineering feed, url: "https://connect.biorxiv.org/biorxiv_xml.php?subject=bioengineering", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }90      - { name: pharmacology and toxicology feed, url: "https://connect.biorxiv.org/biorxiv_xml.php?subject=pharmacology_and_toxicology", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }91  - id: medrxiv92    extend: true93    country: US94    sensors:95      - { name: oncology feed, url: "https://connect.medrxiv.org/medrxiv_xml.php?subject=oncology", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }96      - { name: cardiovascular medicine feed, url: "https://connect.medrxiv.org/medrxiv_xml.php?subject=cardiovascular_medicine", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }97      - { name: public and global health feed, url: "https://connect.medrxiv.org/medrxiv_xml.php?subject=public_and_global_health", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }98      - { name: health informatics feed, url: "https://connect.medrxiv.org/medrxiv_xml.php?subject=health_informatics", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }99      - { name: psychiatry feed, url: "https://connect.medrxiv.org/medrxiv_xml.php?subject=psychiatry_and_clinical_psychology", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }100      - { name: neurology feed, url: "https://connect.medrxiv.org/medrxiv_xml.php?subject=neurology", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }101      - { name: genetic and genomic medicine feed, url: "https://connect.medrxiv.org/medrxiv_xml.php?subject=genetic_and_genomic_medicine", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }102      - { name: endocrinology feed, url: "https://connect.medrxiv.org/medrxiv_xml.php?subject=endocrinology", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }103      - { name: health policy feed, url: "https://connect.medrxiv.org/medrxiv_xml.php?subject=health_policy", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }104      - { name: pediatrics feed, url: "https://connect.medrxiv.org/medrxiv_xml.php?subject=pediatrics", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }105      - { name: obstetrics and gynecology feed, url: "https://connect.medrxiv.org/medrxiv_xml.php?subject=obstetrics_and_gynecology", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }106      - { name: pharmacology and therapeutics feed, url: "https://connect.medrxiv.org/medrxiv_xml.php?subject=pharmacology_and_therapeutics", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }107  - id: openalex108    name: OpenAlex109    domain: openalex.org110    homepage: https://openalex.org111    categories: [research, open-data, infrastructure]112    tier: B113    weight: 1.1114    country: US115    aliases: [openalex, ourresearch]116    products:117      - { name: OpenAlex API, type: API }118    discover: { rss: false }119    llm: false120    notes: "Open scholarly graph (OurResearch). Works API sorted by publication_date: retracted works, flagship journals by ISSN, hot topics by title search. Polite pool via mailto= (10 req/s)."121    sensors:122      - { name: retracted works, url: "https://api.openalex.org/works?filter=is_retracted:true&sort=publication_date:desc&per-page=50&mailto=contact@websensor.io", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: results, keyField: id, titleField: display_name, urlField: id, summaryField: primary_location.source.display_name, dateField: publication_date, compareFields: [is_retracted], maxItems: 50 } }123      - { name: nature works (issn), url: "https://api.openalex.org/works?filter=primary_location.source.issn:0028-0836&sort=publication_date:desc&per-page=50&mailto=contact@websensor.io", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: id, titleField: display_name, urlField: id, summaryField: type, dateField: publication_date, compareFields: [is_retracted], maxItems: 50 } }124      - { name: science works (issn), url: "https://api.openalex.org/works?filter=primary_location.source.issn:0036-8075&sort=publication_date:desc&per-page=50&mailto=contact@websensor.io", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: id, titleField: display_name, urlField: id, summaryField: type, dateField: publication_date, compareFields: [is_retracted], maxItems: 50 } }125      - { name: cell works (issn), url: "https://api.openalex.org/works?filter=primary_location.source.issn:0092-8674&sort=publication_date:desc&per-page=50&mailto=contact@websensor.io", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: id, titleField: display_name, urlField: id, summaryField: type, dateField: publication_date, compareFields: [is_retracted], maxItems: 50 } }126      - { name: lancet works (issn), url: "https://api.openalex.org/works?filter=primary_location.source.issn:0140-6736&sort=publication_date:desc&per-page=50&mailto=contact@websensor.io", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: id, titleField: display_name, urlField: id, summaryField: type, dateField: publication_date, compareFields: [is_retracted], maxItems: 50 } }127      - { name: nejm works (issn), url: "https://api.openalex.org/works?filter=primary_location.source.issn:0028-4793&sort=publication_date:desc&per-page=50&mailto=contact@websensor.io", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: id, titleField: display_name, urlField: id, summaryField: type, dateField: publication_date, compareFields: [is_retracted], maxItems: 50 } }128      - { name: large language model articles, url: "https://api.openalex.org/works?filter=title.search:large%20language%20model,type:article&sort=publication_date:desc&per-page=50&mailto=contact@websensor.io", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: id, titleField: display_name, urlField: id, summaryField: primary_location.source.display_name, dateField: publication_date, compareFields: [is_retracted], maxItems: 50 } }129      - { name: crispr articles, url: "https://api.openalex.org/works?filter=title.search:CRISPR,type:article&sort=publication_date:desc&per-page=50&mailto=contact@websensor.io", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: id, titleField: display_name, urlField: id, summaryField: primary_location.source.display_name, dateField: publication_date, compareFields: [is_retracted], maxItems: 50 } }130      - { name: glp-1 articles, url: "https://api.openalex.org/works?filter=title.search:GLP-1,type:article&sort=publication_date:desc&per-page=50&mailto=contact@websensor.io", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: id, titleField: display_name, urlField: id, summaryField: primary_location.source.display_name, dateField: publication_date, compareFields: [is_retracted], maxItems: 50 } }131      - { name: mrna vaccine articles, url: "https://api.openalex.org/works?filter=title.search:mRNA%20vaccine,type:article&sort=publication_date:desc&per-page=50&mailto=contact@websensor.io", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: id, titleField: display_name, urlField: id, summaryField: primary_location.source.display_name, dateField: publication_date, compareFields: [is_retracted], maxItems: 50 } }132      - { name: h5n1 articles, url: "https://api.openalex.org/works?filter=title.search:H5N1,type:article&sort=publication_date:desc&per-page=50&mailto=contact@websensor.io", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: id, titleField: display_name, urlField: id, summaryField: primary_location.source.display_name, dateField: publication_date, compareFields: [is_retracted], maxItems: 50 } }133      - { name: measles articles, url: "https://api.openalex.org/works?filter=title.search:measles,type:article&sort=publication_date:desc&per-page=50&mailto=contact@websensor.io", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: id, titleField: display_name, urlField: id, summaryField: primary_location.source.display_name, dateField: publication_date, compareFields: [is_retracted], maxItems: 50 } }134      - { name: quantum computing articles, url: "https://api.openalex.org/works?filter=title.search:quantum%20computing,type:article&sort=publication_date:desc&per-page=50&mailto=contact@websensor.io", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: id, titleField: display_name, urlField: id, summaryField: primary_location.source.display_name, dateField: publication_date, compareFields: [is_retracted], maxItems: 50 } }135  - id: crossref136    extend: true137    country: US138    notes: "45-science-health: REST API update-type filters (retraction, correction, expression of concern, withdrawal), newest deposits first. Several hundred corrections/day — founding source has llm unset."139    sensors:140      - { name: retractions api, url: "https://api.crossref.org/works?filter=update-type:retraction&sort=deposited&order=desc&rows=50&mailto=contact@websensor.io", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: message.items, keyField: DOI, titleField: title, urlField: URL, summaryField: container-title, dateField: deposited.date-time, compareFields: [], maxItems: 50 } }141      - { name: corrections api, url: "https://api.crossref.org/works?filter=update-type:correction&sort=deposited&order=desc&rows=50&mailto=contact@websensor.io", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: message.items, keyField: DOI, titleField: title, urlField: URL, summaryField: container-title, dateField: deposited.date-time, compareFields: [], maxItems: 50 } }142      - { name: expressions of concern api, url: "https://api.crossref.org/works?filter=update-type:expression_of_concern&sort=deposited&order=desc&rows=50&mailto=contact@websensor.io", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: message.items, keyField: DOI, titleField: title, urlField: URL, summaryField: container-title, dateField: deposited.date-time, compareFields: [], maxItems: 50 } }143      - { name: withdrawals api, url: "https://api.crossref.org/works?filter=update-type:withdrawal&sort=deposited&order=desc&rows=50&mailto=contact@websensor.io", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: message.items, keyField: DOI, titleField: title, urlField: URL, summaryField: container-title, dateField: deposited.date-time, compareFields: [], maxItems: 50 } }144  - id: europe-pmc145    extend: true146    country: GB147    sensors:148      - { name: retraction notices (medline), url: "https://www.ebi.ac.uk/europepmc/webservices/rest/search?query=SRC:MED%20AND%20PUB_TYPE:%22Retraction%20of%20Publication%22&sort=P_PDATE_D%20desc&format=json&pageSize=25", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: resultList.result, keyField: id, titleField: title, urlTemplate: "https://europepmc.org/abstract/MED/{key}", summaryField: journalTitle, dateField: firstPublicationDate, maxItems: 25 } }149      - { name: phase iii trial papers (medline), url: "https://www.ebi.ac.uk/europepmc/webservices/rest/search?query=SRC:MED%20AND%20PUB_TYPE:%22Clinical%20Trial,%20Phase%20III%22&sort=P_PDATE_D%20desc&format=json&pageSize=25", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: resultList.result, keyField: id, titleField: title, urlTemplate: "https://europepmc.org/abstract/MED/{key}", summaryField: journalTitle, dateField: firstPublicationDate, maxItems: 25 } }150      - { name: large language model papers (medline), url: "https://www.ebi.ac.uk/europepmc/webservices/rest/search?query=SRC:MED%20AND%20%22large%20language%20model%22&sort=P_PDATE_D%20desc&format=json&pageSize=25", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: resultList.result, keyField: id, titleField: title, urlTemplate: "https://europepmc.org/abstract/MED/{key}", summaryField: journalTitle, dateField: firstPublicationDate, maxItems: 25 } }151      - { name: crispr papers (medline), url: "https://www.ebi.ac.uk/europepmc/webservices/rest/search?query=SRC:MED%20AND%20CRISPR&sort=P_PDATE_D%20desc&format=json&pageSize=25", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: resultList.result, keyField: id, titleField: title, urlTemplate: "https://europepmc.org/abstract/MED/{key}", summaryField: journalTitle, dateField: firstPublicationDate, maxItems: 25 } }152      - { name: glp-1 papers (medline), url: "https://www.ebi.ac.uk/europepmc/webservices/rest/search?query=SRC:MED%20AND%20%22GLP-1%22&sort=P_PDATE_D%20desc&format=json&pageSize=25", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: resultList.result, keyField: id, titleField: title, urlTemplate: "https://europepmc.org/abstract/MED/{key}", summaryField: journalTitle, dateField: firstPublicationDate, maxItems: 25 } }153      - { name: mrna vaccine papers (medline), url: "https://www.ebi.ac.uk/europepmc/webservices/rest/search?query=SRC:MED%20AND%20%22mRNA%20vaccine%22&sort=P_PDATE_D%20desc&format=json&pageSize=25", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: resultList.result, keyField: id, titleField: title, urlTemplate: "https://europepmc.org/abstract/MED/{key}", summaryField: journalTitle, dateField: firstPublicationDate, maxItems: 25 } }154      - { name: h5n1 papers (medline), url: "https://www.ebi.ac.uk/europepmc/webservices/rest/search?query=SRC:MED%20AND%20H5N1&sort=P_PDATE_D%20desc&format=json&pageSize=25", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: resultList.result, keyField: id, titleField: title, urlTemplate: "https://europepmc.org/abstract/MED/{key}", summaryField: journalTitle, dateField: firstPublicationDate, maxItems: 25 } }155      - { name: measles outbreak papers (medline), url: "https://www.ebi.ac.uk/europepmc/webservices/rest/search?query=SRC:MED%20AND%20%22measles%20outbreak%22&sort=P_PDATE_D%20desc&format=json&pageSize=25", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: resultList.result, keyField: id, titleField: title, urlTemplate: "https://europepmc.org/abstract/MED/{key}", summaryField: journalTitle, dateField: firstPublicationDate, maxItems: 25 } }156  - id: hal157    name: HAL open archive158    domain: hal.science159    homepage: https://hal.science160    categories: [research, open-data, science]161    tier: C162    country: FR163    aliases: [hal, archives ouvertes, ccsd]164    products:165      - { name: HAL API, type: API }166    discover: { rss: false }167    llm: false168    notes: "French national open archive (CCSD/CNRS). Solr search API, newest deposits first; theses stream separately."169    sensors:170      - { name: newest deposits api, url: "https://api.archives-ouvertes.fr/search/?q=*:*&sort=submittedDate_tdate%20desc&rows=50&wt=json&fl=docid,title_s,uri_s,submittedDate_tdate,authFullName_s", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: response.docs, keyField: docid, titleField: title_s, urlField: uri_s, summaryField: authFullName_s, dateField: submittedDate_tdate, maxItems: 50 } }171      - { name: newest journal articles api, url: "https://api.archives-ouvertes.fr/search/?q=*:*&fq=docType_s:ART&sort=submittedDate_tdate%20desc&rows=50&wt=json&fl=docid,title_s,uri_s,submittedDate_tdate", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: response.docs, keyField: docid, titleField: title_s, urlField: uri_s, dateField: submittedDate_tdate, maxItems: 50 } }172      - { name: newest theses api, url: "https://api.archives-ouvertes.fr/search/?q=*:*&fq=docType_s:THESE&sort=submittedDate_tdate%20desc&rows=50&wt=json&fl=docid,title_s,uri_s,submittedDate_tdate", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: response.docs, keyField: docid, titleField: title_s, urlField: uri_s, dateField: submittedDate_tdate, maxItems: 50 } }173  - id: center-for-open-science174    extend: true175    country: US176    products:177      - { name: OSF Preprints, type: service, aliases: [osf preprints, psyarxiv, socarxiv, engrxiv, edarxiv, ecoevorxiv] }178    sensors:179      - { name: osf preprints api (all providers), url: "https://api.osf.io/v2/preprints/?sort=-date_created&page%5Bsize%5D=50", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: data, keyField: id, titleField: attributes.title, urlField: links.html, summaryField: attributes.description, dateField: attributes.date_published, maxItems: 50 } }180      - { name: psyarxiv preprints api, url: "https://api.osf.io/v2/preprints/?filter%5Bprovider%5D=psyarxiv&sort=-date_created&page%5Bsize%5D=50", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: data, keyField: id, titleField: attributes.title, urlField: links.html, summaryField: attributes.description, dateField: attributes.date_published, maxItems: 50 } }181      - { name: socarxiv preprints api, url: "https://api.osf.io/v2/preprints/?filter%5Bprovider%5D=socarxiv&sort=-date_created&page%5Bsize%5D=50", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: data, keyField: id, titleField: attributes.title, urlField: links.html, summaryField: attributes.description, dateField: attributes.date_published, maxItems: 50 } }182      - { name: engrxiv preprints api, url: "https://api.osf.io/v2/preprints/?filter%5Bprovider%5D=engrxiv&sort=-date_created&page%5Bsize%5D=50", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: data, keyField: id, titleField: attributes.title, urlField: links.html, summaryField: attributes.description, dateField: attributes.date_published, maxItems: 50 } }183      - { name: edarxiv preprints api, url: "https://api.osf.io/v2/preprints/?filter%5Bprovider%5D=edarxiv&sort=-date_created&page%5Bsize%5D=50", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: data, keyField: id, titleField: attributes.title, urlField: links.html, summaryField: attributes.description, dateField: attributes.date_published, maxItems: 50 } }184      - { name: ecoevorxiv preprints api, url: "https://api.osf.io/v2/preprints/?filter%5Bprovider%5D=ecoevorxiv&sort=-date_created&page%5Bsize%5D=50", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: data, keyField: id, titleField: attributes.title, urlField: links.html, summaryField: attributes.description, dateField: attributes.date_published, maxItems: 50 } }185  - id: zenodo186    extend: true187    country: CH188    sensors:189      - { name: newest records api, url: "https://zenodo.org/api/records?sort=mostrecent&size=25", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: hits.hits, keyField: id, titleField: metadata.title, urlField: doi_url, summaryField: metadata.resource_type.title, dateField: created, maxItems: 25 } }190191  # ───────────────────────── journals & publishers ─────────────────────────192  - id: nature193    extend: true194    country: GB195    notes: "45-science-health: portfolio journal feeds (<journal>.rss). nature.com throttles bursts per IP (303 → HTML after ~25 quick requests), so only 8 high-value sub-journals are added; ng, ni, neuro, nclimate, nathumbehav, natcomputsci, nchem, nmat, ngeo, nenergy, natastron, ncb, nchembio, nsmb, natmetab, natcancer, natcardiovascres, natbiomedeng, natelectron, natsustain, natfood, nplants, natecolevol, nrc, nri, nrg, nrneurol, natrevphys, srep, npjqi, npjcompumats also exist and parsed fine individually (2026-09-11) — add them gradually if the scheduler's per-host spacing proves sufficient."196    products:197      - { name: Nature Medicine, type: product, aliases: [nat med] }198      - { name: Nature Biotechnology, type: product, aliases: [nat biotech] }199      - { name: Nature Communications, type: product, aliases: [nat commun] }200      - { name: Nature Machine Intelligence, type: product }201      - { name: Scientific Reports, type: product }202    sensors:203      - { name: nature medicine feed, url: "https://www.nature.com/nm.rss", type: RSS, connector: rss, tier: B }204      - { name: nature biotechnology feed, url: "https://www.nature.com/nbt.rss", type: RSS, connector: rss, tier: B }205      - { name: nature methods feed, url: "https://www.nature.com/nmeth.rss", type: RSS, connector: rss, tier: C }206      - { name: nature communications feed, url: "https://www.nature.com/ncomms.rss", type: RSS, connector: rss, tier: B }207      - { name: nature machine intelligence feed, url: "https://www.nature.com/natmachintell.rss", type: RSS, connector: rss, tier: B }208      - { name: nature physics feed, url: "https://www.nature.com/nphys.rss", type: RSS, connector: rss, tier: C }209      - { name: nature reviews drug discovery feed, url: "https://www.nature.com/nrd.rss", type: RSS, connector: rss, tier: B }210      - { name: npj digital medicine feed, url: "https://www.nature.com/npjdigitalmed.rss", type: RSS, connector: rss, tier: C }211      - { name: health sciences subject feed, url: "https://www.nature.com/subjects/health-sciences.rss", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }212  - id: science213    extend: true214    country: US215    products:216      - { name: Science Advances, type: product }217      - { name: Science Translational Medicine, type: product }218      - { name: Science Robotics, type: product }219    sensors:220      - { name: science advances feed, url: "https://www.science.org/action/showFeed?type=etoc&feed=rss&jc=sciadv", type: RSS, connector: rss, tier: B, config: { maxItems: 50 } }221      - { name: science translational medicine feed, url: "https://www.science.org/action/showFeed?type=etoc&feed=rss&jc=stm", type: RSS, connector: rss, tier: C }222      - { name: science immunology feed, url: "https://www.science.org/action/showFeed?type=etoc&feed=rss&jc=sciimmunol", type: RSS, connector: rss, tier: C }223      - { name: science robotics feed, url: "https://www.science.org/action/showFeed?type=etoc&feed=rss&jc=scirobotics", type: RSS, connector: rss, tier: C }224      - { name: science signaling feed, url: "https://www.science.org/action/showFeed?type=etoc&feed=rss&jc=signaling", type: RSS, connector: rss, tier: C }225  - id: cell-press226    extend: true227    country: US228    sensors:229      - { name: cell reports current issue feed, url: "https://www.cell.com/cell-reports/current.rss", type: RSS, connector: rss, tier: C, config: { maxItems: 100 } }230      - { name: cell reports in press feed, url: "https://www.cell.com/cell-reports/inpress.rss", type: RSS, connector: rss, tier: C }231      - { name: cell reports medicine current issue feed, url: "https://www.cell.com/cell-reports-medicine/current.rss", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }232      - { name: cell reports medicine in press feed, url: "https://www.cell.com/cell-reports-medicine/inpress.rss", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }233      - { name: neuron current issue feed, url: "https://www.cell.com/neuron/current.rss", type: RSS, connector: rss, tier: C }234      - { name: neuron in press feed, url: "https://www.cell.com/neuron/inpress.rss", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }235      - { name: immunity current issue feed, url: "https://www.cell.com/immunity/current.rss", type: RSS, connector: rss, tier: C }236      - { name: immunity in press feed, url: "https://www.cell.com/immunity/inpress.rss", type: RSS, connector: rss, tier: C }237      - { name: molecular cell current issue feed, url: "https://www.cell.com/molecular-cell/current.rss", type: RSS, connector: rss, tier: C }238      - { name: cancer cell current issue feed, url: "https://www.cell.com/cancer-cell/current.rss", type: RSS, connector: rss, tier: C }239      - { name: cancer cell in press feed, url: "https://www.cell.com/cancer-cell/inpress.rss", type: RSS, connector: rss, tier: C }240      - { name: cell metabolism current issue feed, url: "https://www.cell.com/cell-metabolism/current.rss", type: RSS, connector: rss, tier: C }241      - { name: cell metabolism in press feed, url: "https://www.cell.com/cell-metabolism/inpress.rss", type: RSS, connector: rss, tier: C }242      - { name: cell stem cell current issue feed, url: "https://www.cell.com/cell-stem-cell/current.rss", type: RSS, connector: rss, tier: C }243      - { name: current biology current issue feed, url: "https://www.cell.com/current-biology/current.rss", type: RSS, connector: rss, tier: C }244      - { name: med current issue feed, url: "https://www.cell.com/med/current.rss", type: RSS, connector: rss, tier: C }245      - { name: med in press feed, url: "https://www.cell.com/med/inpress.rss", type: RSS, connector: rss, tier: C }246      - { name: joule current issue feed, url: "https://www.cell.com/joule/current.rss", type: RSS, connector: rss, tier: C }247      - { name: matter current issue feed, url: "https://www.cell.com/matter/current.rss", type: RSS, connector: rss, tier: C }248      - { name: chem current issue feed, url: "https://www.cell.com/chem/current.rss", type: RSS, connector: rss, tier: C }249      - { name: patterns current issue feed, url: "https://www.cell.com/patterns/current.rss", type: RSS, connector: rss, tier: C }250  - id: the-lancet251    extend: true252    country: GB253    products:254      - { name: The Lancet Infectious Diseases, type: product }255      - { name: The Lancet Oncology, type: product }256      - { name: The Lancet Digital Health, type: product }257      - { name: eClinicalMedicine, type: product }258    sensors:259      - { name: lancet infectious diseases online first feed, url: "https://www.thelancet.com/rssfeed/laninf_online.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 50 } }260      - { name: lancet infectious diseases current issue feed, url: "https://www.thelancet.com/rssfeed/laninf_current.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }261      - { name: lancet oncology online first feed, url: "https://www.thelancet.com/rssfeed/lanonc_online.xml", type: RSS, connector: rss, tier: B }262      - { name: lancet oncology current issue feed, url: "https://www.thelancet.com/rssfeed/lanonc_current.xml", type: RSS, connector: rss, tier: C }263      - { name: lancet digital health online first feed, url: "https://www.thelancet.com/rssfeed/landig_online.xml", type: RSS, connector: rss, tier: B }264      - { name: lancet public health online first feed, url: "https://www.thelancet.com/rssfeed/lanpub_online.xml", type: RSS, connector: rss, tier: C }265      - { name: lancet global health online first feed, url: "https://www.thelancet.com/rssfeed/langlo_online.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }266      - { name: lancet neurology online first feed, url: "https://www.thelancet.com/rssfeed/laneur_online.xml", type: RSS, connector: rss, tier: C }267      - { name: lancet psychiatry online first feed, url: "https://www.thelancet.com/rssfeed/lanpsy_online.xml", type: RSS, connector: rss, tier: C }268      - { name: lancet respiratory medicine online first feed, url: "https://www.thelancet.com/rssfeed/lanres_online.xml", type: RSS, connector: rss, tier: C }269      - { name: lancet diabetes and endocrinology online first feed, url: "https://www.thelancet.com/rssfeed/landia_online.xml", type: RSS, connector: rss, tier: C }270      - { name: lancet microbe online first feed, url: "https://www.thelancet.com/rssfeed/lanmic_online.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }271      - { name: lancet child and adolescent health online first feed, url: "https://www.thelancet.com/rssfeed/lanchi_online.xml", type: RSS, connector: rss, tier: C }272      - { name: lancet healthy longevity online first feed, url: "https://www.thelancet.com/rssfeed/lanhl_online.xml", type: RSS, connector: rss, tier: C }273      - { name: lancet planetary health online first feed, url: "https://www.thelancet.com/rssfeed/lanplh_online.xml", type: RSS, connector: rss, tier: C }274      - { name: lancet rheumatology online first feed, url: "https://www.thelancet.com/rssfeed/lanrhe_online.xml", type: RSS, connector: rss, tier: C }275      - { name: lancet haematology online first feed, url: "https://www.thelancet.com/rssfeed/lanhae_online.xml", type: RSS, connector: rss, tier: C }276      - { name: lancet gastroenterology and hepatology online first feed, url: "https://www.thelancet.com/rssfeed/langas_online.xml", type: RSS, connector: rss, tier: C }277      - { name: lancet regional health europe online first feed, url: "https://www.thelancet.com/rssfeed/lanepe_online.xml", type: RSS, connector: rss, tier: C }278      - { name: lancet regional health southeast asia online first feed, url: "https://www.thelancet.com/rssfeed/lansea_online.xml", type: RSS, connector: rss, tier: C }279      - { name: lancet regional health western pacific online first feed, url: "https://www.thelancet.com/rssfeed/lanwpc_online.xml", type: RSS, connector: rss, tier: C }280      - { name: eclinicalmedicine online first feed, url: "https://www.thelancet.com/rssfeed/eclinm_online.xml", type: RSS, connector: rss, tier: C }281  - id: jama282    extend: true283    country: US284    sensors:285      - { name: jama internal medicine online first feed, url: "https://jamanetwork.com/rss/site_15/onlineFirst_71.xml", type: RSS, connector: rss, tier: B }286      - { name: jama oncology online first feed, url: "https://jamanetwork.com/rss/site_159/onlineFirst_174.xml", type: RSS, connector: rss, tier: B }287      - { name: jama cardiology online first feed, url: "https://jamanetwork.com/rss/site_192/onlineFirst_184.xml", type: RSS, connector: rss, tier: C }288      - { name: jama neurology online first feed, url: "https://jamanetwork.com/rss/site_16/onlineFirst_72.xml", type: RSS, connector: rss, tier: C }289      - { name: jama psychiatry online first feed, url: "https://jamanetwork.com/rss/site_14/onlineFirst_70.xml", type: RSS, connector: rss, tier: C }290      - { name: jama pediatrics online first feed, url: "https://jamanetwork.com/rss/site_19/onlineFirst_75.xml", type: RSS, connector: rss, tier: C }291      - { name: jama dermatology online first feed, url: "https://jamanetwork.com/rss/site_12/onlineFirst_68.xml", type: RSS, connector: rss, tier: C }292      - { name: jama ophthalmology online first feed, url: "https://jamanetwork.com/rss/site_17/onlineFirst_73.xml", type: RSS, connector: rss, tier: C }293      - { name: jama otolaryngology online first feed, url: "https://jamanetwork.com/rss/site_18/onlineFirst_74.xml", type: RSS, connector: rss, tier: C }294      - { name: jama surgery current issue feed, url: "https://jamanetwork.com/rss/site_20/76.xml", type: RSS, connector: rss, tier: C }295      - { name: jama health forum new online feed, url: "https://jamanetwork.com/rss/site_193/185.xml", type: RSS, connector: rss, tier: C }296  - id: bmj297    extend: true298    country: GB299    sensors:300      - { name: bmj open current issue feed, url: "https://bmjopen.bmj.com/rss/current.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 100 } }301      - { name: gut current issue feed, url: "https://gut.bmj.com/rss/current.xml", type: RSS, connector: rss, tier: C }302  - id: nejm303    extend: true304    country: US305    sensors:306      - { name: nejm catalyst feed, url: "https://catalyst.nejm.org/action/showFeed?type=etoc&feed=rss&jc=catalyst", type: RSS, connector: rss, tier: C }307  - id: plos308    extend: true309    country: US310    sensors:311      - { name: plos medicine feed, url: "https://journals.plos.org/plosmedicine/feed/atom", type: ATOM, connector: rss, tier: C }312      - { name: plos computational biology feed, url: "https://journals.plos.org/ploscompbiol/feed/atom", type: ATOM, connector: rss, tier: C }313      - { name: plos genetics feed, url: "https://journals.plos.org/plosgenetics/feed/atom", type: ATOM, connector: rss, tier: C }314      - { name: plos pathogens feed, url: "https://journals.plos.org/plospathogens/feed/atom", type: ATOM, connector: rss, tier: C }315      - { name: plos neglected tropical diseases feed, url: "https://journals.plos.org/plosntds/feed/atom", type: ATOM, connector: rss, tier: C }316      - { name: plos digital health feed, url: "https://journals.plos.org/digitalhealth/feed/atom", type: ATOM, connector: rss, tier: C }317      - { name: plos global public health feed, url: "https://journals.plos.org/globalpublichealth/feed/atom", type: ATOM, connector: rss, tier: C }318      - { name: plos climate feed, url: "https://journals.plos.org/climate/feed/atom", type: ATOM, connector: rss, tier: C }319  - id: frontiers320    extend: true321    country: CH322    sensors:323      - { name: frontiers in immunology feed, url: "https://www.frontiersin.org/journals/immunology/rss", type: RSS, connector: rss, tier: C }324      - { name: frontiers in medicine feed, url: "https://www.frontiersin.org/journals/medicine/rss", type: RSS, connector: rss, tier: C }325      - { name: frontiers in public health feed, url: "https://www.frontiersin.org/journals/public-health/rss", type: RSS, connector: rss, tier: C }326      - { name: frontiers in oncology feed, url: "https://www.frontiersin.org/journals/oncology/rss", type: RSS, connector: rss, tier: C }327      - { name: frontiers in neuroscience feed, url: "https://www.frontiersin.org/journals/neuroscience/rss", type: RSS, connector: rss, tier: C }328      - { name: frontiers in microbiology feed, url: "https://www.frontiersin.org/journals/microbiology/rss", type: RSS, connector: rss, tier: C }329  - id: wiley330    extend: true331    country: US332    products:333      - { name: Angewandte Chemie, type: product }334      - { name: Advanced Materials, type: product }335    sensors:336      - { name: angewandte chemie toc feed, url: "https://onlinelibrary.wiley.com/action/showFeed?jc=15213773&type=etoc&feed=rss", type: RSS, connector: rss, tier: C, config: { maxItems: 100 } }337      - { name: advanced materials toc feed, url: "https://onlinelibrary.wiley.com/action/showFeed?jc=15214095&type=etoc&feed=rss", type: RSS, connector: rss, tier: C, config: { maxItems: 100 } }338      - { name: advanced science toc feed, url: "https://onlinelibrary.wiley.com/action/showFeed?jc=21983844&type=etoc&feed=rss", type: RSS, connector: rss, tier: C, config: { maxItems: 100 } }339      - { name: small toc feed, url: "https://onlinelibrary.wiley.com/action/showFeed?jc=16136829&type=etoc&feed=rss", type: RSS, connector: rss, tier: C, config: { maxItems: 100 } }340      - { name: cancer (acs journal) toc feed, url: "https://onlinelibrary.wiley.com/action/showFeed?jc=10970142&type=etoc&feed=rss", type: RSS, connector: rss, tier: C }341      - { name: annals of neurology toc feed, url: "https://onlinelibrary.wiley.com/action/showFeed?jc=15318249&type=etoc&feed=rss", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }342  - id: aps343    name: American Physical Society344    domain: aps.org345    homepage: https://www.aps.org346    categories: [science, research]347    tier: C348    country: US349    aliases: [aps, physical review, physical review letters, prl]350    products:351      - { name: Physical Review Letters, type: product, aliases: [prl] }352      - { name: Physical Review X, type: product, aliases: [prx] }353      - { name: PRX Quantum, type: product }354      - { name: Reviews of Modern Physics, type: product, aliases: [rmp] }355    discover: { rss: false }356    llm: false357    notes: "feeds.aps.org recent-article feeds (100 items each) for the Physical Review family; Physics magazine highlights the notable papers."358    sensors:359      - { name: physical review letters recent feed, url: "https://feeds.aps.org/rss/recent/prl.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 100 } }360      - { name: physical review x recent feed, url: "https://feeds.aps.org/rss/recent/prx.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 100 } }361      - { name: prx quantum recent feed, url: "https://feeds.aps.org/rss/recent/prxquantum.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 100 } }362      - { name: physical review research recent feed, url: "https://feeds.aps.org/rss/recent/prresearch.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 100 } }363      - { name: physical review applied recent feed, url: "https://feeds.aps.org/rss/recent/prapplied.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 100 } }364      - { name: reviews of modern physics recent feed, url: "https://feeds.aps.org/rss/recent/rmp.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 100 } }365      - { name: physics magazine feed, url: "https://feeds.aps.org/rss/recent/physics.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 100 } }366  - id: iop-publishing367    name: IOP Publishing368    domain: iopscience.iop.org369    homepage: https://iopscience.iop.org370    categories: [science, research]371    tier: C372    country: GB373    aliases: [iop publishing, iopscience, institute of physics publishing]374    products:375      - { name: New Journal of Physics, type: product, aliases: [njp] }376      - { name: Machine Learning Science and Technology, type: product, aliases: [mlst] }377      - { name: Nuclear Fusion, type: product }378    discover: { rss: false }379    notes: "Per-journal latest-papers feeds by ISSN."380    sensors:381      - { name: new journal of physics feed, url: "https://iopscience.iop.org/journal/rss/1367-2630", type: RSS, connector: rss, tier: C }382      - { name: classical and quantum gravity feed, url: "https://iopscience.iop.org/journal/rss/0264-9381", type: RSS, connector: rss, tier: C }383      - { name: environmental research letters feed, url: "https://iopscience.iop.org/journal/rss/1748-9326", type: RSS, connector: rss, tier: C }384      - { name: machine learning science and technology feed, url: "https://iopscience.iop.org/journal/rss/2632-2153", type: RSS, connector: rss, tier: C }385      - { name: quantum science and technology feed, url: "https://iopscience.iop.org/journal/rss/2058-9565", type: RSS, connector: rss, tier: C }386      - { name: reports on progress in physics feed, url: "https://iopscience.iop.org/journal/rss/0034-4885", type: RSS, connector: rss, tier: C }387      - { name: nuclear fusion feed, url: "https://iopscience.iop.org/journal/rss/1741-4326", type: RSS, connector: rss, tier: C }388      - { name: plasma physics and controlled fusion feed, url: "https://iopscience.iop.org/journal/rss/0741-3335", type: RSS, connector: rss, tier: C }389  - id: rsc390    name: Royal Society of Chemistry391    domain: rsc.org392    homepage: https://www.rsc.org393    categories: [science, research]394    tier: C395    country: GB396    aliases: [rsc, royal society of chemistry, rsc publishing]397    products:398      - { name: Chemical Science, type: product }399      - { name: Chemical Communications, type: product, aliases: [chemcomm] }400      - { name: Energy and Environmental Science, type: product }401    discover: { rss: false }402    llm: false403    notes: "feeds.rsc.org latest-articles feeds (100 items each) are served over plain http only; https resets the connection (2026-09-11)."404    sensors:405      - { name: chemical science latest articles feed, url: "http://feeds.rsc.org/rss/sc", type: RSS, connector: rss, tier: C, config: { maxItems: 100 } }406      - { name: chemical communications latest articles feed, url: "http://feeds.rsc.org/rss/cc", type: RSS, connector: rss, tier: C, config: { maxItems: 100 } }407      - { name: energy and environmental science latest articles feed, url: "http://feeds.rsc.org/rss/ee", type: RSS, connector: rss, tier: C, config: { maxItems: 100 } }408      - { name: journal of materials chemistry a latest articles feed, url: "http://feeds.rsc.org/rss/ta", type: RSS, connector: rss, tier: C, config: { maxItems: 100 } }409  - id: asco410    name: American Society of Clinical Oncology411    domain: asco.org412    homepage: https://www.asco.org413    categories: [health, research, science]414    tier: C415    country: US416    aliases: [asco, journal of clinical oncology, jco, ascopubs]417    products:418      - { name: Journal of Clinical Oncology, type: product, aliases: [jco] }419      - { name: JCO Precision Oncology, type: product }420    discover: { rss: false }421    notes: "ascopubs.org table-of-contents feeds for the JCO family."422    sensors:423      - { name: journal of clinical oncology toc feed, url: "https://ascopubs.org/action/showFeed?type=etoc&feed=rss&jc=jco", type: RSS, connector: rss, tier: B, config: { maxItems: 100 } }424      - { name: jco precision oncology toc feed, url: "https://ascopubs.org/action/showFeed?type=etoc&feed=rss&jc=po", type: RSS, connector: rss, tier: C }425      - { name: jco oncology practice toc feed, url: "https://ascopubs.org/action/showFeed?type=etoc&feed=rss&jc=op", type: RSS, connector: rss, tier: C, config: { maxItems: 100 } }426      - { name: jco global oncology toc feed, url: "https://ascopubs.org/action/showFeed?type=etoc&feed=rss&jc=go", type: RSS, connector: rss, tier: C }427  - id: acp428    name: American College of Physicians429    domain: acpjournals.org430    homepage: https://www.acpjournals.org431    categories: [health, research]432    tier: C433    country: US434    aliases: [acp, annals of internal medicine, acp journals]435    products:436      - { name: Annals of Internal Medicine, type: product }437    discover: { rss: false }438    sensors:439      - { name: annals of internal medicine toc feed, url: "https://www.acpjournals.org/action/showFeed?type=etoc&feed=rss&jc=aim", type: RSS, connector: rss, tier: B, config: { maxItems: 100 } }440  - id: jci441    name: Journal of Clinical Investigation442    domain: jci.org443    homepage: https://www.jci.org444    categories: [health, research]445    tier: C446    country: US447    aliases: [jci, journal of clinical investigation, american society for clinical investigation]448    discover: { rss: false }449    sensors:450      - { name: current issue feed, url: "https://www.jci.org/rss/current", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }451  - id: health-affairs452    name: Health Affairs453    domain: healthaffairs.org454    homepage: https://www.healthaffairs.org455    categories: [health, research, politics]456    tier: C457    country: US458    aliases: [health affairs, project hope]459    discover: { rss: false }460    sensors:461      - { name: journal toc feed, url: "https://www.healthaffairs.org/action/showFeed?type=etoc&feed=rss&jc=hlthaff", type: RSS, connector: rss, tier: C }462  - id: cochrane463    name: Cochrane464    domain: cochrane.org465    homepage: https://www.cochrane.org466    categories: [health, research, ngo]467    tier: C468    weight: 1.1469    country: GB470    aliases: [cochrane, cochrane collaboration, cochrane library]471    products:472      - { name: Cochrane Library, type: product, aliases: [cochrane database of systematic reviews, cdsr] }473    discover: { rss: false }474    notes: "cochranelibrary.com feeds return 412 to non-browser clients; cochrane.org news + evidence (plain-language review summaries) feeds are used instead."475    sensors:476      - { name: news feed, url: "https://www.cochrane.org/news/rss.xml", type: RSS, connector: rss, tier: C }477      - { name: evidence feed, url: "https://www.cochrane.org/rss.xml", type: RSS, connector: rss, tier: C }478  - id: f1000479    name: F1000Research480    domain: f1000research.com481    homepage: https://f1000research.com482    categories: [research, science]483    tier: C484    country: GB485    aliases: [f1000, f1000research, faculty of 1000]486    discover: { rss: false }487    llm: false488    notes: "Open research publishing platform (Taylor & Francis); latest-articles feed."489    sensors:490      - { name: latest articles feed, url: "https://f1000research.com/rss/latest", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }491  - id: wellcome492    extend: true493    country: GB494    products:495      - { name: Wellcome Open Research, type: service }496    sensors:497      - { name: wellcome open research latest feed, url: "https://wellcomeopenresearch.org/rss/latest", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }498499  # ───────────────────────── clinical trials, drugs & devices ─────────────────────────500  - id: clinicaltrials501    extend: true502    country: US503    notes: "45-science-health: v2 API with fields= to keep payloads small — stopped trials (terminated/withdrawn/suspended), newly posted studies, results first posted, per-sponsor and per-condition phase 3 streams. Compare overallStatus for status changes."504    sensors:505      - { name: stopped trials (terminated / withdrawn / suspended), url: "https://clinicaltrials.gov/api/v2/studies?filter.overallStatus=TERMINATED,WITHDRAWN,SUSPENDED&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName,WhyStopped", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle} ({protocolSection.statusModule.overallStatus})", summaryField: protocolSection.statusModule.whyStopped, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }506      - { name: newly posted studies, url: "https://clinicaltrials.gov/api/v2/studies?sort=StudyFirstPostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,StudyFirstPostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.studyFirstPostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }507      - { name: results first posted, url: "https://clinicaltrials.gov/api/v2/studies?filter.advanced=AREA%5BResultsFirstPostDate%5DRANGE%5BMIN,MAX%5D&sort=ResultsFirstPostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,ResultsFirstPostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.resultsFirstPostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }508      - { name: alzheimer phase 3 trials, url: "https://clinicaltrials.gov/api/v2/studies?query.cond=Alzheimer&query.term=AREA%5BPhase%5DPHASE3&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.sponsorCollaboratorsModule.leadSponsor.name, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }509      - { name: obesity phase 3 trials, url: "https://clinicaltrials.gov/api/v2/studies?query.cond=obesity&query.term=AREA%5BPhase%5DPHASE3&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.sponsorCollaboratorsModule.leadSponsor.name, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }510      - { name: cancer phase 3 trials, url: "https://clinicaltrials.gov/api/v2/studies?query.cond=cancer&query.term=AREA%5BPhase%5DPHASE3&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.sponsorCollaboratorsModule.leadSponsor.name, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }511      - { name: pfizer trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Pfizer&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }512      - { name: moderna trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Moderna&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }513      - { name: eli lilly trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Eli%20Lilly&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }514      - { name: novo nordisk trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Novo%20Nordisk&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }515      - { name: astrazeneca trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=AstraZeneca&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }516      - { name: roche trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Hoffmann-La%20Roche&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }517      - { name: novartis trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Novartis&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }518      - { name: merck (msd) trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Merck%20Sharp%20%26%20Dohme&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }519      - { name: janssen (j&j) trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Janssen&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }520      - { name: abbvie trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=AbbVie&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }521      - { name: amgen trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Amgen&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }522      - { name: gilead trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Gilead&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }523      - { name: regeneron trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Regeneron&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }524      - { name: vertex trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Vertex&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }525      - { name: biontech trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=BioNTech&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }526      - { name: bristol myers squibb trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Bristol-Myers%20Squibb&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }527      - { name: gsk trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=GlaxoSmithKline&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }528      - { name: sanofi trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Sanofi&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }529      - { name: bayer trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Bayer&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }530      - { name: takeda trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Takeda&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }531      - { name: boehringer ingelheim trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Boehringer%20Ingelheim&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }532      - { name: biogen trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Biogen&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }533      - { name: daiichi sankyo trials, url: "https://clinicaltrials.gov/api/v2/studies?query.spons=Daiichi%20Sankyo&sort=LastUpdatePostDate:desc&pageSize=50&format=json&fields=NCTId,BriefTitle,OverallStatus,LastUpdatePostDate,Condition,Phase,LeadSponsorName", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: studies, keyField: protocolSection.identificationModule.nctId, titleTemplate: "{protocolSection.identificationModule.nctId} — {protocolSection.identificationModule.briefTitle}", summaryField: protocolSection.conditionsModule.conditions, dateField: protocolSection.statusModule.lastUpdatePostDateStruct.date, urlTemplate: "https://clinicaltrials.gov/study/{key}", compareFields: [protocolSection.statusModule.overallStatus], maxItems: 50, noConditional: true } }534  - id: fda535    extend: true536    country: US537    products:538      - { name: openFDA, type: API, aliases: [open fda, api.fda.gov] }539      - { name: Drugs@FDA, type: service }540    notes: "45-science-health: openFDA approvals/clearances (Drugs@FDA submissions, 510(k) clearances), device recalls (CDRH res), drug shortages, new NDC listings; CDER/CBER what's-new RSS; novel drug approvals + advisory committee calendar pages. fda.gov HTML answers 403 on some paths (bot management) — only the ones that validated are kept."541    sensors:542      - { name: openfda drugs@fda submissions, url: "https://api.fda.gov/drug/drugsfda.json?sort=submissions.submission_status_date:desc&limit=50", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: results, keyField: application_number, titleTemplate: "{application_number} — {openfda.brand_name} ({sponsor_name})", summaryField: openfda.generic_name, compareFields: [submissions], maxItems: 50 } }543      - { name: openfda 510(k) clearances, url: "https://api.fda.gov/device/510k.json?sort=decision_date:desc&limit=50", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: results, keyField: k_number, titleTemplate: "{k_number} — {device_name} ({applicant})", summaryField: decision_description, dateField: decision_date, urlTemplate: "https://www.accessdata.fda.gov/scripts/cdrh/cfdocs/cfpmn/pmn.cfm?ID={key}", compareFields: [decision_code], maxItems: 50 } }544      - { name: openfda device recalls (cdrh), url: "https://api.fda.gov/device/recall.json?sort=event_date_posted:desc&limit=50", type: REST_API, connector: jsonlist, tier: A, config: { itemsPath: results, keyField: cfres_id, titleTemplate: "{recalling_firm}: {product_description}", summaryField: reason_for_recall, dateField: event_date_posted, urlTemplate: "https://www.accessdata.fda.gov/scripts/cdrh/cfdocs/cfres/res.cfm?id={key}", compareFields: [recall_status], maxItems: 50 } }545      - { name: openfda drug shortages, url: "https://api.fda.gov/drug/shortages.json?sort=update_date:desc&limit=50", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: results, keyField: package_ndc, titleTemplate: "{generic_name} ({company_name}) — {status} / {availability}", summaryField: presentation, dateField: update_date, compareFields: [status, availability, update_type], maxItems: 50 } }546      - { name: openfda new ndc listings, url: "https://api.fda.gov/drug/ndc.json?sort=marketing_start_date:desc&limit=50", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: results, keyField: product_ndc, titleTemplate: "{brand_name} ({generic_name}) — {labeler_name}", summaryField: dosage_form, compareFields: [marketing_category], maxItems: 50 } }547      - { name: drugs what's new feed, url: "https://www.fda.gov/about-fda/contact-fda/stay-informed/rss-feeds/drugs/rss.xml", type: RSS, connector: rss, tier: A }548      - { name: biologics what's new feed, url: "https://www.fda.gov/about-fda/contact-fda/stay-informed/rss-feeds/biologics/rss.xml", type: RSS, connector: rss, tier: A }549      - { name: advisory committee calendar, url: "https://www.fda.gov/advisory-committees/advisory-committee-calendar", type: HTML, connector: http, tier: C }550      - { name: medical device recalls page, url: "https://www.fda.gov/medical-devices/medical-device-safety/medical-device-recalls", type: HTML, connector: http, tier: B }551  - id: health-canada552    extend: true553    country: CA554    sensors:555      - { name: santé canada nouvelles (fr), url: "https://api.io.canada.ca/io-server/gc/news/fr/v2?dept=healthcanada,publichealthagencyofcanada&sort=publishedDate&orderBy=desc&pick=50&format=atom&atomtitle=Sante%20Canada", type: ATOM, connector: rss, tier: B }556  - id: phac557    extend: true558    country: CA559    sensors:560      - { name: statements feed, url: "https://api.io.canada.ca/io-server/gc/news/en/v2?dept=publichealthagencyofcanada&type=statements&sort=publishedDate&orderBy=desc&pick=50&format=atom&atomtitle=PHAC%20statements", type: ATOM, connector: rss, tier: A }561      - { name: respiratory virus detections weekly report, url: "https://www.canada.ca/en/public-health/services/surveillance/respiratory-virus-detections-canada.html", type: HTML, connector: http, tier: C }562      - { name: rapid risk assessments, url: "https://www.canada.ca/en/public-health/services/emergency-preparedness-response/rapid-risk-assessments-public-health-professionals.html", type: HTML, connector: http, tier: B }563  - id: gsk564    extend: true565    country: GB566    sensors:567      - { name: media feed, url: "https://www.gsk.com/en-gb/media/rss/", type: RSS, connector: rss, tier: B, config: { maxItems: 50 } }568569  # ───────────────────────── public health agencies ─────────────────────────570  - id: cdc571    extend: true572    country: US573    products:574      - { name: Health Alert Network, type: service, aliases: [han] }575      - { name: MMWR, type: product, aliases: [morbidity and mortality weekly report] }576      - { name: Emerging Infectious Diseases, type: product, aliases: [eid journal] }577    sensors:578      - { name: health alert network feed, url: "https://tools.cdc.gov/api/v2/resources/media/320567.rss", type: RSS, connector: rss, tier: A, config: { maxItems: 50 } }579      - { name: mmwr feed, url: "https://www.cdc.gov/mmwr/rss/mmwr.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 100 } }580      - { name: us outbreaks feed, url: "https://tools.cdc.gov/api/v2/resources/media/285676.rss", type: RSS, connector: rss, tier: A }581      - { name: international outbreaks feed, url: "https://tools.cdc.gov/api/v2/resources/media/733939.rss", type: RSS, connector: rss, tier: A }582      - { name: salmonella outbreak updates feed, url: "https://tools.cdc.gov/api/v2/resources/media/342774.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 50 } }583      - { name: e. coli outbreak updates feed, url: "https://tools.cdc.gov/api/v2/resources/media/342773.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 50 } }584      - { name: listeria outbreak updates feed, url: "https://tools.cdc.gov/api/v2/resources/media/321471.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 50 } }585      - { name: mpox updates feed, url: "https://tools.cdc.gov/api/v2/resources/media/730281.rss", type: RSS, connector: rss, tier: C }586      - { name: seasonal flu what's new feed, url: "https://tools.cdc.gov/api/v2/resources/media/277692.rss", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }587      - { name: travel health notices feed, url: "https://wwwnc.cdc.gov/travel/rss/notices.xml", type: RSS, connector: rss, tier: B }588      - { name: eid journal ahead of print feed, url: "https://wwwnc.cdc.gov/eid/rss/ahead-of-print.xml", type: RSS, connector: rss, tier: C }589  - id: paho590    extend: true591    country: INT592    sensors:593      - { name: epidemiological alerts and updates, url: "https://www.paho.org/en/epidemiological-alerts-and-updates", type: HTML, connector: http, tier: B }594  - id: unaids595    extend: true596    country: INT597    sensors:598      - { name: news feed, url: "https://www.unaids.org/en/rss.xml", type: RSS, connector: rss, tier: B }599600  # ───────────────────────── space & earth observation ─────────────────────────601  - id: nasa602    extend: true603    country: US604    products:605      - { name: Artemis, type: product }606      - { name: International Space Station, type: product, aliases: [iss] }607      - { name: Earth Observatory, type: service }608    sensors:609      - { name: missions feed, url: "https://www.nasa.gov/missions/feed/", type: RSS, connector: rss, tier: B }610      - { name: humans in space feed, url: "https://www.nasa.gov/humans-in-space/feed/", type: RSS, connector: rss, tier: B }611      - { name: technology feed, url: "https://www.nasa.gov/technology/feed/", type: RSS, connector: rss, tier: C }612      - { name: artemis blog feed, url: "https://blogs.nasa.gov/artemis/feed/", type: RSS, connector: rss, tier: A }613      - { name: space station blog feed, url: "https://blogs.nasa.gov/spacestation/feed/", type: RSS, connector: rss, tier: B }614      - { name: mars exploration news feed, url: "https://mars.nasa.gov/rss/api/?feed=news&category=all&feedtype=rss", type: RSS, connector: rss, tier: B }615      - { name: earth observatory natural hazards feed, url: "https://earthobservatory.nasa.gov/feeds/natural-hazards.rss", type: RSS, connector: rss, tier: B }616      - { name: earth observatory feed, url: "https://earthobservatory.nasa.gov/feeds/earth-observatory.rss", type: RSS, connector: rss, tier: C }617  - id: esa618    extend: true619    country: INT620    sensors:621      - { name: space science feed, url: "https://www.esa.int/rssfeed/Our_Activities/Space_Science", type: RSS, connector: rss, tier: B }622      - { name: human and robotic exploration feed, url: "https://www.esa.int/rssfeed/Our_Activities/Human_and_Robotic_Exploration", type: RSS, connector: rss, tier: B }623      - { name: observing the earth feed, url: "https://www.esa.int/rssfeed/Our_Activities/Observing_the_Earth", type: RSS, connector: rss, tier: C }624      - { name: space safety feed, url: "https://www.esa.int/rssfeed/Our_Activities/Space_Safety", type: RSS, connector: rss, tier: B }625      - { name: space transportation feed, url: "https://www.esa.int/rssfeed/Our_Activities/Space_Transportation", type: RSS, connector: rss, tier: B }626      - { name: operations feed, url: "https://www.esa.int/rssfeed/Our_Activities/Operations", type: RSS, connector: rss, tier: C }627      - { name: navigation feed, url: "https://www.esa.int/rssfeed/Our_Activities/Navigation", type: RSS, connector: rss, tier: C }628  - id: celestrak629    name: CelesTrak630    domain: celestrak.org631    homepage: https://celestrak.org632    categories: [space, open-data, science]633    tier: C634    country: US635    aliases: [celestrak, satcat, norad elements]636    products:637      - { name: CelesTrak GP API, type: API }638    discover: { rss: false }639    llm: false640    notes: "Orbital element sets. The last-30-days group lists every object catalogued in the past month — a new NORAD id = a new satellite/debris object after a launch."641    sensors:642      - { name: objects launched in the last 30 days, url: "https://celestrak.org/NORAD/elements/gp.php?GROUP=last-30-days&FORMAT=json", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: "", keyField: NORAD_CAT_ID, titleTemplate: "{OBJECT_NAME} ({OBJECT_ID})", dateField: EPOCH, urlTemplate: "https://celestrak.org/satcat/table-satcat.php?CATNR={key}", compareFields: [OBJECT_NAME], maxItems: 400 } }643  - id: ligo644    name: LIGO Scientific Collaboration645    domain: ligo.org646    homepage: https://www.ligo.org647    categories: [science, research, space]648    tier: C649    weight: 1.1650    country: US651    aliases: [ligo, gracedb, ligo-virgo-kagra, lvk]652    products:653      - { name: GraceDB, type: service, aliases: [gravitational-wave candidate event database] }654    discover: { rss: false }655    notes: "GraceDB public superevents (production candidates only; mock MDC events excluded by query). A new S-id = a new gravitational-wave candidate."656    sensors:657      - { name: gracedb production superevents, url: "https://gracedb.ligo.org/api/superevents/?query=category%3A%20Production&format=json", type: REST_API, connector: jsonlist, tier: C, config: { itemsPath: superevents, keyField: superevent_id, titleTemplate: "{superevent_id} — gravitational-wave candidate (FAR {far})", dateField: created, urlTemplate: "https://gracedb.ligo.org/superevents/{key}/view/", compareFields: [gw_id, labels], maxItems: 50 } }658  - id: usgs659    extend: true660    country: US661    products:662      - { name: Volcano Hazards Program, type: service, aliases: [vhp, hans] }663    sensors:664      - { name: elevated volcano alert levels (hans), url: "https://volcanoes.usgs.gov/hans-public/api/volcano/getElevatedVolcanoes", type: REST_API, connector: jsonlist, tier: A, config: { itemsPath: "", keyField: vnum, titleTemplate: "{volcano_name} — {color_code} / {alert_level} ({obs_fullname})", urlField: notice_url, dateField: sent_utc, compareFields: [color_code, alert_level, notice_identifier], maxItems: 100 } }665      - { name: elevated volcano cap notices (hans), url: "https://volcanoes.usgs.gov/hans-public/api/volcano/getCapElevated", type: REST_API, connector: jsonlist, tier: B, config: { itemsPath: "", keyField: vnum, titleTemplate: "{volcano_name} — {color_code} / {alert_level}", urlField: notice_url, dateField: sent_utc, compareFields: [color_code, alert_level, notice_identifier], maxItems: 100 } }666  - id: noaa667    extend: true668    country: US669    sensors:670      - { name: noaa news feed, url: "https://www.noaa.gov/rss.xml", type: RSS, connector: rss, tier: B }671672  # ───────────────────────── research institutes ─────────────────────────673  - id: cshl674    name: Cold Spring Harbor Laboratory675    domain: cshl.edu676    homepage: https://www.cshl.edu677    categories: [research, science, health]678    tier: C679    country: US680    aliases: [cshl, cold spring harbor laboratory, cold spring harbor]681    discover: { rss: true }682    sensors:683      - { name: news feed, url: "https://www.cshl.edu/feed/", type: RSS, connector: rss, tier: C }684  - id: oicr685    name: Ontario Institute for Cancer Research686    domain: oicr.on.ca687    homepage: https://oicr.on.ca688    categories: [research, health]689    tier: C690    country: CA691    aliases: [oicr, ontario institute for cancer research]692    discover: { rss: true }693    sensors:694      - { name: news feed, url: "https://oicr.on.ca/feed/", type: RSS, connector: rss, tier: C }695696  # ───────────────────────── science & health media (third-party, heuristics only) ─────────────────────────697  - id: stat-news698    name: STAT699    domain: statnews.com700    homepage: https://www.statnews.com701    categories: [media, health, pharma]702    tier: B703    country: US704    first_party: false705    llm: false706    aliases: [stat, stat news, statnews]707    discover: { rss: false }708    sensors:709      - { name: feed, url: "https://www.statnews.com/feed/", type: RSS, connector: rss, tier: B }710  - id: fierce-pharma711    name: Fierce Pharma712    domain: fiercepharma.com713    homepage: https://www.fiercepharma.com714    categories: [media, pharma]715    tier: B716    country: US717    first_party: false718    llm: false719    aliases: [fierce pharma, fiercepharma]720    discover: { rss: false }721    sensors:722      - { name: feed, url: "https://www.fiercepharma.com/rss/xml", type: RSS, connector: rss, tier: B }723  - id: fierce-biotech724    name: Fierce Biotech725    domain: fiercebiotech.com726    homepage: https://www.fiercebiotech.com727    categories: [media, pharma, science]728    tier: B729    country: US730    first_party: false731    llm: false732    aliases: [fierce biotech, fiercebiotech]733    discover: { rss: false }734    sensors:735      - { name: feed, url: "https://www.fiercebiotech.com/rss/xml", type: RSS, connector: rss, tier: B }736  - id: endpoints-news737    name: Endpoints News738    domain: endpts.com739    homepage: https://endpts.com740    categories: [media, pharma]741    tier: B742    country: US743    first_party: false744    llm: false745    aliases: [endpoints, endpoints news, endpts]746    discover: { rss: false }747    sensors:748      - { name: feed, url: "https://endpts.com/feed/", type: RSS, connector: rss, tier: B }749  - id: biopharma-dive750    name: BioPharma Dive751    domain: biopharmadive.com752    homepage: https://www.biopharmadive.com753    categories: [media, pharma]754    tier: B755    country: US756    first_party: false757    llm: false758    aliases: [biopharma dive, biopharmadive]759    discover: { rss: false }760    sensors:761      - { name: news feed, url: "https://www.biopharmadive.com/feeds/news/", type: RSS, connector: rss, tier: B }762  - id: medpage-today763    name: MedPage Today764    domain: medpagetoday.com765    homepage: https://www.medpagetoday.com766    categories: [media, health]767    tier: B768    country: US769    first_party: false770    llm: false771    aliases: [medpage today, medpage]772    discover: { rss: false }773    sensors:774      - { name: headlines feed, url: "https://www.medpagetoday.com/rss/headlines.xml", type: RSS, connector: rss, tier: B }775  - id: kff-health-news776    name: KFF Health News777    domain: kffhealthnews.org778    homepage: https://kffhealthnews.org779    categories: [media, health, politics]780    tier: B781    country: US782    first_party: false783    llm: false784    aliases: [kff health news, kaiser health news, khn]785    discover: { rss: false }786    sensors:787      - { name: feed, url: "https://kffhealthnews.org/feed/", type: RSS, connector: rss, tier: B }788  - id: cidrap789    name: CIDRAP790    domain: cidrap.umn.edu791    homepage: https://www.cidrap.umn.edu792    categories: [media, health, research]793    tier: B794    weight: 1.1795    country: US796    first_party: false797    llm: false798    aliases: [cidrap, center for infectious disease research and policy]799    discover: { rss: false }800    notes: "University of Minnesota infectious-disease news service — early coverage of outbreaks (H5N1, measles, mpox)."801    sensors:802      - { name: news feed, url: "https://www.cidrap.umn.edu/rss.xml", type: RSS, connector: rss, tier: B }803  - id: drugs-com804    name: Drugs.com805    domain: drugs.com806    homepage: https://www.drugs.com807    categories: [media, pharma, health]808    tier: B809    country: US810    first_party: false811    llm: false812    aliases: [drugs.com]813    discover: { rss: false }814    notes: "Aggregates FDA new drug approvals and safety alerts into clean feeds — third-party mirror of official actions."815    sensors:816      - { name: new drug approvals feed, url: "https://www.drugs.com/feeds/new_drug_approvals.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 50 } }817      - { name: fda alerts feed, url: "https://www.drugs.com/feeds/fda_alerts.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 50 } }818      - { name: medical news feed, url: "https://www.drugs.com/feeds/medical_news.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }819  - id: medical-xpress820    name: Medical Xpress821    domain: medicalxpress.com822    homepage: https://medicalxpress.com823    categories: [media, health, science]824    tier: C825    country: GB826    first_party: false827    llm: false828    aliases: [medical xpress, medicalxpress]829    discover: { rss: false }830    sensors:831      - { name: feed, url: "https://medicalxpress.com/rss-feed/", type: RSS, connector: rss, tier: C }832  - id: genengnews833    name: Genetic Engineering & Biotechnology News834    domain: genengnews.com835    homepage: https://www.genengnews.com836    categories: [media, science, pharma]837    tier: C838    country: US839    first_party: false840    llm: false841    aliases: [gen, genengnews, genetic engineering and biotechnology news]842    discover: { rss: false }843    sensors:844      - { name: feed, url: "https://www.genengnews.com/feed/", type: RSS, connector: rss, tier: C }845  - id: labiotech846    name: Labiotech.eu847    domain: labiotech.eu848    homepage: https://www.labiotech.eu849    categories: [media, pharma, science]850    tier: C851    country: DE852    first_party: false853    llm: false854    aliases: [labiotech]855    discover: { rss: false }856    sensors:857      - { name: feed, url: "https://www.labiotech.eu/feed/", type: RSS, connector: rss, tier: C }858  - id: pharmaceutical-technology859    name: Pharmaceutical Technology860    domain: pharmaceutical-technology.com861    homepage: https://www.pharmaceutical-technology.com862    categories: [media, pharma]863    tier: C864    country: GB865    first_party: false866    llm: false867    aliases: [pharmaceutical technology, globaldata pharma]868    discover: { rss: false }869    sensors:870      - { name: feed, url: "https://www.pharmaceutical-technology.com/feed/", type: RSS, connector: rss, tier: C }871  - id: clinical-trials-arena872    name: Clinical Trials Arena873    domain: clinicaltrialsarena.com874    homepage: https://www.clinicaltrialsarena.com875    categories: [media, pharma, health]876    tier: C877    country: GB878    first_party: false879    llm: false880    aliases: [clinical trials arena]881    discover: { rss: false }882    sensors:883      - { name: feed, url: "https://www.clinicaltrialsarena.com/feed/", type: RSS, connector: rss, tier: C }884  - id: medical-device-network885    name: Medical Device Network886    domain: medicaldevice-network.com887    homepage: https://www.medicaldevice-network.com888    categories: [media, health]889    tier: C890    country: GB891    first_party: false892    llm: false893    aliases: [medical device network]894    discover: { rss: false }895    sensors:896      - { name: feed, url: "https://www.medicaldevice-network.com/feed/", type: RSS, connector: rss, tier: C }897  - id: pharmatimes898    name: PharmaTimes899    domain: pharmatimes.com900    homepage: https://www.pharmatimes.com901    categories: [media, pharma]902    tier: C903    country: GB904    first_party: false905    llm: false906    aliases: [pharmatimes, pharma times]907    discover: { rss: false }908    sensors:909      - { name: feed, url: "https://www.pharmatimes.com/rss", type: RSS, connector: rss, tier: C }910  - id: science-news911    name: Science News912    domain: sciencenews.org913    homepage: https://www.sciencenews.org914    categories: [media, science]915    tier: B916    country: US917    first_party: false918    llm: false919    aliases: [science news, society for science]920    discover: { rss: false }921    sensors:922      - { name: feed, url: "https://www.sciencenews.org/feed", type: RSS, connector: rss, tier: B }923  - id: quanta-magazine924    name: Quanta Magazine925    domain: quantamagazine.org926    homepage: https://www.quantamagazine.org927    categories: [media, science]928    tier: C929    country: US930    first_party: false931    llm: false932    aliases: [quanta, quanta magazine]933    discover: { rss: false }934    sensors:935      - { name: feed, url: "https://www.quantamagazine.org/feed/", type: RSS, connector: rss, tier: C }936  - id: phys-org937    name: Phys.org938    domain: phys.org939    homepage: https://phys.org940    categories: [media, science]941    tier: C942    country: GB943    first_party: false944    llm: false945    aliases: [phys.org, physorg, science x]946    discover: { rss: false }947    sensors:948      - { name: feed, url: "https://phys.org/rss-feed/", type: RSS, connector: rss, tier: C }949  - id: sciencedaily950    name: ScienceDaily951    domain: sciencedaily.com952    homepage: https://www.sciencedaily.com953    categories: [media, science]954    tier: C955    country: US956    first_party: false957    llm: false958    aliases: [sciencedaily, science daily]959    discover: { rss: false }960    sensors:961      - { name: all feed, url: "https://www.sciencedaily.com/rss/all.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 60 } }962  - id: physics-world963    name: Physics World964    domain: physicsworld.com965    homepage: https://physicsworld.com966    categories: [media, science]967    tier: C968    country: GB969    first_party: false970    llm: false971    aliases: [physics world]972    discover: { rss: false }973    sensors:974      - { name: feed, url: "https://physicsworld.com/feed/", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }975  - id: undark976    name: Undark977    domain: undark.org978    homepage: https://undark.org979    categories: [media, science]980    tier: C981    country: US982    first_party: false983    llm: false984    aliases: [undark, undark magazine]985    discover: { rss: false }986    sensors:987      - { name: feed, url: "https://undark.org/feed/", type: RSS, connector: rss, tier: C }988  - id: spacenews989    name: SpaceNews990    domain: spacenews.com991    homepage: https://spacenews.com992    categories: [media, space]993    tier: B994    country: US995    first_party: false996    llm: false997    aliases: [spacenews, space news]998    discover: { rss: false }999    sensors:1000      - { name: feed, url: "https://spacenews.com/feed/", type: RSS, connector: rss, tier: B }1001  - id: nasaspaceflight1002    name: NASASpaceflight1003    domain: nasaspaceflight.com1004    homepage: https://www.nasaspaceflight.com1005    categories: [media, space]1006    tier: B1007    country: US1008    first_party: false1009    llm: false1010    aliases: [nasaspaceflight, nsf spaceflight]1011    discover: { rss: false }1012    sensors:1013      - { name: feed, url: "https://www.nasaspaceflight.com/feed/", type: RSS, connector: rss, tier: B }1014  - id: spaceflight-now1015    name: Spaceflight Now1016    domain: spaceflightnow.com1017    homepage: https://spaceflightnow.com1018    categories: [media, space]1019    tier: B1020    country: US1021    first_party: false1022    llm: false1023    aliases: [spaceflight now]1024    discover: { rss: false }1025    sensors:1026      - { name: feed, url: "https://spaceflightnow.com/feed/", type: RSS, connector: rss, tier: B }1027  - id: space-com1028    name: Space.com1029    domain: space.com1030    homepage: https://www.space.com1031    categories: [media, space]1032    tier: C1033    country: US1034    first_party: false1035    llm: false1036    aliases: [space.com]1037    discover: { rss: false }1038    sensors:1039      - { name: all feed, url: "https://www.space.com/feeds/all", type: RSS, connector: rss, tier: C, config: { maxItems: 50 } }1040  - id: universe-today1041    name: Universe Today1042    domain: universetoday.com1043    homepage: https://www.universetoday.com1044    categories: [media, space]1045    tier: C1046    country: CA1047    first_party: false1048    llm: false1049    aliases: [universe today]1050    discover: { rss: false }1051    sensors:1052      - { name: feed, url: "https://www.universetoday.com/feed/", type: RSS, connector: rss, tier: C }1053