cookjohn/pm-skills · Archived

pm-fulltext

Find full-text download links for a PubMed paper by PMID - DOI, PMC open access, Sci-Hub, and publisher links. Use when user wants to read or download a paper's full text.

First seen Apr 9, 2026

Installation

$ npx skills add cookjohn/pm-skills --skill pm-fulltext

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from cookjohn/pm-skills.

npx skills add cookjohn/pm-skills

Browse all from cookjohn/pm-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Also listed on

Alternate registries and mirrors of this skill.

Repository health

Stars 19
License MIT
Default branch main
Open issues 0
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,461 B
  • docs SUMMARY.md 190 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 6 installs

SKILL.md

PubMed Full Text Links

Resolve and present all full-text access options for a given PMID.

Arguments

$ARGUMENTS is a PMID (PubMed ID, an integer like 35641793).

Steps

1. Navigate to the paper page

Use mcpchrome-devtoolsnavigate_page:

  • url: https://pubmed.ncbi.nlm.nih.gov/{PMID}/

2. Resolve full-text links (evaluate_script)

Replace PMID_HERE with the actual PMID from $ARGUMENTS:

async () => {
  const pmid = "PMID_HERE";

  // Wait for page to load
  for (let i = 0; i < 20; i++) {
    if (document.querySelector('h1.heading-title')) break;
    await new Promise(r => setTimeout(r, 500));
  }

  // 1. Get DOI from esummary
  const sumResp = await fetch(
    `https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=${pmid}&retmode=json`
  );
  const sumData = await sumResp.json();
  const record = sumData.result?.[pmid] || {};
  const doi = (record.articleids || []).find(a => a.idtype === 'doi')?.value || '';
  const title = record.title || '';

  // 2. Check PMC via elink
  const linkResp = await fetch(
    `https://eutils.ncbi.nlm.nih.gov/entrez/eutils/elink.fcgi?dbfrom=pubmed&db=pmc&id=${pmid}&retmode=json`
  );
  const linkData = await linkResp.json();
  const pmcLinks = linkData.linksets?.[0]?.linksetdbs?.find(l => l.linkname === 'pubmed_pmc')?.links || [];
  const pmcid = pmcLinks.length > 0 ? `PMC${pmcLinks[0]}` : '';

  // 3. Get publisher links from DOM
  const ftLinkEls = document.querySelectorAll('.full-text-links-list a');
  const publisherLinks = Array.from(ftLinkEls).map(a => ({
    text: a.textContent?.trim() || '',
    href: a.href || '',
    icon: a.querySelector('img')?.getAttribute('alt') || ''
  }));

  // 4. Check free full text availability from DOM
  const hasFreeFullText = !!document.querySelector('.free-full-text');

  // 5. Build access links
  const links = {};

  if (doi) {
    links.doi = `https://doi.org/${doi}`;
    links.scihub = `https://sci-hub.ru/${doi}`;
  }

  if (pmcid) {
    links.pmc = `https://www.ncbi.nlm.nih.gov/pmc/articles/${pmcid}/`;
    links.pmcPdf = `https://www.ncbi.nlm.nih.gov/pmc/articles/${pmcid}/pdf/`;
  }

  return {
    pmid,
    title,
    doi,
    pmcid,
    hasFreeFullText,
    publisherLinks,
    links
  };
}

3. Report

## Full Text Links — PMID: {pmid}

**{title}**

**DOI:**
{links.doi ? "- " + links.doi : "N/A"}

**Open Access (PMC):**
{links.pmc ? "- Full text: " + links.pmc : "No PMC full text available"}
{links.pmcPdf ? "- PDF: " + links.pmcPdf : ""}

**Sci-Hub:**
{links.scihub ? "- " + links.scihub : "Cannot build Sci-Hub link (no DOI)"}

**Publisher Links:**
{For each publisherLink: "- {text}: {href}"}

4. Open full text (optional)

If the user wants to read the paper immediately, use mcpchrome-devtoolsnew_page to open the preferred link:

  • PMC link (if available, free open access)
  • Sci-Hub link (if DOI available)
  • Publisher link (may require subscription)

Notes

  • This skill uses 2 tool calls: navigatepage + evaluatescript
  • PMC (PubMed Central) articles are fully open access
  • Sci-Hub link is constructed from DOI, not all papers have DOI
  • Opening a full text page in a new tab adds 1 more tool call