# Cnki Journal Search

Search for journals/publications on CNKI by name, ISSN, CN, or sponsor.

- Repository: https://github.com/cookjohn/cnki-skills (1031 stars)
- Category: Engineering
- 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-search -g -a claude-code -y`
Codex: `npx skills add cookjohn/cnki-skills --skill cnki-journal-search -g -a codex -y`
Cursor: `npx skills add cookjohn/cnki-skills --skill cnki-journal-search -g -a cursor -y`
Gemini CLI: `npx skills add cookjohn/cnki-skills --skill cnki-journal-search -g -a gemini-cli -y`

## Description

Search for journals/publications on CNKI by name, ISSN, CN, or sponsor. Use when the user wants to find a specific journal or browse publications.

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

# CNKI Journal Search (期刊检索)

## Arguments

`$ARGUMENTS` is a journal name, ISSN, CN number, or sponsor name.

## Steps

### 1. Navigate

Use `mcp__chrome-devtools__navigate_page` → `https://navi.cnki.net/knavi`

### 2. Search + extract results (single evaluate_script, NO wait_for)

Use `mcp__chrome-devtools__evaluate_script`. Replace `QUERY_HERE` with actual search term:

```javascript
async () => {
  const query = "QUERY_HERE";

  // Wait for page load
  await new Promise((r, j) => {
    let n = 0;
    const c = () => { if (document.querySelector('input.researchbtn')) r(); else if (++n > 30) j('timeout'); else setTimeout(c, 500); };
    c();
  });

  // Check captcha (visible on screen, not hidden SDK at top:-1000000)
  const outer = document.querySelector('#tcaptcha_transform_dy');
  if (outer && outer.getBoundingClientRect().top >= 0) return { error: 'captcha' };

  // Auto-detect search type and fill
  const select = document.querySelector('select');
  if (select) {
    if (/^\d{4}-\d{3}[\dXx]$/.test(query)) select.value = 'ISSN';
    else if (/^\d{2}-\d{4}/.test(query)) select.value = 'CN';
    select.dispatchEvent(new Event('change', { bubbles: true }));
  }

  const input = document.querySelector('input[placeholder*="检索词"]');
  if (input) input.value = query;

  // Click search button (verified selector: input.researchbtn)
  document.querySelector('input.researchbtn')?.click();

  // Wait for results
  await new Promise((r, j) => {
    let n = 0;
    const c = () => { if (document.body.innerText.includes('条结果')) r(); else if (++n > 30) j('timeout'); else setTimeout(c, 500); };
    c();
  });

  // Click 期刊 tab to filter journals only
  const tabs = document.querySelectorAll('li a');
  for (const a of tabs) { if (a.innerText.trim() === '期刊') { a.click(); break; } }
  await new Promise(r => setTimeout(r, 1500));

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