parse-cfp
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseParse CFP
解析CFP
Turn a live Call for Papers into the machine-readable venue profile that the
rest of this repo runs on. Output is a
file conforming to , plus a human-readable requirements card.
Downstream consumers: , , ,
, .
venues/conferences/<venue>-<year>.ymlvenues/schema.ymlpreflight-checktailor-to-venuewrite-rebuttalprepare-camera-readyselect-venue将实时的Call for Papers(CFP)转换为本仓库其他模块依赖的机器可读场地配置文件。输出为符合规范的文件,以及一份人类可读的要求卡片。下游依赖模块包括:、、、、。
venues/schema.ymlvenues/conferences/<venue>-<year>.ymlpreflight-checktailor-to-venuewrite-rebuttalprepare-camera-readyselect-venueWhen to use
使用场景
- The user pastes a CFP, author-guidelines, or submission-instructions URL.
- "What are the requirements / deadlines / page limits for VENUE YEAR?"
- A profile in is missing or a year out of date.
venues/conferences/
- 用户粘贴CFP、作者指南或提交说明的URL。
- "VENUE YEAR会议的提交要求/截止日期/页数限制是什么?"
- 下的配置文件缺失或已过期一年。
venues/conferences/
Inputs
输入项
- A CFP URL. If the user only names a venue, check
for a
venues/conferences/<venue>-<year>.ymlfirst; an older year's profile usually links the venue website where the new CFP lives.cfp_url - — read it before writing the profile; it defines every field and the mandatory
venues/schema.ymlprovenance block.verified: - The matching for family-level defaults.
venues/families/<family>.yml - env var (used in the polite fetch User-Agent; the script prompts if unset).
CONTACT_EMAIL
- CFP URL。如果用户仅提及会议名称,先检查中的
venues/conferences/<venue>-<year>.yml字段;往年的配置文件通常会链接到会议官网,可从中找到最新的CFP。cfp_url - —— 编写配置文件前需阅读此文件,它定义了所有字段及必填的
venues/schema.yml来源信息块。verified: - 对应的文件,用于获取同系列会议的默认配置。
venues/families/<family>.yml - 环境变量(用于设置友好的请求User-Agent;若未设置,脚本会提示输入)。
CONTACT_EMAIL
Process
处理流程
-
Scope one venue + one year. Read. If a profile for this venue-year already exists, treat it as hints to re-verify, never as ground truth.
venues/schema.yml -
Fetch the CFP page. Run:
python3 scripts/fetch_cfp.py "<cfp-url>"The script fetches ONE page per invocation, rate-limits to 1 request/second per host, backs off exponentially on HTTP 429, caches under(gitignored) for 24h, and prints readable text with link targets as.cache/. It exits nonzero with a clear message on failure. Then fetch the handful of follow-up pages you actually need — per-track submission pages, the deadlines page, the camera-ready/author-kit page — one invocation each, never a site crawl.[url]- Exit code 3 = non-HTML content (a PDF CFP, a JSON API response); the
body is saved under — read that file directly.
.cache/ - "very little text extracted" warning = JavaScript-rendered page; ask the
user to paste the page text and mark the profile . Never fill gaps from memory.
needs-verification
- Exit code 3 = non-HTML content (a PDF CFP, a JSON API response); the
body is saved under
-
Verify the year. Confirm the page heading and dates match the requested year before extracting — stale CFPs survive at near-identical URLs. Wrong year: tell the user and locate the current page.
-
Extract every schema field following references/extraction-guide.md. The non-negotiables:
- Numbers (page limits, char limits, dates) only from fetched text; missing
fact = + an explanatory note. Never infer, never recall.
null - Page limits must capture what is EXCLUDED (references? appendix?
checklist?) with the CFP's sentence quoted verbatim in the track .
notes - Deadlines: record the stated timezone — AoE is common, not universal (SIGSPATIAL uses Pacific Time). Abstract registration is a separate, earlier deadline at most venues.
- and
llm_policy: verbatim quotes, never paraphrased.dual_submission
- Numbers (page limits, char limits, dates) only from fetched text; missing
fact =
-
Normalize the template invocation, submission system, rebuttal format, and camera-ready rail using references/templates-and-systems.md. Deriveoptions from the family table (add
\documentclassonly for double/triple-blind venues) and comment when an invocation is family-derived rather than printed in the CFP.review,anonymous -
Emit the YAML to:
venues/conferences/<venue>-<year>.yml- equals the filename stem;
idreferences an existing family file.family - Fill the mandatory block — today's date, every URL fetched (with a comment on which facts each supplied), and an honest
verified:(confidence:only if all critical facts came off live pages today).verified-live
-
Validate. Runfrom the repo root (needs PyYAML; if unavailable, check the file manually against
python3 tools/validate_venues.pyfield by field).venues/schema.yml -
Present the requirements card to the user: a short table of deadlines (with timezone), per-track limits with their exclusions, blind level, template invocation, submission URL, rebuttal format, and LLM policy. End with the verification notice: "Profile extracted from <cfp_url> on <date>. Re-verify deadlines and page limits against the live CFP before submitting — CFPs change mid-cycle and a stale limit can cause a desk reject."
-
限定单个会议+单个年份。阅读。如果该会议对应年份的配置文件已存在,仅将其作为参考进行重新验证,绝不能视为绝对事实。
venues/schema.yml -
获取CFP页面。运行:
python3 scripts/fetch_cfp.py "<cfp-url>"该脚本每次调用仅获取一个页面,对每个主机的请求速率限制为1次/秒,遇到HTTP 429错误时会进行指数退避,将结果缓存到目录(已加入git忽略)24小时,并输出带链接目标标记为.cache/的可读文本。脚本执行失败时会返回非零退出码并给出清晰提示。然后按需获取后续少量必要页面——分赛道提交页面、截止日期页面、终稿/作者工具包页面,每次调用获取一个页面,绝不进行全站爬取。[url]- 退出码3 = 非HTML内容(如PDF格式的CFP、JSON API响应);内容会保存到目录下,需直接读取该文件。
.cache/ - 出现“提取到的文本极少”警告 = 页面由JavaScript渲染;请用户粘贴页面文本,并将配置标记为。绝不能凭记忆填补信息空白。
needs-verification
- 退出码3 = 非HTML内容(如PDF格式的CFP、JSON API响应);内容会保存到
-
验证年份。在提取信息前,确认页面标题和日期与请求的年份匹配——过期的CFP可能仍存放在几乎相同的URL下。若年份不符:告知用户并定位当前有效的页面。
-
提取所有schema字段,遵循references/extraction-guide.md的规则。以下内容必须严格执行:
- 数字(页数限制、字符限制、日期)仅从获取的文本中提取;缺失的信息需标记为并添加说明。绝不推断,绝不凭记忆填写。
null - 页数限制必须明确记录哪些内容不包含在内(参考文献?附录?检查清单?),并在赛道的字段中逐字引用CFP中的对应语句。
notes - 截止日期:记录明确标注的时区——AoE是常见时区,但并非通用(SIGSPATIAL使用太平洋时间)。多数会议的摘要注册截止日期早于论文提交截止日期。
- 和
llm_policy字段:必须逐字引用原文,绝不改写。dual_submission
- 数字(页数限制、字符限制、日期)仅从获取的文本中提取;缺失的信息需标记为
-
标准化模板调用方式、提交系统、反驳格式和终稿流程,遵循references/templates-and-systems.md的规则。从同系列会议的表格中推导选项(仅对双盲/三盲会议添加
\documentclass),并在注释中说明该调用方式是来自同系列默认配置还是CFP中明确标注的内容。review,anonymous -
生成YAML文件并保存到:
venues/conferences/<venue>-<year>.yml- 等于文件名的主部分;
id字段引用已存在的同系列会议配置文件。family - 填写必填的块——当前日期、所有获取过的URL(并注释每个URL提供了哪些信息),以及如实填写的
verified:字段(仅当所有关键信息均来自今日获取的实时页面时,设置为confidence:)。verified-live
-
验证配置。从仓库根目录运行(需要PyYAML库;若未安装,需手动对照
python3 tools/validate_venues.py的字段逐一检查文件)。venues/schema.yml -
向用户展示要求卡片:包含截止日期(带时区)、分赛道页数限制及排除项、盲审级别、模板调用方式、提交URL、反驳格式和LLM政策的简短表格。结尾添加验证提示:“配置文件于<date>从<cfp_url>提取。提交前请对照实时CFP重新验证截止日期和页数限制——CFP可能在周期中途修改,过期的限制可能导致论文被直接拒稿。”
Worked mini-example
示例演示
User pastes .
After fetching, the Research-track section reads: "papers are limited to 10
pages (excluding references), with up to 2 additional pages after the references
to be used for appendices", deadlines are stated as "11:59 PM Pacific Time",
and the submission link points at .
That extracts to:
https://sigspatial2026.sigspatial.org/research-submission.htmleasychair.org/conferences/?conf=acmsigspatial2026yaml
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-liveTwo traps this example surfaces and the guide handles: the timezone is Pacific,
not the AoE default, and the page limit excludes both references AND the
appendix — encoded explicitly so can enforce it. The page
heading is confirmed to say 2026 before any of this is extracted.
preflight-check用户粘贴链接。获取页面后,研究赛道部分内容为:“论文限制为10页(不含参考文献),参考文献后最多可额外添加2页用于附录”,截止日期标注为*“太平洋时间晚上11:59”*,提交链接指向。提取后的配置如下:
https://sigspatial2026.sigspatial.org/research-submission.htmleasychair.org/conferences/?conf=acmsigspatial2026yaml
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,页数限制同时排除参考文献和附录——需明确编码这些信息,以便模块进行校验。在提取任何信息前,已确认页面标题标注的年份为2026。
preflight-checkOutput
输出
- — schema-conformant, year-versioned, with provenance.
venues/conferences/<venue>-<year>.yml - An inline requirements-card summary with the re-verify warning.
- —— 符合schema规范、带年份版本、包含来源信息的配置文件。
venues/conferences/<venue>-<year>.yml - 内嵌的要求卡片摘要,附带重新验证提示。
Guardrails
约束规则
- Never fabricate a deadline, limit, or policy. + note beats a guess.
null - Quote LLM-use and dual-submission policies verbatim; paraphrase can invert compliance meaning.
- GET-only. Never log in to, register with, or submit to any submission system on the user's behalf.
- Never fabricate citations. This skill emits venue metadata only; if a paper
reference is ever needed downstream, route it through .
verify-citations - One page per script invocation; no bulk crawling. The cache lives under
and stays out of git — do not commit fetched CFP text to the repo.
.cache/ - Always include the re-verify-against-live-CFP notice in the final answer.
- 绝不编造截止日期、限制或政策。加说明优于猜测。
null - LLM使用政策和双重提交政策必须逐字引用;改写可能改变合规性含义。
- 仅使用GET请求。绝不为用户登录、注册或提交至任何提交系统。
- 绝不编造引用内容。此工具仅输出场地元数据;若下游需要论文引用,需通过模块处理。
verify-citations - 每次脚本调用仅获取一个页面;绝不批量爬取。缓存文件存储在目录下,不会提交至git——请勿将获取的CFP文本提交至仓库。
.cache/ - 最终回复中必须包含“对照实时CFP重新验证”的提示。
Source verification (mandatory)
来源验证(必填)
This skill originates venue facts, so source verification is mandatory without exception:
- The venue is the user's choice; build its rules on demand, never from memory or a prior year.
- Search the web for the live CFP / author-instructions page and read the primary source — never state a fact from a search snippet you didn't open, and never from a deadline aggregator without confirming on the official site.
- Double-check every desk-reject-class fact (deadline, page limit + exclusions, blind level, template, submission system) against a second source; if sources disagree, surface the conflict — do not pick silently.
- Record a clickable reference link and the date for every fact in the profile's ; set
verified.source_urlstoconfidence/verified-liveonly when sourced, elsecorroborated. A fact with no link is emitted as unverified, never asserted.needs-verification
此工具生成场地信息,因此来源验证是必须的,无例外:
- 会议由用户选择;按需生成其规则,绝不能凭记忆或往年信息填写。
- 搜索网页找到实时CFP/作者指南页面并阅读原始来源——绝不能从未打开的搜索结果片段中获取信息,也绝不能从截止日期聚合网站获取信息而不通过官方网站确认。
- 双重检查所有可能导致直接拒稿的信息(截止日期、页数限制及排除项、盲审级别、模板、提交系统),需对照至少两个来源;若来源存在冲突,需告知用户冲突情况——绝不能私下选择其中一个。
- 在配置文件的中记录每个信息的可点击参考链接和日期;仅当信息有来源时,将
verified.source_urls设置为confidence/verified-live,否则设置为corroborated。无链接的信息需标记为未验证,绝不能断言为事实。needs-verification
Bundled files
附带文件
- references/extraction-guide.md — field-by-field extraction rules, cue phrases, and the trap list.
- references/templates-and-systems.md — template invocations by family, submission-system URL patterns, rebuttal taxonomy, camera-ready rails.
- — polite single-page fetcher (run it; do not reimplement fetching by hand).
scripts/fetch_cfp.py
- references/extraction-guide.md —— 逐字段提取规则、提示短语和陷阱列表。
- references/templates-and-systems.md —— 同系列会议的模板调用方式、提交系统URL模式、反驳分类、终稿流程。
- —— 友好的单页面获取脚本(请使用此脚本;请勿手动实现获取逻辑)。
scripts/fetch_cfp.py