npx skills add https://www.modelscope.cn/skills/Tashanworld/pm-fulltext
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.
Installation
npx skills add cookjohn/pm-skills --skill pm-fulltext
Stronger alternatives
This repository is archived — consider an actively maintained alternative.
Search PubMed for biomedical literature by keywords. Returns structured results with PMID, titl…
6 installsGet full paper details for a PubMed article by PMID - title, authors with affiliations, abstrac…
6 installsNavigate PubMed search result pages or change sort order. Use when user wants to see more resul…
6 installsExport PubMed paper(s) to Zotero or save as RIS file. Supports single paper by PMID or batch ex…
6 installsSimilar popular skills
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
通过专利ID或?
353 installsGet full-text access links for a Google Scholar paper - PDF, DOI, Sci-Hub, and publisher links.…
281 installs16 full-text access skills. Trigger: accessing paper PDFs, bulk downloading, open access, text …
124 installsAlso in this package
Other skills from cookjohn/pm-skills.
npx skills add 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.
Also listed on
Alternate registries and mirrors of this skill.
Repository health
main
Package contents
Files included with this skill beyond the listing page.
-
skill md
SKILL.md3,461 B -
docs
SUMMARY.md190 B
History
- First seen on skills.sh
- 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