关于 research-knowledge-graph
Research Knowledge Graphs 是将参考文献库转为论文、作者、出版场所、主题和引文关系图谱的技能。它支持离线构建或通过 OpenAlex 补充数据,并导出供图分析和可视化工具使用的数据。
主要功能
- 01从 BibTeX 或 CSL-JSON 构建图谱
- 02通过 OpenAlex 补充元数据
- 03导出 JSON、GraphML、CSV 和 Obsidian 库
- 04表示作者、主题、出版场所和引文
- 05分析聚类与桥接论文
适用场景
- 01梳理文献库中的主题与引文关系
- 02找出语料内被引较多的论文
- 03识别连接研究聚类的论文
- 04为 Gephi 或 Obsidian 准备图数据
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ kalarislabs/ research-agent-skills --skill research-knowledge-graph安装后在 Claude Code 中输入/research-knowledge-graph确认已加载。
附带文件scripts/build_graph.py
详细介绍
研究知识图谱
文献综述本质上是一个图问题:哪些论文是大家共同的基础,哪些研究群体各说各话,哪些研究连接了不同群体,以及研究空白在哪里。此技能会根据参考文献库构建这张图,并交由用户偏好的图工具使用。
构建
# Offline: authors, venues and keywords from the .bib itself
python scripts/build_graph.py references.bib --out kg/
# Enriched: disambiguated authors (OpenAlex IDs, ORCID), venues, topics, and
# citation edges between papers in the library
python scripts/build_graph.py references.bib --out kg/ --openalex --mailto [email protected]
也支持将 CSL-JSON(.json,由 Zotero 或 reference-manager-interop 导出)作为输入。
| 输出 | 用途 |
|---|---|
graph.json | 用于 NetworkX:nx.node_link_graph(json.load(f), edges="links"),或任何 JS 图形库 |
graph.graphml | 用于 Gephi、yEd、Cytoscape、igraph、nx.read_graphml |
nodes.csv、edges.csv | 用于 Neo4j(neo4j-admin database import full --nodes=nodes.csv --relationships=edges.csv)或 Gephi 电子表格导入 |
vault/ | 用于 Obsidian(图谱视图),以及 graphify 等 Markdown 图工具;这类工具会将 [[wikilinks]] 读取为边 |
模式。 节点 type ∈ {paper、author、venue、topic}。边 type ∈
{authored_by、published_in、about、cites}。已知时,论文节点会包含 doi、year、
openalex、cited_by_count。
扩展到参考文献库之外(滚雪球法)
引文边只连接你已有的论文。要绘制某个领域的图谱:
- 选取 5-20 篇核心论文作为种子。
- 向后追溯:从 OpenAlex 收集每篇种子的
referenced_works。向前追溯:查询https://api.openalex.org/works?filter=cites:W123...,获取引用这些论文的作品。 - 保留至少被 2 篇种子论文引用的候选论文(共被引),将其导出为
.bib,然后重建图谱。 - 当某轮只新增少量高度连接的论文时停止。报告轮次和阈值(以确保可复现)。
分析(NetworkX)
import json, networkx as nx
g = nx.node_link_graph(json.load(open("kg/graph.json")), edges="links")
papers = [n for n, d in g.nodes(data=True) if d["type"] == "paper"]
cit = g.edge_subgraph([(u, v) for u, v, d in g.edges(data=True) if d["type"] == "cites"]).copy()
influential = sorted(cit.in_degree(), key=lambda x: -x[1])[:10] # most cited within corpus
bridges = sorted(nx.betweenness_centrality(cit.to_undirected()).items(), key=lambda x: -x[1])[:10]
communities = nx.community.louvain_communities(cit.to_undirected(), seed=0) # research clusters
解读指南:
- 高入度表示该论文是这批文献的基础(而非全球范围内的重要论文)。
- 高中介中心性表示论文连接了不同群体,通常是撰写综述综合分析部分时最值得阅读的论文。
- 社群可作为综述小节的候选主题。根据每个社群的主要主题和被引最多的论文为其命名。
- 主题相近的社群之间连接稀疏,可能意味着值得阐述(并验证)的研究空白。
- 合著关系的连通分量可显示研究团队。若没有
--openalex,请谨慎处理基于姓名的作者合并。
可视化
- Gephi:打开
graph.graphml→ ForceAtlas2 → 按入度调整大小 → 按模块度类别着色。 - Obsidian:将
kg/vault作为知识库打开,并使用图谱视图,按文件夹(论文/作者/主题)筛选。 - 文档中的小型图谱:将引文子图转换为 Mermaid(
flowchart LR,每条cites关系对应一条边)。
完整性规则
- 切勿虚构边或论文。每个节点和边都必须来自参考文献库或 OpenAlex 记录。
- 在提出看似明显的研究空白等结论前,先阅读论文进行核实。
撰写时需说明的注意事项
覆盖范围取决于 OpenAlex/Crossref 元数据;引文边的完整程度取决于
referenced_works。关键词/主题节点较为粗略。务必报告数据来源、
检索日期和筛选阈值。
相关技能
paper-corpus-rag(对同一批论文进行全文问答)、literature-review、
systematic-review-prisma、networkx、reference-manager-interop、citation-verification。
评论
支持 Markdown