mcpField
O
onecite

onecite

本地服务
github.com/HzaCode科研与教育6812 周前更新

关于 onecite

OneCite 是一个命令行与 Python 工具包,可将 DOI、PMID、arXiv 编号、ISBN、URL 等混合格式的文献引用规范化为 BibTeX 或 CSL-JSON。它面向需要可审计结果的研究写作与批处理流程,并将不确定的纯文本引用作为候选结果交由人工复核。

主要功能

  1. 01解析 DOI、PMID、arXiv、ISBN 等标识符
  2. 02输出 BibTeX 或 CSL-JSON 格式
  3. 03无法解析的条目单独报告
  4. 04suggest 命令提供候选结果供人工复核
  5. 05JSON、NDJSON 输出与明确的退出码

适用场景

  1. 01将手稿或综述中的混合格式参考文献统一格式
  2. 02在自动化文献流程中批量生成可复现的引用
  3. 03检查引用的元数据与原文文本是否一致

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"hzacode-onecite": {
"command": "uvx",
"args": [
"onecite"
]
}
}
}
启动命令uvx onecite

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypionecite0.0.11

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

OneCite 标志

OneCite

为研究工作流提供可审计的引文规范化处理

Downloads Awesome CLI Apps

Tests codecov PyPI Python MIT Docs Awesome LaTeX

功能 • 快速开始 • 隐私与外部服务 • 📖 高级用法 • 🗺️ 路线图 • 🤝 参与贡献


OneCite 是一款命令行和 Python 工具包,可将杂乱、格式混杂的参考文献——DOI、PMID、arXiv ID、ISBN、URL 和 BibTeX 片段——转换为可审计的 BibTeX 或 CSL-JSON 记录。对于明确标识符,OneCite 会依照文档记录的元数据服务路径进行处理;普通且含义模糊的纯文本参考文献则会作为候选项返回以供审核,不会由 process 自动采纳。


AI 辅助写作、自动化文献处理流水线和复制粘贴式研究习惯,产生了越来越多格式各异的参考文献,也带来了更多错误、虚构或不匹配的书目信息。参考文献管理器(Zotero)、解析器(AnyStyle、GROBID)、格式转换器(Citation.js)和标识符转 BibTeX工具(doi2bib、Manubot)各自只解决了问题的一部分。OneCite 面向参考文献进入论文、系统综述或管理器之前这一服务不足的环节:提供一个可审计的规范化层,将明确标识符(DOI、PMID、arXiv、ISBN、URL、数据/软件 DOI)路由至适用的元数据服务,补全可获取的元数据,报告无法解析的条目,并生成 BibTeX 或 CSL-JSON。

OneCite 并非又一个参考文献管理器,而且 process 不会自动接受模糊的标题匹配。明确标识符会通过文档记录的来源路径进行解析;明确标注为学位论文的引文则使用独立的 OpenAIRE/BASE 路径,并可回退到从输入中解析出的字段。对于含义普通且模糊的文本,onecite suggest 会返回排序后的候选项供人工审核,而不会悄然将其作为来源已解析的输出。process/suggest 的分离,加上机器可读的 JSON/NDJSON、退出代码和确定性的离线检查,使 OneCite 成为 Agent、批处理任务和可复现综述的脚本化构建模块,而非 GUI 库。来源解析并不能证明作品真实存在、未被撤稿,也不能保证上游元数据描述准确。


功能特性

功能描述
候选建议使用 onecite suggest 搜索不完整的纯文本引用,而不将其加入已解析的参考文献输出。
多种格式输入 .txt/.bib → 输出 BibTeX 或 CSL-JSON。
4 阶段流水线包含 4 个阶段的流程(解析 → 识别 → 补充 → 格式化),并明确列出未解析条目。
字段补全填充元数据来源返回的可用字段,例如期刊、卷、页码、作者和摘要。
🎓 7+ 种引用类型支持期刊文章、会议论文、图书、软件、数据集、学位论文和预印本。
按输入路由查询使用针对 Crossref、arXiv、PubMed、Semantic Scholar、Google Books 等来源的专用路由。并非每个输入都会查询所有来源。
多种标识符类型解析 DOI、PMID、arXiv ID、ISBN、GitHub URL、Zenodo DOI 和 DataCite DOI 输入。
自定义模板基于 YAML 的预设,在自动检测结果不明确时提供备用 BibTeX 条目类型。

🌐 数据来源

CrossRef Semantic Scholar PubMed arXiv DataCite Zenodo Google Books

隐私与外部服务

常规的 process 和 suggest 运行可能会根据输入内容发送外部请求。 例如,解析 DOI 会将 DOI 发送给 Crossref(有时也会发送给备用注册机构);suggest 会将引用查询发送给 Crossref、Semantic Scholar 和 arXiv;任意 URL 输入都会从所提供的主机获取内容;学位论文查询可能会发送给 OpenAIRE 和 BASE。Google Scholar 是一种基于抓取的可选 suggest 备用方案,默认关闭,并且可能被拦截或遇到 CAPTCHA 验证。

OneCite 不保证符合隐私法规,也不会持久缓存常规实时响应。服务提供方、代理、输出文件和日志可能会保留数据。使用前请检查并删去机密输入。有关确切的 process/suggest 路由、传输字段、来源健康状态限制以及离线基准测试/诊断的边界,请参阅 隐私与外部服务。

快速开始

只需几步即可安装并试用 OneCite。

1. 安装

当前公开发布于 PyPI 的版本是 0.1.1。此工作树记录的是尚未发布的 0.2.0 候选版本,因此验证仅在候选版本中提供的行为时,请从检出目录安装:

# Current stable public release
pip install onecite

# Unreleased 0.2.0 candidate, from the repository checkout
python -m pip install -e .
2. 创建输入文件

创建名为 references.txt 的文件,其中包含混合格式的引用:

# references.txt
# Add blank lines between entries to avoid misidentification

10.1038/nature14539

arXiv:1706.03762

ISBN:9780262035613

https://github.com/tensorflow/tensorflow

10.5281/zenodo.3233118

arXiv:2103.00020

Smith, J. (2020). Neural Architecture Search. PhD Thesis. Stanford University.
3. 运行 OneCite

执行命令以处理文件并生成整洁的 .bib 输出。

onecite process references.txt -o results.bib --quiet
4. 查看输出

你的 results.bib 文件现在包含不同类型的条目。

查看完整输出(results.bib)
@article{LeCun2015Deep,
  doi = "10.1038/nature14539",
  title = "Deep learning",
  author = "LeCun, Yann and Bengio, Yoshua and Hinton, Geoffrey",
  journal = "Nature",
  year = 2015,
  volume = 521,
  number = 7553,
  pages = "436-444",
  publisher = "Springer Science and Business Media LLC",
  url = "https://doi.org/10.1038/nature14539",
  type = "journal-article",
  abstract = "Deep learning allows computational models that are composed of multiple processing layers to learn representations of data with multiple levels of abstraction...",
}
@inproceedings{Vaswani2017Attention,
  arxiv = "1706.03762",
  title = "Attention Is All You Need",
  author = "Vaswani, Ashish and Shazeer, Noam and Parmar, Niki and Uszkoreit, Jakob and Jones, Llion and Gomez, Aidan N. and Kaiser, Lukasz and Polosukhin, Illia",
  year = 2017,
  booktitle = "Advances in Neural Information Processing Systems (NeurIPS)",
  url = "https://arxiv.org/abs/1706.03762",
}
# ... and 5 more entries ...

📖 高级用法

直接输入字符串和标准输入
onecite process "10.1038/nature14539"
onecite suggest "Attention is all you need, Vaswani et al., NIPS 2017"
echo "10.1038/nature14539" | onecite process -
🐍 作为 Python 库使用

在 Python 脚本中直接使用 OneCite。

from onecite import process_references

result = process_references(
    input_content="10.1038/nature14539",
    input_type="txt",
    template_name="journal_article_full",
    output_format="bibtex",
)

print('\n\n'.join(result['results']))
💻 CLI 命令和选项

OneCite 提供了命令行界面,包含以下命令和选项:

onecite process

用于通过 OneCite 流水线处理参考文献的主命令。

用法:

onecite process <input_file> [OPTIONS]

参数:

  • input_file - 输入文件路径、表示标准输入的 -,或强标识符/参考文献字符串

选项:

选项简写说明默认值
--input-type输入格式:txt 或 bibtxt
--template自动检测无法确定时使用的 BibTeX 条目类型备用预设journal_article_full
--output-format输出格式:bibtex,或供使用 CSL-JSON 的下游工具使用的 csl-jsonbibtex
--output-o输出文件路径(默认:标准输出)-
--quiet-q禁止输出详细日志False
--json输出稳定的 JSON 封装,而非 BibTeX 文本False
--ndjson输出以换行符分隔的 JSON 事件,用于流式自动化工作流False
--fail-on-unresolved任一条目无法解析时返回退出代码 2False

示例:

# Process a text file
onecite process references.txt -o results.bib

# Process a BibTeX file with auto-detection
onecite process references.bib

# Use stdin
echo "10.1038/nature14539" | onecite process -

# Process a direct string (DOI)
onecite process "10.1038/nature14539"

# Process with custom template
onecite process references.txt --template conference_paper

# Quiet mode for scripts
onecite process references.txt -o results.bib --quiet

# Automation-friendly JSON with unresolved-entry exit-code handling
onecite process references.txt --json --fail-on-unresolved

# Streaming NDJSON for automation
onecite process references.txt --ndjson

# CSL-JSON item output (a development fixture verifies Pandoc 3.10 consumption)
onecite process references.txt --output-format csl-json -o references.json

开发验证证实,Pandoc 3.10 能够使用代表性输出条目。此版本未单独验证 Quarto、独立 citeproc 和参考文献管理器导入工作流。

报告字段。 除了 results 和 failed_entries,处理报告还包含两个审计信号:

  • warnings — 针对已解析条目的非阻断性审核警告。最重要的是 text_metadata_mismatch:已解析 DOI 周围的输入文本似乎描述了另一篇作品(典型的标题与 DOI 幻觉配对)。该 DOI 仍是已解析的标识符,条目也会解析成功,但系统会将其标记为待审核,而不是悄然作为干净输出发出。
  • duplicates — 同一作品在批次中出现了多次(裸 DOI、PMID、格式化引文)。该作品只会输出一次;重复项会连同输出条目的引文键一起报告。

失败条目包含原始输入摘录(raw_text)和 reason 代码 — doi_not_found(在已实现的回退流程之后仍未返回注册记录)、no_strong_identifier(文本存在歧义;请使用 onecite suggest)、source_error(该路由上出现了来源/身份解析失败)等。这些代码便于区分重要情况,但并非完整的提供方调用轨迹:目前,某些 PMID、ISBN 和 DataCite 请求错误会与查询未命中归为同一未解析原因。

onecite suggest

搜索候选匹配项,不生成 BibTeX,也不返回验证 passed 状态。

onecite suggest "Attention is all you need, Vaswani et al., NIPS 2017" --json

候选项供审核使用,并非已通过来源核实的引文。 每条建议都会在 sources 列表中披露所查询学术索引的健康状况。如果某个来源受到速率限制或发生错误,建议状态会变为 candidates_found_incomplete / no_candidates_incomplete——正确的匹配项可能完全不在列表中,因此不得将候选列表视为完整列表。年份与查询中引用的年份相矛盾的候选项会受到惩罚,并标记为 year_conflict。若要将审核通过的候选项转换为已通过来源核实的 BibTeX,请通过 onecite process "<doi>" 解析其 DOI。

可选的 Google Scholar 回退。 suggest 接受 --google-scholar(需要可选的 scholarly 软件包:pip install onecite[scholar])。仅当 CrossRef 和 Semantic Scholar 均未返回结果时,才会将其用作尽力而为的回退。由于它会抓取没有公开 API 的服务,因此默认关闭,可能受到速率限制或被 CAPTCHA 拦截,也无法保证结果可复现——它仅用于 suggest(供人工审核的候选项),不会用于 process。

pip install onecite[scholar]
onecite suggest "some obscure title" --google-scholar
onecite --version

显示已安装的 OneCite 版本。

用法:

onecite --version
onecite version

显示版本信息的备用命令。

用法:

onecite version
onecite templates

列出随附的 BibTeX 回退模板及其所需字段。

用法:

onecite templates
onecite templates --json
onecite benchmark

运行一组小型、确定性的回归测试,涵盖 DOI 查询、arXiv 查询、PMID/PubMed 查询、GitHub 软件 URL、Zenodo/DataCite 数据集 DOI,以及有效和无效条目的混合批次。此命令专为 CI 和自动化工作流而设计,可提供机器可读的通过/失败检查;它并非全面的引文准确性基准测试。

用法:

onecite benchmark [OPTIONS]

选项:

选项说明默认值
--cases自定义基准测试套件 JSON 文件的路径随附的黄金案例
--min-success-rate退出代码为 0 所需的最低已覆盖案例通过率1.0
--json将基准测试报告以 JSON 格式打印False
--live使用实时外部 API,而非随附的离线测试数据False
--anti-hallucination运行带标签的非编造评估,而非黄金案例False

示例:

onecite benchmark
onecite benchmark --json
onecite benchmark --live --json
onecite benchmark --cases my_cases.json --min-success-rate 1.0 --json
onecite benchmark --anti-hallucination
onecite benchmark --anti-hallucination --json

仓库基线记录存储在 benchmarks/leaderboard.json 中,复现说明见 benchmarks/README.md。

防幻觉评估

onecite benchmark --anti-hallucination 会运行带标签、完全离线的评估,以检验 OneCite 的核心安全属性。它会将真实的强标识符(A 类)解析为已通过来源核实的 BibTeX;对于存在歧义的纯文本参考文献(B 类)以及虚构的、不存在的 DOI(C 类——大模型可能会幻觉生成的类型),它会保持未解析,而不是输出错误引文;对于不匹配的配对(D 类——真实 DOI 与另一篇论文的标题关联,这是最常见的幻觉引文形式),它会附加 text_metadata_mismatch 警告,而不是悄然将其作为无误的来源核实结果输出。它会报告三项指标:

  • 解析率——正确解析的 A 类输入所占比例;
  • 非编造率——正确保持未解析(未编造)的 B/C 类输入所占比例。100% 表示 OneCite 未编造任何引文;
  • 不匹配检测率——附带不匹配警告进行解析的 D 类输入所占比例。

管线崩溃会记录为 error,且在任何指标中都不会计为正确——干净地拒绝和管线故障是不同的结果。

数据集位于 src/onecite/benchmarks/anti_hallucination_cases.json,也可通过 Python 使用 onecite.run_anti_hallucination_eval() 运行此评估。

onecite doctor

检查自动化和 CI 的本地安装健康状况。doctor 命令会检查软件包是否可导入、内置模板、打包的基准测试资源、 仓库内的 OneCite Skill,以及离线基准测试回归检查。

用法:

onecite doctor
onecite doctor --json

JSON 输出是一个稳定的封装,包含 schema_version、tool、 command、status、environment、summary 和 checks 字段。

面向自动化工作流的 OneCite Skill

仓库包含一个本地技能包,位于 skills/onecite/SKILL.md。 它为自动化和贡献者工作流提供可重复的流程,用于 清理参考文献、运行基准测试和 doctor 检查,以及明确 报告未解决的条目。 该 Skill 位于仓库内,不会将自身安装到任何本地 工具记忆中。

输入类型自动检测

未指定 --input-type 时,OneCite 会自动检测输入类型:

  • 以 .bib 结尾的文件会被视为 BibTeX 格式
  • 其他所有文件和字符串都会被视为纯文本
可用模板

OneCite 支持多种适用于不同条目类型的模板预设:

  • journal_article_full - 完整期刊文章条目(默认)
  • conference_paper - 会议论文集论文
  • book - 书籍条目
  • thesis - 学位论文条目
  • dataset - 数据集条目
  • software - 软件/代码条目
退出代码
  • 0 - 成功
  • 1 - 发生错误(输入无效、处理失败等)
  • 2 - 使用 --fail-on-unresolved 时存在一个或多个未解决的条目

对于 onecite benchmark 和 onecite doctor,退出代码 0 表示 配置的检查均已通过;退出代码 1 表示至少有一项检查失败。

🗺️ 路线图

  • OneCite Skill — 面向本地引文清理工作流的仓库内操作指南
  • 基准测试 — 小型确定性回归测试套件、可配置的通过率门槛和基线记录
  • 增强型 CLI — 面向自动化的 JSON、NDJSON、摘要和参考文献处理退出代码
  • 反幻觉评估 — 对不捏造属性(解析率、不捏造率和不匹配检测率)进行带标签的离线评估,并在 CI 中设门槛
  • 审计级报告 — 文本/DOI 不匹配警告、附带原始输入的失败原因代码、按 DOI 去重,以及建议披露来源健康状况
  • CSL-JSON 输出 — --output-format csl-json 会输出 CSL-JSON 条目,供使用该格式的下游工具使用;开发用测试样例可验证 Pandoc 3.10 对其的使用,但 Quarto、独立 citeproc 和参考文献管理器导入未经过单独验证
  • 扩展建议来源 — 直接搜索 arXiv 候选项,覆盖 CrossRef 未索引的计算机科学会议
  • 并发批量解析 — 为大型参考文献列表并行查询来源(当前为顺序查询;延迟取决于所选路由和外部服务)
  • 更大的反幻觉数据集 — 为每个类别增加更多带标签的案例,并发布实时模式基线

🤝 参与贡献

欢迎随时贡献!请参阅 CONTRIBUTING.md,了解开发指南和提交拉取请求的说明。

📄 许可证

本项目采用 MIT License 许可。详情请参阅 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。