wos-navigate-pages について
wos-navigate-pages は、Web of Science の現在の検索結果から指定ページを読み込むスキルです。結果ページの URL を使う方法と、元の検索条件を再利用する API の方法があります。
主な機能
- 01指定した結果ページの読み込み
- 02結果ページ URL の変更による移動
- 03検索 API によるページ取得
- 041 始まりのレコードオフセット
活用シーン
- 01現在の検索結果の次ページを開く
- 02元の検索条件を維持して指定ページを取得
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ cookjohn/ wos-skills --skill wos-navigate-pagesインストール後、Claude Code で/wos-navigate-pagesを入力して読み込まれたか確認します。
詳細
WoS の結果ページに移動
現在の WoS 検索結果から、指定したページを読み込みます。
2 つの方法
方法 A:URL ベース(ブラウザーが検索結果ページにある場合)
検索結果の URL は次のパターンに従います。
/wos/woscc/summary/{session-uuid}/{sort}/{page-number}
URL のページ番号を変更して移動します。その後、DOM セレクターを使用して evaluate_script で抽出します。2 回のツール呼び出しが必要です。
方法 B:API ベース(推奨、ツール呼び出し 1 回)
retrieve.first のオフセットを指定して、検索 API を再実行します。
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 };
}
注意事項
- API ベースの方法では、ツール呼び出しは 1 回のみです
- 前回の
wos-search呼び出しで使用した元の検索クエリ、エディション、並べ替え順を記憶しておく必要があります retrieve.firstは 1 始まりのレコードオフセットです(1 = 最初のレコード、51 = 2 ページ目など)- 1 ページあたり 50 件のレコードを取得でき、最大 100,000 件のレコードにアクセスできます
コメント
Markdown 対応