Cnki Journal Search

cookjohn/cnki-skills/skills/cnki-journal-search

作者 cookjohn20d65f660456daf53ad0f7c74494ac3b829b925f無授權條款983 個星標收錄於 2026年10月9日更新於 2026年10月9日儲存庫7 個月前更新

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.

AI 產生的概覽

依名稱、ISSN、CN 號或主辦單位在 CNKI 檢索期刊並擷取期刊中繼資料。

功能
透過 Chrome DevTools MCP 瀏覽器工作階段開啟 CNKI 期刊導覽網站,將使用者提供的期刊名稱、ISSN、CN 號或主辦單位填入檢索框並執行檢索。它會依查詢格式自動判斷檢索類型,將結果篩選到期刊分頁,並擷取每種期刊的名稱、連結、ISSN、CN、影響因子、被引次數、下載次數與主辦單位。最後以附總數的編號清單呈現結果。
適用情境
當使用者想尋找特定期刊或在 CNKI 上瀏覽出版物時使用,例如依刊名、ISSN、CN 號或主辦單位查找。也適用於僅有一筆期刊結果時可進一步開啟詳情頁的情況。
執行需求
需要具備頁面導覽與指令碼執行能力的 Chrome DevTools MCP 瀏覽器工具,並能連線至 navi.cnki.net。此技能未附指令碼,僅為操作說明。檢索過程中可能出現需要使用者處理的騰訊驗證碼。

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));
  // Extract journal results  const body = document.body.innerText;  const countMatch = body.match(/共\s*(\d+)\s*条结果/) || body.match(/找到\s*(\d+)\s*条结果/);  const count = countMatch ? parseInt(countMatch[1]) : 0;
  const results = [];  const titleLinks = document.querySelectorAll('a[href*="knavi/detail"]');  titleLinks.forEach(link => {    const text = link.innerText?.trim();    if (!text || text.length < 2) return;    const parent = link.closest('li, .list-item') || link.parentElement?.parentElement;    const pt = parent?.innerText || '';    results.push({      name: text.split('\n')[0]?.trim(),      url: link.href,      issn: pt.match(/ISSN[::]\s*(\S+)/)?.[1] || '',      cn: pt.match(/CN[::]\s*(\S+)/)?.[1] || '',      cif: pt.match(/复合影响因子[::]\s*([\d.]+)/)?.[1] || '',      aif: pt.match(/综合影响因子[::]\s*([\d.]+)/)?.[1] || '',      citations: pt.match(/被引次数[::]\s*([\d,]+)/)?.[1] || '',      downloads: pt.match(/下载次数[::]\s*([\d,]+)/)?.[1] || '',      sponsor: pt.match(/主办单位[::]\s*(.+?)(?=\n|ISSN)/)?.[1]?.trim() || ''    });  });
  return { query, count, results };}

3. Present results

期刊检索 "$ARGUMENTS"(共 {count} 条):
1. {name}   ISSN: {issn} | CN: {cn}   复合影响因子: {cif} | 综合影响因子: {aif}   被引: {citations} | 下载: {downloads}

Notes

  • Journal detail pages open in new tab — use list_pages + select_page
  • If only 1 journal result, can auto-navigate to detail page for cnki-journal-index
  • Search button selector: input.researchbtn (not generic button)

Captcha detection

Check #tcaptcha_transform_dy element's getBoundingClientRect().top >= 0. Tencent captcha SDK preloads DOM at top: -1000000px (off-screen, not active). Only return error: 'captcha' when top >= 0 (actually visible to user).

Tool calls: 2 (navigate + evaluate_script)

來源與署名

來源:cookjohn/cnki-skills位於skills/cnki-journal-search提交20d65f6

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架