skills/google-scholar/SKILL.md
This skill should be used when the user asks to "search Google Scholar", "find academic papers", "scholar search", "lookup papers", "find citations", "academic search", "search for papers by author", "find journal articles", "get BibTeX", "cite this paper", "download paper", or needs to search Google Scholar for academic literature via the scholar CLI tool.
npx skillsauth add edwinhu/workflows google-scholarInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Search Google Scholar for academic papers via the scholar command-line tool.
Requires: scholar on PATH (~/.local/bin/scholar → ~/projects/google-scholar-cli/scholar)
Check: command -v scholar || echo "MISSING: scholar CLI not installed"
NEVER fabricate paper titles, authors, journals, years, or abstracts from memory.
When the user asks about a specific paper or needs citation details:
User mentions a paper
↓
Do you have the exact metadata from a scholar command in this session?
↓
YES → Use that data
NO → Run scholar search/lookup --bibtex FIRST, then report
scholar lookup "title" --bibtex first, then report.--bibtex adds seconds, not minutes, and the BibTeX includes the abstract — reconstructing either from memory is counterproductive on its own terms.scholar lookup.--bibtex.Before first use, authenticate by extracting cookies from an active Chrome session:
# Chrome must be running with remote debugging enabled
scholar auth --port 9222
Cookies are stored in ~/.google-scholar/cookies (mode 0600).
Natural language search using Google Scholar Labs API:
# One-shot search
scholar search "what are the key papers on attention mechanisms"
# JSON output for parsing
scholar search "corporate disclosure and information asymmetry" --json
# With BibTeX citations (includes abstracts)
scholar search "attention is all you need" --bibtex
# Download PDFs for results with full-text links
scholar search "transformer architectures" --download
# Interactive multi-turn mode (follow-up questions)
scholar search --interactive
Standard Google Scholar full-text search:
# Keyword search
scholar lookup "machine learning transformers"
# Author search
scholar lookup "author:shleifer disclosure" --json
# With BibTeX
scholar lookup "asset pricing" --bibtex
# With PDF download
scholar lookup "deep learning" --download
Fetch BibTeX directly when you already have a cluster ID from search results:
# Single paper
scholar cite 5Gohgn6QFikJ
# Multiple papers, JSON output
scholar cite 5Gohgn6QFikJ 8409835334886051453 --json
Note: --download works for open-access PDFs (arXiv, NBER, etc.) but is unreliable for papers behind library link resolvers (institutional access). For paywalled papers, return the URL and let the user download manually.
scholar download "https://arxiv.org/pdf/1706.03762" --output attention.pdf
| Need | Command |
|------|---------|
| Natural language question | scholar search "question" |
| Keyword/author search | scholar lookup "keywords" |
| BibTeX citations | Add --bibtex to search/lookup |
| BibTeX by cluster ID | scholar cite <clusterId> |
| Download PDFs | Add --download to search/lookup |
| Download single PDF | scholar download "url" --output file.pdf |
| JSON output | Add --json to any command |
| Interactive follow-ups | scholar search --interactive |
| Re-authenticate | scholar auth |
Do you have a cluster ID already?
YES → scholar cite <clusterId>
NO ↓
Do you have a natural language research question?
YES → scholar search "question"
NO ↓
Do you need keyword-exact or author-specific results?
YES → scholar lookup "author:name keyword"
NO ↓
Do you want follow-up refinement?
YES → scholar search --interactive
When to add flags:
Need citation metadata (authors, journal, year, abstract)?
YES → Add --bibtex
Need to download the PDF (open-access only)?
YES → Add --download (unreliable for paywalled papers — return the URL instead)
Need machine-readable output?
YES → Add --json
When presenting paper information to the user, follow this workflow:
1. Run scholar search/lookup with --bibtex
2. Parse BibTeX fields for authoritative metadata:
- title, author, journal/booktitle, year, abstract
3. Present ONLY the fields returned by BibTeX
4. If BibTeX is missing a field, say "not available" — do NOT fill from memory
BibTeX includes abstracts: The --bibtex flag injects the snippet as an abstract field in the BibTeX entry. Use this instead of generating abstracts.
Table output (default): Columns for #, Title, Authors, Year, Cited, Journal, followed by snippets and URLs.
JSON output (--json): Array of ScholarResult objects:
{
"title": "Paper Title",
"authors": "Author A, Author B",
"journal": "Journal Name",
"year": "2024",
"citations": 150,
"snippet": "Abstract excerpt...",
"url": "https://...",
"pdfUrl": "https://... or null",
"clusterId": "12345",
"position": 1
}
BibTeX output (--bibtex): Standard BibTeX entries with abstract field:
@article{key,
title={Paper Title},
author={Author, A and Author, B},
journal={Journal Name},
year={2024},
abstract={Abstract text from Google Scholar snippet...}
}
When searching Google Scholar, ALWAYS consult the domain knowledge file first:
File: domain-knowledge.local.md (relative to this skill's base directory)
This file contains the user's curated list of trusted journals, authors, and research groups. Use it to:
User asks: "find papers on corporate disclosure"
↓
1. Read domain-knowledge.local.md
2. Run scholar search/lookup
3. Cross-reference results against trusted journals/authors
4. Present results with quality signals:
- ★ = from trusted journal or by trusted author
- Results from unknown sources shown without star
--bibtex or scholar cite to get verified data.--json when results will be processed programmatically--bibtex when presenting papers — It provides verified author, journal, year, and abstract fieldsscholar authdevelopment
Build the meeting-level proxy-voting × ownership panel on the WRDS SGE grid — ISS N-PX fund votes reduced to (item × block) direction cells, joined to institutional and mutual-fund ownership. Use when working with risk.voteanalysis_npx, N-PX fund-level votes, ISS→CRSP fund linking, index/passive/active voting blocks, or a proxy-voting panel that needs ownership attached.
development
Use when "CRSP CIZ", "CRSP v2", "CRSP flat file format 2.0", "crsp.dsf_v2 / msf_v2", "StkDlySecurityData", "StkMthSecurityData", "StkSecurityInfoHist", "stocknames_v2", "DlyRet / MthRet / DlyPrc / MthPrc", "SHRCD or EXCHCD equivalent in new CRSP", "SIZ to CIZ migration", "CRSP data after 2024", "CRSP delisting returns", "CRSP cumulative adjustment factors", "CRSP index INDNO / INDFAM", or any CRSP stock/index query where the legacy SIZ column names no longer exist.
development
Use when linking or deduping datasets by entity name rather than a shared key — 'fuzzy match', 'fuzzy name matching', 'entity resolution', 'record linkage', 'match company/person names', 'dedupe entity names', 'name-based join', 'bridge identifiers' (CIK ↔ permno ↔ gvkey ↔ wficn ↔ EIN ↔ personid), or any use of char n-gram TF-IDF, cosine similarity on names, `sparse_dot_topn`, or RapidFuzz at scale.
development
Use when building a publication-quality table in Python — 'regression table', 'results table', 'summary statistics table', 'etable', 'coefplot', 'great_tables', 'GT', 'gt table', 'format a table for the paper', 'export table to LaTeX/HTML', significance stars, spanners, or column formatting for a table headed into a paper, slide deck, or notebook.