一键导入
pm-navigate-pages
// Navigate PubMed search result pages or change sort order. Use when user wants to see more results or change ordering.
// Navigate PubMed search result pages or change sort order. Use when user wants to see more results or change ordering.
Perform advanced PubMed search with field qualifiers - author, title, journal, MeSH, date range, article type. Constructs proper PubMed query syntax from natural language. Use for precise filtered searches.
Export PubMed paper(s) to Zotero or save as RIS file. Supports single paper by PMID or batch export from search results. Use when user wants to save papers to their reference manager.
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.
Get full paper details for a PubMed article by PMID - title, authors with affiliations, abstract, MeSH terms, keywords, publication types, DOI, and citation info. Use when user needs detailed information about a specific paper.
Search PubMed for biomedical literature by keywords. Returns structured results with PMID, title, authors, journal, date, DOI. Use when the user wants to find papers on a topic.
| name | pm-navigate-pages |
| description | Navigate PubMed search result pages or change sort order. Use when user wants to see more results or change ordering. |
| argument-hint | [next|previous|page N|sort by date|relevance] |
| user-invokable | false |
Navigate search result pages or change sort order. Requires a previous pm-search call to know the current query, page, and size.
$ARGUMENTS can be:
next — go to next pageprevious — go to previous pagepage N — go to page Nsort by date — sort by most recentsort by relevance — sort by best match (default)This skill requires context from a previous pm-search call:
query: the search termpage: current page numbersize: results per pagetotal: total results countBased on $ARGUMENTS:
next: newPage = currentPage + 1previous: newPage = max(1, currentPage - 1)page N: newPage = Nsort by date: sort = "date", newPage = 1sort by relevance: sort = "relevance", newPage = 1Compute: retstart = (newPage - 1) * size
Use mcp__chrome-devtools__navigate_page:
https://pubmed.ncbi.nlm.nih.gov/?term={URL_ENCODED_QUERY}&size={size}&page={newPage}Same pattern as pm-search step 2, with updated retstart and sort:
async () => {
const query = "PREVIOUS_QUERY";
const page = NEW_PAGE;
const size = CURRENT_SIZE;
const sort = "SORT_VALUE";
const retstart = (page - 1) * size;
const searchResp = await fetch(
`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=${encodeURIComponent(query)}&retmax=${size}&retstart=${retstart}&retmode=json&sort=${sort}`
);
const searchData = await searchResp.json();
const ids = searchData.esearchresult?.idlist || [];
const total = parseInt(searchData.esearchresult?.count || '0');
if (ids.length === 0) return { query, total, page, results: [] };
const sumResp = await fetch(
`https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=${ids.join(',')}&retmode=json`
);
const sumData = await sumResp.json();
const results = ids.map((id, i) => {
const r = sumData.result?.[id] || {};
const doi = (r.articleids || []).find(a => a.idtype === 'doi')?.value || '';
return {
n: retstart + i + 1,
pmid: id,
title: r.title || '',
authors: (r.authors || []).map(a => a.name).join(', '),
journal: r.fulljournalname || '',
source: r.source || '',
pubdate: r.pubdate || '',
doi,
pubtype: (r.pubtype || []).join(', ')
};
});
const totalPages = Math.ceil(total / size);
return { query, total, page, totalPages, size, sort, results };
}
Page {page} of {totalPages} for "{query}" ({total} total results, sorted by {sort}):
1. {title}
PMID: {pmid} | DOI: {doi}
Authors: {authors}
Journal: {journal} ({pubdate})
2. ...
navigate_page + evaluate_script