sourcelens 
sourcelens collects the latest research on any topic into one chronological catalogue. It searches PubMed, Europe PMC, arXiv and OpenAlex, downloads the open-access full texts with their figures and supplementary files, finds the code and packages the papers link to, and exports references for Zotero or LaTeX. Run it again later and it adds only what is new; notes you write in the catalogue are never overwritten.
Website: https://bhagesh-h.github.io/sourcelens/
Install
Python (3.10 or newer, any system):
pip install sourcelens
Go binary (one file, no dependencies). Linux and macOS:
curl -fsSL https://raw.githubusercontent.com/bhagesh-h/sourcelens/main/install.sh | sh
Windows (PowerShell):
irm https://raw.githubusercontent.com/bhagesh-h/sourcelens/main/install.ps1 | iex
Or download sourcelens_linux_amd64, sourcelens_linux_arm64,
sourcelens_macos (Apple silicon and Intel) or
sourcelens_windows_amd64.exe from the
latest release.
Both implementations have the same commands. To convert PDFs to text, the Go
binary needs poppler (apt install poppler-utils, brew install poppler).
Use
sourcelens config set contact_email you@example.org # once; Crossref, OpenAlex, NCBI and Unpaywall ask for it
sourcelens "CRISPR base editing" # start a catalogue; run again later to add what is new
sourcelens query --topic "CRISPR base editing" --range 1m
sourcelens export --topic "CRISPR base editing" --format BIB --out crispr.bib
Look first, then download only what you pick:
sourcelens "CRISPR base editing" --dry-run # metadata and a table, no downloads
sourcelens query --topic "CRISPR base editing" --in reports/dryrun_<stamp>.csv --summary "off-target" --out picked.csv
sourcelens download --topic "CRISPR base editing" exports/picked.csv
sourcelens files --topic "CRISPR base editing" --ext xlsx,csv --copy-to ~/tables
Commas, semicolons and OR separate alternatives, every word of an
alternative is required, and double quotes keep a phrase together:
sourcelens '"base editing", "prime editing"'.
| option | meaning |
|---|---|
--range 1m, --from 2024 |
how far back to search (a new topic starts 12 months back) |
--types papers |
metadata only, no downloads |
--sources pubmed,arxiv |
only these sources |
--ext xlsx,pptx |
attachment file types to download |
--dry-run |
metadata and a table of what could be downloaded, no downloads |
--dir DIR |
keep the catalogue in DIR |
Each topic gets a folder such as ~/sourcelens/crispr-base-editing/, with
progress.csv as the main table, and every run writes
reports/runreport_<stamp>.html, a searchable page of the whole catalogue.
sourcelens config set output DIR changes the folder, and sourcelens help
lists every command.
Documentation
- Install options: every system, PDF extras, Docker, Python or Go
- Usage: dry run and download, files, reports, every command and option
- Outputs: the catalogue folder, attachments, the columns of
progress.csv - Configuration: settings and catalogue configuration
- Sources and limitations
- Development and publishing
- Default topic: aging clocks
License
GPL-3.0. See LICENSE.
Metadata
Release files for sourcelens 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sourcelens-1.0.1.tar.gz | 182.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sourcelens-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 363.3 kB
Release files / sourcelens-1.0.1.tar.gz
| Download URL | sourcelens-1.0.1.tar.gz |
|---|---|
| Size | 182.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fcdcfefea4e532f8efaef5c47445efb61feef33e3e085edbb2ae59b3e6244e36
|
|
BLAKE2b-256 checksum How to use checksums |
eb7234b15df278689169f1b57cc9b52773e88e5e3519d4d15de3797a3a5bb4fd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.
Transparency logRelease files / sourcelens-1.0.1-py3-none-any.whl
| Download URL | sourcelens-1.0.1-py3-none-any.whl |
|---|---|
| Size | 181.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a71ed15c0bb5f9a1a2bb45804429e848db5c31cba27c518745ca34145ed23c51
|
|
BLAKE2b-256 checksum How to use checksums |
328c76ce96a0ee9fa75314cf4c72ae6ec940fd5f1ede73972ff6f3513c600656
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.
Transparency log