validate-references
О программе
Этот навык проверяет академические ссылки, контролируя полноту полей BibTeX, верифицируя DOI через CrossRef, тестируя доступность URL-адресов и сверяя согласованность метаданных. Он полезен для аудита библиотек ссылок перед подачей статьи или для выявления неработающих ссылок и противоречивых метаданных. Навык формирует отчёты о проверке с классифицированными ошибками и рекомендациями по их исправлению.
Быстрая установка
Claude Code
Рекомендуетсяnpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/validate-referencesСкопируйте и вставьте эту команду в Claude Code для установки этого навыка
Документация
name: validate-references description: > 验证学术参考文献的准确性和可访问性:检查 BibTeX 条目必填字段的完整性, 通过 CrossRef 和 DOI 解析验证 DOI,测试 URL 可访问性,交叉检查元数据 一致性,并生成包含错误分类和修复建议的验证报告。 license: MIT allowed-tools: Read Grep Glob WebFetch WebSearch metadata: author: Philipp Thoss version: "1.0" domain: citations complexity: intermediate language: natural tags: citations, validation, doi, bibtex, reference-checking locale: zh-CN source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16
验证参考文献
验证学术参考文献的完整性、准确性和可访问性,包括 BibTeX 字段验证、DOI 解析、URL 检查和元数据交叉验证。
适用场景
- 投稿前验证参考文献列表
- 审计继承的或协作编辑的参考文献库
- 识别断开的 DOI 或不可访问的 URL
- 交叉检查参考文献元数据与外部数据库的一致性
- 生成参考文献质量报告供团队审查
输入
- 必需:包含待验证参考文献的
.bib文件或 BibEntry 对象 - 可选:验证级别(基本=仅字段检查,标准=字段+DOI,完整=字段+DOI+URL+元数据)
- 可选:目标引文样式(影响哪些字段被视为必需)
- 可选:自定义验证规则(例如"所有条目必须有 DOI")
- 可选:报告格式(控制台、markdown、CSV)
步骤
第 1 步:加载和解析参考文献
将参考文献数据读入结构化格式:
- 解析 BibTeX:使用
RefManageR::ReadBib()并设置check = FALSE以加载包含错误的文件。 - 记录解析警告:解析过程中发出的任何警告都表示语法问题(不匹配的花括号、无效的字段名、编码错误)。
- 条目计数:记录加载的条目总数及各类型的分布(article、book、inproceedings 等)。
- 引用键检查:验证所有引用键唯一且不包含特殊字符(空格、逗号、#)。
library(RefManageR)
bib <- ReadBib("references.bib", check = FALSE)
message(paste("已加载", length(bib), "个条目"))
table(sapply(bib, function(x) x$bibtype))
预期结果: 所有条目成功加载,解析警告已记录,条目类型分布已确认。
失败处理: 如果解析完全失败,.bib 文件存在严重语法错误。使用文本编辑器检查不匹配的花括号或无效的 @type 声明。使用 biber --validate-control references.bib 获取详细的语法错误定位。
第 2 步:验证必填字段
检查每个条目是否包含其 BibTeX 类型要求的所有字段:
- 类型特定的必填字段:
| 条目类型 | 必填字段 |
|---|---|
| article | author, title, journal, year, volume |
| book | author/editor, title, publisher, year |
| inproceedings | author, title, booktitle, year |
| incollection | author, title, booktitle, publisher, year |
| phdthesis | author, title, school, year |
| techreport | author, title, institution, year |
| misc | author, title, year (最低限度) |
- 字段质量检查:
author:不为空,格式合理(包含逗号或 "and")year:4 位数字,合理范围(1800-当前年份+1)title:不为空,不全是大写(可能表示 BibTeX 大小写未受保护)doi:如存在,匹配模式10.XXXX/...url:如存在,以http://或https://开头
- 分类错误:将每个问题分类为 ERROR(必填字段缺失)、WARNING(推荐字段缺失或格式可疑)或 INFO(可选字段建议)。
预期结果: 完整的逐条目验证报告,每个问题带有严重级别。
失败处理: 如果大量条目存在系统性问题(例如所有条目缺少 volume),可能是源数据或导入过程的问题,而非个别条目错误。
第 3 步:验证 DOI 和 URL
检查数字标识符和链接的可访问性:
- DOI 解析:对每个 DOI,向
https://doi.org/<DOI>发送 HEAD 请求。HTTP 200/302 表示有效;404 表示无效或格式错误的 DOI。 - DOI 元数据检索:使用 CrossRef API (
https://api.crossref.org/works/<DOI>) 获取规范元数据,与.bib条目比较。 - URL 可访问性:对每个 URL 发送 HEAD 请求。记录 HTTP 状态码。标记 404(未找到)、403(禁止访问)和超时。
- 速率限制:在 API 请求之间添加延迟(CrossRef 建议每秒不超过 50 个请求,无身份认证时更少)。对大型参考文献库使用批处理。
# DOI 验证示例
check_doi <- function(doi) {
url <- paste0("https://doi.org/", doi)
tryCatch({
response <- httr::HEAD(url, httr::timeout(10))
list(valid = httr::status_code(response) %in% c(200, 301, 302),
status = httr::status_code(response))
}, error = function(e) list(valid = FALSE, status = "timeout"))
}
预期结果: 每个 DOI 和 URL 经过可访问性验证。无效标识符被标记并附有具体的 HTTP 状态码。
失败处理: 如果 DOI 解析因网络问题失败,使用退避策略重试。某些 DOI 可能因出版商服务器临时不可用而暂时无法解析——标记这些为"未确认"而非"无效"。
第 4 步:元数据交叉验证
将本地元数据与权威外部数据源比较:
- 标题匹配:将
.bib条目标题与 CrossRef 返回的标题比较(标准化后的模糊匹配)。 - 作者匹配:比较作者列表(考虑姓名变体、名首字母 vs 全名)。
- 年份匹配:验证出版年份一致。
- 期刊名称:将
.bib中的期刊名称与 CrossRef 的规范名称比较。标记缩写与全称不一致。 - 不匹配分类:
- CRITICAL:DOI 指向的论文标题完全不同(可能是错误的 DOI)
- WARNING:元数据存在细微差异(拼写变体、年份差一年)
- INFO:格式差异(大小写、标点)
预期结果: 每个有 DOI 的条目与其权威元数据进行了交叉验证。不匹配项被分类并报告。
失败处理: 如果 CrossRef 元数据本身有错误(偶有发生),以出版商网站上的条目为准进行人工验证。
第 5 步:生成验证报告
编制所有发现的综合报告:
- 摘要统计:
- 验证的条目总数
- 各严重级别的问题数(ERROR、WARNING、INFO)
- DOI 验证率(通过/失败/缺失)
- URL 可访问率
- 逐条目详情:列出每个条目的所有问题及引用键、严重级别和建议修复。
- 系统性问题:识别影响多个条目的模式(例如"15 个条目缺少 DOI"——建议通过标题搜索批量补充)。
- 修复建议:对每类问题提供可操作的建议。
- 输出格式:生成报告为 markdown(人工审阅)、CSV(程序化处理)或控制台输出(快速检查)。
# 报告输出示例
report <- data.frame(
key = character(),
severity = character(),
field = character(),
message = character(),
stringsAsFactors = FALSE
)
# ... 填充结果 ...
write.csv(report, "validation_report.csv", row.names = FALSE)
预期结果: 一份完整的验证报告,包含可操作的发现和修复建议,便于审查和后续处理。
失败处理: 如果报告过于庞大(数百个问题),按严重级别优先排序:先修复所有 ERROR,再处理 WARNING。INFO 级别的问题可以推迟。
验证清单
- 所有条目成功解析,解析警告已记录
- 每种 BibTeX 类型的必填字段均已检查
- DOI 已通过解析验证(如存在)
- URL 已通过可访问性测试(如存在)
- 元数据已与 CrossRef 交叉验证(如 DOI 可用)
- 问题按严重级别分类(ERROR/WARNING/INFO)
- 验证报告已生成并包含修复建议
- 系统性问题已识别并突出显示
常见问题
- 信任 DOI 存在即正确:DOI 可能存在但指向错误的论文(复制粘贴错误)。务必将 DOI 解析出的标题与
.bib条目中的标题进行比较。 - 忽略 CrossRef 速率限制:不加限制地发送 API 请求会导致 IP 被封禁。始终添加
Sys.sleep()延迟并使用 CrossRef 的mailto参数获取更高速率限制的"礼貌池"。 - 将所有问题等同视之:缺少 DOI(INFO)与错误的 DOI(ERROR)完全不同。严重级别分类对于优先处理至关重要。
- 对 URL 验证过于严格:某些合法 URL 会因为需要认证、地理限制或服务器负载而返回 403 或超时。将这些标记为"未确认"而非"无效"。
- 不检查年份合理性:年份
0024或2204是明显的录入错误,但纯字段存在性检查不会捕获它们。始终进行范围验证。
相关技能
manage-bibliography-- 在验证前创建和清理参考文献库format-citations-- 将经过验证的参考文献格式化为引文
GitHub репозиторий
Похожие навыки
llamaguard
ДругоеLlamaGuard — это модель от Meta с 7–8 миллиардами параметров для модерации входных и выходных данных больших языковых моделей по шести категориям безопасности, таким как насилие и разжигание ненависти. Она обеспечивает точность 94–95% и может быть развернута с помощью vLLM, Hugging Face или Amazon SageMaker. Используйте этот навык, чтобы легко интегрировать фильтрацию контента и защитные механизмы в ваши ИИ-приложения.
cost-optimization
ДругоеЭтот навык Claude помогает разработчикам оптимизировать облачные расходы за счет правильного подбора ресурсов, стратегий тегирования и анализа затрат. Он предоставляет framework для сокращения облачных расходов и внедрения управления затратами в AWS, Azure и GCP. Используйте его, когда вам нужно проанализировать расходы на инфраструктуру, оптимизировать ресурсы или уложиться в бюджетные ограничения.
quantizing-models-bitsandbytes
ДругоеЭтот навык выполняет квантизацию LLM до 8-битной или 4-битной точности с использованием библиотеки bitsandbytes, обеспечивая сокращение использования памяти на 50-75% при минимальной потере точности. Он идеально подходит для запуска больших моделей при ограниченной памяти GPU или для ускорения вывода, поддерживая форматы INT8, NF4 и FP4. Навык интегрируется с HuggingFace Transformers и позволяет использовать обучение QLoRA и 8-битные оптимизаторы.
dispatching-parallel-agents
ДругоеЭтот навык Claude распределяет нескольких агентов для исследования и устранения трёх и более независимых проблем параллельно. Он предназначен для сценариев с несвязанными сбоями, которые можно устранить без общего состояния или зависимостей. Ключевая возможность — параллельное решение проблем, где за каждую независимую предметную область назначается отдельный агент для максимальной эффективности.
