mcpField
P
parse-cfp

parse-cfp

github.com/shaishavmaisuria生産性5793 回インストール4 日前に更新
リポジトリ

parse-cfp について

parse-cfpは、特定の会議と開催年の要件を確認したい論文著者向けのスキルです。CFPを1ページずつ取得し、出典情報付きのYAML会場プロファイルを作成・検証して、要件をまとめます。

主な機能

  1. 01CFPページを1ページずつ取得
  2. 02締切とトラック要件を抽出
  3. 03出典付きYAMLを作成
  4. 04スキーマに沿って検証
  5. 05投稿要件の概要を作成

活用シーン

  1. 01新しい開催年のプロファイル作成
  2. 02最新CFPに基づくプロファイルの再確認
  3. 03投稿前の締切とページ制限の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/shaishavmaisuria/research-paper-lifecycle-skills --skill parse-cfp

インストール後、Claude Code で/parse-cfpを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
extraction-guide.md
templates-and-systems.md
scripts/
fetch_cfp.py

詳細

CFP を解析

公開中の Call for Papers を、このリポジトリの他の機能が使用する機械可読な会場プロファイルに変換します。出力は、venues/schema.yml に準拠する venues/conferences/<venue>-<year>.yml ファイルと、人が読める要件カードです。 下流で使用するもの:preflight-check、tailor-to-venue、write-rebuttal、prepare-camera-ready、select-venue。

使用するタイミング

  • ユーザーが CFP、著者向けガイドライン、投稿手順の URL を貼り付けた場合。
  • 「VENUE YEAR の要件/締め切り/ページ数制限は?」
  • venues/conferences/ のプロファイルがない、または年度が古い場合。

入力

  • CFP の URL。ユーザーが会場名だけを指定した場合は、まず venues/conferences/<venue>-<year>.yml の cfp_url を確認します。通常、以前の年度のプロファイルには、新しい CFP が掲載されている会場のウェブサイトへのリンクがあります。
  • venues/schema.yml — プロファイルを記述する前に読みます。すべてのフィールドと必須の verified: 出典情報ブロックが定義されています。
  • 該当する venues/families/<family>.yml — ファミリーレベルのデフォルト値です。
  • CONTACT_EMAIL 環境変数(丁寧な取得用の User-Agent に使用します。設定されていない場合、スクリプトが入力を求めます)。

プロセス

  1. 会場を1つ、年を1つに絞ります。 venues/schema.yml を読みます。この会場・年のプロファイルがすでにある場合は、再確認のための手がかりとして扱い、決して正しい情報の根拠とはみなしません。

  2. CFP ページを取得します。 次を実行します。

    python3 scripts/fetch_cfp.py "<cfp-url>"
    

    このスクリプトは1回の実行につき1ページを取得し、ホストごとに1秒あたり1リクエストに制限します。HTTP 429 の場合は指数バックオフを行い、.cache/(Git で無視されます)に24時間キャッシュし、リンク先を [url] として読みやすいテキストを出力します。失敗時には明確なメッセージを表示して、ゼロ以外の終了コードを返します。続いて、必要なフォローアップページ(トラックごとの投稿ページ、締切ページ、カメラレディ/著者向け資料のページなど)だけを、それぞれ1回ずつ実行して取得します。サイト全体をクロールしてはいけません。

    • 終了コード3=HTML 以外のコンテンツ(PDF の CFP、JSON API の応答など)です。本文は .cache/ に保存されるため、そのファイルを直接読みます。
    • 「抽出されたテキストが非常に少ない」という警告=JavaScript で描画されるページです。ユーザーにページのテキストを貼り付けてもらい、プロファイルに needs-verification と記載します。不足分を記憶で補ってはいけません。
  3. 年を確認します。 抽出する前に、ページの見出しと日付が対象年に一致することを確認します。古い CFP がほとんど同じ URL に残っていることがあります。年が異なる場合はユーザーに伝え、現在のページを探します。

  4. スキーマの全フィールドを抽出します。 references/extraction-guide.md に従います。必ず守る事項:

    • 数値(ページ数の上限、文字数の上限、日付)は取得したテキストにあるものだけを使います。事実が見つからない場合は null と説明を記載します。推測も記憶からの補足もしてはいけません。
    • ページ数の上限については、除外対象(参考文献?付録?チェックリスト?)を必ず明記し、該当する CFP の文をトラックの notes に原文のまま引用します。
    • 締切には記載されたタイムゾーンを記録します。AoE が一般的ですが、すべての会場で使われるわけではありません(SIGSPATIAL は Pacific Time を使用します)。多くの会場では、アブストラクト登録は別途、より早い締切に設定されています。
    • llm_policy と dual_submission は、言い換えずに原文のまま引用します。
  5. テンプレートの呼び出し方法、投稿システム、リバッタル形式、カメラレディのルールを標準化します。 references/templates-and-systems.md に従います。ファミリー表から \documentclass のオプションを導きます(ダブルブラインド/トリプルブラインドの会場に限り review,anonymous を追加します)。呼び出し方法が CFP に記載されておらず、ファミリー情報から導いたものである場合は、その旨をコメントに記載します。

  6. YAML を venues/conferences/<venue>-<year>.yml に出力します。

    • id はファイル名の拡張子を除いた部分と一致させ、family は既存のファミリーファイルを参照させます。
    • 必須の verified: ブロックを埋めます。今日の日付、取得したすべての URL(それぞれどの情報の根拠になったかのコメント付き)、正直な confidence: を記載します。重要な情報をすべて今日取得したライブページから確認できた場合に限り、verified-live とします。
  7. 検証します。 リポジトリのルートから python3 tools/validate_venues.py を実行します(PyYAML が必要です。利用できない場合は、venues/schema.yml と照合してフィールドごとに手作業で確認します)。

  8. ユーザーに要件一覧表を提示します。 締切(タイムゾーン付き)、除外対象を含むトラックごとの上限、ブラインドのレベル、テンプレートの呼び出し方法、投稿 URL、リバッタル形式、LLM ポリシーを簡潔な表にまとめます。最後に、次の確認通知を付けます。*"プロファイルは <cfp_url> から に抽出しました。投稿前に、ライブ CFP で締切とページ数の上限を再確認してください。CFP は募集期間中に変更されることがあり、古い上限を使うとデスクリジェクトの原因になります。"

作業済みのミニ例

ユーザーが https://sigspatial2026.sigspatial.org/research-submission.html を貼り付けます。 取得後、Research トラックのセクションには、次のように記載されています。「論文は10 ページ以内(参考文献を除く)で、付録に使用するため、参考文献の後に最大2ページを 追加できます」。締め切りは 「太平洋時間の午後11時59分」 と記載され、 投稿リンクは easychair.org/conferences/?conf=acmsigspatial2026 を指しています。 これを抽出すると、次のようになります。

id: sigspatial-2026
deadlines:
  abstract: 2026-05-29
  paper: 2026-06-05
  timezone: PT          # CFP says "Pacific Time", NOT AoE — recorded verbatim
tracks:
  - name: Research
    page_limit: 10
    page_limit_excludes: [references, appendix]
    notes: >
      CFP verbatim: "papers are limited to 10 pages (excluding references),
      with up to 2 additional pages after the references ... for appendices."
review:
  blind: single         # CFP lists author names — single, not double
  submission_system: easychair
verified:
  date: 2026-06-21
  source_urls:
    - https://sigspatial2026.sigspatial.org/research-submission.html  # limits, deadlines, blind
  confidence: verified-live

この例で明らかになる、ガイドが対処する2つの注意点があります。タイムゾーンは AoE のデフォルトではなく太平洋時間であり、ページ数の上限からは参考文献と 付録の両方が除外されます。これらは preflight-check で適用できるよう明示的に 記録します。これらを抽出する前に、ページの見出しが2026年であることを確認します。

出力

  • venues/conferences/<venue>-<year>.yml — スキーマに準拠し、年ごとにバージョン管理され、 出典情報を含みます。
  • 再確認の警告を含む、要件カードのインライン要約。

ガードレール

  • 締め切り、上限、ポリシーを決して捏造しないでください。推測するより、null と注記を使います。
  • LLM の使用と二重投稿に関するポリシーは、原文どおりに引用してください。言い換えると、 遵守上の意味が逆転するおそれがあります。
  • GET のみを使用してください。ユーザーに代わって投稿システムにログイン、登録、投稿を してはいけません。
  • 引用を決して捏造しないでください。このスキルが出力するのは会場のメタデータのみです。 後続処理で論文の参考文献が必要になった場合は、verify-citations に回してください。
  • スクリプトの呼び出し1回につき1ページのみとし、一括クロールはしないでください。キャッシュは .cache/ に保存され、git の対象外です。取得した CFP のテキストをリポジトリに コミットしないでください。
  • 最終回答には必ず、最新の CFP と照合して再確認するよう促す注意書きを含めてください。

出典の検証(必須)

このスキルは会場に関する情報を新たに収集するため、例外なく出典の検証が必須です。

  • 会場はユーザーが選択します。その規則は必要に応じて構築し、記憶や過去の年の情報を使わないでください。
  • ウェブで最新の CFP/著者向けガイドラインのページを検索し、一次資料を読んでください。開いて確認していない検索スニペットや、公式サイトで確認していない締め切り集約サイトの情報を、事実として記載してはいけません。
  • デスク判定で却下される可能性のある事実(締め切り、ページ数の上限と除外項目、査読の盲検レベル、テンプレート、投稿システム)はすべて、2つ目の出典と照合してください。出典が一致しない場合は、その食い違いを明示し、黙って一方を選ばないでください。
  • プロフィールの verified.source_urls に、すべての事実についてクリック可能な参照リンクと日付を記録してください。出典で確認できた場合にのみ confidence を verified-live/corroborated に設定し、それ以外は needs-verification にしてください。リンクのない事実は、未検証として出力し、事実として断定しないでください。

同梱ファイル

  • references/extraction-guide.md — 項目ごとの抽出ルール、手がかりとなる語句、注意点の一覧。
  • references/templates-and-systems.md — 系統ごとのテンプレートの呼び出し方法、投稿システムの URL パターン、反論 の分類、最終原稿に関する注意事項。
  • scripts/fetch_cfp.py — 1ページを丁寧に取得するツール(実行して使用し、 手作業で取得処理を再実装しないでください)。

コメント