onecite について
OneCite は、DOI、PMID、arXiv ID、URL などが混在した文献情報を BibTeX または CSL-JSON に正規化するコマンドラインおよび Python ツールキットです。監査可能な出力が必要な研究執筆やバッチ処理向けで、曖昧なテキスト形式の参考文献は人によるレビュー用の候補として返します。
主な機能
- 01DOI、PMID、arXiv、ISBN、URL の識別子を解決
- 02BibTeX または CSL-JSON 形式で出力
- 03解決できなかったエントリを明示的に報告
- 04レビュー用の候補を返す suggest コマンド
- 05JSON、NDJSON 出力と定義された終了コード
活用シーン
- 01原稿内の混在形式の参考文献を統一
- 02バッチ処理で再現可能な引用情報を生成
- 03参考文献のメタデータと原文テキストの整合性を確認
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
OneCite
研究ワークフロー向けの監査可能な引用情報の正規化
機能 • クイックスタート • プライバシーと外部サービス • 📖 高度な使い方 • 🗺️ ロードマップ • 🤝 コントリビューション
OneCite は、DOI、PMID、arXiv ID、ISBN、URL、BibTeX の断片など、形式が混在した雑多な参考文献を、監査可能な BibTeX または CSL-JSON レコードに変換するコマンドラインおよび Python ツールキットです。確度の高い識別子は、文書化されたメタデータサービスの経路をたどります。一般的で曖昧なプレーンテキストの参考文献は、確認用の候補として返され、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 は 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 の入力を解決します。 |
| カスタムテンプレート | 自動判定が確定できない場合に、BibTeX エントリータイプのフォールバックを指定する YAML ベースのプリセットです。 |
🌐 データソース
プライバシーと外部サービス
通常の process および suggest の実行では、入力内容に応じて外部へのリクエストが発生することがあります。
たとえば、DOI の解決時には DOI が Crossref(場合によってはフォールバックとなるレジストリ)に送信されます。suggest では引用情報のクエリが Crossref、Semantic Scholar、arXiv に送信されます。任意の URL を入力すると、指定されたホストからデータが取得されます。また、学位論文のクエリは OpenAIRE および BASE に送信されることがあります。Google Scholar はスクレイピング方式のオプションの suggest フォールバック機能で、既定では無効になっており、ブロックされたり CAPTCHA を求められたりする場合があります。
OneCite はプライバシー規制への準拠を保証するものではなく、通常のライブレスポンスを永続的にキャッシュすることもありません。プロバイダー、プロキシ、出力ファイル、ログにデータが保持される場合があります。機密情報を含む入力は、使用前に確認して機密情報を削除してください。process/suggest の正確な経路、送信されるフィールド、ソースの稼働状況に関する制限、およびオフラインのベンチマーク/doctor の範囲については、プライバシーと外部サービスを参照してください。
クイックスタート
数ステップで 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 ライブラリとして使用
OneCite を Python スクリプトから直接使用できます。
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 または bib | txt | |
--template | 自動検出で判断できない場合に使用する、BibTeX エントリータイプの代替プリセット | journal_article_full | |
--output-format | 出力形式:bibtex、または CSL-JSON を処理する後続ツール向けの csl-json | bibtex | |
--output | -o | 出力ファイルのパス(デフォルト:標準出力) | - |
--quiet | -q | 詳細なログ出力を抑制 | False |
--json | BibTeX テキストの代わりに、安定した JSON エンベロープを出力 | False | |
--ndjson | ストリーミング自動化ワークフロー向けに、改行区切りの JSON イベントを出力 | False | |
--fail-on-unresolved | エントリーを解決できない場合、終了コード 2 を返す | False |
例:
# 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 に加え、処理レポートには監査用のシグナルが 2 つ含まれます。
warnings— 解決済みエントリーに対する、処理を妨げない確認用の警告です。特に重要なのはtext_metadata_mismatchです。解決済み DOI の周辺にある入力テキストが、別の文献について記述しているように見える場合(よくある、タイトルと DOI の幻覚的な組み合わせ)を示します。DOI は解決済みの識別子として維持され、エントリーも解決済みとなりますが、問題のない出力として黙って出力されるのではなく、確認が必要なものとしてフラグが付けられます。duplicates— 同じ文献がバッチ内に複数回(DOI のみ、PMID、書式付き引用)出現したことを示します。出力は 1 回のみで、繰り返し分は、出力されたエントリーの cite key とともに報告されます。
失敗したエントリーには、元の入力抜粋(raw_text)と理由コードが含まれます。理由コードには、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 にするには、その DOI を onecite process "<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 警告を付けます。次の 3 つの指標を報告します。
- 解決率 — 正しく解決されたクラス 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 のチェック、未解決の項目の明示的な
報告について、自動化およびコントリビューターのワークフローで再現可能な手順を提供します。
このスキルはリポジトリ内に含まれており、ローカルのツールメモリに自動で
インストールされることはありません。
入力タイプの自動検出
--input-type が指定されていない場合、OneCite は入力タイプを自動的に検出します。
.bibで終わるファイルは BibTeX 形式として扱われます- それ以外のすべてのファイルと文字列はプレーンテキストとして扱われます
利用可能なテンプレート
OneCite は、さまざまな種類の項目に対応する複数のテンプレートプリセットをサポートしています。
journal_article_full- 学術誌論文の完全な項目(デフォルト)conference_paper- 会議論文集の論文book- 書籍項目thesis- 学位論文項目dataset- データセット項目software- ソフトウェア/コード項目
終了コード
0- 成功1- エラーが発生しました(無効な入力、処理の失敗など)2---fail-on-unresolvedを使用した際に、1 件以上の項目が未解決でした
onecite benchmark と onecite doctor では、終了コード 0 は
設定されたチェックに合格したことを示し、終了コード 1 は少なくとも 1 つのチェックに失敗したことを示します。
🗺️ ロードマップ
- OneCite Skill — ローカルの引用情報クリーンアップワークフロー向けに、リポジトリ内に含まれる運用ガイド
- ベンチマーク — 小規模で決定論的な回帰テストスイート、設定可能な合格率ゲート、ベースライン記録
- CLI の強化 — 参照情報処理向けの、自動化に適した JSON、NDJSON、要約、終了コード
- ハルシネーション抑制の評価 — 捏造防止特性のラベル付きオフライン評価(解決率、捏造防止率、不一致検出率)。CI でゲートします
- 監査対応レポート — テキストと DOI の不一致警告、元の入力を含む失敗理由コード、DOI レベルの重複排除、提案元の健全性に関する開示の推奨
- CSL-JSON 出力 —
--output-format csl-jsonは、この形式を利用する下流ツール向けに CSL-JSON 項目を出力します。開発用フィクスチャで Pandoc 3.10 による取り込みを検証していますが、Quarto、単体の citeproc、文献管理ツールへのインポートは個別に検証していません - 提案元の拡充 — arXiv の候補を直接検索することで、CrossRef がインデックス化していない CS 分野の会議を網羅します
- バッチ解決の並列化 — 大規模な参照リストに対するソース検索の並列実行(現在は逐次処理。レイテンシは選択したルートと外部サービスに依存します)
- ハルシネーション抑制データセットの拡充 — 各クラスのラベル付きケースを増やし、ライブモードのベースラインを公開
🤝 コントリビューション
コントリビューションをいつでも歓迎します。開発ガイドラインとプルリクエストの送信方法については、CONTRIBUTING.md をご覧ください。
📄 ライセンス
このプロジェクトは MIT License のもとでライセンスされています。詳しくは LICENSE ファイルをご覧ください。
OneCite
GitHub でスターを付ける • ドキュメント • 🐛 問題を報告 • ディスカッション
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。