# Scholar Publication Audit

> 核实某位学者的完整论文清单（用于「帮我找出 XX 老师的全部论文」「这个人发过什么」）。核心是同名作者消歧：OpenAlex / Semantic Scholar 的作者档案普遍存在严重合并污染，必须用「共同作者交集 + 机构核对」双路交叉验证才能得到可信清单。当用户要求检索某学者的论文、确认某篇论文是否属于某人、或整理某人的成果目录时使用。

- Skill: `tau625/scholar-publication-audit` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add tau625/scholar-publication-audit`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tau625/scholar-publication-audit/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- Author: tau625 (https://skillmd.com/u/tau625)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/tau625/scholar-publication-audit

---


# 学者论文清单核实

## 为什么不能直接按名字查

中文拼音姓名（Yujia Zhang、Yang Li、Yu Zhang…）在学术数据库里同名者成百上千。
直接查作者名或作者档案会得到灾难性结果：

- **OpenAlex**：会把大量同名者合并进同一个 author id。实例：一位硅基光子学博士的
  档案被合并进 142 篇论文的巨型记录，其中包含医学、农业、电力等无关领域。
- **Semantic Scholar**：同样会合并。实例：把另一位同名学者（计算机视觉方向）的
  2 篇论文并入了光子学学者的档案。
- **ORCID**：挂在某篇论文作者上的 ORCID 可能属于完全不同的同名者（数据库错误关联）。

**结论：任何单一来源的作者档案都不可信，必须交叉验证。**

## 标准流程

### 第 1 步：拿到一篇「确定属于本人」的锚点论文
从本人主页、课题组页面、机构新闻稿、或用户提供的信息里，找 1–3 篇确定无疑的论文，
拿到 **DOI**（比标题更可靠）。

### 第 2 步：OpenAlex 共同作者交集法（主力）
从锚点论文里取出**导师或长期合作者**的 OpenAlex author id，然后用 AND 过滤：

```
https://api.openalex.org/works?filter=author.id:<导师ID>,author.id:<本人ID>&per_page=50&select=doi,title,publication_year,authorships&sort=publication_date:desc
```

- 同一个 filter key 重复出现 = AND；用 `|` 分隔 = OR。
- 本人的 author id 即使被污染也没关系——导师通常是领域明确的资深学者，
  交集后噪音会被过滤掉。
- 导师 id 从锚点论文的 `authorships` 里取。

**注意**：此法**不完整**。OpenAlex 不会把她每篇论文都链接到同一个 author id，
所以会漏（实例：漏掉了 Optica 2024 的一篇）。必须配第 3 步。

### 第 3 步：Semantic Scholar 档案法（补充）
先用锚点 DOI 反查 S2 authorId：
```
https://api.semanticscholar.org/graph/v1/paper/DOI:<doi>?fields=title,authors.name,authors.authorId
```
再拉全部论文：
```
https://api.semanticscholar.org/graph/v1/author/<authorId>/papers?fields=title,year,venue,externalIds,authors.name&limit=100
```
S2 会补上 OpenAlex 漏的条目，但**必须逐条排查误匹配**（见第 4 步）。

两个源的并集才接近完整。反过来也要做：OpenAlex 有的 S2 也可能没有。

### 第 4 步：逐条核机构（消歧的关键动作）
对每一条可疑条目，查 Crossref 拿机构信息：
```
https://api.crossref.org/works/<doi>
```
看 `author[].affiliation[].name`。**机构不符的直接剔除**。
实例：一条 "Yujia Zhang" 的人脸生成论文，Crossref 显示单位为太原理工大学
信息与计算机学院，与上海交大的光子学学者无关 → 剔除。

同时用 Crossref 核实 `volume` / `issue` / `page` / `published`（OpenAlex 的
publication_year 常与正式出版年差一年，如 11 月在线、次年 1 月见刊）。

### 第 5 步：补会议论文、预印本、专利
- **预印本**：`https://arxiv.org/abs/<id>` 直接核（提交日期、作者列表）。
  中文环境注意 arXiv 需要能访问，被墙时用导出接口或镜像。
- **会议论文**：OpenAlex 里 `type: conference-paper`（IEEE ACP/OFC/CLEO 有覆盖）。
- **专利**：课题组页面的「专利」栏目、国家知识产权局、智慧芽。学术数据库不覆盖。
- **中文期刊 / 学位论文**：CNKI，本次常用 API 都查不到，需单独检索。

### 第 6 步：按 DOI 去重
同一篇论文常有 DOI + arXiv + 会议版 + 封面记录（Wiley 的 `adpr.202XXXXXX` 
封面 DOI 和正文 DOI 是两条记录）。按标题 + DOI 归并，在交付物里注明。

## 本机环境注意（Windows）

- **Bash 工具不可用**（PortableGit 缺 coreutils），一律用 PowerShell + Read/Glob/Grep。
- **PowerShell 工具 stdout 经常不返回**（只给 "exit code 0"）→ 结果一律
  `Set-Content` 写文件，再用 Read 读。
- 行内 PowerShell 脚本可能因解析问题静默失败 → **写成 `.ps1` 文件用
  `powershell -NoProfile -ExecutionPolicy Bypass -File` 执行**更稳。脚本路径用纯 ASCII。
- **WebFetch 比 PowerShell 请求这些 API 更可靠**：PowerShell 里 OpenAlex 的
  `filter=title.search:` 和 `works/https://doi.org/...` 形式返回空；
  Crossref / S2 容易撞 429 限流。**优先用 WebFetch 请求 API 的 JSON**。
- WebFetch 处理 API JSON 时，在 prompt 里明确要求「列出每一条，不要省略」，
  并尽量用 `select=` 精简字段、`per_page` 控制在 10 以内，否则内容会被截断。
  字段多时**分页取**（`page=1`、`page=2`）。

## 交付物格式

建议产出 Markdown 清单，包含：
1. 成果总览表（年份 / 标题 / 载体 / **本人作者位次**）
2. 逐篇详情（期刊卷期页、DOI 链接、作者全序列、核心要点）
3. **核查说明**：已剔除的误匹配及判定依据（这部分很重要，说明清单可信）
4. **尚未覆盖的检索面**（中文期刊、专利、学位论文）——不要假装完整

