On the #650 full-text pass the cascade found 0 of 30 items that a
one-off sweep recovered 4 of, all via Semantic Scholar; 7 more had
PMCIDs Zotero lacked that NCBI idconv resolved in one call.
- unpaywall_urls(): best_oa_location plus every oa_locations entry,
direct PDF URLs before landing pages; fetch_one tries each.
- fetch_semantic_scholar(): graph API openAccessPdf after Unpaywall,
throttled to 1 req/s across workers; its externalIds.PubMedCentral
fills a missing PMCID so the PMC tiers run.
- pending_queue(client=, email=): PMIDs without a PMCID resolved via
idconv in 200-id batches, persisted to extra as a PMCID: line.
- run() reports an s2 counter; CLI help + docs page regenerated.