gs-advanced-search
Perform advanced Google Scholar search with filters - author, journal, date range, exact…
Export Google Scholar paper(s) to Zotero via BibTeX. Gets citation data from Google Scholar's cite dialog, then pushes to Zotero desktop. Supports single or batch export.
$ npx -y skills add cookjohn/gs-skills --skill gs-export --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/gs-exportContext preview
The summary Claude sees to decide when to auto-load this skill.
Export Google Scholar paper(s) to Zotero via BibTeX. Gets citation data from Google Scholar's cite dialog, then pushes to Zotero desktop. Supports single or batch export.
name: gs-export description: Export Google Scholar paper(s) to Zotero via BibTeX. Gets citation data from Google Scholar's cite dialog, then pushes to Zotero desktop. Supports single or batch export. argument-hint: "[data-cid or space-separated data-cids]"
Export Google Scholar paper citation data via BibTeX extraction and push to Zotero desktop.
$ARGUMENTS contains one or more data-cids (space-separated), e.g.:
For each data-cid, perform 3 tool calls to bypass CORS:
async () => {
const cid = "DATA_CID_HERE";
const resp = await fetch(
`https://scholar.google.com/scholar?q=info:${cid}:scholar.google.com/&output=cite`,
{ credentials: 'include' }
);
const html = await resp.text();
const doc = new DOMParser().parseFromString(html, 'text/html');
// Extract export links
const links = Array.from(doc.querySelectorAll('#gs_citi a')).map(a => ({
format: a.textContent.trim(),
url: a.href
}));
// Extract citation format texts
const citations = Array.from(doc.querySelectorAll('#gs_citt tr')).map(tr => {
const cells = tr.querySelectorAll('td');
return {
style: cells[0]?.textContent?.trim() || '',
text: cells[1]?.textContent?.trim() || ''
};
});
const bibtexLink = links.find(l => l.format === 'BibTeX');
return { cid, bibtexLink: bibtexLink?.url || '', links, citations };
}Use `mcp__chrome-devtools__navigate_page`:
This bypasses CORS restrictions that block fetch() to googleusercontent.com.
async () => {
return { bibtex: document.body.innerText || document.body.textContent || '' };
}Save the BibTeX data as JSON, then call the push script:
python "E:/gscholar-skills/.claude/skills/gs-export/scripts/push_to_zotero.py" /tmp/gs_papers.json
Before calling the script, construct a JSON file at `/tmp/gs_papers.json` containing paper data parsed from BibTeX. Parse the BibTeX yourself and create the JSON array:
[
{
"pmid": "",
"title": "The title from BibTeX",
"authors": [
{"lastName": "Smith", "firstName": "John"}
],
"journal": "Journal Name",
"journalAbbr": "",
"pubdate": "2022",
"volume": "14",
"issue": "4",
"pages": "1054",
"doi": "",
"pdfUrl": "https://example.com/paper.pdf",
"abstract": "",
"keywords": [],
"language": "en",
"pubtype": ["Journal Article"]
}
]**IMPORTANT**: Set `pdfUrl` from the search result's `fullTextUrl` field (the PDF link extracted by gs-search). The Python script will download the PDF and upload it to Zotero via `/connector/saveAttachment` (Zotero 7.x ignores attachments in saveItems). PDF download may fail for some publishers (403, JS-redirect); these are reported as "PDF skip".
BibTeX fields mapping:
Single paper:
Exported to Zotero from Google Scholar:
Title: {title}
Authors: {authors}
Journal: {journal} ({year})
Data-CID: {dataCid}Batch:
Exported {count} papers to Zotero from Google Scholar:
1. {title1} ({journal1}, {year1})
2. {title2} ({journal2}, {year2})
...For multiple papers, process sequentially to avoid CAPTCHA: 1. Get all BibTeX links in one evaluate_script call (fetch all cite dialogs) 2. Navigate to each BibTeX URL one at a time 3. Collect all BibTeX entries 4. Push all to Zotero in a single batch
Google Scholar skills for Claude Code — search, citation tracking, full-text access, and Zotero export via Chrome DevTools MCP
Repo: cookjohn/gs-skills
Perform advanced Google Scholar search with filters - author, journal, date range, exact…
Find papers that cite a given Google Scholar paper. Tracks citation chains using data-cid…
Get full-text access links for a Google Scholar paper - PDF, DOI, Sci-Hub, and publisher…
Navigate Google Scholar search result pages. Use when user wants to see more results or go to…