Awesome-Agent-Skills-for-Empirical-Research plumx-metrics-api
Track research impact beyond citations via PlumX altmetrics API
install
source · Clone the upstream repo
git clone https://github.com/brycewang-stanford/Awesome-Agent-Skills-for-Empirical-Research
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/brycewang-stanford/Awesome-Agent-Skills-for-Empirical-Research "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/43-wentorai-research-plugins/skills/literature/metadata/plumx-metrics-api" ~/.claude/skills/brycewang-stanford-awesome-agent-skills-for-empirical-research-plumx-metrics-api && rm -rf "$T"
manifest:
skills/43-wentorai-research-plugins/skills/literature/metadata/plumx-metrics-api/SKILL.mdsource content
PlumX Metrics API
Overview
PlumX (by Elsevier/Plum Analytics) tracks 5 categories of research impact metrics beyond traditional citations: Usage, Captures, Mentions, Social Media, and Citations. It covers 130M+ research artifacts including articles, datasets, presentations, and videos. Available via Elsevier's API infrastructure. Requires an Elsevier API key.
Metric Categories
| Category | What it measures | Examples |
|---|---|---|
| Usage | Reading/viewing | Abstract views, PDF downloads, HTML views |
| Captures | Saving for later | Mendeley readers, CiteULike bookmarks |
| Mentions | Commentary | Blog posts, news articles, Wikipedia refs |
| Social Media | Sharing/discussion | Tweets, Facebook shares, Reddit posts |
| Citations | Formal references | Scopus, CrossRef, PubMed citations |
API Endpoints
Base URL
https://api.elsevier.com/analytics/plumx/
Get Metrics by DOI
curl -H "X-ELS-APIKey: $ELSEVIER_API_KEY" \ "https://api.elsevier.com/analytics/plumx/doi/10.1038/nature14539"
Get Metrics by Other IDs
# By PubMed ID curl -H "X-ELS-APIKey: $ELSEVIER_API_KEY" \ "https://api.elsevier.com/analytics/plumx/pmid/25428114" # By ISBN curl -H "X-ELS-APIKey: $ELSEVIER_API_KEY" \ "https://api.elsevier.com/analytics/plumx/isbn/9780262035613" # By Scopus ID curl -H "X-ELS-APIKey: $ELSEVIER_API_KEY" \ "https://api.elsevier.com/analytics/plumx/scopusId/84920765826"
Response Structure
{ "count_categories": [ { "name": "capture", "total": 15432, "count_types": [ {"name": "READER_COUNT", "total": 15432, "sources": [ {"name": "Mendeley", "total": 15432} ]} ] }, { "name": "socialMedia", "total": 3250, "count_types": [ {"name": "TWEET_COUNT", "total": 2800}, {"name": "FACEBOOK_COUNT", "total": 450} ] }, { "name": "citation", "total": 2100, "count_types": [ {"name": "Scopus", "total": 1800}, {"name": "CrossRef", "total": 2100} ] }, { "name": "usage", "total": 45000, "count_types": [ {"name": "ABSTRACT_VIEWS", "total": 30000}, {"name": "LINK_OUTS", "total": 15000} ] }, { "name": "mention", "total": 85, "count_types": [ {"name": "NEWS_COUNT", "total": 45}, {"name": "BLOG_COUNT", "total": 25}, {"name": "WIKIPEDIA_COUNT", "total": 15} ] } ] }
Python Usage
import os import requests API_KEY = os.environ["ELSEVIER_API_KEY"] BASE_URL = "https://api.elsevier.com/analytics/plumx" HEADERS = {"X-ELS-APIKey": API_KEY, "Accept": "application/json"} def get_plumx_metrics(doi: str) -> dict: """Get PlumX metrics for a paper by DOI.""" resp = requests.get( f"{BASE_URL}/doi/{doi}", headers=HEADERS, ) resp.raise_for_status() data = resp.json() metrics = {} for cat in data.get("count_categories", []): category_name = cat["name"] metrics[category_name] = { "total": cat["total"], "breakdown": {}, } for ct in cat.get("count_types", []): metrics[category_name]["breakdown"][ct["name"]] = ct["total"] return metrics def compare_impact(dois: list) -> list: """Compare PlumX metrics across multiple papers.""" results = [] for doi in dois: metrics = get_plumx_metrics(doi) results.append({ "doi": doi, "citations": metrics.get("citation", {}).get("total", 0), "captures": metrics.get("capture", {}).get("total", 0), "social": metrics.get("socialMedia", {}).get("total", 0), "usage": metrics.get("usage", {}).get("total", 0), "mentions": metrics.get("mention", {}).get("total", 0), }) return results # Example: analyze a paper's multi-dimensional impact metrics = get_plumx_metrics("10.1038/nature14539") for category, data in metrics.items(): print(f"\n{category.upper()} (total: {data['total']})") for metric_type, count in data["breakdown"].items(): print(f" {metric_type}: {count}") # Example: compare two papers # comparison = compare_impact([ # "10.1038/nature14539", # "10.1126/science.aax2342", # ])
PlumX vs Other Altmetric Services
| Feature | PlumX | Altmetric.com | Crossref Event Data |
|---|---|---|---|
| Metric categories | 5 comprehensive | Attention Score | Events only |
| Coverage | 130M+ artifacts | 30M+ outputs | DOI-based |
| Social media | Twitter, Facebook, Reddit | Twitter, Reddit, News | Twitter, Reddit, Wikipedia |
| Usage data | Yes (views, downloads) | No | No |
| Capture data | Yes (Mendeley readers) | Mendeley readers | No |
| Free access | Limited | Limited widget | Full API free |