Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Advanced Google Scholar search techniques for comprehensive literature discovery
.claude/skills/brycewang-stanford-google-scholar-guide/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 164% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -9% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-15 | ✓→✓ | = Same ✓ | 5% | 0% |
A skill for leveraging Google Scholar's full capabilities for academic literature search. Covers advanced search operators, citation tracking, alert configuration, and strategies for systematic and comprehensive retrieval.
| Operator | Syntax | Example | Effect | |----------|--------|---------|--------| | Exact phrase | "..." | "machine learning" | Matches exact phrase | | OR | OR | "deep learning" OR "neural network" | Matches either term | | Exclude | - | transformer -electrical | Excludes term | | Author | author: | author:"Y LeCun" | Filter by author | | Source | source: | source:"Nature" | Filter by journal | | Title only | intitle: | intitle:"attention mechanism" | Search in title only | | Date range | Custom range | Via Advanced Search UI | Limit publication years | | File type | filetype: | filetype:pdf | Specific file formats |
pythondef build_scholar_query(concepts: list[list[str]], exclude: list[str] = None, title_only: bool = False, author: str = None, source: str = None) -> str: """ Build a structured Google Scholar query from concept groups. Args: concepts: List of concept groups, each a list of synonyms Groups are ANDed together, synonyms are ORed exclude: Terms to exclude title_only: Search in title only author: Author name filter source: Journal/source filter Returns: Formatted Google Scholar query string """ # Build concept groups with OR groups = [] for concept_group in concepts: if len(concept_group) == 1: groups.append(f'"{concept_group[0]}"') else: terms = ' OR '.join(f'"{term}"' for term in concept_group) groups.append(f'({terms})') # AND the concept groups together query = ' '.join(groups) # Apply title restriction if title_only: query = f'intitle:{query}' # Add exclusions if exclude: for term in exclude: query += f' -{term}' # Add author filter if author: query += f' author:"{author}"' # Add source filter if source: query += f' source:"{source}"' return query # Example: find papers on transfer learning for medical imaging query = build_scholar_query( concepts=[ ["transfer learning", "domain adaptation", "fine-tuning"], ["medical imaging", "radiology", "pathology images"], ["deep learning", "convolutional neural network"] ], exclude=["survey", "review"], title_only=False ) print(query) # Output: ("transfer learning" OR "domain adaptation" OR "fine-tuning") # ("medical imaging" OR "radiology" OR "pathology images") # ("deep learning" OR "convolutional neural network") -survey -review
Seed Paper (a highly relevant paper you already know)
|
+--> "Cited by" link -> Forward citation tracking
| (who cited this paper? newer related work)
|
+--> Reference list -> Backward citation tracking
(what did this paper cite? foundational work)
Repeat for each highly relevant paper found.
Stop when you reach saturation (no new relevant papers appearing).Use citation metrics strategically:
pythondef identify_key_papers(search_results: list[dict], min_citations: int = 10) -> list[dict]: """ Identify key papers from search results using citation analysis. Args: search_results: List of papers with 'title', 'year', 'citations' min_citations: Minimum citation threshold """ import datetime current_year = datetime.datetime.now().year for paper in search_results: age = max(1, current_year - paper['year']) paper['citations_per_year'] = paper['citations'] / age # Classify influence if paper['citations_per_year'] > 50: paper['influence'] = 'landmark' elif paper['citations_per_year'] > 20: paper['influence'] = 'highly_influential' elif paper['citations_per_year'] > 5: paper['influence'] = 'influential' else: paper['influence'] = 'standard' # Filter and sort filtered = [p for p in search_results if p['citations'] >= min_citations] return sorted(filtered, key=lambda x: x['citations_per_year'], reverse=True)
Set up alerts to stay current:
Best practices for alerts:
Google Scholar has known limitations:
For systematic reviews, always supplement Google Scholar with structured databases: PubMed/MEDLINE, Web of Science, Scopus, and domain-specific databases (e.g., IEEE Xplore, PsycINFO, EconLit). Document the number of results from each database for your PRISMA flow diagram.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-15 | pass→pass | 13,019 | 4,422 | -66% | 1 | 1 | 0% | 1,867 | 1,959 | +5% | 0 | 0 | — |
case-21 | pass→pass | 15,480 | 15,136 | -2% | 1 | 1 | 0% | 2,430 | 4,445 | +83% | 0 | 0 | — |
case-01 | fail→pass | 5,028 | 6,824 | +36% | 1 | 1 | 0% | 889 | 2,350 | +164% | 0 | 0 | — |
case-02 | fail→fail | 23,076 | 22,547 | -2% | 1 | 1 | 0% | 3,310 | 4,751 | +44% | 0 | 0 | — |
case-03 | fail→pass | 15,975 | 3,677 | -77% | 1 | 1 | 0% | 2,424 | 2,214 | -9% | 0 | 0 | — |
case-04 | fail→fail | 8,508 | 6,488 | -24% | 1 | 1 | 0% | 1,492 | 2,561 | +72% | 0 | 0 | — |
case-22 | pass→pass | 15,826 | 13,075 | -17% | 1 | 1 | 0% | 3,134 | 4,217 | +35% | 0 | 0 | — |
case-05 | pass→pass | 12,147 | 9,931 | -18% | 1 | 1 | 0% | 1,846 | 2,899 | +57% | 0 | 0 | — |
case-06 | fail→fail | 14,393 | 16,927 | +18% | 1 | 1 | 0% | 2,584 | 4,019 | +56% | 0 | 0 | — |
case-07 | pass→pass | 10,040 | 6,712 | -33% | 1 | 1 | 0% | 1,540 | 2,444 | +59% | 0 | 0 | — |
case-08 | pass→pass | 6,890 | 4,611 | -33% | 1 | 1 | 0% | 1,283 | 2,069 | +61% | 0 | 0 | — |
case-09 | pass→pass | 7,226 | 4,022 | -44% | 1 | 1 | 0% | 1,010 | 1,985 | +97% | 0 | 0 | — |
case-10 | fail→pass | 13,151 | 6,731 | -49% | 1 | 1 | 0% | 2,037 | 2,608 | +28% | 0 | 0 | — |
case-11 | pass→pass | 13,159 | 6,128 | -53% | 1 | 1 | 0% | 1,792 | 2,326 | +30% | 0 | 0 | — |
case-12 | pass→pass | 20,218 | 22,785 | +13% | 1 | 1 | 0% | 2,759 | 4,760 | +73% | 0 | 0 | — |
case-13 | pass→pass | 18,433 | 17,444 | -5% | 1 | 1 | 0% | 2,984 | 4,391 | +47% | 0 | 0 | — |
case-14 | fail→pass | 11,014 | 5,789 | -47% | 1 | 1 | 0% | 2,151 | 2,354 | +9% | 0 | 0 | — |
case-16 | fail→fail | 13,030 | 11,294 | -13% | 1 | 1 | 0% | 2,271 | 3,689 | +62% | 0 | 0 | — |
case-17 | fail→fail | 14,769 | 11,008 | -25% | 1 | 1 | 0% | 2,167 | 2,961 | +37% | 0 | 0 | — |
case-18 | pass→pass | 11,099 | 14,349 | +29% | 1 | 1 | 0% | 2,077 | 3,739 | +80% | 0 | 0 | — |
case-19 | pass→pass | 14,394 | 6,259 | -57% | 1 | 1 | 0% | 2,228 | 2,539 | +14% | 0 | 0 | — |
case-20 | pass→pass | 20,022 | 17,774 | -11% | 1 | 1 | 0% | 3,104 | 4,642 | +50% | 0 | 0 | — |
case-23 | pass→pass | 7,220 | 2,211 | -69% | 1 | 1 | 0% | 1,136 | 1,939 | +71% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +17 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.