Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
cookjohn avatar

Gs Search

  • 392 installs
  • 470 repo stars
  • Updated March 13, 2026
  • cookjohn/gs-skills

gs-search is a Claude agent skill that runs structured Google Scholar queries and returns parsed academic paper metadata for developers who need prior art, benchmarks, and expert publications before technical decisions.

About

gs-search is an agent skill from cookjohn/gs-skills that automates Google Scholar keyword searches through Chrome DevTools MCP. The workflow navigates to scholar.google.com with URL-encoded keywords and num=10, waits for results, checks for CAPTCHA, then evaluates DOM scripts to extract structured fields: title, authors, journal, year, citation count, and full-text links. Developers reach for gs-search when validating research claims, comparing academic baselines, or surveying expert publications before architecture or ML model choices. The skill expects Chrome DevTools MCP access and returns up to 10 results per query. It complements manual Scholar browsing by giving agents a repeatable, parseable result list instead of unstructured page text.

  • Scholar query formulation
  • Result ranking and filtering
  • Citation graph exploration
  • Prior-art and benchmark discovery
  • Agent-friendly search automation

Gs Search by the numbers

  • 392 all-time installs (skills.sh)
  • Ranked #450 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/cookjohn/gs-skills --skill gs-search

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs392
repo stars470
Last updatedMarch 13, 2026
Repositorycookjohn/gs-skills

How do you search Google Scholar from an AI agent?

Run structured Google Scholar queries to map prior art, academic benchmarks, and expert publications before product or technical decisions.

Who is it for?

Developers or ML engineers who need agent-driven academic literature searches with structured metadata before design or benchmark comparisons.

Skip if: Production literature-review pipelines requiring PubMed APIs, bulk citation exports, or searches that must bypass Scholar rate limits and CAPTCHAs at scale.

When should I use this skill?

The user wants to search Google Scholar, find academic papers by keyword, or map prior art and citation counts.

What you get

Structured list of up to 10 Scholar results with title, authors, journal, year, citation count, and full-text links.

  • structured paper result list
  • citation counts per result

By the numbers

  • Returns up to 10 Google Scholar results per query via num=10 parameter

Files

SKILL.mdMarkdownGitHub ↗

Google Scholar Basic Search

Search Google Scholar for papers using keyword(s). Returns structured result list via DOM scraping.

Arguments

$ARGUMENTS contains the search keyword(s).

Steps

1. Navigate

Use mcp__chrome-devtools__navigate_page:

  • url: https://scholar.google.com/scholar?q={URL_ENCODED_KEYWORDS}&hl=en&num=10

2. Extract results (evaluate_script)

Wait for results to load, check for CAPTCHA, then scrape the DOM:

async () => {
  // Wait for results or CAPTCHA
  for (let i = 0; i < 20; i++) {
    if (document.querySelector('#gs_res_ccl') || document.querySelector('#gs_captcha_ccl')) break;
    await new Promise(r => setTimeout(r, 500));
  }

  // CAPTCHA check
  if (document.querySelector('#gs_captcha_ccl') || document.body.innerText.includes('unusual traffic')) {
    return { error: 'captcha', message: 'Google Scholar requires CAPTCHA verification. Please complete it in your browser, then tell me to continue.' };
  }

  const items = document.querySelectorAll('#gs_res_ccl .gs_r.gs_or.gs_scl');
  const results = Array.from(items).map((item, i) => {
    const titleEl = item.querySelector('.gs_rt a');
    const meta = item.querySelector('.gs_a')?.textContent || '';
    // Parse "Author1, Author2 - Journal, Year - publisher"
    const parts = meta.split(' - ');
    const authors = parts[0]?.trim() || '';
    const journalYear = parts[1]?.trim() || '';
    const citedByEl = item.querySelector('.gs_fl a[href*="cites"]');
    const relatedEl = item.querySelector('.gs_fl a[href*="related"]');
    const versionsEl = item.querySelector('.gs_fl a[href*="cluster"]');

    return {
      n: i + 1,
      title: titleEl?.textContent?.trim() || item.querySelector('.gs_rt')?.textContent?.trim() || '',
      href: titleEl?.href || '',
      authors,
      journalYear,
      citedBy: citedByEl?.textContent?.match(/\d+/)?.[0] || '0',
      citedByUrl: citedByEl?.href || '',
      dataCid: item.getAttribute('data-cid') || '',
      fullTextUrl: (item.querySelector('.gs_ggs a') || item.querySelector('.gs_or_ggsm a'))?.href || '',
      snippet: item.querySelector('.gs_rs')?.textContent?.trim()?.substring(0, 200) || '',
      relatedUrl: relatedEl?.href || '',
      versionsUrl: versionsEl?.href || '',
      versions: versionsEl?.textContent?.match(/\d+/)?.[0] || ''
    };
  });

  const totalText = document.querySelector('#gs_ab_md')?.textContent?.trim() || '';
  const currentUrl = window.location.href;
  return { total: totalText, resultCount: results.length, currentUrl, results };
}

3. Report

Present results as a numbered list:

Searched Google Scholar for "$ARGUMENTS": {total}

1. {title}
   Authors: {authors} | {journalYear}
   Cited by: {citedBy} | [Full text]({fullTextUrl})
   Data-CID: {dataCid}

2. ...

Always show the dataCid — it's the unique identifier used for citation export and "cited by" tracking.

If fullTextUrl is available, highlight it (means open-access PDF/HTML).

4. Follow-up

When the user wants to:

  • See more results: use gs-navigate-pages to go to next page
  • See who cited a paper: use gs-cited-by with the data-cid
  • Export to Zotero: use gs-export with the data-cid(s)

CAPTCHA Handling

If the result contains {error: 'captcha'}: 1. Tell the user: "Google Scholar is requesting CAPTCHA verification. Please complete it in your browser." 2. Wait for user confirmation 3. Retry the evaluate_script extraction

Notes

  • This skill uses 2 tool calls: navigate_page + evaluate_script
  • Google Scholar has NO public API — all data extraction is via DOM scraping
  • data-cid is the primary identifier (cluster ID) — used across all GS skills
  • Keep request frequency low to avoid triggering CAPTCHA
  • Default num=10 results per page (max 20)

Related skills

How it compares

Pick gs-search over generic web-search skills when you need Scholar-specific fields like citation counts and journal metadata in a structured list.

FAQ

How many Google Scholar results does gs-search return?

gs-search requests up to 10 results per query by navigating to scholar.google.com with the num=10 URL parameter. Each result includes title, authors, journal, year, citation count, and full-text links when available.

What MCP tool does gs-search require?

gs-search requires Chrome DevTools MCP. It calls mcp__chrome-devtools__navigate_page to open Scholar and evaluate_script to parse result DOM nodes into structured paper metadata.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.