# Cnki Journal Toc

Browse journal issues, view table of contents, and download original TOC PDF from CNKI.

- Repository: https://github.com/cookjohn/cnki-skills (1031 stars)
- Category: Documents
- License: see repository
- Last updated: 2026-03-13
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add cookjohn/cnki-skills --skill cnki-journal-toc -g -a claude-code -y`
Codex: `npx skills add cookjohn/cnki-skills --skill cnki-journal-toc -g -a codex -y`
Cursor: `npx skills add cookjohn/cnki-skills --skill cnki-journal-toc -g -a cursor -y`
Gemini CLI: `npx skills add cookjohn/cnki-skills --skill cnki-journal-toc -g -a gemini-cli -y`

## Description

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.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 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 number
- `download` (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-search` to find the journal
- Use `mcp__chrome-devtools__list_pages` + `mcp__chrome-devtools__select_page` to 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.

```javascript
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();

The rest: https://github.com/cookjohn/cnki-skills/blob/HEAD/skills/cnki-journal-toc/SKILL.md
