Agent分析
- 作者仓库星标 180
- 作者更新于 实时读取
- 作者仓库 -skills
- 领域
- 通用
- 兼容 Agent
-
- Claude Code
- Cursor
- Cline
- Codex
- Windsurf
- Gemini CLI
- +20
- 信任分
- 88 / 100 · 社区维护
- 作者 / 版本 / 许可
- @yipng05-max · 未声明 license
- Token 消耗评级
- 低消耗
- 接入复杂程度
- 即装即用
- 是否需要外部 API Key
- 不需要
- 兼容的系统
- 未声明(默认跨平台)
- 底层运行要求
- Python
- 文件与系统权限
-
- 只读
- 允许写入 / 修改
- 网络行为
- 仅限本地
- 安装命令数
- 26 条
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
---
name: cjournal-analyzer
description: > 使用Chrome DevTools MCP工具从知网采集数据。 navigate_page → https://navi.cnki.net/knavi/journals/{CODE}/de…
category: 通用
runtime: Python
---
# cjournal-analyzer 输出预览
## PART A: 任务判断
- 适用问题:通用任务拆解、检查和交付。
- 输入要求:目标材料、限制条件、期望输出和验收方式。
- 证据边界:围绕“Phase 1: 确定期刊与CNKI代码 / Phase 2: 浏览器数据采集 / Step 2.1: 打开期刊页”读取原文规则,不把推断写成作者承诺。
## PART B: 执行结果
- **01** 任务判断:确认你的需求是否属于通用任务拆解、检查和交付,并标出输入、限制和预期结果。
- **02** 执行计划:优先按“Phase 1: 确定期刊与CNKI代码 / Phase 2: 浏览器数据采集 / Step 2.1: 打开期刊页”拆成步骤,说明每一步会读取什么、修改什么、产出什么。
- **03** 交付结果:给出可复制的命令、文件改动、检查清单或内容草稿,并说明如何继续迭代。
- **04** 风险边界:结合 读取文件、写入/修改文件、主要在本地完成、通常不需要额外 API Key 给出执行前确认项。
## Running Rules
- 读取文件、写入/修改文件;主要在本地完成;通常不需要额外 API Key。
- 先小样例验证,再放大到真实任务。
- 交付时同时给结果、检查口径和下一步迭代建议。 原文没有稳定的斜杠命令要求。安装验证后通常全局生效,直接在对话里点名这个 Skill 并描述任务即可。
告诉 Agent 目标文件或材料、期望结果、不可改范围、是否允许联网或执行命令。本 Skill 的权限画像是:读取文件、写入/修改文件。
先用一个小任务确认它会围绕“Phase 1: 确定期刊与CNKI代码 / Phase 2: 浏览器数据采集 / Step 2.1: 打开期刊页”工作;涉及文件或命令时,先看 diff、日志、预览或测试结果。
检查最终产物是否包含明确结果、必要证据和下一步动作;如果输出泛泛而谈,就补充输入、边界和验收标准后重跑。
---
name: cjournal-analyzer
description: > 使用Chrome DevTools MCP工具从知网采集数据。 navigate_page → https://navi.cnki.net/knavi/journals/{CODE}/de…
category: 通用
source: yipng05-max/-skills
---
# cjournal-analyzer
## 什么时候使用
- 1. 从用户输入中提取期刊名称。(完全本地运行、基于 Python) Phase 1: 确定期刊与CNKI代码 1 适合处理通用任务拆解、检查、交付和复盘,核心价值是把输入、判断、执行、验证和交付边界固定下来,避免 Agent 泛泛回答…
- 面向通用任务拆解、检查和交付,优先处理能明确输入、步骤和验收标准的工作。
## 需要提供什么
- 目标材料、目录范围、期望结果和不可改动内容。
- 是否允许联网、执行命令、读写文件或调用外部服务。
## 执行规则
- 围绕「Phase 1: 确定期刊与CNKI代码 / Phase 2: 浏览器数据采集 / Step 2.1: 打开期刊页」组织步骤,不把推断写成作者事实。
- 读取文件、写入/修改文件;主要在本地完成;通常不需要额外 API Key。
- 先跑小样例,确认结果可检查后再扩大任务范围。
## 输出要求
- 给出最终产物、关键证据、验证方式和下一步动作。
- 信息不足时标记 unknown,不编造命令、平台或依赖。 作者原文负责流程事实;仓库文件负责来源和命令;流狐只补充适用场景、限制和质量判断。
skill "cjournal-analyzer" {
输入层 -> 用户目标 + 目标文件 + 禁止范围 + 验收标准
上下文层 -> Phase 1: 确定期刊与CNKI代码 / Phase 2: 浏览器数据采集 / Step 2.1: 打开期刊页
规则层 -> SKILL.md 触发条件 / 执行顺序 / 输出格式
运行层 -> Python | 读取文件、写入/修改文件 | 主要在本地完成
安全层 -> 通常不需要额外 API Key + 小任务验证 + diff / 日志复核
输出层 -> 可复制结果 + 检查清单 + 下一步迭代
} C刊论文全面分析工具
Phase 1: 确定期刊与CNKI代码
- 从用户输入中提取期刊名称
- 查询
references/journal_codes.md获取CNKI代码(如"管理世界"→GLSJ) - 若未收录,用WebSearch搜索
site:navi.cnki.net/knavi/journals "{期刊名}"从URL提取代码 - 向用户确认期刊后继续
Phase 2: 浏览器数据采集
使用Chrome DevTools MCP工具从知网采集数据。
Step 2.1: 打开期刊页
navigate_page → https://navi.cnki.net/knavi/journals/{CODE}/detail
验证码处理:若页面出现"请完成安全验证"或"拖动下方拼图",立即提示用户:
"知网需要安全验证,请在浏览器中完成滑块验证,完成后告诉我。"
等用户确认后,用 navigate_page 重新加载页面。
Step 2.2: 提取期刊基本信息
() => {
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节点)。
Step 2.3: 点击"论文"标签并提取年份期次
点击 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 至当前年份)。若知网分页显示年份(每页显示部分年份),需翻页加载更多。
Step 2.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;
}
关键:
- 每个期次采集间隔1-2秒,避免触发反爬
- 持续向用户报告进度(如"正在采集2024年第6期,已完成32/60期...")
- 所有数据暂存到一个JSON数组中
Step 2.5: 摘要采集(抽样策略)
全量摘要采集耗时极长,采用抽样:每年选取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 补充摘要和关键词。
Phase 3: 数据分析
采集完成后,将所有数据保存为JSON,然后运行 scripts/analyze_journal.py 进行分析。
该脚本依赖:pip3 install jieba wordcloud python-docx matplotlib numpy
脚本接收JSON数据文件路径,输出分析结果和可视化图表:
- 发文量趋势:按年度统计发文数量折线图
- 高频关键词Top30:jieba分词 → 去停用词 → 词频统计 → 柱状图+词云
- 主题聚类:基于高频词共现进行粗粒度主题归类
- 栏目分析:各栏目发文占比饼图及趋势变化
- 核心作者Top20:发文频次柱状图
- 研究方法识别:从标题中匹配方法关键词(实证/案例/实验/模型/仿真/调查/访谈/文献计量/元分析/回归/面板数据/DID/RDD/PSM/机器学习/深度学习/SEM/扎根理论等)
- 热点演变:前3年 vs 近2年的关键词对比,识别新兴/衰退主题
- 研究空白与投稿建议:基于以上分析综合给出
Phase 4: 生成Word报告
使用python-docx生成格式化报告,结构:
封面:《{期刊名}》近五年({起始年}-{结束年})发文分析报告
一、期刊概况
二、发文量与趋势分析(含图表)
三、选题热点分析(含词云图、高频词柱状图)
四、热点演变与新兴主题
五、核心作者群分析
六、研究方法偏好分析
七、栏目主题分析
八、研究空白与投稿建议
附录:完整文章目录(按年份-期次排列)
报告保存至 ~/Downloads/{期刊名}_近五年发文分析报告.docx。
注意事项
- 知网有反爬机制,每次请求间隔≥1秒
- 验证码出现时必须请用户手动完成
- 安装依赖:
pip3 install jieba wordcloud python-docx matplotlib numpy - 期刊代码优先查
references/journal_codes.md - 采集全程保持进度播报
先判断是否适合
作者设计意图
作者的方法与取舍
边界和复核