| name | gs-fulltext |
| description | Get full-text access links for a Google Scholar paper - PDF, DOI, Sci-Hub, and publisher links. Use when user wants to read or download a paper's full text. |
| argument-hint | [data-cid or result number from previous search] |
Google Scholar Full Text Access
Resolve and present all full-text access options for a paper found in Google Scholar search results.
Arguments
$ARGUMENTS can be:
- A
data-cid from a previous search result
- A result number (e.g.,
3) referring to a previous search result
Prerequisites
This skill works best after a previous gs-search or gs-advanced-search call, which already extracts fullTextUrl and href for each result. If those are available, use them directly.
Steps
Step 1: Collect links from search results
From the previous search result, extract these fields for the target paper:
fullTextUrl: direct PDF/HTML link (from .gs_ggs a)
href: link to the paper's publisher page (from .gs_rt a)
dataCid: cluster ID
If no previous search context is available, search for the paper first using gs-search.
Step 2: Resolve additional links (evaluate_script)
Navigate to the Google Scholar results page (if not already there), then extract full-text links for the specific paper:
async () => {
const cid = "DATA_CID_HERE";
const item = document.querySelector(`.gs_r.gs_or.gs_scl[data-cid="${cid}"]`);
if (!item) return { error: 'not_found', message: 'Paper not found on current page. Try searching again.' };
const titleEl = item.querySelector('.gs_rt a');
const title = titleEl?.textContent?.trim() || item.querySelector('.gs_rt')?.textContent?.trim() || '';
const paperUrl = titleEl?.href || '';
const fullTextEl = item.querySelector('.gs_ggs a') || item.querySelector('.gs_or_ggsm a');
const fullTextUrl = fullTextEl?.href || '';
const fullTextType = fullTextEl?.querySelector('span.gs_ctg2')?.textContent?.trim() || '';
const meta = item.querySelector('.gs_a')?.textContent || '';
const parts = meta.split(' - ');
const authors = parts[0]?.trim() || '';
const journalYear = parts[1]?.trim() || '';
let doi = '';
if (paperUrl.includes('doi.org/')) {
doi = paperUrl.replace(/^https?:\/\/(dx\.)?doi\.org\//, '');
}
const links = {};
if (fullTextUrl) {
links.fullText = fullTextUrl;
links.fullTextType = fullTextType || (fullTextUrl.endsWith('.pdf') ? '[PDF]' : '[HTML]');
}
if (paperUrl) {
links.publisher = paperUrl;
}
if (doi) {
links.doi = `https://doi.org/${doi}`;
links.scihub = `https://sci-hub.ru/${doi}`;
} else if (paperUrl) {
links.scihub = `https://sci-hub.ru/${paperUrl}`;
}
return {
dataCid: cid,
title,
authors,
journalYear,
doi,
fullTextUrl,
fullTextType,
paperUrl,
links
};
}
Step 3: Report
## Full Text Links โ {title}
**Authors:** {authors} | {journalYear}
**Direct Full Text:**
{links.fullText ? "- " + links.fullTextType + " " + links.fullText : "No direct full text link available"}
**Publisher Page:**
{links.publisher ? "- " + links.publisher : "N/A"}
**DOI:**
{links.doi ? "- " + links.doi : "No DOI detected"}
**Sci-Hub:**
{links.scihub ? "- " + links.scihub : "N/A"}
Step 4: Open full text (optional)
If the user wants to read the paper immediately, use mcp__chrome-devtools__new_page to open the preferred link in this priority:
fullTextUrl (direct PDF/HTML, usually free)
- DOI link (may require subscription)
- Sci-Hub link (fallback)
- Publisher page
Notes
- This skill uses 1-2 tool calls:
evaluate_script (if already on results page) or navigate_page + evaluate_script
- Google Scholar's full-text links (
.gs_ggs) are usually free/open-access PDFs
- DOI may not always be extractable from the paper URL
- Sci-Hub works with both DOI and direct URL
- Opening full text in a new tab adds 1 more tool call (
new_page)