Simple ADS API query package and citation tracker
Project description
myADS
myADS is a lightweight Python package to track citations to your (or others') research papers via the NASA ADS API.
It helps you:
- Report an author's current citation stats with author position and publication IDs
- Detect new or updated citations since the last check
- Find missing papers with deep search (any author position)
- Search for any author's publications without database tracking
- Maintain a local, efficient database for fast querying
Installation
Install from PyPI with:
pip install myads
Or install from source:
git clone https://github.com/stuartmcalpine/myADS.git
cd myADS
pip install .
Getting Started
No manual database setup needed — it initializes automatically at $HOME/myADS_database.db the first time you run a command.
1. Add Your ADS API Token
First, get your token here.
Then add it:
myads add-token YOUR-ADS-API-TOKEN
2. Add Authors to Track
Add an author by their name:
myads add-author "FirstName" "LastName" --orcid ORCID-ID
--orcidis optional but highly recommended for accuracy- Example:
myads add-author "Jane" "Doe" --orcid 0000-0002-1825-0097
You can list authors you've added:
myads list-authors
Remove an author:
myads remove-author AUTHOR_ID
(Find AUTHOR_ID by listing authors.)
Usage
Check for New Citations
myads check
- Checks for any new or updated citations to your tracked papers
- You can target a specific author:
myads check --author-id 1
- See more detail (including updated citations):
myads check --verbose
- Deep check to find papers where the author appears in any position (not just first author):
myads check --deep --author-id 1
The deep check will prompt you to confirm each candidate paper. Papers you reject are remembered, so you won't be asked again. To reset this memory:
myads clear-rejected --author-id 1
Generate a Citation Report
myads report
- Displays a report with:
- Publication ID (for ignoring papers)
- Author position (1st, 2nd, Last, etc.)
- Total citations
- Recent citations (last 90 days)
- Citations per year
- Publication year
- Direct ADS links
You can generate a report for a specific author:
myads report --author-id 1
Ignore Publications
Mark conference proceedings, theses, or other papers you don't want to track:
myads ignore PUBLICATION_ID --reason "conference proceedings"
View ignored papers:
myads list-ignored
Restore tracking:
myads unignore PUBLICATION_ID
Search Without Tracking
Search for any author's publications without adding them to your database:
myads search "Jane" "Doe"
Options:
--orcid ORCID-ID- Include ORCID in search--first-author-only- Restrict to first author papers only--format {table,json,csv}- Output format--max-rows N- Number of results (default: 100)
Example:
myads search "Jane" "Doe" --orcid 0000-0002-1825-0097 --format csv > output.csv
Example Output: Citation Report
Citation Report for Jane Doe
─────────────────────────────────────────────────────────────────────────────────
ID Pos Title Citations Year ADS Link
(90d)
(per yr)
─────────────────────────────────────────────────────────────────────────────────
42 1st Galaxy Mergers and Black Holes... 52 2020 [link]
(5)
(10.3)
15 3rd Collaboration Paper... 10 2024 [link]
(9)
(45.0)
─────────────────────────────────────────────────────────────────────────────────
Summary Statistics:
Total Publications: 2
Total Citations: 62
Average Citations per Publication: 31.00
H-index: 2
Command Overview
| Command | Purpose |
|---|---|
| myads add-author "First" "Last" [--orcid ORCID] | Add a new author |
| myads remove-author AUTHOR_ID | Remove an author |
| myads list-authors | List all tracked authors |
| myads add-token YOUR-TOKEN | Add or update your ADS API token |
| myads check [--author-id ID] [--verbose] [--deep] | Check for new/updated citations |
| myads report [--author-id ID] [--show-ignored] | Generate citation reports |
| myads ignore PUBLICATION_ID [--reason TEXT] | Mark publication as ignored |
| myads unignore PUBLICATION_ID | Restore tracking for publication |
| myads list-ignored [--author-id ID] | List ignored publications |
| myads clear-rejected [--author-id ID] | Clear deep check rejection memory |
| myads list-rejected [--author-id ID] | View rejected papers from deep check |
| myads search "First" "Last" [--orcid ORCID] [--first-author-only] | One-off author search |
How it Works
Local Database: myADS uses an SQLite database to track publications, citations, and authors. This approach efficiently updates data and minimizes API calls.
Smart Citation Metrics:
- Recent citations are based on citing papers published in the last 90 days
- Citations per year are computed dynamically
- H-index is estimated automatically
- Author position is determined from the full author list
Deep Search:
By default, myADS tracks papers where the author is first author. Use --deep to find papers where they appear in any position, with interactive confirmation to avoid false matches.
Automatic Resilience:
- Auto-handles expired ADS tokens
- Auto-creates the database if it doesn't exist
Tips
- Adding ORCIDs increases precision and avoids name ambiguity
- Use
--deepperiodically to catch papers where ORCID wasn't properly linked - Ignore conference proceedings or other non-article publications to clean up your reports
- Use
myads searchto quickly check someone's work without adding them to your database - Set up a cron job or scheduled task to run
myads checkweekly - You can track multiple authors — perfect for research groups
Disclaimer
This tool queries the NASA/ADS database under fair-use API limits. Make sure you have appropriate permissions and token access.
License
MIT License.
Made for astronomers and researchers by Stuart McAlpine.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file myads-3.0.0.tar.gz.
File metadata
- Download URL: myads-3.0.0.tar.gz
- Upload date:
- Size: 25.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8158dcae715243d8c4b598a7039c4219986c60a07b978a434f2b510869850dff
|
|
| MD5 |
ac2a29f913df69f097bca159e07b9a27
|
|
| BLAKE2b-256 |
ef254f3d3966c9aea4636efc2f4fd9aced64963288a2a0ce97bb755aa2640283
|
Provenance
The following attestation bundles were made for myads-3.0.0.tar.gz:
Publisher:
publish-to-pypi.yml on stuartmcalpine/myADS
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
myads-3.0.0.tar.gz -
Subject digest:
8158dcae715243d8c4b598a7039c4219986c60a07b978a434f2b510869850dff - Sigstore transparency entry: 641793202
- Sigstore integration time:
-
Permalink:
stuartmcalpine/myADS@e1baed4720f6456ef875b70dbdac0281c307292b -
Branch / Tag:
refs/tags/v3.0.0 - Owner: https://github.com/stuartmcalpine
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@e1baed4720f6456ef875b70dbdac0281c307292b -
Trigger Event:
release
-
Statement type:
File details
Details for the file myads-3.0.0-py3-none-any.whl.
File metadata
- Download URL: myads-3.0.0-py3-none-any.whl
- Upload date:
- Size: 29.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e32acf25cc4b324879370dbaac69ac69b9bf145148865a8604aee0195ec28df
|
|
| MD5 |
d8c65e92cfa95e4f17166e5200658340
|
|
| BLAKE2b-256 |
3776034a04e0531904149105e59a5008ac64ea0ecd836d237dad3aa63ca0548a
|
Provenance
The following attestation bundles were made for myads-3.0.0-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on stuartmcalpine/myADS
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
myads-3.0.0-py3-none-any.whl -
Subject digest:
5e32acf25cc4b324879370dbaac69ac69b9bf145148865a8604aee0195ec28df - Sigstore transparency entry: 641793204
- Sigstore integration time:
-
Permalink:
stuartmcalpine/myADS@e1baed4720f6456ef875b70dbdac0281c307292b -
Branch / Tag:
refs/tags/v3.0.0 - Owner: https://github.com/stuartmcalpine
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@e1baed4720f6456ef875b70dbdac0281c307292b -
Trigger Event:
release
-
Statement type: