Cnki Journal Toc
Browse journal issues, view table of contents, and download original TOC PDF from CNKI.
Install
npx skills add cookjohn/cnki-skills --skill cnki-journal-toc -g -a claude-code -y- Repository
- cookjohn/cnki-skills1k
- Category
- Documents
- Updated
- 8mo ago
- License
- See repository
- Context cost
- Lightabout 1,442 tokens
- Runs scripts
- No, instructions only
What it does
Browse journal issues, view table of contents, and download original TOC PDF from CNKI. Use when user wants to see papers in a specific journal issue or download the original cover/TOC pages.
CNKI Journal Table of Contents (期刊目录浏览 + 原版目录下载)
Browse journal issues, extract the paper list, and optionally open/download the original TOC PDF (封面+目录扫描版).
Arguments
$ARGUMENTS describes what to browse:
{journal name}, which journal{year}(optional), which year, defaults to latest{issue}(optional), which issue numberdownload(optional), if included, download the original TOC PDF
Examples:
计算机学报 2026 01期, browse 2026 issue 1计算机学报 2026 01期 download, download original TOC PDF计算机学报, shows latest (网络首发)
Steps
1. Navigate to journal detail page
If not already on a journal detail page (navi.cnki.net/knavi/detail):
- Use
cnki-journal-searchto find the journal - Use
mcp__chrome-devtools__list_pages+mcp__chrome-devtools__select_pageto switch to the journal detail tab (opens in new tab)
2. Select issue + extract papers (single async evaluate_script)
Replace YEAR and ISSUE with actual values (e.g., "2025", "No.01").
The "刊期浏览" tab is the default active view, no need to click it.
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();


