Measures one university department's research output: matches author affiliation strings against a college's known name variants (detecting same-named departments at other universities), backfills papers that only name the university by faculty author IDs, classifies each paper by journal tier (CAS partition with Top flag, JCR quartile, CCF, Chinese core via a CNKI export merger), splits staff from student first authors, and writes a workbook with a dashboard sheet, a filterable paper list, a teacher-by-direction matrix and per-teacher statistics. Student authorship is inferred from affiliation and staff lists, not verified against enrolment records. Requires Python 3.9+ with pandas and openpyxl (pip install -r requirements.txt); papers come from the OpenAlex API, whose free per-IP quota is limited, and Chinese-journal coverage needs a manual CNKI export.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:liu-Daniel7/search-school-sci-skill
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
This plugin publishes its README in Chinese only.
查任意大学任意学院的科研产出,总结成可视化 excel。
给一个"学校 + 学院",它就还你一张能直接交材料的表。
python scripts/college_sci.py --config config.json --out 学院科研产出.xlsx

它解决什么问题
想知道"我们学院到底什么水平",现实是这样的:
| 你遇到的问题 | 这个工具的做法 |
|---|---|
| 知网、Web of Science 都没有"学院"这一级机构字段 | 用作者单位字符串匹配 + 教师姓名反查来还原学院 |
| 同一个学院名,别的学校也在用(实测多算了 122 篇) | 强制加校名限定,并在普查阶段列出"撞名"的学校 |
| 一个学院有十几种英文写法(连字符、Electrical/Electronic、Automobile/Vehicle、拼错) | 自动做"写法普查",把变体全部纳入 |
| 大量论文只署实验室、不署学院 | 支持独立配置实验室/中心名称通道 |
| 28% 的论文只写"某某大学",不写学院 | 用教师 OpenAlex 作者ID 反查扩展 |
| 分不清教师和学生 | 与学院师资名单比对,学生身份标注为"推定" |
| 中文期刊查不到 | 提供知网补数流程(人登录、agent 执行)+ 合并脚本 |
输出长什么样
一个 7 个工作表的工作簿:
| 工作表 | 内容 |
|---|---|
| ① 看板 | 核心数字 + 学科方向×期刊层级 + 方向×作者身份 + 图例 + 柱状图,一屏汇报 |
| ② 论文清单 | 全量记录,层级列按颜色区分,全列可筛选 |
| ③ 姓名对照表 | 所有第一作者 + 姓氏参考,用于补齐中文名 |
| ④ 教师-方向矩阵 | 教师×方向的产出热力图 |
| ⑤ 教师产出 | 逐人分区分布、一作/通讯、被引 |
| ⑥ 学生(推定) | 学生一作清单 |
| ⑦ 说明 | 口径定义、清洗记录、局限声明 |
期刊层级用中科院《期刊分区表》(1–4 区 + Top 标注),会议按 CCF 推荐目录标 A/B/C,中文期刊按知网"来源类别"分为 中文核心 / CSSCI / CSCD / EI(中文) / 中文普刊。每个层级一种颜色,看板内附色卡。
安装到 DSH
本仓库同时是一个 DSH 插件包(package.json 声明了 dsh.bundle),安装后技能会自动出现在技能目录里:
dsh plugin add liu-Daniel7/search-school-sci-skill
装完直接说「用 search-school-sci 查某大学某学院的科研产出」即可触发。
插件本体是 lib/index.js——一个不到 70 行的 skill provider,把仓库根目录的 SKILL.md 注册为技能正文,并把仓库根声明为 resourceBase,因此 reference/*.md 与 scripts/*.py 的相对路径都能正常解析。Python 脚本仍是实际的执行体。
快速开始
环境
需要 Python 3.9+ 与 pandas、openpyxl:
pip install -r requirements.txt
三步
① 生成配置(只问 4 个问题,不用交教师名单)
python scripts/wizard.py --out config.json
② 抓教师名单(agent 用 web_search 找到学院官网后执行,或让脚本自己找)
python scripts/faculty_fetch.py --url https://你的学院官网/szdw/ --out faculty.csv --deep
③ 先普查,再全跑
python scripts/college_sci.py --config config.json --faculty-csv faculty.csv --stage census
python scripts/college_sci.py --config config.json --faculty-csv faculty.csv --out 学院科研产出.xlsx
--stage census 只做"机构解析 + 单位串普查 + 同名学院检测",2–3 分钟,不抓论文。这一步不能跳过,它决定你的检索式有没有混进别的学校。
补中文期刊(可选但强烈建议)
中文期刊 OpenAlex 基本不收,需要知网补数。流程见 reference/CNKI_GUIDE.md:人登录 → 按来源类别分轮导出 → 脚本合并。
python scripts/cnki_import.py --records 结果.records.json \
--cnki-dir ./cnki_export --config config.json --out 结果_含中文.xlsx
目录结构
.
├── SKILL.md # 技能说明(给 agent 读的行为规范)
├── README.md # 本文件
├── reference/
│ ├── WALKTHROUGH.md # 新手逐步向导(含示例大学实例)
│ ├── CNKI_GUIDE.md # 知网补数全流程
│ ├── pitfalls.md # 六个真实踩坑案例(附数字证据)
│ ├── config.example.json # 配置模板
│ ├── config.demo.json # 完整实例(虚构的示例大学·智能制造学院)
│ ├── directions.json # 学科方向关键词(中英双语,可改)
│ └── faculty.example.csv # 教师名单格式
├── scripts/
│ ├── college_sci.py # 主流水线:抓取→普查→归属→分级→出表
│ ├── workbook.py # 工作簿生成(看板/配色/图例/筛选)
│ ├── faculty_fetch.py # 学院官网教师名单抓取(含拼音)
│ ├── cnki_import.py # 知网导出合并
│ ├── wizard.py # 交互式配置向导
│ └── run.sh # 自动挑选解释器
└── tests/smoke_test.py # 离线冒烟测试(不联网)
口径说明(很重要)
两种统计口径,报告里请分开引用:
- 本院主导 —— 第一作者或通讯作者单位为本院。对外报材料用这个数。
- 本院参与 —— 含外单位/校内其他院系主导、本院教师参与的论文。
四条必须写进报告的限定语:
- 学生身份为推定(第一作者不在在编教师名单内),可能是博士后、未公开的兼职教授或新聘讲师,未经学籍/人事核对不得作为学生成果使用
- 分区按中科院分区表某年版口径,与论文发表当年可能不同
- 不含知网独有中文期刊(除非已跑
cnki_import.py) - 被引数为 OpenAlex 口径,与 Google Scholar / WoS 不可直接比较
常见问题
Q:跑出来篇数比学院公布的少一半?
A:八成是单位串写法没覆盖全。看 --stage census 的输出,把漏掉的写法补进配置的 college.en 或 extra_patterns。
Q:教师被算成了学生?
A:教师名单的拼音不对或缺失。拼音是匹配英文署名的唯一钥匙,用 faculty_fetch.py --deep 重抓,或手工补 faculty.csv 第二列。
Q:请求返回 429? A:OpenAlex 免费额度按 IP 计(约 $0.10/天,UTC 零点重置=北京时间早 8:00),一个学院规模的项目通常一次就用完。申请免费 key 加到 URL,或分两天跑(响应有缓存,会断点续跑)。
Q:能查整个学校吗?
A:能,但"学院"是这套方法的最小区分粒度。查全校直接按 institutions.id 取数即可,不需要本工具的单位串匹配。
验证
python tests/smoke_test.py
离线冒烟测试,不联网,验证「记录 → 7 个工作表」链路、层级配色分组、中文署名处理。
方法有效性校验(某高校机电类二级学院,2026-10 手工核对与脚本结果对照,机构与个人均已匿名):
| 环节 | 结果 |
|---|---|
| 候选论文 | 1052 篇(剔除撤稿 4 篇、兼职教授单独关联 25 篇、同名学院误命中 122 篇以上) |
| 本院主导 | 749 篇,被引 7386 |
| 一区 Top | 60 篇 |
| 交叉验证 | 脚本判定的某学生「10 篇一作」与其公开获奖报道「一区 TOP 10 篇」吻合,说明身份推定口径可用 |
已知边界
- 中文期刊依赖知网,需要机构账号;本工具只做合并,不做登录
- 学生身份无法自证,只能标"推定"
- WoS/Scopus 口径需要机构订阅,本工具不接入
- 学科方向标签是关键词自动判定,交叉论文可能需人工调整
- 搜索引擎自动定位官网不稳(会被反爬),建议 agent 用自带搜索能力拿链接再传
--url
License
MIT
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-skill-explorer★ 9959
Skill center for the dsh web GUI: browse all loaded skills grouped by source, enable or disable model invocation, create new skills, and delete into a recoverable trash.
iflytek/skillhub#dsh★ 5358
Browse and search a SkillHub registry and manage local skill installation, updates, and removal inside DeepSeek Harness. Targets DSH 0.2.0-rc.2 and 0.2.1-rc.2; not yet compatible with 0.2.1-rc.3.
QingYunA/answer-me-with-html★ 5085
Answers a question with a one-page visual HTML explainer: the model writes a short Markdown draft and the bundled `am` CLI builds the page, with flow, sequence, tree, timeline and ER diagrams, tables and callouts.
hyhmrright/brooks-lint★ 1556
Provides six code quality skills for code review, architecture audits, technical debt, test quality, health dashboards, and remediation.
GanyuanRan/Aegis★ 1411
Software-engineering method pack for coding agents, with skills for baseline-first planning, systematic debugging, prompt hygiene, verification before completion, and repair/retirement tracking.
superdesigndev/superdesign-skill★ 935
Design skill for UI and marketing graphics on the Superdesign canvas: reads the repo for context, extracts its design system, then generates and iterates branchable design drafts, flow pages, and reusable components through the Superdesign CLI.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.