SuperAPI AI 工具集

cnki-journal-toc

写作与研究

查看项目

更新于 10-15 17:04

技能介绍

用途

CNKI Journal Table of Contents(期刊目录浏览 + 原版目录下载)用于在知网(CNKI)上浏览期刊的某一期,提取该期的论文列表,并可选择打开或下载原版目录 PDF(封面 + 目录扫描版)。

主要能力

  • 浏览特定期刊的某一期,并提取该期收录论文的清单。
  • 提取字段包括:序号、论文标题、作者(分号分隔)、页码范围。
  • 获取该期的“原版目录”链接,并支持打开阅读页与触发 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 —— 点击“原版目录浏览”打开阅读器后下载:

  • 在快照中找到文本为“原版目录浏览”的链接(class btn-preview)。
  • 点击它——会在新标签中打开阅读页(kns.cnki.net/reader/report)。
  • 使用 mcp__chrome-devtools__list_pages 找到新的阅读器标签页。
  • 使用 mcp__chrome-devtools__select_page 切换到该标签页。
  • 使用 mcp__chrome-devtools__wait_for 等待文本 ["下载"]。
  • 截取快照——找到文本为“下载”的链接(阅读器工具栏中的下载按钮)。
  • 点击该下载链接——通过 Chrome 触发 PDF 下载。

方法 B —— 从阅读页直接下载:

如果已在阅读页(kns.cnki.net/reader/report):

  • 截取快照。
  • 找到文本为“下载”的链接。
  • 点击它。

点击后,告知用户:

原版目录 PDF 下载已触发,请在 Chrome 下载管理器中查看。

工具调用

  • 浏览期号:1 次(仅 evaluate_script)——在导航到期刊页之后。
  • 下载目录:需要快照 + 点击 + 切换标签页(新标签页)。

已验证的选择器

期刊详情页 —— 刊期浏览:

元素 选择器 备注
刊期浏览 tab a text "刊期浏览" 默认激活(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 href 指向 kcms2/article/abstract
论文作者 dd.row span.author 分号分隔
论文页码范围 dd.row span.company class 名为 "company",但存放页码范围
论文 ID dd.row b[name="encrypt"] id 形如 "JSJX202512001"
原版目录浏览 a.btn-preview:not(.btn-back) href 指向 bar.cnki.net/bar/download/order
返回 a.btn-preview.btn-back

阅读页(kns.cnki.net/reader/report):

元素 模式
页面标题 RootWebArea "期刊原版目录"
下载按钮 链接文本 "下载",URL 指向 bar.cnki.net/bar/download/order
当前页 textbox 值(页码)
总页数 StaticText(如 "4")
导航 generic description "上一页" / "下一页"

注意事项

  • “原版目录浏览”仅在选定具体期号后出现(网络首发视图下不出现)。
  • 阅读页在新标签中打开。
  • 阅读页中的下载链接需要登录。如果下载失败,提醒用户登录。
  • 下载 URL 为会话级——请勿缓存或复用。

适用场景

  • 需要查看某期刊某年某期收录了哪些论文。
  • 需要提取该期论文清单(标题、作者、页码)用于整理或记录。
  • 需要获取该期的原版目录 PDF(封面 + 目录扫描版)。

限制

  • 依赖知网(CNKI)页面结构,选择器基于当前已验证页面。
  • 原版目录下载需登录知网账号;下载链接为会话级,不可缓存或复用。
  • “原版目录浏览”仅在选定具体期号后可用,网络首发视图下不提供。
  • 其他未在资料中说明的限制暂未提供。