When you need to handle batch discrepancies, recurring field errors, DOI/title conflicts, abnormal author order, page number drift, or report wording, read references/common-patterns.md. Do not preload this file for other tasks;
manifest.yaml records the same on-demand routing; when adding new resources, the loading conditions must also be specified in this file.
Trigger words
verify references、校验文献、check references、核对参考文献、文献验证、ref check
Applicable scenarios
- Before submitting a proposal/paper, perform a final check of all references
- When review comments point out citation errors, precisely locate the problem
- When migrating references from an old project to a new paper, batch-verify their validity
- Regular health check of the Zotero library
Workflow
Step 1: Parse input
Supports three input formats:
A. Entire paper/proposal
- Extract all
[N]numbered reference lists - Automatically identify the DOI of each entry (if any)
B. Single reference
- The user directly pastes a citation text
- Or passes in a Zotero item key
C. BibTeX file
- Directly parse
.bib, verify item by item
Step 2: Parallel multi-source query
Step 2.0 (cheapest, do first): DOI resolvability check. For each reference with a DOI, first request https://api.crossref.org/works/<DOI>: 404 → the DOI itself is wrong (highly likely an incorrect number); 200 → compare the title/author/volume-issue-pages of the returned record with the entry; if inconsistent, it is a "DOI mismatch". A single request can reveal the most common type of error in practice (in one 35-item check, 7/9 errors belonged to this category).
For each reference, query the following sources in parallel (which are available depends on the environment configuration):
| Source | Applicable references | Typical coverage |
|---|---|---|
| Crossref | Foreign-language journals with DOI | ~70% (often missing for old IEEE references and Chinese journals) |
| IEEE Xplore | IEEE journals/conferences | Fallback when the IEEE DOI 404s |
| WebSearch (Bing/Google) | References without DOI or with missing sources | Fallback option |
| CNKI/Wanfang (kimi-datasource / webbridge) | Chinese journals, dissertations | Must-check for Chinese references |
| Zotero local library (zotero-mcp) | References already in the library | Quickly compare existing data |
Query strategy: Prioritize using the DOI to query Crossref; if that fails, degrade to searching the Web by title + author.
Batch strategy: When there are more than 20 entries, split them into groups of 10–15 for parallel subagents, and aggregate after each group queries independently—at a scale of 35 entries, 3 parallel subagents can complete it in a single round trip in practice, whereas serial processing would be an order of magnitude slower.
Step 3: Field-level comparison
For each reference, execute the following comparison matrix, divided into three levels by severity:
🔴 Critical (must be corrected)
| Check item | Description | Typical case |
|---|---|---|
| AuthorName/orderMismatch | First author differs, order reversed, or completely fabricated | Smogavec→Leckebusch、Vainikainen→Mikhnev |
| AuthorMissing person | Number of authors in the entry is less than the publisher's record (commonly for 5+ author papers only the first 3-4 are recorded) | TGRS 2019 PCA paper omits the 5th author Ge; TAES 2021 UAV paper omits the 5th author Kim |
| Page numberDifference ≥5 | Page numbers do not match at all | Noon: 1309-1319→1444-1449 |
| Article number letter misjudged | Article number containing letters written as visually similar digits (T/7, l/1, O/0) | SPIE 101880T mistaken as 1018807 |
| Title core wordsMismatch | Not a capitalization/punctuation difference | Iwasaki T→Wu K H、Zhang W→Zhu M H |
| DOI points to a different paper | DOI exists but title/author do not correspond | Abidi 1995: 10.1109/4.482157→10.1109/4.482187 |
| DOI mismatched | DOI resolves but resolves toanotherpaper (can be found by comparing title and authors) | JAG 2017 SVD paper DOI points to an ERT paper in the same volume; AST 2022 rotor paper DOI points to a turbine noise paper |
🟡 Warning (verification recommended)
| Check item | Description | Typical case |
|---|---|---|
| Volume year ≠ DOI year | Volume year differs from the year in the DOI number | Dadrass volume 2025/online 2024, Ni volume 2022/DOI contains 2020 |
| Early Access metadata drift | For journals such as IEEE, after Early Access is converted to formal publication the volume/issue/pages/year change,use CrossRef current values as the standard | TGRS autoencoder paper 59(12):10437-10449,2021 → 60:1-13,2022 |
| AuthorMiddle name missing/extra | "Rabiner L" vs "Rabiner L R" | Generally does not affect retrieval |
| Issue numberMissing | Script has volume but no issue | Smogavec 2025: 17→17(10) |
| Page number deviation ≤4 | Minor difference | Leckebusch 15-24→15-25 |
| Difference in publisher name spelling | "IET" vs "IEE" | Historical name change |
🟢 Info (for reference only)
| Check item | Description |
|---|---|
| Title capitalization differs | Title Case vs Sentence case |
| Journal name abbreviation vs full name | "IEEE Trans. AES" vs "IEEE Transactions on Aerospace and Electronic Systems" |
| Punctuation/conjunction difference | "and" vs "&" etc. |
Step 4: Confidence assessment
Each reference is finally given an overall confidence:
| Level | Meaning |
|---|---|
| ✅ Verified | Multiple sources agree, no modification needed |
| ⚠️ Check suggested | 🟡 level difference exists, manual judgment needed |
| ❌ Needs fix | 🔴 level difference exists, must be corrected |
| ❓ Unverifiable | Cannot be found in any source (such as internal reports, old theses) |
Step 5: Output report
The following output formats are supported:
Markdown summary report:
## 验证结果:56 条文献
- ✅ Verified: 42
- ⚠️ Check suggested: 8
- ❌ Needs fix: 4
- ❓ Unverifiable: 2
### ❌ 必须修正
| # | 问题 | 当前值 | 正确值 | 来源 |
|---|------|--------|--------|------|
| [6] | 作者错误 | Smogavec P | Leckebusch J | Wiley |
| [42] | 作者顺序颠倒 | Vainikainen P… | Mikhnev V A… | IEEE |
### ⚠️ 建议核对
| # | 问题 | 详情 |
|---|------|------|
| [18] | 卷年/DOI年不一致 | 卷年2025,DOI年2024 |
BibTeX Patch: directly generate the corrected .bib file content.
Zotero update instructions: generate a list of correction instructions for batch correction of the Zotero library. Note the write path limitations (tested in 2026):
- Zotero 7 local HTTP API (localhost:23119) is read-only——Write operations return 501; unstable zotero-mcp-type integrations mostly stem from this layer of wrapping or Zotero being busy. Direct curl plus
--max-timeprobing is enough to determine; - For batch writes, prefer pyzotero Web mode(requires userID + API key, full CRUD functionality, built-in 429 backoff);
- When there is no key, you can use the local
/connector/saveItemsendpointto additems (cannot modify existing items); - Directly modifying
zotero.sqliteis only feasible after Zotero is closed, and requires manually maintaining multi-table associations and version numbers,only as a last resort; - Before correcting, first confirm the item is in the library: if a title search returns nothing, it means the bib has another source (such as a reference manager CSV), and no correction is needed on the Zotero side.
Multi-source cross-validation strategy
┌─────────────┐
│ 用户输入 │
│ DOI/标题 │
└──────┬──────┘
│
▼
┌─────────────┐
│ 字段拆分 │
│ author/title │
│ year/vol/pg │
└──────┬──────┘
│
┌──────────────┼──────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ CrossRef │ │ IEEE │ │ WebSearch│
│ (DOI) │ │ Xplore │ │ (Bing/GG)│
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
▼ ▼ ▼
┌──────────────────────────────────────┐
│ 字段级对比 + 差异评级 │
│ author / title / year / vol / issue │
│ pages / DOI / journal │
└────────────────┬─────────────────────┘
│
▼
┌────────────────┐
│ 置信度评估 │
│ ✅ ⚠️ ❌ ❓ │
└────────────────┘
Known limitations and workarounds
| Limitation | Workaround |
|---|---|
| Chinese DOIs are not in Crossref | Fall back to CNKI/Wanfang (via webbridge or WebSearch) |
| Old IEEE documents' DOIs return 404 | Search directly on IEEE Xplore (their DOIs are not registered with Crossref) |
| Theses have no DOI | Verify title + author + year using CNKI / Wanfang / ProQuest |
| Product manuals/patents | Do not verify metadata, only confirm the source is accessible |
| Google Scholar cannot find some documents | Switch search engines (Bing, Baidu Scholar, Semantic Scholar) |
Environment dependencies
The following tools are optional: enable them if available, otherwise degrade:
pyzotero[cli]: recommended Zotero read/write channel (dual mode: local read-only + Web read/write; the CLI can be called directly by an agent via Bash, with no resident process)zotero-cli/zotero-mcp: Zotero library read/write (local wrapper layer, measured stability is poor)kimi-datasource(scholar): academic searchkimi-webbridge: CNKI queries with login state- Basic WebSearch / FetchURL: general fallback