mcpField
P
paper-preflight

paper-preflight

ローカル
github.com/amos689科学・教育1272 週間前に更新

paper-preflight について

paper-preflightは、投稿前の論文を確認する研究者向けの参考文献検証ツールです。LaTeXやWordなど複数形式を読み、LLMによる判定を使わず学術・ソフトウェアの記録と照合します。

主な機能

  1. 01複数の論文・書誌形式を読み込み
  2. 02引用を実際の書誌記録と照合
  3. 03撤回や出版済みプレプリントを検出
  4. 04DOI、著者、題名、年を確認
  5. 05ルール番号付きの検証レポートを出力

活用シーン

  1. 01投稿前のLaTeXやWord論文の確認
  2. 02単独のBibTeXやRIS書誌の検査
  3. 03無効なDOIや誤った書誌情報の発見

MCP 対応

オプションでMCPサーバーを導入すると、コーディングエージェントから文献検証を利用できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"amos689-paper-preflight": {
"command": "uvx",
"args": [
"paper-preflight"
]
}
}
}
起動コマンドuvx paper-preflight

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypipaper-preflight1.0.0

ツール

5

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
langenumいいえメッセージの言語:英語または中国語。en | zh
pathstringいいえLaTeX プロジェクトのフォルダーまたは .tex ファイル、Markdown、Quarto、Typst 原稿(.md、.qmd、.typ)、Word 原稿(.docx)、または参考文献一覧(.bib、.bbl、.json、.ris、.yml、.txt、.pdf)。ワークスペースのルートからの相対パスです(デフォルト:ルート自体)。
offsetintegerいいえ検出結果の開始位置:最初は 0、その後は `next_offset` を指定します。
offlinebooleanいいえtrue:ローカルキャッシュのみで回答し、ネットワークには一切接続しません(未キャッシュの参考文献は未検証として返されます)。
include_infobooleanいいえエラーだけでなく、情報レベルの検出結果(提案)も返します。
max_findingsintegerいいえこの呼び出しで返す検出結果の数(1 以上)。

詳細

paper-preflight

投稿前に、論文のすべての参考文献を実際の学術記録と照合します。
LLM による推測も、誤った告発もありません。

CI PyPI version MIT license paper-preflight MCP server on Glama

Python 3.11 to 3.14 Input: LaTeX, Word, Markdown and PDF Checked against six scholarly databases No LLM in the verdicts Read-only MCP tools

Tested on Windows, Linux and macOS English and Simplified Chinese

英語 · 简体中文 · クイックスタート · ユーザーガイド · リリース · フィードバック

paper-preflight がデモ論文をチェックする画面:未定義の引用キー、別の論文に属する DOI、どの情報源にも見つからない参考文献、撤回された論文、重複したエントリーキーについてはエラーを表示し、出版済みのプレプリント、同じ研究を指す2つのエントリー、誤った年、LaTeX でエスケープされた DOI については警告を表示します

言語モデルは参考文献を捏造し、コピー&ペーストした BibTeX には誤った年や著者、使えなくなった DOI が含まれています。paper-preflight は論文(LaTeX、Word、Markdown、Typst、PDF、または参考文献リストのプレーンテキスト)を読み込み、引用されたすべての研究について Crossref、dblp、arXiv、DataCite、PubMed、OpenAlex に問い合わせます。無料のキーがあれば Semantic Scholar にも問い合わせます。また、DOI のない書籍については Open Library、ソフトウェア、モデル、データセットについては GitHub、PyPI、CRAN、Hugging Face、OpenML に問い合わせます。

  • 実在しますか?
  • 記載内容と一致していますか?
  • 撤回されていますか?
  • 引用しているプレプリントは、その後出版されていますか?

すべての検出結果は、記録、またはその研究を知り得るすべての情報源からの「いいえ」という回答に基づいています。判断できない場合は、推測するのではなく、その理由とともに「判定不能」と伝えます。判定に言語モデルは一切関与しません。

ステータス:1.0。 リリース用に保留した、実際の arXiv 論文を3週間分使った評価では、参考文献100件あたりの誤警告は0.79件で、実際の問題を409件検出しました(精度)。 ルール ID、JSON レポート、設定、コマンド、Python API は1.xを通じて維持されます(安定性について)。誤検知は、私たちが最も報告をお待ちしているバグです。ぜひイシューを作成してください。

クイックスタート

uv を使えば、インストールは不要です。

uvx paper-preflight check path/to/paper

path/to/paper はプロジェクトのフォルダー、メインの .tex ファイル、または .bib ファイルです。恒久的にインストールする場合(Python 3.11 以降):

pip install paper-preflight
追加機能追加されるものインストール
pdfPDF の参考文献リストを読み取る機能pip install "paper-preflight[pdf]"
mcpコーディングエージェント用の MCP サーバーpip install "paper-preflight[mcp]"
supportローカルモデルを使う実験的なエビデンス検索機能pip install "paper-preflight[support]"

リポジトリのデモ用論文には、意図的に間違いを含めたものもある11件の文献が引用されています。上のアニメーションは、ライブソースを対象に paper-preflight check examples/demo-paper を実行した実際の結果です。この実行では、Crossref に偽の複製しか登録されていない NeurIPS の正しい論文を dblp 経由で検証し、識別子のない書籍を Open Library で確認しています。また、まだ文字体系に対応していない中国語の書籍は、「見つからない」ではなく「判定できない」とされています。

同じ実行結果のテキスト版
$ paper-preflight check examples/demo-paper
paper-preflight 1.0.0 · main.tex · 12 entries, 12 cited keys

error   CIT001 main.tex:31
    Citation key 'nonexistent2023' is not defined in any bibliography file (1 use(s)).
error   REF001 refs.bib:43
    The doi of 'devlin2019bert' (10.1109/cvpr.2016.90) resolves to a different work in Crossref: "Deep Residual Learning for Image Recognition" (He et al., 2016).
error   REF003 refs.bib:66
    'lindqvist2024quantum' was not found in Crossref, dblp and Semantic Scholar, and every source responded. Check that the work exists and that its title is correct.
error   REF004 refs.bib:73
    'wakefield1998ileal' has been retracted (reported by Crossref, OpenAlex). Cite it only if the text discusses the retraction.
error   CIT002 refs.bib:128
    Entry key 'kingma2015adam' is already defined at line 47; BibTeX ignores this one.
warning REF015 refs.bib:31
    'he2015residual' cites a preprint that has been published in CVPR (2016), DOI 10.1109/cvpr.2016.90. Cite the published version and keep the eprint field.
warning CIT004 refs.bib:37
    Entries 'devlin2019bert' and 'he2016deep' look like the same work (same DOI).
warning REF013 refs.bib:51
    'kingma2015adam' gives the year 2016, but dblp records 2014, 2015.
warning REF017 refs.bib:112
    The doi of 'tacl2019example' contains LaTeX escapes: '10.1162/tacl\_a\_00276'. Write it as: 10.1162/tacl_a_00276
info    REF005 refs.bib:73
    'wakefield1998ileal' has a published correction (reported by Crossref).
info    REF090 refs.bib:95
    'zhou2016ml' could not be verified: non-Latin titles are not supported yet; grey literature without an identifier (book, report, software, web page).
info    CIT003 refs.bib:116
    Entry 'lecun1998gradient' is never cited.

References: 7 verified · 1 metadata mismatch · 1 identifier conflict · 1 not found · 1 cannot determine
5 error(s) · 4 warning(s) · 3 info

読み取り対象

入力コマンド
LaTeX プロジェクト:フォルダー、メインの .tex または .bib。多くの arXiv ソースのように、コンパイル済みの .bbl のみを含むプロジェクトは、そのファイルから読み取ります(確認のみで、編集はしません)paper-preflight check path/to/paper
Word 原稿:Zotero、Mendeley、EndNote で挿入した引用、Word 独自のソース、または入力済みの参考文献リストpaper-preflight check paper.docx
Markdown、Quarto または R Markdown:文献目録に対する [@key]paper-preflight check paper.qmd
Typst:#bibliography(...)、.bib または Hayagriva .yml に対する @keypaper-preflight check paper.typ
単独の文献目録:BibTeX、CSL-JSON(.json)、RIS(.ris)または YAML(.yml)paper-preflight check refs.ris
一般的なスタイル(APA、IEEE、ACM、Nature、Vancouver、Springer、Elsevier、MDPI、GOST、Chicago、MLA)で記述されたプレーンテキストの参考文献リストpaper-preflight check references.txt、または標準入力の場合は -
PDF のみ(pdf 追加機能を使用)paper-preflight check paper.pdf
任意の arXiv 論文:ソースを一時フォルダーにダウンロードし、確認後に削除しますpaper-preflight check arxiv:2607.06922

各入力で判定できること、できないことの詳細:docs/inputs.md。

チェック内容

各文献に、次のいずれかの判定が付けられます。

判定意味
verified文献の記録が見つかり、項目の内容と一致しています
metadata mismatch文献は見つかりましたが、項目の記載内容と異なっています。検出結果に該当フィールドが示されます
identifier conflict項目の DOI または arXiv ID が別の文献を指しています
not found文献を把握している可能性のあるすべての情報源から回答があり、どこにも見つかりませんでした
cannot determine判定できず、理由がレポートに記載されています

検出結果には問題の内容が示されます。

ルール検出内容
REF001DOI または arXiv ID が別の論文を指しています
REF002DOI または arXiv ID が存在しません
REF003どの情報源でも文献が見つからず、すべての情報源から回答がありました
REF004 · REF005文献が撤回されているか、懸念表明または訂正があります
REF010–REF014著者、タイトル、年または掲載誌が実際の記録と異なります
REF015引用されたプレプリントが正式に出版されています
REF016登録機関には DOI があるのに、項目にはありません(安全に修正できる内容として提示)
REF017識別子の記述によりリンクが機能しません(10.1162/tacl\_a\_00276、…v1)
REF018引用された arXiv プレプリントが著者によって撤回されています
REF019 · REF021リンク先のリポジトリ、パッケージまたはデータセットが存在しません。リンク先のウェブページがなく、アーカイブされたコピーもありません
REF020プレプリントが、ジャーナルと会議のカタログに掲載されていない掲載誌とともに引用されています
REF090判定できません。理由(情報源が利用できない、グレーリテラチャーなど)が必ず記載されます
CIT001–CIT008未定義、重複、未使用または類似した引用キー、.bib の構文エラー
TEX001–TEX004インクルードされたファイルが見つからない、読み取れない、または相互にインクルードしている。リモートの参考文献リストが未チェック
RUN001 · RUN002 · CFG001情報源の停止により実行が未完了。別の情報源の代わりに別の情報源が回答。抑制コメントが何も抑制していない

各ルールには専用ページがあり、チェック内容、誤判定となる可能性がある状況、対処方法が説明されています。paper-preflight explain REF003 を実行すると、ターミナルに詳細が表示されます。

精度はどの程度ですか?

いずれも稼働中の情報源を対象とした、4種類の測定結果です。

測定対象結果
実際の論文:1.0 の検証用に確保した、3週間分の arXiv 論文60件、参考文献2,714件、すべての警告を手作業で確認参考文献100件あたり誤警告0.79件(論文3件に1件の割合)。実際の問題は409件
査読を通過したハルシネーション:NeurIPS 2025 および ICLR 2026 の論文で GPTZero が検出した151件142件を警告(94%)、9件は判定不能、verified は0件
HALLMARK、公開ベンチマーク:開発中に一度も使用していない831件あらゆる問題:適合率98.5%、再現率93.5%、偽陽性率1.9%
他の5つのツールとの比較:公開された研究で手作業によりラベル付けされた参考文献104件適合率72.5%。再現率87.9%で、他のツールは31〜51%

適合率を最優先します。文献が捏造されたと判定するのは、肯定的な証拠がある場合に限られます。回答がない、または曖昧な検索結果は、「not found」ではなく、必ず「cannot determine」として報告されます。評価ハーネスと各実行の概要は evals/ にあります。

実際の論文

毎週、arXiv の論文(cs、stat、q-bio、quant-ph、astro-ph)から機械的に選ばれた20本を使用しています。 1.0では、これまで使用されていない3週間分を、測定対象となる変更を加える前にまとめて確定し、同じコードでそれぞれ1回実行しました。判定基準は、各週で参考文献100件あたり最大1.5件、平均で最大1.0件の誤検知でした。その上には、1.0未満に収まったより最近の週を示しています。それぞれ当時のバージョンで1回実行しました。測定したすべての週(1.0を超えた週も含む)は、evals/README.mdに掲載されています。

論文の初回投稿日バージョン参考文献フラグ件数実際の問題誤検知不明参考文献100件あたりの誤検知
2026-10-07..131.0 candidate, 1st try9918176410.4
2026-09-30..10-060.7.01,0148979730.7
2026-09-23..290.6.07864842600.8
2026-06-24..300.8.01,1271431321010.9
2026-05-13..191.0 candidate, 1st try1,008133123820.8
2026-05-06..121.0 candidate, 2nd try950133126700.7
2026-04-08..141.0 candidate, 3rd try1,088194181760.6
2026-04-01..071.0 candidate, 3rd try7638680600.8
2026-03-25..311.0.0809220209831.0
2026-03-18..241.0.01,007110105500.5
2026-03-11..171.0.089810495810.9
1.0.0の3週間分の合計1.0.02,7144344092140.79
  • 実際の問題409件: 引用されたプレプリントのうち、公開済みのものが220件、リンク切れを起こす形式で記載された識別子が149件、著者名・タイトル・年が誤っている項目(NeurIPS 2025の論文が2026年と記載されているもの、架空の共著者、BibTeXが誤読する著者フィールド)が30件、引用どおりには存在しない文献が10件(どこにも見つからないものが5件、存在しない識別子が3件、別の文献に属するものが2件)です。いくつかの論文では、参考文献リストの大部分が創作されています(医療画像、LLM)。
  • 誤検知21件: レジストリ自体の誤り(タイトルの一部欠落や誤字、名前の文字化け、記号の欠落)が5件、作成者としてグループ名を記載するよう求めているケースとZoteroの「N other authors」というプレースホルダーが6件、どのインデックスにも収録されていない文献または後のバージョンで改題された文献が3件、ジャーナル版の代わりに会議論文と照合したものが2件、タイトルの後にAPAの[software]および[dataset]ラベルが付いたものが2件、その他が3件です。検出結果が誤っている場合に、対処方法を記載しています。
  • 判定基準の達成には4回の試行が必要でした。 最初の3回の平均は、参考文献100件あたり1.08件、1.24件、1.28件で、いずれも1週間分が1.5件を超えました。各試行で見つかった誤検知を、次の試行の前に新しい週のデータで修正しました。最初のリリースである0.1.0の測定値は4.5でした。これまでに測定したすべての週は、evals/README.mdに掲載されています。
査読を通過したハルシネーション

GPTZeroは、同社スタッフがそれぞれ確認した、NeurIPS 2025の論文およびICLR 2026の投稿論文から見つけた、捏造された参考文献151件を公開しました。論文に記載されたとおり、プレーンテキストとして貼り付けた結果は次のとおりです。

参考文献フラグが付いたもの判定不能確認済み
151142(94%)90
  • 確認済みのものはありません。 判定を保留した9件は、ウェブページやブログ記事、どの情報源のインデックスにも収録されていないワークショップ、実在するタイトルに架空の著者が付けられた(複数の文献が同じタイトルを共有する)もの、検索できないほど文字化けした参考文献2件です。それぞれの理由はevals/results/gptzero.mdに記載されています。
  • これらを見つけたのはGPTZero独自のツールです。つまり、検索で見つけられるハルシネーションです。あらゆる種類のハルシネーションに対する再現率は、これより低くなります(下記のHALLMARKを参照)。
HALLMARK

HALLMARK(v1.2.3)は、実在するBibTeXエントリーと捏造されたBibTeXエントリーを集めた公開ベンチマークです。捏造では、識別子の誤り、該当する文献が見つからないこと、著者の共通部分がないことを数えます。何らかの問題では、著者、タイトル、出版年、掲載誌の誤りも数えます。

分割モード適合率再現率偽陽性率カバレッジ
test_public:831件、開発中は未使用何らかの問題98.5%93.5%1.9%97.7%
捏造99.0%50.2%0.6%97.7%
dev_public:1,119件、開発中に使用何らかの問題97.7%94.3%2.1%98.9%
捏造98.2%53.7%1.0%98.9%

test_publicは1.0.0で、dev_publicは0.8.0で実行しました。test_publicに合わせて調整したルールはありません。

  • 偽陽性の多くは、ラベルに異論があるものです。 dev_publicでVALIDとラベル付けされたエントリーに対するフラグはすべて手作業で確認しました。残った11件は正しい引用ではありません(別の論文に属するDOI、論文を執筆していない人物を含む著者リスト、ずれた出版年、途中で切れたタイトル)。これらを除けば、どちらのモードも適合率は100%になります。各項目には、1回の検索で確認できる理由が記載されています:evals/hallmark_disputed.toml。
  • **依然として見逃されるもの:**末尾の著者が省略されたもの、または後の版で著者が追加されたプレプリントのみを照合したもの(補足情報で明記)、複数の実在する文献で共用されているタイトルを流用した架空のエントリーです。すべての幻覚の種類の内訳は、evals/results/にあります。
他のツールとの比較

Badalova & Mayr (2026)は、104件の参考文献を手作業で確認し、5つのツールが検出した項目を公開しました。同じ参考文献に対して、同論文のラベルを使用した結果は次のとおりです。

ツール適合率[95%信頼区間]再現率正しい参考文献100件あたりの誤検出数
CheckIfExist47.7% [36.0%, 59.6%]93.9%47.9
HalluCiteChecker47.4% [32.5%, 62.7%]54.5%28.2
Hallucinator50.9% [38.3%, 63.4%]87.9%39.4
HalRef31.2% [21.9%, 42.2%]72.7%74.6
RefChecker47.1% [35.7%, 58.8%]97.0%50.7
paper-preflight72.5% [57.2%, 83.9%]87.9%15.5

サンプル数が少ないため、信頼区間は広くなっています。この研究では、文献が実在する場合に参考文献を正しいと判定しています。そのため、paper-preflightが「誤り」とした5件は、実際には誤りのある引用(著者の誤り、壊れたDOI)です。このデータで見つかった誤検出の原因のうち2つは、上記の実行前に修正されました(初回の実行では62.8%でした)。evals/results/badalova-mayr.mdを参照してください。

制限事項

  • ラテン文字以外の文字体系によるタイトル(中国語、日本語、キリル文字など)は、現時点では「判定不能」です。英語に翻訳されたタイトルで引用されている中国語の作品も同様です。オープンな索引にはほとんど登録されていないためです。
  • 識別子のないグレイリテラチャー(レポート、学位論文、マニュアル、規格)は、オープンなレジストリにほとんど登録されていないため、「判定不能」となることがよくあります。書籍は Open Library、ソフトウェアは GitHub、PyPI、CRAN、モデルとデータセットは Hugging Face と OpenML に照会します。
  • **ウェブページが真偽判定されることはありません。**リンク先のページが消失し、アーカイブされたコピーもない場合は報告されます(REF021)。
  • どのオープンな索引にも登録されていない作品は、その会場もカタログに登録されていない場合は「判定不能」になりますが、既知の会場であれば未検出として報告されることがあります。その判定に基づいて対応する前に、REF003のページをお読みください。
  • **検出できないもの:**複数の作品が共有する実在のタイトルを借用した架空の参考文献、末尾で著者リストが途中で切れているもの(情報)、主張を裏付けていない実在論文の引用(主張を読み取るのは、実験的なsupportのみです)。
  • **初回実行時にはネットワークが必要です。**キャッシュが空の場合、参考文献1件あたり約0.4秒かかるため、参考文献が50件の論文では約20秒かかります。応答はキャッシュされ、--offlineはキャッシュを使って動作します。ダウンしているソースに代わりとなる回答がない場合、実行は不完全となり(終了コード2)、「問題なし」にはなりません。

検証済みBibTeXを取得する

記憶を頼りにエントリを書く代わりに、DOI、arXiv ID、またはタイトルを指定して取得します。すべてのフィールドはレジストリの記録に基づいており、エントリの上にあるコメントにその記録が示されます。

paper-preflight bib fetch 1810.04805
% Verified with paper-preflight against dblp (conf/naacl/DevlinCLT19), 2026-10-03
@inproceedings{devlin2019bert,
  title         = {{BERT:} Pre-training of Deep Bidirectional Transformers for Language Understanding},
  author        = {Devlin, Jacob and Chang, Ming-Wei and Lee, Kenton and Toutanova, Kristina},
  booktitle     = {NAACL-HLT (1)},
  year          = {2019},
  doi           = {10.18653/v1/n19-1423},
  eprint        = {1810.04805},
  archivePrefix = {arXiv},
}
  • **プレプリント:**公開済みのarXivプレプリントは、公開版として返され、eprintも保持されます(プレプリント自体を取得するには--prefer preprintを指定します)。
  • **タイトル:**複数の作品が一致する場合、--title(必要に応じて--author/--yearも指定)を使うと、候補を一覧表示し、ひとつを選ぶことはありません。
  • **撤回:**撤回された作品には警告が付されます。
  • スクリプトとエージェント:--format jsonを指定します。

参考文献一覧を修正する

bib fixは、検証済みレコードに基づいて、.bibファイル内の検出結果を編集に反映します。差分を表示し、--applyを追加するまでは何も変更しません。

paper-preflight bib fix path/to/paper --level unsafe
--- a/refs.bib
+++ b/refs.bib
@@ -48,7 +47,7 @@
   title     = {Adam: A Method for Stochastic Optimization},
   author    = {Kingma, Diederik P. and Ba, Jimmy},
   booktitle = {International Conference on Learning Representations (ICLR)},
-  year      = {2016},
+  year      = {2015},
 }
  • --level safe(デフォルト)は、引用対象の作品を変えない修正だけを行います。リンク切れにつながる識別子の記述と、レジストリに存在するがエントリにないDOIが対象です。
  • --level unsafeは、レコードに基づいて著者、タイトル、年、会場も書き換え、別の作品を指す識別子を削除し、プレプリントを公開版として引用します(エントリの種類、会場、年、巻、ページ、DOIを更新し、eprintは保持します)。まず差分を確認してください。
  • 変更されるのは該当フィールドのみです。コメント、書式、改行コード、エンコーディングは保持されます。誰にも見つけられなかった参考文献が「修正」されることはありません。意図したものを判断できるのは、あなた自身だけです。

オプションと終了コード

オプション効果
--format json / --format sarif機械可読形式で出力します(SARIF は GitHub code scanning で使用できます)。-o を指定するとファイルに書き込みます
--fail-on warning警告でも実行を失敗扱いにします(デフォルトはエラーです。どちらも対象にしない場合は never を指定します)
--offlineネットワークには一切接続せず、ローカルキャッシュにすでにある回答のみを使用します
--refreshキャッシュ済みの回答を使わず、すべてのソースに再度問い合わせます(修正後などに使用します)
--recheck以前の実行時にはインデックス登録が早すぎて見つからなかった参照を、今すぐ再検索します(指定しない場合は 1 日に 1 回です)
--details検出結果をすべて一覧表示します。デフォルトでは、多数の項目に適用される提案(公開済みプレプリント、利用可能な DOI など)は 1 行で表示します
--hide-info情報メッセージを表示しません
--lang zh中国語のメッセージを表示します(ロケールから自動的に選択される場合もあります)
終了コード意味
0--fail-on 以上の問題は見つかりませんでした
1ブロッキング対象の問題が見つかりました
2ブロッキング対象の問題はありませんでしたが、ソースを利用できず、代わりに回答できるソースもなかったため、論文が問題ないとはまだ判断できません
3使用方法のエラー
4内部エラー(報告してください)

JSON レポートは公開済みの JSON Schema (schema_version 1.0)に準拠しています。フィールドは追加されることがありますが、1.x の範囲では削除されたり、意味が変わったりすることはありません。 すべてのオプション、キャッシュ、およびその有効期間については、docs/configuration.md を参照してください。

プロジェクト設定

プロジェクト全体に設定を適用するには、論文と同じ場所(またはリポジトリのルートまでの上位フォルダー)にある paper-preflight.toml、または pyproject.toml の [tool.paper-preflight] に設定を記述します。

ignore-rules = ["REF016"]                  # never report these rules
ignore-keys = ["internal2024*"]            # nor anything about these entries
severity = { REF015 = "info" }             # report published preprints as infos
disable-sources = ["s2"]                   # optional sources only
fail-on = "warning"                        # as --fail-on; the command line wins

代わりに check --config <path> でファイルを指定できます。オプションのソースは s2、openlibrary、 github、pypi、cran、huggingface、openml、web(ウェブページへのリンク)、および wayback です。参照の判定に使われるレジストリは無効にできません。ファイルに誤り(未知のルールや設定)がある場合はエラーとなり、黙って無視されることはありません。JSON レポートの run.notes にファイル名が記録され、MCP サーバーもそのファイルを読み込みます。

確認済みの検出結果を抑制する

項目の直前にコメントを記述すると、その項目に対するルールが抑制されます。理由を任意で添えることもできます。

% preflight: ignore[REF003] reason="internal technical report, not indexed anywhere"
@techreport{lab2024internal,
  ...
}

判定結果は JSON レポートに残り、検出結果のみが除外されます。何も抑制しなかった抑制設定は CFG001(情報)として報告されるため、古いコメントが蓄積しません(参照ルールの場合、オフライン時の回答や障害によってルールが実行されていない可能性があるため、完全なオンライン実行の後に限ります)。

無料の認証情報で結果を改善する

paper-preflight はアカウントなしで利用できます。以下の任意の環境変数を設定すると、処理が速くなり、より多くの情報を得られます。値が表示またはログに記録されることはありません。

変数効果
PAPER_PREFLIGHT_EMAILCrossref の礼儀用プールを利用します。検索が高速かつ安定します
OPENALEX_API_KEY撤回チェックに使える OpenAlex の予算が増えます
S2_API_KEYほかのソースで見つからなかった参照を補うソースとして Semantic Scholar を利用します
GITHUB_TOKENリポジトリへの参照に対する GitHub の利用枠が増えます(1 時間あたり 60 件ではなく 5,000 件)
NCBI_API_KEYPMID および PMCID に対する PubMed の利用枠が増えます(1 秒あたり 3 件ではなく 10 件)

paper-preflight doctor を実行すると、どの変数が設定されているか、および各ソースが現在応答するかどうかを確認できます。

ワークフローでの使い方

Claude Code: プラグインをインストールしてください。MCP サーバーと、Claude が論文を完成と判断する前に参考文献を確認し、誤りが証明された箇所だけを修正し、参考文献を決して捏造しないようにするスキルが含まれています。

claude plugin marketplace add amos689/paper-preflight
claude plugin install paper-preflight@paper-preflight

Codex、Gemini CLI、Copilot、Cursor、その他のエージェント: 同じスキルをインストールしてください (gh skill install amos689/paper-preflight paper-preflight でもインストールできます)。MCP サーバーが設定されていない場合は、CLI を実行します。

npx skills add amos689/paper-preflight

MCP クライアント(Codex、Cursor、VS Code、…): paper-preflight mcp(mcp extra)を実行してください。ツールは読み取り専用で、ワークスペース内に限定されています。docs/mcp.mdを参照してください。

GitHub Actions: uses: amos689/paper-preflight@main を設定すると、プッシュのたびに論文をチェックし、ジョブの概要にレポートを表示します。オプションでコードスキャンのアラートも利用できます。docs/github-action.mdを参照してください。

pre-commit: コミットのたびに、引用キーとキャッシュ済みの判定を数秒でチェックします。docs/pre-commit.mdを参照してください。

Python:

import paper_preflight

report = paper_preflight.check_paper("paper/")
for ref in report.references:
    print(ref.key, ref.verdict, [f.rule for f in ref.findings])

結果は通常の変更不可なデータクラスです。docs/python-api.mdを参照してください。

実験的機能:各引用の根拠となる箇所を探す

support は、引用された文献の中から、引用元の文が主張する内容を述べている箇所を探します。文献のテキスト(arXiv のソース、オープンアクセスの全文または PDF、それらがない場合は要旨)を読み込み、小型のローカルモデル(HHEM-2.1-open、0.4 GB)が、主張に最も関連する箇所をスコアリングします。support extra が必要です。

paper-preflight support path/to/paper --download-model --all

--download-model はモデルの重みを一度だけダウンロードします。--all を指定すると、引用文とともに確認済みの引用もすべて一覧表示します。check と同様に、対象には arxiv:<id> を指定できます。

  • 出力内容: 引用箇所を一語一句そのまま引用した「confirmed」、または理由(テキストがない、要旨しかない、主張に十分近い箇所がない)を示す「could not confirm」です。
  • 引用が誤りだとは決して判定しません。 298件の引用からなるゴールドセットでは、確認結果の93%が正しかったものの[95%信頼区間:82%、98%]、実際に正しい引用のうち確認できたのは約6件に1件であり、低いスコアが誤引用を示した割合は半分未満でした。ゴールドセットのラベルは専門家ではなくAIモデルが付与しました。詳細はevals/results/support.mdを参照してください。
  • エージェントに判定させることもできます。 MCP ツール preflight_cited_passages は、各主張と引用文献から見つかった最適な箇所を返します。モデルを使わず、エージェントが同じルールで判定できます。ゴールドセットの引用100件では、Claude エージェントがこれをもとに判定した場合、実際に正しい引用の39%を確認できました。HHEMでは9%でした。確認された引用はすべて、少なくとも部分的に裏付けられていました(ラベルは同じモデルファミリーによるものです)。
  • マシンの外に送信されるもの: テキストを取得するための引用文献の識別子のみです。主張のスコアリングはローカルで行われます。

仕組み

  1. ソース優先。 LaTeX が処理するのと同じように LaTeX プロジェクトを読み込みます。コメント、\iffalse ブロック、\includeonly を考慮し、.aux ファイルは最新の場合に使用します。また、重複したキーは BibTeX と同様に最初の定義を採用します。
  2. 識別子優先の振り分け。 DOI は登録機関に問い合わせます(どの機関かは doi.org が示します。Crossref、DataCite など)。arXiv ID は arXiv に問い合わせ、フォールバックとして DataCite を使用します。PMID と PMCID は PubMed に問い合わせます。PubMed は撤回済みの記事にも印を付けます。識別子のない文献は、タイトルで dblp と Crossref を検索します。dblp では検索 API がボット対策のチャレンジで保護されているため、SPARQL エンドポイントを使用します。どの情報源に何を、どのように問い合わせるかについては、docs/sources.md をご覧ください。
  3. 安全策を設けた項目ごとの照合。 タイトル(arXiv の旧バージョンを含む)、著者(Reiß/Reis のような表記揺れを許容)、出版年、掲載誌を比較します。十分に一致し、同程度に適合する別の文献がない場合にのみ検索結果を採用します。偽造 DOI の複製として知られているものは除外します。
  4. 各文献につき判定は 1 つです。確認内容をご覧ください。「見つからない」と判定するには、すべての必須情報源から「該当なし」の回答が必要です。
  5. ローカルにキャッシュ。 結果は SQLite ファイルに保存されるため、再実行は高速で、--offline も使用できます。
設計原則
  • 肯定的に確認できた場合のみ判定し、確認できなければ保留。 レート制限、サービス停止、未登録の文献がある場合は「判定できません」とし、「見つかりません」とはしません。
  • 判定に LLM を使用しない。 すべての判定は記録と固定ルールに基づくため、同じ記録からは同じレポートが生成されます。
  • 中立的な表現。 調査結果は「Crossref、dblp、Semantic Scholar では見つからず、すべての情報源から回答がありました」のように、確認できた事実を述べます。非難はしません。
  • ローカル優先、テレメトリなし。 上記の公開学術 API に送信されるのは、引用された文献のメタデータ(DOI、タイトル、著者)のみです。原稿が端末の外に送信されることはありません。
決して行わないこと

剽窃検出や AI 生成テキスト検出の回避、ペイウォールやボット対策で保護されたサイトのスクレイピング、記憶に基づく文献の推薦や「補完」、著者の名指しや糾弾は行いません。

ロードマップ

  • 次の予定:漢字で書かれた文献への対応。 リリース前に、評価用に分離した論文を使って精度を測定します。
  • 識別子のないグレー文献(レポート、学位論文、マニュアル)で、判定保留のまま残る文献を減らします。

各リリースの変更内容はchangelog、日々の進捗はdocs/PROGRESS.md(中国語)をご覧ください。

貢献

再現可能な .bib エントリーを添えたバグ報告は、特に誤検知に関するものが、最も価値のある貢献です。CONTRIBUTING.mdをご覧ください。セキュリティに関する問題はSECURITY.mdをご確認ください。

ライセンス

MIT。改変したコードについてはTHIRD_PARTY_NOTICES.mdをご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。