Manusで任意のスキルを実行
ワンクリックで
ワンクリックで
ワンクリックでManusで任意のスキルを実行
始める$pwd:
$ git log --oneline --stat
stars:81
forks:14
updated:2026年3月5日 03:27
SKILL.md
Export WoS records to Zotero, RIS, BibTeX, or Excel.
Navigate to a specific page of WoS search results, or load more results from the last search.
Get detailed information for a paper by WoS ID (e.g., WOS:000779183600001).
Parse search results from the current WoS results page or API response. Internal skill used by other skills.
Search Web of Science by topic, author, title, DOI, or advanced query. Supports edition/database filtering and sort.
| name | wos-download |
| description | Download PDF full text for a WoS paper via publisher links. |
| argument-hint | [WoS ID or DOI] |
| user-invocable | true |
| disable-model-invocation | true |
Download PDF full text for a paper from Web of Science.
a.download trick only works when the browser is on the same-origin page displaying the PDF. It does NOT work for cross-origin redirects (e.g., WoS → Wiley).If not already on the full record page:
navigate_page({
url: "{BASE_URL}/wos/woscc/full-record/{WOS_ID}",
initScript: "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
})
async () => {
for (let i = 0; i < 20; i++) {
if (document.querySelector('[data-ta="FullRTa-fullRecordtitle-0"]')) break;
await new Promise(r => setTimeout(r, 500));
}
await new Promise(r => setTimeout(r, 1000));
const title = document.querySelector('[data-ta="FullRTa-fullRecordtitle-0"]')?.textContent?.trim() || '';
const links = [...document.querySelectorAll('a[data-ta^="FRLinkTa"]')].map(a => ({
text: a.textContent?.trim()?.replace(/open_in_new/g, '').trim(),
href: a.href,
dataTa: a.getAttribute('data-ta')
}));
const doiEl = document.querySelector('a[href*="doi.org"]');
const doi = doiEl?.href || '';
return { title, links, doi };
}
Navigate to the publisher link:
navigate_page({
url: "{CHOSEN_LINK}",
initScript: "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
})
async () => {
await new Promise(r => setTimeout(r, 5000));
const url = window.location.href;
const contentType = document.contentType;
// Direct PDF — trigger download immediately
if (contentType === 'application/pdf') {
const a = document.createElement('a');
a.href = url;
a.download = '{FILENAME}';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
return { status: 'downloaded', url };
}
// Publisher HTML page — look for PDF links
const pdfLinks = [...document.querySelectorAll('a')].filter(a => {
const href = a.href || '';
const text = a.textContent || '';
return href.includes('/pdf/') || href.includes('.pdf') ||
text.toLowerCase().includes('download pdf') || text.toLowerCase() === 'pdf';
}).map(a => ({
text: a.textContent?.trim()?.substring(0, 50),
href: a.href?.substring(0, 120)
}));
// Check for access denial
const bodyText = document.body.innerText?.substring(0, 1000) || '';
const loginRequired = bodyText.includes('Sign in') || bodyText.includes('Log in') ||
bodyText.includes('Individual login') || bodyText.includes('Institutional login');
const paywall = bodyText.includes('Purchase') || bodyText.includes('Subscribe') ||
bodyText.includes('Access Denied');
return {
status: loginRequired ? 'login_required' : paywall ? 'paywall' : pdfLinks.length > 0 ? 'pdf_links_found' : 'publisher_page',
url: url.substring(0, 100),
pdfLinks: pdfLinks.slice(0, 5),
pageTitle: document.title
};
}
| Status | Action |
|---|---|
downloaded | Report success, file saved to default download folder |
pdf_links_found | Click the "Download PDF" link on the publisher page |
login_required | Inform user: "Publisher requires login. Try accessing via institutional VPN/WebVPN or download manually." |
paywall | Inform user: "This paper requires a subscription." |
publisher_page | Inform user: "On publisher page but no direct PDF link found." |
If pdf_links_found, use take_snapshot to find the Download PDF button, then click it:
1. take_snapshot → find "Download PDF" link uid
2. click(uid)
3. evaluate_script → wait 5s, check if PDF loaded (contentType === 'application/pdf')
4. If PDF loaded → trigger download with a.download
{FirstAuthor}_{Year}_{ShortTitle}.pdf
Example: Johnson_2025_Citizen-Centric_AI_Government.pdf
/api/gateway?...DestURL=...) redirect through GetFTR to publisher. The final destination depends on institutional access./doi/epdf/...) is an iframe-based reader, not a downloadable PDF.initScript on every navigation