Skip to content
alyn
cookjohn

Gs Fulltext skill

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.

$npx skills add cookjohn/gs-skills --skill gs-fulltext
View this skill on GitHubcookjohn/gs-skills/skills/gs-fulltext/SKILL.md
Pack stars
545
Pack installs
1.5k
Alyn Score
40/99
Updated
8 months ago
License
MIT
– views – installs via Alyn

Install Gs Fulltext

Pick your agent. Every command is ready to paste.

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

The open skills CLI detects your agents (Claude Code, Cursor, Codex and 70+ more) and installs to the right folder. Add -g to install globally.

01

Install it

Run the command above, or upload the folder in Claude.

02

Ask naturally

Describe the task. Your agent loads gs-fulltext when the request matches its description.

03

Name it if needed

If it does not trigger, say “use the gs-fulltext skill”. In Codex, type $gs-fulltext.

The skill itself

SKILL.md

FolderGitHub

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

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.

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";

  // Find the result item by data-cid
  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 || '';

  // Full-text PDF/HTML link (shown on the right side of results)
  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() || '';

  // Meta info for context
  const meta = item.querySelector('.gs_a')?.textContent || '';
  const parts = meta.split(' - ');
  const authors = parts[0]?.trim() || '';
  const journalYear = parts[1]?.trim() || '';

  // Try to extract DOI from paper URL
  let doi = '';
  if (paperUrl.includes('doi.org/')) {
    doi = paperUrl.replace(/^https?:\/\/(dx\.)?doi\.org\//, '');
  }

  // Build access links
  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) {
    // Sci-Hub also works with direct URLs
    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:

  1. fullTextUrl (direct PDF/HTML, usually free)
  2. DOI link (may require subscription)
  3. Sci-Hub link (fallback)
  4. 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)

Tips for Gs Fulltext

  • • Start a fresh session after installing so your agent picks up the new skill.
  • • It is part of a pack with 6 skills. Install only the ones you need with --skill to keep triggers precise.
  • • If two skills overlap, mention the one you want by name.

Questions about Gs Fulltext

What does the Gs Fulltext skill do?

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.

How do I install Gs Fulltext?

Run "npx skills add cookjohn/gs-skills --skill gs-fulltext" in your project. The skills CLI installs it for Claude Code, Cursor, Codex and 70+ other agents. In Claude on the web, upload the skill folder as a ZIP under Customize > Skills.

Does Gs Fulltext work in Cursor and Codex?

Yes. Gs Fulltext uses the open SKILL.md format, so it works in Claude Code, Claude, Cursor, OpenAI Codex, Gemini CLI, GitHub Copilot and other agents that support agent skills.

Is Gs Fulltext free?

Gs Fulltext is open source on GitHub under the MIT license. It is free to install; check the license before commercial use.

Who made Gs Fulltext?

Gs Fulltext is published by cookjohn in the cookjohn/gs-skills repository, together with 5 other skills.

Similar skills. From other creators.