wos-search について
wos-searchは、ブラウザーからWeb of Scienceを検索するスキルです。データベース、コレクションのエディション、並べ替えを指定でき、文献検索の結果を表で提示します。
主な機能
- 01複数のWeb of Scienceデータベースを検索
- 02コアコレクションのエディションを絞り込み
- 03関連度、日付、被引用数、利用数で並べ替え
- 04検索語をフィールドに割り当て
- 051回の検索で最大50件を取得
活用シーン
- 01トピック、著者、DOI、雑誌から論文を探す
- 02SCIまたはSSCIに検索範囲を限定
- 03被引用数や日付で結果を並べ替え
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cookjohn/ wos-skills --skill wos-searchインストール後、Claude Code で/wos-searchを入力して読み込まれたか確認します。
詳細
WoS 検索
内部 API を介して Web of Science を検索します。1 回の evaluate_script 呼び出しで、エディションの絞り込み、並べ替え、複数のデータベースに対応します。
重要:ブラウザーの前提条件
ブラウザーで webofscience.com のページを開いている必要があります(ログイン済み)。このスキルは fetch を介して WoS 内部 API を直接呼び出すため、ページ遷移は必要ありません。
言語に関するガイダンス
WoS データベース(特に SCI/SSCI)は、主に英語の文献を索引化しています。ユーザーが中国語のキーワードを指定した場合は、英語に翻訳してください(例:「价值共创」→「value co-creation」)。翻訳したことをユーザーに伝えてください。
パラメーターのリファレンス
データベース(product)
| ユーザーの指定 | product | 説明 |
|---|---|---|
| 「core collection」/デフォルト | WOSCC | WoS Core Collection |
| 「all databases」 | ALLDB | すべてのデータベースを統合 |
| 「medline」 | MEDLINE | 生物医学文献 |
| 「preprint」 | PPRN | Preprint Citation Index |
| 「scielo」 | SCIELO | SciELO Citation Index |
エディションの絞り込み(Core Collection のみ)
| ユーザーの指定 | editions の値 |
|---|---|
| 「SCI」/「science」 | WOS.SCI |
| 「SSCI」/「social science」 | WOS.SSCI |
| 「CPCI」/「conference」 | WOS.CPCI-S、WOS.CPCI-SSH |
| 「all」/デフォルト | editions フィールドを省略(またはすべてを含める) |
複数のエディションを組み合わせることができます:["WOS.SCI", "WOS.SSCI"]
並べ替えオプション
| ユーザーの指定 | sort の値 |
|---|---|
| 「citations」/「most cited」 | times-cited-descending |
| 「newest」/「latest」 | date-descending |
| 「oldest」 | date-ascending |
| 「relevance」/デフォルト | relevance |
| 「usage」 | usage-count-last-180-days-descending |
フィールドの対応表(クエリ行用)
| ユーザーの指定 | rowField |
|---|---|
| トピック/キーワード/内容 | TS |
| タイトル | TI |
| 著者 | AU |
| DOI | DO |
| ジャーナル/情報源 | SO |
| 年 | PY |
| 所属機関 | OG |
| 抄録 | AB |
| 資金提供 | FO |
| 国 | CU |
手順
ステップ 1:API リクエスト本文を作成する
{
"product": "WOSCC",
"searchMode": "general",
"viewType": "search",
"serviceMode": "summary",
"search": {
"mode": "general",
"database": "WOSCC",
"query": [
{"rowField": "TS", "rowText": "USER_QUERY"}
],
"editions": ["WOS.SSCI"]
},
"retrieve": {
"count": 10,
"history": true,
"jcr": true,
"sort": "times-cited-descending",
"analyzes": [],
"locale": "en"
},
"eventMode": null
}
query:{rowField, rowText}オブジェクトの配列です。複数の条件を指定する場合は、後続の行にrowBoolean(AND/OR/NOT)を追加します。editions:省略可能です。すべてのエディションを対象にする場合は省略します。count:取得するレコード数です(デフォルトは 10、最大 50)。sort:デフォルトはrelevanceです。
ステップ 2:evaluate_script で API を呼び出す
必要なツール呼び出しはこれだけです(合計 1 回)。
ブラウザーが以前 WoS 以外のページ(例:出版社のリンクを開いた後)にあった場合、SID が失われます。その場合は、セッションを再確立するために、まず任意の WoS ページに戻ってください(navigate_page で https://www.webofscience.com/wos/woscc/basic-search に移動)。その後、API を呼び出します。この場合、ツール呼び出しが 1 回追加されます(合計 2 回)。
または、SID の状態にかかわらず常に機能する URL ベースのフォールバック(下記のステップ 2B)を使用してください。
async () => {
// Extract SID from network history
const sid = performance.getEntriesByType('resource')
.filter(r => r.name.includes('SID='))
.map(r => r.name.match(/SID=([^&]+)/)?.[1])
.filter(Boolean)[0] || '';
if (!sid) return { status: 'no_session', message: 'SID lost (likely navigated to external site). Use Step 2B or navigate to any WoS page first.' };
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": "{PRODUCT}",
"searchMode": "general",
"viewType": "search",
"serviceMode": "summary",
"search": {
"mode": "general",
"database": "{PRODUCT}",
"query": [{QUERY_ROWS}],
"editions": [{EDITIONS}]
},
"retrieve": {
"count": {COUNT},
"history": true,
"jcr": true,
"sort": "{SORT}",
"analyzes": [],
"locale": "en"
},
"eventMode": null
})
});
const text = await response.text();
const lines = text.trim().split('\n').map(line => {
try { return JSON.parse(line); } 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: parseInt(idx),
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 || '',
vol: rec.pub_info?.vol || '',
issue: rec.pub_info?.issue || '',
pages: rec.pub_info?.page_no || '',
doi: rec.doi || '',
citations: rec.citation_related?.counts?.WOSCC || 0,
citationsAll: rec.citation_related?.counts?.ALLDB || 0,
refCount: rec.ref_count || 0,
abstract: rec.abstract?.basic?.en?.abstract?.replace(/<[^>]*>/g, '')?.substring(0, 300) || '',
docType: rec.doctypes?.[0] || '',
oa: rec.oa || false
}));
}
return {
status: 'ok',
totalResults: searchInfo?.RecordsFound || 0,
recordsSearched: searchInfo?.RecordsSearched || 0,
queryId: searchInfo?.QueryID || '',
records
};
}
ステップ 3:結果を提示する
次のような表で表示します:
Found **{totalResults}** results in {database} ({edition}).
Sorted by: {sort}.
| # | Title | Authors | Source | Year | Cited | WoS ID |
|---|-------|---------|--------|------|-------|--------|
| 1 | {title} | {authors} | {source} | {year} | {citations} | {wosId} |
| ... |
次のアクションを提示します:
- 詳細情報を表示するには「
/wos-paper-detail {WoS ID}を使用」 - 結果をエクスポートするには「
/wos-exportを使用」 - さらに結果を表示するには、
countを増やして再実行するか、/wos-navigate-pagesを使用
ステップ 2B:URL ベースのフォールバック(SID が失われた場合)
API が no_session を返した場合(例:外部の出版社サイトに移動した後)、URL ナビゲーションに切り替えます:
navigate_page({
url: "https://www.webofscience.com/wos/{db}/general-summary?queryJson={ENCODED_QUERY_JSON}",
initScript: "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
})
次に、DOM セレクターを使用した evaluate_script で結果を抽出します(wos-parse-results の Mode B を参照)。または API 呼び出しを再試行します(ナビゲーション後に SID が再確立されます)。
使用する状況:ブラウザーで外部サイト(出版社、DOI リンクなど)を表示した後、performance.getEntriesByType('resource') に WoS SID のエントリーが含まれなくなった場合。
メモ
- SID が失われていない場合はツール呼び出し 1 回(API)、失われた場合はツール呼び出し 2 回(ナビゲーション+API/DOM)
- API は NDJSON(改行区切り JSON)を返すため、行ごとに解析します
- SID はブラウザーのパフォーマンスリソースエントリーから抽出します
- SID の喪失:外部サイトに移動するとパフォーマンスエントリーがクリアされます。先に任意の WoS ページに移動して復元するか、URL ベースのフォールバック(ステップ 2B)を使用してください
editionsフィールドの形式はWOS.SCI、WOS.SSCI、WOS.CPCI-Sなどです- SCI/SSCI で中国語のキーワードを使用する場合は、先に英語に翻訳してください
- リクエストごとの最大レコード数は 50 件です。
retrieve.countで制御してください history: trueを指定すると、検索が WoS のセッション履歴に保存されます