
Pm Navigate Pages
- 19 installs
- 45 repo stars
- Updated June 23, 2026
- yuanyuanma03/academic-research-skills
Page through PubMed search results or change sort order (date/relevance) using the query context from a prior pm-search call.
About
Recomputes PubMed pagination and sort parameters and re-runs the E-utilities search to fetch the requested page. A researcher uses it to see more results or reorder them after an initial search.
- Handles next/previous/page-N navigation and date/relevance sorting
- Reuses prior search query, page, and size context
Pm Navigate Pages by the numbers
- 19 all-time installs (skills.sh)
- Ranked #1,308 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
- Data as of Aug 3, 2026 (Skillselion catalog sync)
npx skills add https://github.com/yuanyuanma03/academic-research-skills --skill pm-navigate-pagesAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 19 |
|---|---|
| repo stars | ★ 45 |
| Last updated | June 23, 2026 |
| Repository | yuanyuanma03/academic-research-skills ↗ |
What it does
Page through PubMed search results or change sort order (date/relevance) using the query context from a prior pm-search call.
Files
PubMed Navigate Pages & Sort
Navigate search result pages or change sort order. Requires a previous pm-search call to know the current query, page, and size.
Arguments
$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)
Prerequisites
This skill requires context from a previous pm-search call:
query: the search termpage: current page numbersize: results per pagetotal: total results count
Steps
1. Calculate new parameters
Based 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 = 1
Compute: retstart = (newPage - 1) * size
2. Navigate to updated URL
Use mcp__chrome-devtools__navigate_page:
- url:
https://pubmed.ncbi.nlm.nih.gov/?term={URL_ENCODED_QUERY}&size={size}&page={newPage}
3. Fetch results (evaluate_script)
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 };
}4. Report
Page {page} of {totalPages} for "{query}" ({total} total results, sorted by {sort}):
1. {title}
PMID: {pmid} | DOI: {doi}
Authors: {authors}
Journal: {journal} ({pubdate})
2. ...Notes
- This skill uses 2 tool calls:
navigate_page+evaluate_script - If already on PubMed page, can skip navigate_page and use only evaluate_script (1 tool call)