cnki-journal-toc について
CNKI で雑誌の各号を閲覧し、論文一覧を抽出するブラウザスキルです。号を指定すると、スキャン版の目次 PDF を開いてダウンロードすることもできます。
主な機能
- 01年と号を指定した目次の閲覧
- 02論文タイトル、著者、ページ範囲の抽出
- 03原版目次ビューアーを開く機能
- 04PDF ダウンロードの開始
活用シーン
- 01指定した雑誌の号に掲載された論文の確認
- 02論文の著者やページ範囲の検索
- 03スキャン版の目次 PDF のダウンロード
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ cookjohn/ cnki-skills --skill cnki-journal-tocインストール後、Claude Code で/cnki-journal-tocを入力して読み込まれたか確認します。
詳細
CNKI ジャーナル目次(期刊目录浏览 + 原版目录下载)
ジャーナルの各号を閲覧し、論文一覧を抽出します。必要に応じて、原版の目次 PDF(表紙+目次のスキャン版)を開いたりダウンロードしたりできます。
引数
$ARGUMENTS には、閲覧する内容を指定します。
{journal name}— ジャーナル名{year}(任意)— 年。省略した場合は最新の年が使用されます{issue}(任意)— 号数download(任意)— 指定すると、原版の目次 PDF をダウンロードします
例:
计算机学报 2026 01期— 2026 年第 1 号を閲覧计算机学报 2026 01期 download— 原版の目次 PDF をダウンロード计算机学报— 最新号を表示(ネットワーク先行公開)
手順
1. ジャーナル詳細ページに移動する
ジャーナル詳細ページ(navi.cnki.net/knavi/detail)をすでに開いていない場合:
cnki-journal-searchを使ってジャーナルを検索しますmcp__chrome-devtools__list_pagesとmcp__chrome-devtools__select_pageを使って、ジャーナル詳細タブに切り替えます(新しいタブで開きます)
2. 号を選択して論文を抽出する(単一の非同期 evaluate_script)
YEAR と ISSUE を実際の値(例:"2025"、"No.01")に置き換えます。
「刊期浏览」タブはデフォルトでアクティブになっているため、クリックする必要はありません。
async () => {
const year = "YEAR";
const issue = "ISSUE"; // Format: "No.01", "No.12", etc.
const dls = document.querySelectorAll('#yearissue0 dl.s-dataList');
let target = null;
for (const dl of dls) {
if (dl.querySelector('dt')?.innerText?.trim() === year) {
target = Array.from(dl.querySelectorAll('dd a')).find(a => a.innerText.trim() === issue);
break;
}
}
if (!target) {
// Return available years and issues for the requested year
const available = Array.from(dls).map(dl => ({
year: dl.querySelector('dt')?.innerText?.trim(),
issues: Array.from(dl.querySelectorAll('dd a')).map(a => a.innerText.trim())
})).filter(y => y.year);
return { error: 'issue_not_found', year, issue, available: available.slice(0, 5) };
}
target.click();
// Wait for paper list to load
await new Promise((r, j) => {
let n = 0;
const c = () => {
const rows = document.querySelectorAll('#CataLogContent dd.row');
if (rows.length > 0) r();
else if (++n > 30) j('timeout');
else setTimeout(c, 500);
};
setTimeout(c, 1000);
});
// Extract papers
const rows = document.querySelectorAll('#CataLogContent dd.row');
const papers = Array.from(rows).map((dd, i) => ({
no: i + 1,
title: dd.querySelector('span.name a')?.innerText?.trim(),
authors: dd.querySelector('span.author')?.innerText?.trim()?.replace(/;$/, ''),
pages: dd.querySelector('span.company')?.innerText?.trim()
}));
// Get 原版目录 URL
const tocBtn = document.querySelector('a.btn-preview:not(.btn-back)');
return {
issueLabel: document.querySelector('span.date-list')?.innerText?.trim(),
paperCount: papers.length,
papers,
tocUrl: tocBtn?.href || null,
url: location.href
};
}
3. 結果を提示する
## {journal_name} — {issueLabel}
共 {paperCount} 篇论文:
1. {title} [pp. {pages}]
作者:{authors}
2. {title} [pp. {pages}]
作者:{authors}
...
4. 原版の目次 PDF をダウンロードする(要求された場合)
ユーザーがダウンロードを要求した場合、または「原版目录」を求めた場合:
方法 A — 「原版目录浏览」をクリックしてリーダーを開き、その後ダウンロードする:
- スナップショット内で、テキストが「原版目录浏览」の
linkを探します(クラスbtn-preview) - クリックします。リーダーページ(
kns.cnki.net/reader/report)が新しいタブで開きます mcp__chrome-devtools__list_pagesを使って、新しいリーダータブを探しますmcp__chrome-devtools__select_pageを使って、そのタブに切り替えますmcp__chrome-devtools__wait_forを使い、テキスト["下载"]が表示されるまで待ちます- スナップショットを取得し、テキストが「下载」の
link(リーダーのツールバーにあるダウンロードボタン)を探します - ダウンロードリンクをクリックします。Chrome で PDF のダウンロードが開始されます
方法 B — リーダーページから直接ダウンロードする:
すでにリーダーページ(kns.cnki.net/reader/report)を開いている場合:
- スナップショットを取得します
- テキストが「下载」の
linkを探します - クリックします
クリック後、ユーザーに次のように伝えます:
原版の目次 PDF のダウンロードが開始されました。Chrome のダウンロード管理画面をご確認ください。
ツール呼び出し
- 号の閲覧:1 回(evaluate_script のみ)。ジャーナルページへの移動後に実行します
- 目次のダウンロード:スナップショットの取得、クリック、タブ切り替えが必要です(新しいタブ)
確認済みのセレクター
ジャーナル詳細 — 刊期浏览
| 要素 | セレクター | 備考 |
|---|---|---|
| 刊期浏览タブ | テキストが「刊期浏览」の a | デフォルトでアクティブ(li.on.cur)。クリック不要 |
| 年の領域 | #yearissue0 / .yearissuepage | |
| 年のグループ | dl.s-dataList | #yearissue0 内 |
| 年のラベル | dl.s-dataList dt | テキストは「2026」「2025」など |
| 号のリンク | dl.s-dataList dd a | テキストは「No.01」「No.12」など |
| 号のラベル | span.date-list | テキストは「2025年01期」 |
| 論文コンテナー | #CataLogContent | |
| 論文エントリー | #CataLogContent dd.row | |
| 論文タイトル | dd.row span.name a | kcms2/article/abstract への href |
| 論文著者 | dd.row span.author | セミコロン区切り |
| 論文のページ範囲 | dd.row span.company | クラス名は「company」ですが、ページ範囲が格納されています |
| 論文 ID | dd.row b[name="encrypt"] | 「JSJX202512001」のような ID |
| 原版目录浏览 | a.btn-preview:not(.btn-back) | bar.cnki.net/bar/download/order への href |
| 戻る | a.btn-preview.btn-back |
リーダーページ(kns.cnki.net/reader/report)
| 要素 | パターン |
|---|---|
| ページタイトル | RootWebArea "期刊原版目录" |
| ダウンロードボタン | テキストが「下载」の link。URL は bar.cnki.net/bar/download/order |
| 現在のページ | textbox の値(ページ番号) |
| 総ページ数 | StaticText(例:「4」) |
| ナビゲーション | 説明が「上一页」/「下一页」の generic |
重要な注意事項
- 「原版目录浏览」は、特定の号を選択した場合にのみ表示されます(ネットワーク先行公開の画面には表示されません)。
- リーダーページは新しいタブで開きます。
- リーダーのダウンロードリンクを使用するには、ログインが必要です。ダウンロードできない場合は、ログインするようユーザーに伝えてください。
- ダウンロード URL はセッションごとに異なるため、キャッシュしたり再利用したりしないでください。
コメント
Markdown 対応