mcpField
P
parse-cfp

parse-cfp

github.com/shaishavmaisuria生产力5793 次安装4 天前更新
代码仓库

关于 parse-cfp

parse-cfp 面向需要核实特定会议及年份要求的论文作者。它逐页获取 CFP 内容,生成带来源记录且通过结构校验的 YAML 会议信息,并整理要求摘要。

主要功能

  1. 01逐页获取 CFP 内容
  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

将实时征稿启事转换为机器可读的会议信息配置文件,供本仓库其余部分使用。输出文件为符合 venues/schema.yml 的 venues/conferences/<venue>-<year>.yml,以及一张便于阅读的要求卡片。 下游使用者:preflight-check、tailor-to-venue、write-rebuttal、prepare-camera-ready、select-venue。

适用场景

  • 用户粘贴了征稿启事、作者指南或投稿说明的网址。
  • “VENUE YEAR 有哪些要求/截止日期/页数限制?”
  • venues/conferences/ 中缺少某个配置文件,或其中的年份已过期。

输入

  • 征稿启事 URL。如果用户只提到会议信息,请先检查 venues/conferences/<venue>-<year>.yml 中的 cfp_url;较早年份的配置文件通常会链接到发布新征稿启事的会议网站。
  • venues/schema.yml——编写配置文件前先阅读;它定义了所有字段以及必需的 verified: 来源信息块。
  • 对应的 venues/families/<family>.yml,用于获取系列级默认值。
  • CONTACT_EMAIL 环境变量(用于礼貌抓取时设置 User-Agent;若未设置,脚本会提示输入)。

流程

  1. 限定一个会议和一个年份。 阅读 venues/schema.yml。如果该会议年份的档案已存在,将其视为需要重新核验的提示,绝不能视为事实依据。

  2. 获取征稿页面。 运行:

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

    此脚本每次调用只获取一个页面;对每个主机将请求频率限制为每秒 1 次;遇到 HTTP 429 时采用指数退避;将内容缓存到 .cache/(已加入 gitignore),缓存有效期为 24 小时;并输出易读文本,链接目标以 [url] 的形式显示。失败时会以非零状态码退出,并显示明确的错误消息。之后只获取你确实需要的少量后续页面——各分会场的投稿页面、截止日期页面、终稿/作者工具包页面——每个页面各调用一次,绝不抓取整个网站。

    • 退出码 3 = 非 HTML 内容(PDF 征稿启事、JSON API 响应);正文会保存到 .cache/ 下,请直接读取该文件。
    • 出现“提取到的文本极少”警告 = 页面由 JavaScript 渲染;请让用户粘贴页面文本,并将档案标记为 needs-verification。绝不要凭记忆填补缺失内容。
  3. 核实年份。 提取信息前,确认页面标题和日期与指定年份一致;过时的征稿启事常会保留在几乎相同的 URL 上。年份不符:告知用户并查找当前页面。

  4. 按照 references/extraction-guide.md 提取每个架构字段。 以下要求不可妥协:

    • 数字(页数限制、字符数限制、日期)只能取自已获取的文本;缺失的信息 = null + 说明性备注。绝不推断,绝不凭记忆补充。
    • 页数限制必须注明哪些内容不计入(参考文献?附录?清单?),并在分会场的 notes 中逐字引用征稿启事的相关句子。
    • 截止日期:记录注明的时区——AoE 很常见,但并非通用(SIGSPATIAL 使用 Pacific Time)。在大多数会议中,摘要注册的截止日期是单独设定的,且更早。
    • llm_policy 和 dual_submission:必须逐字引用,绝不能改述。
  5. 根据 references/templates-and-systems.md 规范化模板调用、投稿系统、rebuttal 格式和终稿要求。 根据系列会议表推导 \documentclass 选项(仅双盲/三盲会议添加 review,anonymous),并在调用方式是根据系列会议推导、而非征稿启事中明确列出时添加注释。

  6. 将 YAML 写入 venues/conferences/<venue>-<year>.yml:

    • id 与文件名(不含扩展名)相同;family 引用现有的系列会议文件。
    • 填写必填的 verified: 块——使用今天的日期、列出所有已获取的 URL(并注释各 URL 提供了哪些信息),以及如实填写 confidence:(仅当所有关键信息均来自今天获取的实时页面时,才能标记为 verified-live)。
  7. 验证。 在仓库根目录运行 python3 tools/validate_venues.py(需要 PyYAML;如果无法使用,请根据 venues/schema.yml 逐字段手动检查文件)。

  8. 向用户展示要求摘要表:截止日期(含时区)、各分会场的页数限制及不计入的内容、盲审级别、模板调用、投稿 URL、rebuttal 格式和 LLM 政策。最后附上核验声明:"档案提取自 <cfp_url>,日期为 。投稿前请对照实时征稿启事重新核实截止日期和页数限制——征稿启事可能在周期中途变更,过时的页数限制可能导致论文被直接拒稿。"

操作示例

用户粘贴 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

这个示例揭示了两个容易踩的坑,指南也会处理这两点:时区是太平洋时间, 而非默认的 AoE;页数限制不包括参考文献和附录——明确记录这一点,以便 preflight-check 强制检查。在提取任何信息之前,先确认页面标题中的年份为 2026。

输出

  • venues/conferences/<venue>-<year>.yml — 符合架构、按年份版本化, 并附有来源信息。
  • 行内要求卡摘要,并附上重新核验警告。

防护措施

  • 绝不编造截止时间、页数限制或政策。宁可使用 null 并备注,也不要猜测。
  • 逐字引用大模型使用和双重投稿政策;改写可能会颠倒合规含义。
  • 仅允许 GET。绝不代表用户登录、注册或向任何投稿系统提交内容。
  • 绝不编造引用。本技能仅生成会议信息;如果下游需要论文参考文献,应交由 verify-citations 处理。
  • 每次脚本调用只处理一个页面;不得批量抓取。缓存位于 .cache/,且不纳入 git——不要将抓取的 CFP 文本提交到仓库。
  • 最终答复中始终包含根据当前 CFP 重新核验的提示。

来源核验(强制)

本技能会生成会议信息,因此来源核验无一例外地必须执行:

  • 会议信息由用户选择;按需构建其规则,绝不依赖记忆或往年信息。
  • 搜索网络,找到当前的 CFP/作者须知页面并阅读一手来源——绝不陈述未打开查看的搜索摘要中的事实,也绝不在未通过官方网站确认前引用截止日期汇总网站的信息。
  • 针对每项可能导致编辑部直接拒稿的事实(截止时间、页数限制及排除项、匿名级别、模板、投稿系统)与第二个来源进行核对;如果来源不一致,应明确指出冲突,不要自行选择其中一个。
  • 在资料配置的 verified.source_urls 中,为每项事实记录可点击的参考链接和日期;只有在有来源支持时,才能将 confidence 设为 verified-live/corroborated,否则设为 needs-verification。没有链接的事实应标记为未经核验,绝不可作为确定信息陈述。

随附文件

  • references/extraction-guide.md — 逐字段提取规则、提示短语和陷阱清单。
  • references/templates-and-systems.md — 按类别整理的模板调用方式、投稿系统 URL 模式、答辩分类法和终稿规范。
  • scripts/fetch_cfp.py — 礼貌抓取单页的工具(运行此脚本;不要手动重新实现抓取功能)。

评论

支持 Markdown