用途:给定一个或多个种子论文(DOI、OpenAlex W-id 或 arXiv id),沿 OpenAlex 引用网络双向扩展,构建局部文献的引用与共被引图谱,并对发现到的文献按共被引强度排序,用于梳理领域脉络、寻找高共被引的核心论文、雪花式追踪参考文献、生成引文图或共被引分析图。这是图谱构建与发现工具,必须有一个种子文献才能运行。
主要能力:向后扩展获取种子的 referenced_works(seed -> reference 边);向前扩展用 filter=cites:<id> 查找引用种子的文献(citer -> seed 边,--per-seed 上限,OpenAlex 每页最多 100);用 --depth 支持更深跳数;按 shared_refs + shared_citers + direct_seed_links 打分,并以全局 cited_by_count 作并列排序,使经典文献上浮;分批补水标题、年份与 DOI;导出 GraphML 与 JSON(schema alterlab-citation-graph/1.0)。GraphML 为有向图,节点属性含 title、year、doi、role(seed / reference / citation / neighbor)、cited_by_count,可在 Gephi、Cytoscape、yEd 或 networkx 中打开。
使用方式:设置 OPENALEX_API_KEY(推荐),然后运行构建脚本,例如 uv run python scripts/build_graph.py --seed 10.1038/nphys1170 --out graph/seed1,输出 graph/seed1.graphml 与 graph/seed1.json;可传多个 --seed,配合 --depth 2 --per-seed 50 --top 40;离线自检用 uv run python scripts/build_graph.py --self-test。常用参数:--seed(可重复,至少一个)、--api-key(默认取 $OPENALEX_API_KEY,以 Bearer 头发送)、--depth(默认 1)、--per-seed(默认 25,最大 100)、--top(默认 25)、--out(默认 citation_graph)、--sleep(默认 0.0)、--mailto(已废弃,无操作)。
限制:OpenAlex 数据开放(CC0),但自 2026 年 2 月起请求按每日预算计量,无 key 时按 IP 共享 $0.10/天,HTTP 429 表示预算耗尽(UTC 午夜重置)或超过 100 请求/秒,脚本会报错退出而非静默截断;建议使用免费 API key 并合理设置 --per-seed 与 --sleep。OpenAlex 引文覆盖广但不完美,很新的预印本 cited_by 可能稀疏;arXiv 种子经 DataCite DOI 解析,若预印本已并入出版版本记录,可能只保留出版商 DOI,此时应改用该 DOI。