一键导入
wos-navigate-pages
Navigate to a specific page of WoS search results, or load more results from the last search.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Navigate to a specific page of WoS search results, or load more results from the last search.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Download PDF full text for a WoS paper via publisher links.
Export WoS records to Zotero, RIS, BibTeX, or Excel.
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-navigate-pages |
| description | Navigate to a specific page of WoS search results, or load more results from the last search. |
| argument-hint | [page number or 'next'/'prev'] |
| user-invocable | true |
| disable-model-invocation | false |
Load a specific page of results from the current WoS search.
The results URL follows the pattern:
/wos/woscc/summary/{session-uuid}/{sort}/{page-number}
Modify the page number in the URL and navigate. Then extract via evaluate_script with DOM selectors. Uses 2 tool calls.
Re-run the search API with retrieve.first offset:
async () => {
const sid = performance.getEntriesByType('resource')
.filter(r => r.name.includes('SID='))
.map(r => r.name.match(/SID=([^&]+)/)?.[1])
.filter(Boolean)[0] || '';
const page = {TARGET_PAGE}; // 1-based
const perPage = 50;
const first = (page - 1) * perPage + 1;
const response = await fetch(`/api/wosnx/core/runQuerySearch?SID=${sid}`, {
method: 'POST',
headers: { 'Content-Type': 'text/plain;charset=UTF-8', 'Accept': 'application/x-ndjson' },
body: JSON.stringify({
"product": "WOSCC",
"searchMode": "general",
"viewType": "search",
"serviceMode": "summary",
"search": {
"mode": "general",
"database": "WOSCC",
"query": [{SAME_QUERY_AS_ORIGINAL_SEARCH}],
"editions": [{SAME_EDITIONS}]
},
"retrieve": {
"first": first,
"count": perPage,
"history": false,
"jcr": true,
"sort": "{SAME_SORT}",
"analyzes": [],
"locale": "en"
},
"eventMode": null
})
});
const text = await response.text();
const lines = text.trim().split('\n').map(l => { try { return JSON.parse(l); } catch(e) { return null; } }).filter(Boolean);
const searchInfo = lines.find(l => l.key === 'searchInfo')?.payload;
const recordsData = lines.find(l => l.key === 'records')?.payload;
let records = [];
if (recordsData) {
records = Object.entries(recordsData).map(([idx, rec]) => ({
idx: first + parseInt(idx) - 1,
wosId: rec.colluid,
title: rec.titles?.item?.en?.[0]?.title || '',
authors: rec.names?.author?.en?.filter(Boolean).map(a => a.wos_standard).join('; ') || '',
source: rec.titles?.source?.en?.[0]?.title || '',
year: rec.pub_info?.pubyear || '',
doi: rec.doi || '',
citations: rec.citation_related?.counts?.WOSCC || 0
}));
}
return { status: 'ok', page, totalResults: searchInfo?.RecordsFound || 0, records };
}
wos-search callretrieve.first is 1-based record offset (1 = first record, 51 = page 2, etc.)