C刊(CSSCI来源期刊)论文全面分析工具。当用户提供一个具体的C刊期刊名称(如"管理世界"、 "社会学研究"、"经济研究"等)时,自动通过知网(CNKI)查询该期刊最近5年所有期次的文章 目录、作者和摘要信息,并生成专业的Word分析报告。报告包含:选题热点趋势、高频关键词、 研究方法偏好、核心作者群、栏目主题演变、研究空白识别、投稿方向建议等全维度分析。 触发条件:用户提到需要分析某个C刊/CSSCI期刊/核心期刊的发文趋势、选题偏好、投稿方向; 或提供中文学术期刊名称并要求查看近年发表论文的主题分布和趋势;或说"帮我分析一下XX期刊"。 注意:本skill用于期刊层面的宏观分析,不同于paper-analyzer(单篇论文拆解)和 literature-review-writer(文献综述写作)。
references/journal_codes.md 获取CNKI代码(如"管理世界"→ GLSJ)site:navi.cnki.net/knavi/journals "{期刊名}" 从URL提取代码使用Chrome DevTools MCP工具从知网采集数据。
navigate_page → https://navi.cnki.net/knavi/journals/{CODE}/detail
验证码处理:若页面出现"请完成安全验证"或"拖动下方拼图",立即提示用户:
"知网需要安全验证,请在浏览器中完成滑块验证,完成后告诉我。"
等用户确认后,用 navigate_page 重新加载页面。
() => {
const title = document.querySelector('h3')?.textContent?.trim() || '';
const info = {};
document.querySelectorAll('.detailInfo p, .s-info p').forEach(p => {
const text = p.textContent;
if (text.includes('主办单位')) info.sponsor = text.split(':')[1]?.trim();
if (text.includes('ISSN')) info.issn = text.split(':')[1]?.trim();
if (text.includes('CN')) info.cn = text.split(':')[1]?.trim();
if (text.includes('出版周期')) info.frequency = text.split(':')[1]?.trim();
if (text.includes('复合影响因子')) info.cif = text.split(':')[1]?.trim();
if (text.includes('综合影响因子')) info.aif = text.split(':')[1]?.trim();
});
return { title, ...info };
}
也可直接从snapshot中读取基本信息(StaticText节点)。
点击 uid 对应"论文"的链接,等待加载,然后提取:
() => {
const results = [];
document.querySelectorAll('dl[id$="_Year_Issue"]').forEach(dl => {
const year = dl.querySelector('dt em')?.textContent?.trim();
if (!year) return;
const issues = [];
dl.querySelectorAll('dd a').forEach(a => {
issues.push({ id: a.id, issue: a.textContent.trim(), value: a.getAttribute('value') });
});
results.push({ year: parseInt(year), issues });
});
return results;
}
筛选最近5年数据(当前年份 - 4 至当前年份)。若知网分页显示年份(每页显示部分年份),需翻页加载更多。
对每个期次,点击对应的期次链接(通过 click uid 或 evaluate_script 模拟点击),等待文章列表加载(wait_for 等待标题出现或等1-2秒),然后提取:
() => {
const articles = [];
document.querySelectorAll('#CatalogList dd.row').forEach(dd => {
const titleEl = dd.querySelector('span.name a');
const authorEl = dd.querySelector('span.author');
const pageEl = dd.querySelector('span.company');
const sectionEl = dd.closest('div')?.querySelector('dt.tit');
if (titleEl) {
articles.push({
title: titleEl.textContent.trim(),
url: titleEl.href,
authors: authorEl?.getAttribute('title')?.replace(/;$/,'') || '',
pages: pageEl?.getAttribute('title') || '',
section: sectionEl?.textContent?.trim() || ''
});
}
});
return articles;
}
关键:
全量摘要采集耗时极长,采用抽样:每年选取2期(如第1期和第7期),每期取前3篇文章访问摘要页。
访问文章详情页后提取摘要:
() => {
const abs = document.querySelector('#ChDivSummary, .abstract-text, [name="abstracts"]');
const kw = document.querySelector('#ChDivKeyWord, .keywords');
return {
abstract: abs?.textContent?.trim() || '',
keywords: kw?.textContent?.replace('关键词:','').trim() || ''
};
}
若浏览器方式受阻,用WebSearch搜索 "{文章标题}" site:cnki.net 补充摘要和关键词。
采集完成后,将所有数据保存为JSON,然后运行 scripts/analyze_journal.py 进行分析。
该脚本依赖:pip3 install jieba wordcloud python-docx matplotlib numpy
脚本接收JSON数据文件路径,输出分析结果和可视化图表:
使用python-docx生成格式化报告,结构:
封面:《{期刊名}》近五年({起始年}-{结束年})发文分析报告
一、期刊概况
二、发文量与趋势分析(含图表)
三、选题热点分析(含词云图、高频词柱状图)
四、热点演变与新兴主题
五、核心作者群分析
六、研究方法偏好分析
七、栏目主题分析
八、研究空白与投稿建议
附录:完整文章目录(按年份-期次排列)
报告保存至 ~/Downloads/{期刊名}_近五年发文分析报告.docx。
pip3 install jieba wordcloud python-docx matplotlib numpyreferences/journal_codes.md