关于 Traversing Citation Networks
Traversing Citation Networks 是一项研究技能,使用 Semantic Scholar API 从论文向后追踪参考文献、向前查找引用论文。它先按查询相关性筛选并去重,再将符合条件的论文加入处理队列,以限制引用扩展范围。
主要功能
- 01双向追踪引用与参考文献
- 02按上下文、标题和意图筛选
- 03评分后将论文加入队列
- 04记录引用关系并去重
- 05限制追踪深度并处理速率限制
适用场景
- 01查找相关论文的前序研究
- 02寻找引用某篇论文的后续工作
- 03围绕主题扩展论文集合
- 04控制大型文献检索的引用扩展
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ kthorn/ research-superpower --skill traversing-citation-networks安装后在 Claude Code 中输入/traversing-citation-networks确认已加载。
详细介绍
遍历引用网络
概述
使用 Semantic Scholar API 智能地沿引用关系向后(参考文献)和向前(引用该论文的论文)追踪。
**核心原则:**只追踪与用户查询相关的引用。先筛选再遍历,避免指数级膨胀。
适用场景
在以下情况下使用此技能:
- 找到了一篇高度相关的论文(评分 ≥ 7)
- 需要查找相关研究
- 用户询问“哪些论文引用了这篇论文?”
- 需要全面了解某个主题
不适用场景:
- 论文评分 < 7(相关性不足,不值得继续追踪)
- 已有 50 篇论文(先与用户确认)
- 从摘要来看,引用内容偏离主题
引用遍历策略
1. 从 Semantic Scholar 获取论文 ID
按 DOI 查询:
curl "https://api.semanticscholar.org/graph/v1/paper/DOI:10.1234/example.2023?fields=paperId,title,year"
响应:
{
"paperId": "abc123def456",
"title": "Paper Title",
"year": 2023
}
保存 paperId——查询引用和参考文献时需要用到
2. 向后遍历(参考文献)
获取论文的参考文献:
curl "https://api.semanticscholar.org/graph/v1/paper/abc123def456/references?fields=contexts,intents,title,year,abstract,externalIds&limit=100"
响应格式:
{
"data": [
{
"citedPaper": {
"paperId": "xyz789",
"title": "Referenced Paper Title",
"year": 2020,
"abstract": "...",
"externalIds": {
"DOI": "10.5678/referenced.2020",
"PubMed": "87654321"
}
},
"contexts": [
"...as described in previous work [15]...",
"...we used the method from [15] to..."
],
"intents": ["methodology", "background"]
}
]
}
筛选相关性:
对于每条参考文献,检查:
- 上下文关键词:引用上下文中是否提到了用户查询中的词语?
- 示例:如果用户询问“IC50 值”,查找提到“IC50”“活性”“效力”的上下文
- 标题匹配:标题中是否包含相关关键词?
- 意图:意图是“方法”或“结果”(相关性更高),还是“背景”(相关性较低)?
评分:
- 匹配上下文关键词:+3 分
- 匹配标题关键词:+2 分
- 意图为方法/结果:+2 分
- 较新(< 5 年):+1 分
只有评分 ≥ 5 才加入队列
3. 向前遍历(引用)
获取引用了这篇论文的论文:
curl "https://api.semanticscholar.org/graph/v1/paper/abc123def456/citations?fields=title,year,abstract,externalIds&limit=100"
响应格式:
{
"data": [
{
"citingPaper": {
"paperId": "def456ghi",
"title": "Newer Paper Citing This",
"year": 2024,
"abstract": "We extended the work of [original paper]...",
"externalIds": {
"DOI": "10.9012/citing.2024"
}
}
}
]
}
筛选相关性:
对于每篇引用该论文的论文:
- 标题匹配:标题中是否包含关键词?
- 摘要匹配:摘要中是否包含用户查询中的词语?
- 时效性:较新的论文通常会基于已有发现开展研究(优先考虑 < 2 年的论文)
- 引用次数:如果 Semantic Scholar 提供了引用次数,引用较多的论文可能更相关
评分:
- 匹配标题关键词:+3 分
- 匹配摘要关键词:+2 分
- 较新(< 2 年):+2 分
- 有一定时效性(2-5 年):+1 分
只有评分 ≥ 5 才加入队列
4. 去重
加入队列前:
检查 papers-reviewed.json:
doi = paper["externalIds"].get("DOI")
if doi in papers_reviewed:
skip # Already processed
else:
add to queue
重要:评估引用遍历中的任何论文后,无论评分如何,都要将其添加到 papers-reviewed.json。这可以避免从多个来源重复处理同一篇论文。
在 citations/citation-graph.json 中追踪引用关系:
{
"10.1234/example.2023": {
"references": ["10.5678/ref1.2020", "10.5678/ref2.2021"],
"cited_by": ["10.9012/cite1.2024", "10.9012/cite2.2024"]
}
}
重要:引用追踪只能使用 citation-graph.json。不要创建 forward_citation_pmids.txt 或 citation_analysis.md 等自定义文件。所有发现都记录在 SUMMARY.md 中。
5. 处理队列
将相关引用添加到处理队列:
{
"doi": "10.5678/referenced.2020",
"title": "Referenced Paper",
"relevance_score": 7,
"source": "backward_from:10.1234/example.2023",
"context": "Method citation - describes IC50 measurement protocol"
}
然后:
- 使用
evaluating-paper-relevance技能进行评估 - 如果相关,则提取数据,并可继续遍历该论文的引用
智能遍历限制
为避免数量激增:
- 只遍历初步评估评分 ≥ 7 的论文
- 相关性筛选中只追踪评分 ≥ 5 的引用
- 遍历深度限制为 2 级(原论文 → 参考文献 → 参考文献的参考文献)
- 每处理 50 篇论文后与用户确认
广度优先策略:
- 获取当前论文的所有参考文献和引用
- 筛选并评分
- 将高分论文加入队列
- 处理队列中的下一篇论文
- 重复上述步骤,直到队列为空或达到限制
进度报告
遍历时报告进度:
🔗 Analyzing citations for: "Original Paper Title"
→ Found 45 references, 12 look relevant
→ Found 23 citing papers, 8 look relevant
→ Adding 20 papers to queue
📄 [51/127] Following reference: "Method for measuring IC50"
Source: Referenced by original paper in Methods section
Abstract score: 7 → Fetching full text...
API 速率限制
Semantic Scholar 限制:
- 免费版:每 5 分钟 100 次请求
- 使用 API 密钥:每 5 分钟 1000 次请求
提高效率:
- 在一次调用中请求多个字段(
?fields=title,abstract,externalIds,year) - 使用
limit=100,每次请求获取更多结果 - 缓存响应,不要重复获取同一篇论文
如果遇到速率限制:
- 等待 5 分钟
- 向用户报告:“⏸️ Semantic Scholar API 触发速率限制。正在等待 5 分钟……”
- 考虑获取 API 密钥以提高限制
与其他技能集成
遍历引文后:
- 队列中现在有 N 篇待评估的新论文
- 对每篇论文使用
evaluating-paper-relevance技能 - 如果相关,将其提取到 SUMMARY.md
- 如果高度相关(≥9),也遍历其引文
- 更新 citation-graph.json 以跟踪关系
快速参考
| 任务 | API 端点 |
|---|---|
| 按 DOI 获取论文 | GET /graph/v1/paper/DOI:{doi}?fields=paperId,title |
| 获取参考文献 | GET /graph/v1/paper/{paperId}/references?fields=contexts,title,abstract,externalIds |
| 获取引文 | GET /graph/v1/paper/{paperId}/citations?fields=title,abstract,externalIds |
| 检查是否已处理 | 在 papers-reviewed.json 中查找 DOI |
| 筛选相关性 | 根据上下文/标题/意图/时效性评分 |
相关性筛选检查清单
将引文添加到队列前:
- 检查是否已在 papers-reviewed.json 中(如果是则跳过)
- 根据上下文/标题关键词评分(需 ≥ 5)
- 确认外部 ID(DOI 或 PMID)存在
- 添加来源跟踪信息("backward_from:DOI" 或 "forward_from:DOI")
- 添加到队列并附上元数据
常见错误
**未跟踪所有已评估的论文:**只将相关论文添加到 papers-reviewed.json → 评估后添加每篇论文,以避免重复评估 **创建自定义分析文件:**创建 forward_citation_pmids.txt、CITATION_ANALYSIS.md 等 → 仅使用 citation-graph.json 和 SUMMARY.md **跟进所有引文:**导致指数级膨胀 → 添加到队列前先筛选 **忽略上下文:**引文可能只是间接相关 → 阅读上下文字符串 **未去重:**重复处理相同论文 → 评估前后始终检查 papers-reviewed.json **追踪过深:**跟进 5 层以上 → 限制为 2 层,并与用户确认 **遗漏前向引文:**只检查参考文献 → 同时使用后向和前向追踪 **未注意速率限制:**API 会阻止请求 → 添加延迟并处理 429 错误
工作流示例
1. User asks: "Find selectivity data for BTK inhibitors"
2. Search finds Paper A (score: 9, has great IC50 data)
3. Traverse citations for Paper A:
- References: 45 total, 12 relevant (mention "selectivity", "IC50")
- Citations: 23 total, 8 relevant (newer papers on BTK)
4. Add 20 papers to queue
5. Evaluate first queued paper (score: 8)
6. Extract data, traverse its citations (add 5 more)
7. Continue until queue empty or user says stop
后续步骤
遍历引文后:
- 使用
evaluating-paper-relevance处理队列中的论文 - 使用新发现更新 SUMMARY.md
- 检查是否已达到检查点(50 篇论文或 5 分钟)
- 如果达到检查点:询问用户是继续还是停止