关于 cnki-journal-toc
用于浏览 CNKI 期刊各期并提取论文列表的浏览器技能。指定期次后,还可打开并下载该期的扫描版原版目录 PDF。
主要功能
- 01按年份和期次浏览期刊目录
- 02提取论文标题、作者和页码范围
- 03打开原版目录阅读器
- 04触发 PDF 下载
适用场景
- 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 的链接 |
| 论文作者 | dd.row span.author | 以分号分隔 |
| 论文页码范围 | dd.row span.company | 类名为“company”,但存放的是页码范围 |
| 论文 ID | dd.row b[name="encrypt"] | ID 如“JSJX202512001” |
| 原版目录浏览 | a.btn-preview:not(.btn-back) | 指向 bar.cnki.net/bar/download/order |
| 返回 | 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