一键导入
sd-parse-results
// Re-parse the currently open ScienceDirect search results page. Internal skill used by other skills.
// Re-parse the currently open ScienceDirect search results page. Internal skill used by other skills.
Advanced search on ScienceDirect with filters like author, journal, year, title, keywords. Use when the user wants filtered academic paper search.
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.
| name | sd-parse-results |
| description | Re-parse the currently open ScienceDirect search results page. Internal skill used by other skills. |
| user-invokable | false |
Extract structured data from an already-open ScienceDirect search results page without navigating.
Use evaluate_script (no navigation needed):
() => {
// Verify we are on a search results page
if (!window.location.pathname.includes('/search')) {
return { error: 'Not on a ScienceDirect search results page.' };
}
const items = document.querySelectorAll('li.ResultItem');
if (items.length === 0) {
return { error: 'No results found on the current page. The page may still be loading.' };
}
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');
const checkboxId = item.querySelector('.checkbox-input')?.id || '';
papers.push({
rank: i + 1,
title: titleLink?.textContent?.trim() || '',
pii, doi: doi || '',
journal: journal?.textContent?.trim() || '',
date, authors, articleType, openAccess: isOpenAccess,
checkboxId,
});
}
const totalText = document.querySelector('.search-body-results-text')?.textContent?.trim() || '';
const pageInfo = document.querySelector('.Pagination li:first-child')?.textContent?.trim() || '';
const currentUrl = window.location.href;
return { papers, totalResults: totalText, pageInfo, currentUrl };
}
Return the extracted data. The checkboxId field (= PII) is important for batch export and download operations.
evaluate_script).