research-knowledge-graph
Turn a bibliography or literature corpus into a knowledge graph of papers, authors, venues, topics and citation links, then analyze it (citation clusters, key papers, bridging work, research gaps) or export it to Neo4j, Gephi, NetworkX, Obsidian or Markdown-graph tools such as graphify. Use when mapping a research field, building a citation network, finding influential or bridging papers, or visualizing how a literature connects. Zero-dependency builder with optional OpenAlex enrichment.
- License 许可
- MIT
- 最近更新
- 2026-11-14
- Stars
- ★ 127
- Forks
- 13
01 前言 Front Matter
- name
- research-knowledge-graph
- license
- MIT
- metadata
- { "tags": "knowledge graph, citation network, bibliometrics, OpenAlex, Neo4j, Gephi, NetworkX, Obsidian, graphify, science mapping", "author": "Kalaris Labs (Sayan Chowdhury)", "version": "1.0", "category": "knowledge-and-rag", "maintainer": "Kalaris Labs" }
- description
- Turn a bibliography or literature corpus into a knowledge graph of papers, authors, venues, topics and citation links, then analyze it (citation clusters, key papers, bridging work, research gaps) or export it to Neo4j, Gephi, NetworkX, Obsidian or Markdown-graph tools such as graphify. Use when mapping a research field, building a citation network, finding influential or bridging papers, or visualizing how a literature connects. Zero-dependency builder with optional OpenAlex enrichment.
- compatibility
- Python 3.9+ standard library; network access to api.openalex.org for --openalex. networkx optional for analysis.
02 资源文件 1
- 脚本scripts/build_graph.py13.1 KB
03 SKILL.md 正文
Research Knowledge Graphs
A literature review is a graph problem in disguise: which papers everyone builds on, which clusters talk past each other, which work bridges them, and where the gaps are. This skill builds that graph from a reference library and hands it to whichever graph tool the user prefers.
Build
# 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 you@university.edu
CSL-JSON (.json, exported by Zotero or reference-manager-interop) also works as input.
| Output | Use it with |
|---|---|
graph.json |
NetworkX: nx.node_link_graph(json.load(f), edges="links"), or any JS graph lib |
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) or Gephi spreadsheet import |
vault/ |
Obsidian (graph view), and Markdown-graph tools such as graphify, which read [[wikilinks]] as edges |
Schema. Node type ∈ {paper, author, venue, topic}. Edge type ∈
{authored_by, published_in, about, cites}. Paper nodes carry doi, year,
openalex, cited_by_count when known.
Expand beyond the library (snowballing)
Citation edges only connect papers you already have. To map a field:
- Seed with 5-20 core papers.
- Backward: collect each seed's
referenced_worksfrom OpenAlex. Forward: queryhttps://api.openalex.org/works?filter=cites:W123...for citing works. - Keep candidates cited by ≥2 seeds (co-citation), export them to
.bib, rebuild. - Stop when a round adds few new highly connected papers. Report the rounds and thresholds (reproducibility).
Analyze (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
Interpretation guidelines:
- High in-degree within the corpus = foundational for this literature (not globally important).
- High betweenness = bridges clusters, often the best papers to read for synthesis sections.
- Communities = candidate subsections of a review. Name each by its top topics and most cited paper.
- Sparse links between clusters that share topics = a potential research gap worth stating (and verifying).
- Co-authorship components show research groups. Beware name-based author merging without
--openalex.
Visualize
- Gephi: open
graph.graphml→ ForceAtlas2 → size by in-degree → color by modularity class. - Obsidian: open
kg/vaultas a vault and use Graph view, filtering by folder (papers/authors/topics). - Small graphs in documents: convert the citation subgraph to Mermaid (
flowchart LR, one edge percites).
Integrity rules
- Never invent edges or papers. Every node and edge must come from the library or the OpenAlex record.
- Verify surprising structure, such as an apparent gap, by reading the papers before claiming it.
Caveats to state in any write-up
Coverage depends on OpenAlex/Crossref metadata; citation edges are only as complete as
referenced_works. Keyword/topic nodes are coarse. Always report the data source,
retrieval date and filtering thresholds.
Related skills
paper-corpus-rag (full-text QA over the same papers), literature-review,
systematic-review-prisma, networkx, reference-manager-interop, citation-verification.
04 同仓库更多 Skills
zarr-python
Guides use of Zarr-Python 3 for storing chunked, compressed N-dimensional arrays and groups, with local, in-memory, ZIP, and fsspec-backed S3/GCS/HTTP stores, plus NumPy, Dask, and Xarray integration. Covers array creation, resizing and appending, attributes, chunk and shard sizing, codecs, consolidated metadata, and v2-to-v3 migration. Use when creating or opening Zarr arrays or groups, choosing chunk sizes or compression for large datasets, reading or writing arrays on S3 or GCS, appending to time-series arrays, or migrating code from Zarr-Python 2 to 3. Use when setting up parallel I/O with Dask or Xarray. For labeled multi-dimensional datasets, use Xarray instead.
whisper
Transcribes and translates audio with OpenAI's Whisper (openai-whisper Python package and whisper CLI), covering model sizes from tiny to large plus turbo, language specification, initial prompts, word and segment timestamps, temperature fallback, batch processing, and subtitle generation. Use when transcribing speech, podcasts, meetings, or video audio to text. Use when translating non-English speech to English. Use when working with noisy or multilingual audio in any of 99 languages. Use when choosing a Whisper model size for available VRAM. Use when generating subtitles from audio. Not for speaker diarization or live captioning; use AssemblyAI or Deepgram instead.
weights-and-biases
Logs and tracks machine learning experiments with Weights & Biases (W&B, wandb): metrics, hyperparameters, checkpoints, sweeps, artifacts with lineage, model registry, custom charts and shareable reports. Includes integrations for PyTorch, HuggingFace Transformers, PyTorch Lightning and Keras/TensorFlow. Use when logging training runs and comparing them across configurations, running automated hyperparameter sweeps, versioning datasets and models as artifacts, registering model versions, or sharing results with a team workspace. Use when setting up wandb.init for offline or unstable-connection training. Not for general data versioning outside ML runs.
waypoint-bio
Use when working with Outpost Bio's open microbiome foundation models - the Waypoint checkpoints (Waypoint-6m, Waypoint-45m, Waypoint-170m), the Atlas pretraining corpus, the Compass eight-task benchmark, or the `waypoint` CLI from the `waypoint-bio` package. Covers embedding microbiome samples, fine-tuning on taxonomic abundance data, benchmarking a checkpoint on Compass, pretraining a GPT-2 model on taxonomic abundance profiles, and converting MetaPhlAn, Kraken2, QIIME 2, or MGnify abundance tables into waypoint format.
verl-rl-training
Provides guidance for training LLMs with reinforcement learning using verl (Volcano Engine RL). Use when implementing RLHF, GRPO, PPO, or other RL algorithms for LLM post-training at scale with flexible infrastructure backends.
venue-templates
Prepare journal manuscripts, conference papers, research posters, and grant documents using venue-specific formatting guidance and bundled LaTeX scaffolds. Use when selecting an official template, checking current page or anonymity rules, adapting academic writing to a venue, or inspecting a submission PDF.