원클릭으로
sd-advanced-search
// Advanced search on ScienceDirect with filters like author, journal, year, title, keywords. Use when the user wants filtered academic paper search.
// Advanced search on ScienceDirect with filters like author, journal, year, title, keywords. Use when the user wants filtered academic paper search.
| name | sd-advanced-search |
| description | Advanced search on ScienceDirect with filters like author, journal, year, title, keywords. Use when the user wants filtered academic paper search. |
| argument-hint | [search terms and filters] |
Perform a filtered search on ScienceDirect by constructing URL parameters directly.
Build the search URL as {BASE_URL}/search?{params}&show=25 using these parameters:
| Param | Field | Example |
|---|---|---|
qs | All fields (keywords) | machine learning |
tak | Title, abstract or keywords | neural network |
title | Title only | transformer |
authors | Author name(s) | Hinton |
pub | Journal or book title | Nature |
date | Year or year range | 2023 or 2020-2025 |
volume | Volume number(s) | 5 or 7-11 |
issue | Issue number(s) | 1 or 1-3 |
page | Page number(s) | 55 or 1-9 |
docId | ISSN or ISBN | 0957-4174 |
affiliations | Author affiliation | MIT |
references | Cited references | Smith 2020 |
Multiple parameters can be combined. For example:
{BASE_URL}/search?tak=deep+learning&authors=LeCun&date=2020-2025&show=25
From $ARGUMENTS, identify which fields the user wants to filter on. Map natural language to URL parameters:
authors=Xpub=Ydate=2020-2025tak=Z or qs=Ztitle=...Use navigate_page to the constructed URL. Always include initScript to prevent bot detection:
initScript: "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
sciencedirect or search after navigation, the user may have been redirected to a login/authentication page. Tell the user: "页面被重定向,请在浏览器中完成登录或认证后告知我。" Then wait.When a captcha page is detected (title "请稍候…" or body contains "Are you a robot"):
evaluate_script to poll for #captcha-box (up to 8s).take_snapshot to get the a11y tree. The checkbox is inside a cross-origin iframe but Chrome DevTools MCP can see it:
Iframe "包含 Cloudflare 安全质询的小组件"
checkbox "确认您是真人" ← target uid
click(uid) on the checkbox element.document.contentType changed or the page URL changed (indicating success). If still on captcha, retry once or fall back to asking the user.Use evaluate_script with built-in waiting (same as sd-search). Do NOT use wait_for — it returns oversized snapshots.
async () => {
// Wait for results to load (up to 10s)
for (let i = 0; i < 20; i++) {
if (document.querySelector('li.ResultItem') || document.querySelector('.search-body-results-text')) break;
await new Promise(r => setTimeout(r, 500));
}
const items = document.querySelectorAll('li.ResultItem');
const papers = [];
for (let i = 0; i < items.length; i++) {
const item = items[i];
const titleLink = item.querySelector('a.result-list-title-link');
const journal = item.querySelector('a.subtype-srctitle-link');
const dateSpans = item.querySelectorAll('.srctitle-date-fields > span');
const date = dateSpans.length > 1 ? dateSpans[dateSpans.length - 1].textContent.trim() : '';
const authors = [...item.querySelectorAll('.Authors .author')].map(a => a.textContent.trim());
const doi = item.getAttribute('data-doi');
const pii = titleLink?.href?.match(/pii\/(\w+)/)?.[1] || '';
const articleType = item.querySelector('.article-type')?.textContent?.trim() || '';
const isOpenAccess = !!item.querySelector('.access-label');
papers.push({
rank: i + 1,
title: titleLink?.textContent?.trim() || '',
pii, doi: doi || '',
journal: journal?.textContent?.trim() || '',
date, authors, articleType, openAccess: isOpenAccess,
});
}
const totalText = document.querySelector('.search-body-results-text')?.textContent?.trim() || '';
const pageInfo = document.querySelector('.Pagination li:first-child')?.textContent?.trim() || '';
return { papers, totalResults: totalText, pageInfo };
}
Same format as sd-search. Additionally, show the applied filters at the top:
Search filters: author={X}, journal={Y}, year={Z}
Found {totalResults}. {pageInfo}
1. {title} ...
sd-paper-detail instead.Download PDF from ScienceDirect articles. Requires institutional or subscriber access.
Export citations from ScienceDirect in RIS, BibTeX, or plain text format. Supports pushing to Zotero.
Browse a journal on ScienceDirect — view info, impact factor, latest articles, and specific issues. Use when the user asks about a journal or wants to browse its contents.
Navigate pages, change sort order, or adjust results per page on ScienceDirect search results.
Extract full metadata from a ScienceDirect article page (abstract, authors, keywords, DOI, references, PDF link). Use when the user wants details about a specific paper.
Re-parse the currently open ScienceDirect search results page. Internal skill used by other skills.