Skip to content
Research
Skill

/gs-fulltext

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.

From plugin
gs-skills
4746 skills1 agent
Install
$ npx -y skills add cookjohn/gs-skills --skill gs-fulltext --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/gs-fulltext

Context preview

The summary Claude sees to decide when to auto-load this 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.

SKILL.md

gs-fulltext.SKILL.md
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";

  // 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`)
Read more
Ships withgs-skills

Google Scholar skills for Claude Code — search, citation tracking, full-text access, and Zotero export via Chrome DevTools MCP

Get the whole plugin
Stats
484
Stars
28
Forks
Maintained
Maintenance
Python
Language
MIT
License
5mo ago
Last commit
5mo ago
Created

Repo: cookjohn/gs-skills