agentsclimarketplace

Plumx metrics api

Skill brycewang-stanford/Auto-Empirical-Research-Skills/skills/43-wentorai-research-plugins/skills/literature/metadata/plumx-metrics-api

Track research impact beyond citations via PlumX altmetrics APIFrom its SKILL.md

Install
npx -y skills add brycewang-stanford/Auto-Empirical-Research-Skills --skill plumx-metrics-api

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

SKILL.md

5.4 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it

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

CategoryWhat it measuresExamples
UsageReading/viewingAbstract views, PDF downloads, HTML views
CapturesSaving for laterMendeley readers, CiteULike bookmarks
MentionsCommentaryBlog posts, news articles, Wikipedia refs
Social MediaSharing/discussionTweets, Facebook shares, Reddit posts
CitationsFormal referencesScopus, 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

FeaturePlumXAltmetric.comCrossref Event Data
Metric categories5 comprehensiveAttention ScoreEvents only
Coverage130M+ artifacts30M+ outputsDOI-based
Social mediaTwitter, Facebook, RedditTwitter, Reddit, NewsTwitter, Reddit, Wikipedia
Usage dataYes (views, downloads)NoNo
Capture dataYes (Mendeley readers)Mendeley readersNo
Free accessLimitedLimited widgetFull API free

References

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 326,144. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.