paper-orchestra について
paper-orchestraは、研究アイデア、実験ログ、学会要件をもとにAI研究論文を作成するマルチエージェント型スキルです。構成案、作図、文献レビュー、執筆、推敲、検証、LaTeXコンパイルを調整し、作業記録も残します。
主な機能
- 01研究入力のひな形作成と検証
- 02構成案作成と執筆工程の調整
- 03作図と文献レビューの並行実行
- 04引用と根拠のチェック
- 05最終論文の推敲とコンパイル
活用シーン
- 01研究メモと実験ログから論文を作成
- 02学会ガイドラインに沿った投稿原稿の準備
- 03図表と検証済み参考文献の作成
- 04草稿の主張を確認して最終PDFを生成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ar9av/ paperorchestra --skill paper-orchestraインストール後、Claude Code で/paper-orchestraを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/anti-leakage-prompt.mdhost-integration.mdio-contract.mdoutline-reconciliation.mdpaper-summary.mdpipeline.mdscripts/anti_leakage_check.pybuild_pdf.pycheck_idea_density.pycheck_tex_packages.pyclaim_evidence_gate.pydiff_outlines.pyinit_workspace.pytest_claim_evidence_gate.pyvalidate_consistency.pyvalidate_inputs.py詳細
paper-orchestra(Orchestrator)
PaperOrchestra パイプラインの最上位ドライバーです。このドキュメントを読み、以下の手順に従ってください。詳細なプロンプトとルールは各サブスキルの
SKILL.md および references/ ディレクトリにあります。ホストエージェントであるあなたは、作業を進めながらそれらを読み込みます。
論文の出典:Song et al., PaperOrchestra: A Multi-Agent Framework for Automated AI Research Paper Writing, arXiv:2604.05018, 2026. https://arxiv.org/pdf/2604.05018
このスキルで生成されるもの
workspace/final/ に出力される、完全な投稿パッケージ P = (paper.tex, paper.pdf) と、workspace/ 以下の完全な監査証跡(アウトライン、図、参考文献、草稿、リファインメントの作業記録、プロベナンスのスナップショット)です。
入力(論文に記載されているタプル (I, E, T, G, F))
ワークスペースには、以下のファイルが含まれている必要があります。
| ファイル | 記号 | 必須 | 説明 |
|---|---|---|---|
workspace/inputs/idea.md | I | はい | アイデアの概要(Sparse または Dense のバリアント。references/io-contract.md を参照) |
workspace/inputs/experimental_log.md | E | はい | 実験ログ:設定、生の数値データ、定性的な観察結果 |
workspace/inputs/template.tex | T | はい | 投稿先学会の LaTeX テンプレート(\section{...} コマンドを含む) |
workspace/inputs/conference_guidelines.md | G | はい | 書式ルール、ページ制限、必須セクション |
workspace/inputs/figures/ | F | いいえ | 任意の既存の図。空の場合、プロッティングエージェントがすべて生成します。 |
scripts/init_workspace.py がこの構成を作成します。パイプラインの実行前に、scripts/validate_inputs.py が入力を検証します。
パイプライン(全体図は references/pipeline.md を参照)
Step 1: Outline ──▶ outline.json (1 LLM call)
Step 2: Plotting ─┐
├──▶ figures/*.png + captions.json (~20-30 calls)
Step 3: Lit Review ─┘ (~20-30 calls)
intro_relwork.tex + refs.bib
Step 4: Section Writing ──▶ drafts/paper.tex (1 LLM call)
Step 5: Content Refine ──▶ final/paper.tex + final/paper.pdf (~5-7 calls, ~3 iters)
ホストがサブエージェントの並列実行に対応している場合、ステップ 2 とステップ 3 は独立しているため、必ず並列で実行してください。対応していない場合は、Semantic Scholar のレート制限により所要時間が長いステップ 3 を先に実行し、その後にステップ 2 を実行してください。
実行前の重要な指示(最初に一度読み、常に適用)
論文の内容(アウトライン、序論/関連研究、各セクションの執筆、リファインメント)を記述する LLM 呼び出しを行う前に、references/anti-leakage-prompt.md にある Anti-Leakage Prompt を、システムプロンプトの先頭に必ず追加してください。これは論文の付録 D.4 にある内容をそのまま引用したもので、事前学習データの漏洩を防ぎます。論文では公平な比較のため、すべてのベースラインに一律に適用しています。このスキルでも、忠実性を保つため、また生成される論文の内容をユーザーの入力に基づいたものにするために適用します。
ステップごとの実行手順
0. 事前チェック
パイプラインを実行する前に、次の品質ゲートを順番に実施します。
# 1. Scaffold the workspace
python skills/paper-orchestra/scripts/init_workspace.py --out workspace/
# user drops their inputs into workspace/inputs/
# 2. Validate required files are present and well-formed
python skills/paper-orchestra/scripts/validate_inputs.py --workspace workspace/
# 3. Check input density — idea and experimental log must meet minimum thresholds
python skills/paper-orchestra/scripts/check_idea_density.py \
--idea workspace/inputs/idea.md \
--log workspace/inputs/experimental_log.md
# 4. Cross-validate consistency between idea and experimental log
python skills/paper-orchestra/scripts/validate_consistency.py \
--idea workspace/inputs/idea.md \
--log workspace/inputs/experimental_log.md
validate_inputs.py または check_idea_density.py が失敗した場合(終了コードが 1 または 2)、停止して不足しているもの、またはしきい値を下回っているものをユーザーに伝えます。修正されるまで先に進まないでください。
validate_consistency.py は警告のみを出力します(終了コード 1 = WARN、処理は続行可能)。警告をユーザーに報告したうえで続行します。
入力の不足を理由に停止する前に、集約によって補えるかどうかを確認します。
| 入力の状態 | アクション |
|---|---|
idea.md と experimental_log.md がどちらも存在し、空ではない | ステップ 1 に進みます。 |
| どちらかが存在しない、または空で、ユーザーがディレクトリに言及している | agent-research-aggregator を読み込み、指定されたディレクトリを --search-roots として実行してから、再検証します。 |
| どちらかが存在しない、または空で、ディレクトリへの言及もない | ユーザーに「ワークスペースに idea.md / experimental_log.md がありません。集約元となる研究メモやエージェントの履歴が入ったフォルダーはありますか?ある場合はパスを教えてください。手動で workspace/inputs/ にファイルを配置していただいても構いません。」と尋ねます。 |
集約後も検証に失敗する場合(例:template.tex または conference_guidelines.md が不足している場合)は停止し、不足しているファイルをすべてユーザーに正確に伝えます。
また、TeX のインストール状況も確認します(ワークスペースごとに 1 回実行し、結果をキャッシュします)。
python skills/paper-orchestra/scripts/check_tex_packages.py \
--out workspace/tex_profile.json
Section Writing Agent は tex_profile.json を読み取り、使用する LaTeX パターン(例:Figure~\ref{} と \cref{} のどちらを使うか、\usepackage{microtype} を含めるかどうかなど)を決定します。これにより、以前は手作業で繰り返し修正する必要があったコンパイル時のパッケージエラーを防げます。
1. アウトライン(ステップ 1 — LLM 呼び出し 1 回)
skills/outline-agent/SKILL.md を読み込み、その指示に従います。出力:workspace/outline.json。
python skills/outline-agent/scripts/validate_outline.py workspace/outline.json で検証します。
検証に失敗した場合はパイプラインを停止してください。後続のすべてのエージェントがスキーマに依存します。
2 ∥ 3. 作図と文献レビュー(並列実行)
outline.json を解析します。次の項目を抽出します。
outline.plotting_plan→ ステップ 2 を実行しますoutline.intro_related_work_plan→ ステップ 3 を実行します
ホストがサブエージェントの並列実行をサポートしている場合(複数の同時呼び出しに対応した Claude Code の Agent ツール、Cursor の並列エージェント、Antigravity のワーカープールなど)は、2 つのサブタスクを同時に実行します。
- サブタスク A:
skills/plotting-agent/SKILL.mdを読み込み、作図計画を実行します。各エントリについてworkspace/figures/<figure_id>.pngを作成し、さらにworkspace/figures/captions.jsonを作成します。 - サブタスク B:
skills/literature-review-agent/SKILL.mdを読み込み、調査戦略を実行します。workspace/drafts/intro_relwork.texとworkspace/refs.bibを作成します。
ホストがサブエージェントの並列実行をサポートしていない場合は、先にサブタスク B を実行します(Semantic Scholar の QPS 制限により、経過時間が長くなるため)。その後、サブタスク A を実行します。成果物は独立しているため、順序によって正確性が変わることはありません。
3.5. アウトラインの調整(ステップ 3 の完了後、ステップ 4 の前)
ステップ 3(文献レビュー)で citation_pool.json と cross_verification_report.json が生成されたら、調整ステップを実行します。
references/outline-reconciliation.md を読み込み、そのプロンプトに従います。
出力:workspace/outline_reconciled.json。
検証し、差分を確認します。
python skills/outline-agent/scripts/validate_outline.py workspace/outline_reconciled.json
python skills/paper-orchestra/scripts/diff_outlines.py \
--original workspace/outline.json \
--reconciled workspace/outline_reconciled.json \
--summary workspace/reconciliation_summary.md
検証に失敗した場合は、ステップ 4 では outline.json に戻り、その旨をユーザーに伝えます。変更がない場合でも、文献の実態とアウトラインが一致していることを確認するため、reconciliation_summary.md をユーザーに提示します。
スキップ条件: 引用候補プールが空の場合、ステップ 3 が失敗した場合、またはステップ 2 の実行中でホストが別の呼び出しを同時に実行できない場合です。スキップ条件の詳細は references/outline-reconciliation.md を参照してください。
4. セクション執筆(ステップ 4 — マルチモーダル LLM の呼び出しは 1 回のみ)
skills/section-writing-agent/SKILL.md を読み、指示に従ってください。論文内では1 回のみの呼び出しです(付録 B:「Section Writing Agent (1 call)」)。セクションごとに分割しないでください。エージェントには以下を渡します。
outline_reconciled.json(存在する場合はこれを使い、なければoutline.jsonを使います)idea.md、experimental_log.mdintro_relwork.tex(ステップ 3 で入力済み — 一字一句そのまま保持してください)refs.bib(引用マップ)conference_guidelines.mdresearch_brief.md(存在する場合 — 蓄積されたパイプラインのコンテキストを把握するため、§1〜§3 を読んでください)workspace/figures/内の実際の図ファイル(マルチモーダル入力)
出力:workspace/drafts/paper.tex(LaTeX の完全な文書)。
次に、決定論的なゲートを実行します。
python skills/section-writing-agent/scripts/orphan_cite_gate.py workspace/drafts/paper.tex workspace/refs.bib
python skills/section-writing-agent/scripts/latex_sanity.py workspace/drafts/paper.tex
python skills/paper-orchestra/scripts/anti_leakage_check.py workspace/drafts/paper.tex
python skills/paper-orchestra/scripts/claim_evidence_gate.py \
--paper workspace/drafts/paper.tex \
--log workspace/inputs/experimental_log.md \
--out workspace/claim_evidence_report.json
claim_evidence_gate.py は警告ゲートです(終了コード 1 は警告を示し、処理は停止しません)。
根拠のない主張の数をユーザーに報告してください。コンテンツ改善エージェントがステップ 5 で対処します。
いずれかのゲートが失敗した場合、ホストエージェントは、ゲートのエラーレポートを使って執筆ステップを再実行するなどして問題を修正してから、次に進む必要があります。
5. コンテンツ改善(ステップ 5 — 約 3 回のイテレーション、約 5〜7 回の呼び出し)
skills/content-refinement-agent/SKILL.md を読み、指示に従ってください。このスキルは halt-rules.md の厳格な停止ルールに従ってループを実行します。workspace/refinement/worklog.json を維持し、各イテレーションのスナップショットを workspace/refinement/iter<N>/ に保存してください。
停止条件(いずれか 1 つに該当したらループを停止し、現在の最良のスナップショットを採用します)。
- イテレーション数が上限に達する(デフォルトは 3。
halt-rules.mdを参照してください)。 - シミュレーションレビュアーによる全体スコアが前回のイテレーションより低下する → 前回のスナップショットに戻して停止します。
- 全体スコアが同点で、少なくとも 1 つのサブ軸が低下し、それを補う向上がない(サブ軸の変化の合計がマイナス) → 元に戻して停止します。
- レビュアーが新たな対応可能な弱点を指摘しない。
採用したスナップショットを workspace/final/paper.tex にコピーします。
6. コンパイルと最終処理
cd workspace/final && latexmk -pdf paper.tex
次に、入力ファイルのハッシュ、アウトラインのハッシュ、refs のハッシュ、図のハッシュ、最終 tex/pdf のハッシュを記録した workspace/provenance.json を作成します(一括処理する場合は、オーケストレーターのスクリプトディレクトリにある scripts/snapshot.py を使用してください。それ以外の場合、ホストエージェントがインラインでハッシュを計算します)。
ユーザーには、workspace/final/paper.pdf のパス、執筆したセクションの簡潔な概要、引用数、完了した改善イテレーション数、パイプラインの途中で失敗したゲートを報告してください。
ワークスペースの構成
references/io-contract.md を参照してください。概要:
workspace/
├── inputs/ # user-provided
│ ├── idea.md
│ ├── experimental_log.md
│ ├── template.tex
│ ├── conference_guidelines.md
│ └── figures/ # optional pre-existing figures
├── outline.json # Step 1 output
├── figures/ # Step 2 output
│ ├── <figure_id>.png
│ └── captions.json
├── refs.bib # Step 3 output
├── drafts/ # Step 3 + Step 4 output
│ ├── intro_relwork.tex
│ └── paper.tex
├── refinement/ # Step 5 working dir
│ ├── worklog.json
│ ├── iter1/
│ ├── iter2/
│ └── iter3/
├── final/ # accepted snapshot + compiled PDF
│ ├── paper.tex
│ └── paper.pdf
└── provenance.json # input/output hashes for reproducibility
コスト予算(論文の付録 B より)
合計:約 60〜70 回の LLM 呼び出し/論文、論文の設定では所要時間約 40 分。 予算の内訳:
| ステップ | 呼び出し数 |
|---|---|
| アウトライン | 1 |
| プロット作成 | 約 20〜30 |
| 文献レビュー | 約 20〜30 |
| セクション執筆 | 1 |
| コンテンツ改善 | 約 5〜7 |
ホストとの統合
ホストごとの呼び出し方法の詳細については、references/host-integration.md を参照してください(Claude Code、Cursor、Antigravity、Cline、Aider、OpenCode)。
リソース
references/pipeline.md— 手順ごとの全フロー、並列化のルール、停止ルールreferences/io-contract.md— ワークスペースの構成、入力ファイルのスキーマreferences/anti-leakage-prompt.md— App. D.4 の原文。すべての執筆呼び出しの前に追加してくださいreferences/paper-summary.md— arXiv:2604.05018 の1ページ要約references/host-integration.md— ホストごとの呼び出しガイドreferences/outline-reconciliation.md— 新規 Step 3.5 のアウトライン調整プロトコル(AutoSci に着想)scripts/init_workspace.py— ワークスペースのディレクトリツリーを作成scripts/validate_inputs.py— 実行前に (I, E, T, G) を検証scripts/anti_leakage_check.py— 草稿内に漏洩した著者名/メールアドレス/所属がないか grep で確認scripts/claim_evidence_gate.py— 新規 警告ゲート:草稿内の数値的な主張が experimental_log.md に基づいているか検証scripts/diff_outlines.py— 新規 元のアウトラインと調整後のアウトラインを比較し、reconciliation_summary.md を出力skills/shared/research_brief_template.md— 新規 workspace/research_brief.md のスキーマ(蓄積されたエージェント間のコンテキスト)