关于 scientific-literature-search
这项研究技能帮助研究者规划和执行科学文献检索,适用于定向查找论文或开展较广泛的综述。它以三层流程结合数据库专用查询、AI 辅助网络搜索和论文内容提取。
主要功能
- 01三层文献检索策略
- 02检索 PubMed、arXiv 和 Google Scholar
- 03基于 PICO 规划临床检索
- 04布尔运算符和字段筛选
- 05提取全文及补充材料
适用场景
- 01为系统综述检索临床证据
- 02查找计算方法相关预印本
- 03跨来源梳理研究趋势
- 04提取论文方法或补充数据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jaechang-hits/ sciagent-skills --skill scientific-literature-search安装后在 Claude Code 中输入/scientific-literature-search确认已加载。
详细介绍
科学文献检索
概述
科学文献检索是循证研究的基础。执行良好的检索能够在保持精确率(避免无关结果)的同时,最大限度地提高召回率(找到所有相关论文)。本指南提供了一套系统化方法,将数据库专属查询策略、AI 辅助综合分析和直接内容提取相结合,并以三层框架组织,适用于从定向查找扩展到全面的领域综述。
核心概念
PICO 框架
针对临床和生物医学问题,可使用 PICO 框架构建查询:
- P(人群):研究对象是谁?(例如,"Diabetes Mellitus"[MeSH])
- I(干预):采用了什么治疗或暴露?(例如,"Metformin"[MeSH])
- C(对照):替代方案是什么?(例如,安慰剂、标准治疗)
- O(结局):测量什么结果?(例如,"Cardiovascular Diseases"[MeSH])
可以将 PICO 查询与出版物类型筛选条件结合起来,以查找特定证据级别的文献:
"Diabetes Mellitus"[MeSH] AND "Metformin"[MeSH] AND "Cardiovascular Diseases"[MeSH] AND ("clinical trial"[Publication Type] OR "meta-analysis"[Publication Type])
三层检索策略
采用逐层扩展检索范围的方法,效果最佳:
第 1 层 —— 数据库专属检索(最可靠)
查询成熟的学术数据库(PubMed、arXiv、Google Scholar),查找经过同行评审且已编入索引的内容。这是最可靠的一层,应始终作为检索起点。
- PubMed(通过 Biopython
Bio.Entrez):生物医学和生命科学文献的主要数据库。支持 MeSH 受控词表和高级字段标签。 - arXiv(通过
arxiv包):物理学、数学、计算机科学和定量生物学领域的预印本服务。其结果通常比同行评审期刊更早出现。 - Google Scholar(通过
scholarly包):覆盖所有学术领域,范围最广。注意:自动化查询会受到严格的频率限制。
适用于:查找特定论文、系统综述、临床证据和预印本。
第 2 层 —— AI 辅助网络检索(全面)
使用 Claude API 的 web_search_20250305 服务端工具来综合更广泛的背景信息、识别研究趋势,并发现尚未编入数据库索引的最新进展。也可使用通用网络检索(例如通过 duckduckgo-search 包)查找方案、教程和软件文档。
适用于:了解研究领域概况、解答复杂的多方面问题、查找最新进展、识别关键研究人员。
不适用于:查找特定论文(使用第 1 层)、查询引用次数(使用 Google Scholar)、要求可复现性的系统综述,以及必须记录准确查询词的检索。
第 3 层 —— 直接内容提取(深入分析)
使用 trafilatura(HTML 文章提取)、pypdf(PDF 文本提取)和 Crossref API(DOI → 补充文件 URL),从已确定的论文中提取并分析全文、PDF 和补充材料。
适用于:详细提取研究方法、检索数据、识别研究方案、访问补充数据。
PubMed 字段标签
PubMed 支持按字段检索,以提高精确率:
| 标签 | 描述 | 示例 |
|---|---|---|
[MeSH] | 医学主题词(受控词表) | "Neoplasms"[MeSH] |
[Title] | 仅检索标题字段 | "CRISPR"[Title] |
[Title/Abstract] | 检索标题或摘要 | "gene therapy"[Title/Abstract] |
[Author] | 作者姓名 | "Zhang F"[Author] |
[Journal] | 期刊名称 | "Nature"[Journal] |
[Publication Type] | 文章类型筛选 | "Review"[Publication Type] |
[Date - Publication] | 出版日期范围 | "2020/01/01"[Date - Publication]:"2024/12/31"[Date - Publication] |
[MeSH Major Topic] | 作为文章主要主题的 MeSH 词 | "CRISPR-Cas Systems"[MeSH Major Topic] |
布尔运算符
布尔运算符用于控制搜索词的组合方式:
# AND: All terms must be present -- narrows results
results = query_pubmed("CRISPR AND cancer AND therapy")
# OR: Any term can be present -- broadens results (use for synonyms)
results = query_pubmed("(tumor OR tumour OR neoplasm) AND immunotherapy")
# NOT: Exclude terms -- use sparingly to avoid losing relevant papers
results = query_pubmed("cancer immunotherapy NOT review")
使用括号将 OR 词组分组,再与 AND 组合。
arXiv 学科分类
arXiv 按学科类别整理预印本。与生物学相关的类别包括:
| Category | Description |
|---|---|
q-bio.BM | 生物分子 |
q-bio.CB | 细胞行为 |
q-bio.GN | 基因组学 |
q-bio.MN | 分子网络 |
q-bio.NC | 神经元与认知 |
q-bio.QM | 定量方法 |
cs.AI | 人工智能 |
cs.LG | 机器学习 |
决策框架
使用此决策树确定从哪个搜索层级和数据库开始:
What type of question are you answering?
├── Clinical / biomedical question
│ ├── Specific drug or treatment → Tier 1: PubMed with PICO query
│ ├── Disease mechanism → Tier 1: PubMed with MeSH terms
│ └── Clinical trial evidence → Tier 1: PubMed filtered by Publication Type
├── Computational / quantitative methods
│ ├── ML model or algorithm → Tier 1: arXiv (cs.LG, cs.AI)
│ ├── Computational biology method → Tier 1: arXiv (q-bio.*) + PubMed
│ └── Software tool or pipeline → Tier 2: AI-assisted web search
├── Broad research landscape
│ ├── Current state of a field → Tier 2: AI-assisted web search
│ ├── Recent developments (last 6 months) → Tier 2: AI-assisted web search
│ └── Cross-disciplinary question → Tier 1: Google Scholar + Tier 2
├── Specific paper or data
│ ├── Known paper details → Tier 1: any database by title/author/DOI
│ ├── Methodology or protocol → Tier 3: full-text extraction
│ └── Supplementary data → Tier 3: DOI-based supplementary fetch
└── Protocols / reagents
├── Lab protocol → Tier 2: web search for protocols.io, etc.
└── Validated reagents → Tier 2: AI-assisted web search
| Scenario | Recommended Tier and Database | Rationale |
|---|---|---|
| 临床证据的系统综述 | 第 1 层级:PubMed,使用 MeSH + 出版物类型筛选条件 | 需要可复现、记录完整的搜索策略 |
| 查找一种新机器学习方法的预印本 | 第 1 层级:arXiv,按类别和关键词搜索 | 预印本会先于期刊论文发布在 arXiv 上 |
| 了解研究领域的概况 | 第 2 层级:AI 辅助网页搜索 | 需要综合多个来源的信息 |
| 从论文中提取特定方案 | 第 3 层级:PDF 内容提取 | 需要访问全文中的方法部分 |
| 跨学科查找论文 | 第 1 层级:Google Scholar | 覆盖的领域最广 |
| 识别某个细分领域的关键研究人员 | 第 2 层级:AI 辅助网页搜索 | 需要结合上下文进行综合分析 |
| 下载补充数据表 | 第 3 层级:基于 DOI 获取补充材料 | 可直接访问补充文件 |
最佳实践
-
在 PubMed 搜索中使用受控词汇(MeSH):自由文本搜索会漏掉使用不同术语的论文。MeSH 术语将同义词映射到同一概念,在不牺牲精确率的同时提高查全率。
# Free text misses synonyms query_pubmed("heart attack treatment") # MeSH captures all synonyms query_pubmed('"Myocardial Infarction"[MeSH] AND "Drug Therapy"[MeSH]') -
使用 OR 添加同义词和替代术语:科学概念通常有多个名称(例如 tumor/tumour/neoplasm)。将同义词放在括号内并用 OR 连接,以免遗漏相关论文。
query_pubmed("(myocardial infarction OR heart attack) AND (treatment OR therapy)") -
对多词概念使用短语搜索:用引号括起精确短语,可避免搜索引擎拆分词语并分别匹配。
query_pubmed('"single cell RNA sequencing" AND methods') -
查找特定证据时按出版物类型筛选:临床试验、系统综述和荟萃分析分别回答不同的问题。使用
[Publication Type]锁定所需的证据等级。query_pubmed("COVID-19 vaccine efficacy AND clinical trial[Publication Type]") -
先扩大范围,再逐步缩小:从核心概念(2-3 个术语)开始,并查看初步结果。根据结果添加限定条件——更多术语、日期范围、字段标签或出版物类型。
# Step 1: Broad results = query_pubmed("CRISPR base editing iPSC", max_papers=20) # Step 2: Add MeSH and specificity results = query_pubmed( '"CRISPR-Cas Systems"[MeSH] AND "base editing" AND "induced pluripotent stem cells" AND efficiency', max_papers=20 ) # Step 3: Filter by date results = query_pubmed( '"CRISPR-Cas Systems"[MeSH] AND "base editing" AND "induced pluripotent stem cells" AND efficiency AND ("2022"[Date - Publication]:"2024"[Date - Publication])', max_papers=20 ) -
交叉检索多个数据库:没有任何单一数据库能够涵盖所有文献。使用 PubMed 查找生物医学内容,使用 arXiv 查找计算领域的预印本,并使用 Google Scholar 覆盖跨学科内容。
-
系统地评估结果质量:评估论文的来源可靠性(是否经过同行评审)、作者资历、时效性、研究设计是否适当、样本量是否充足、可复现性、是否声明利益冲突以及引用次数。
常见陷阱
-
查询过长且过于具体:在单个查询中塞入过多术语,会导致漏掉结果,因为所有术语都必须同时匹配。
- 如何避免:将查询限制为核心概念(3-5 个术语)。针对子主题分别搜索,然后手动合并结果。
# Too specific -- misses relevant papers query_pubmed("CRISPR Cas9 gene editing HEK293T cells 2024 efficiency optimization delivery") # Better -- core concepts only query_pubmed("CRISPR Cas9 gene editing optimization efficiency") -
依赖单一数据库:PubMed 专注于生物医学,arXiv 收录预印本,Google Scholar 覆盖多个学科。只使用一个数据库必然会遗漏部分结果。
- 如何避免:至少搜索两个数据库。对于计算生物学,结合使用 PubMed 和 arXiv。对于跨学科主题,加入 Google Scholar。
-
忽略发表日期:科学知识发展迅速。奠基性论文仍然有参考价值,但方法和临床证据可能已被更新的研究取代。
- 如何避免:检查所有结果的发表日期。对于方法类论文,优先选择近 3-5 年的论文。对于基础概念,可以接受较早的论文,但要通过近期综述进行核实。
-
深入阅读前未筛选标题和摘要:并非所有匹配关键词的搜索结果都真正相关。未经筛选就下载并阅读全文会浪费时间。
- 如何避免:始终先筛选标题和摘要。仅对通过筛选的论文提取全文(Tier 3)。
-
过度使用 NOT 运算符:NOT 运算符可能会意外排除相关论文,因为这些论文可能在不同语境中提及被排除的术语。
- 如何避免:谨慎使用 NOT。与其排除术语,不如添加正向术语来缩小结果范围。必须使用 NOT 时,请确认被排除的结果确实无关。
-
忽略 Google Scholar 速率限制:Google Scholar 会严格限制自动化查询的速率,可能导致后续搜索被阻止。
- 如何避免:谨慎使用 Google Scholar。请求之间加入延迟。批量搜索优先使用 PubMed 或 arXiv,将 Google Scholar 留作跨学科检索之用。
-
未记录搜索策略:对于系统综述和可复现研究,未记录的搜索无法验证或复现。
- 如何避免:记录搜索词、查询的数据库、日期范围,以及各阶段的结果数量。这对系统综述至关重要,也是所有搜索的良好实践。
工作流
-
步骤 1:定义研究问题
- 确定核心概念、研究人群/模型、干预/方法、期望结果和时间范围
- 对于临床问题,映射到 PICO 框架
- 示例:“查找有关人类 iPSC 中 CRISPR 碱基编辑效率的近期论文”可拆解为:核心概念 = CRISPR 碱基编辑,模型 = 人类 iPSC,结果 = 效率,时间范围 = 过去 3 年
-
步骤 2:构建并执行数据库查询(第 1 层)
- 生物医学主题从 PubMed 入手,计算主题从 arXiv 入手
- 先使用包含 2-3 个核心词的宽泛查询
- 使用 MeSH 词、字段标签、日期筛选器和出版物类型筛选器进行细化
from Bio import Entrez import arxiv from scholarly import scholarly Entrez.email = "[email protected]" # NCBI requires a contact email # PubMed: biomedical literature handle = Entrez.esearch( db="pubmed", term='"CRISPR-Cas Systems"[MeSH] AND "Gene Editing"[MeSH]', retmax=20, ) pubmed_ids = Entrez.read(handle)["IdList"] handle.close() # arXiv: computational biology preprints arxiv_results = list( arxiv.Search(query="protein structure prediction", max_results=10).results() ) # Google Scholar: broad cross-disciplinary coverage scholar_results = scholarly.search_pubs("single cell RNA sequencing analysis methods") -
步骤 3:补充 AI 辅助搜索(第 2 层)
- 使用 AI 辅助网络搜索了解领域概况和最新进展
- 使用通用网络搜索查找方案、教程和文档
from anthropic import Anthropic client = Anthropic() response = client.messages.create( model="claude-opus-4-7", max_tokens=4096, tools=[{"type": "web_search_20250305", "name": "web_search", "max_uses": 3}], messages=[{ "role": "user", "content": "What are the latest developments in CAR-T cell therapy for solid tumors in 2024?", }], ) print(response.content) -
步骤 4:评估并筛选结果
- 筛查标题和摘要,判断相关性
- 根据时效性、期刊质量、引用次数和研究设计确定优先级
- 对于临床证据,优先考虑 RCT、系统综述和荟萃分析
- 对于方法,优先考虑方案论文和方法比较研究
- 决策点:如果结果太多,添加更具体的词或筛选条件;如果结果太少,则扩大词语范围并添加同义词。
-
步骤 5:深入研读关键论文(第 3 层)
- 提取高优先级论文的全文
- 下载补充材料以获取数据和方案
- 查看参考文献列表,寻找其他相关论文
import io import os from pathlib import Path from urllib.parse import urlparse import requests import trafilatura from pypdf import PdfReader # Extract article content from URL (clean main text, drops nav/ads) downloaded = trafilatura.fetch_url("https://www.nature.com/articles/nature12373") article_text = trafilatura.extract(downloaded) # Extract text from a PDF pdf_bytes = requests.get("https://arxiv.org/pdf/1706.03762.pdf", timeout=30).content reader = PdfReader(io.BytesIO(pdf_bytes)) pdf_text = "\n".join(page.extract_text() or "" for page in reader.pages) # Download supplementary files via Crossref DOI metadata doi = "10.1038/nature12373" meta = requests.get(f"https://api.crossref.org/works/{doi}", timeout=30).json() out_dir = Path("./supplementary_materials") out_dir.mkdir(exist_ok=True) for link in meta.get("message", {}).get("link", []): url = link.get("URL") if not url: continue fname = os.path.basename(urlparse(url).path) or "supplement.bin" (out_dir / fname).write_bytes(requests.get(url, timeout=60).content) -
步骤 6:记录并迭代
- 记录所有搜索词、数据库、筛选条件和结果数量
- 如果仍有信息缺口,使用细化后的查询重新执行步骤 2-3
- 对于系统综述,遵循 PRISMA 指南进行报告
常见搜索场景
以下场景说明了如何结合三个层级来处理典型研究问题。
查找方法和方案
先在 PubMed 中查找已发表的方法学论文,再使用网络搜索补充查找来自 protocols.io 等资源的分步方案。
from Bio import Entrez
from duckduckgo_search import DDGS
Entrez.email = "[email protected]"
# Search for methodology papers in PubMed
handle = Entrez.esearch(
db="pubmed",
term='"Western Blotting"[MeSH] AND (protocol OR method OR technique)',
retmax=10,
)
pubmed_ids = Entrez.read(handle)["IdList"]
handle.close()
# Check web for step-by-step protocols
web_hits = DDGS().text("Western blot protocol for membrane proteins", max_results=5)
了解疾病机制
先阅读综述文章以了解整体概况,然后深入研读具体的机制研究。
# Find review articles first for an overview
results = query_pubmed(
'"Alzheimer Disease"[MeSH] AND pathophysiology AND review[Publication Type]',
max_papers=10
)
# Then find specific mechanistic studies
results = query_pubmed(
'"Alzheimer Disease"[MeSH] AND ("amyloid beta"[MeSH] OR tau) AND mechanism',
max_papers=20
)
查找药物和治疗信息
使用出版物类型筛选器,将临床试验证据与系统综述区分开来。
# Clinical trials for a specific drug-condition pair
results = query_pubmed(
'"Drug Name"[Substance Name] AND "Condition"[MeSH] AND clinical trial[Publication Type]',
max_papers=20
)
# Systematic reviews and meta-analyses
results = query_pubmed(
'"Drug Name" AND "Condition" AND (systematic review[Publication Type] OR meta-analysis[Publication Type])',
max_papers=10
)
跟踪最新进展
结合 AI 辅助搜索进行综合梳理,并通过数据库搜索查找近期已编入索引的出版物。
from anthropic import Anthropic
from Bio import Entrez
client = Anthropic()
Entrez.email = "[email protected]"
# AI-assisted synthesis of recent advances (Claude API web search tool)
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
tools=[{"type": "web_search_20250305", "name": "web_search", "max_uses": 3}],
messages=[{
"role": "user",
"content": "What are the most significant advances in CAR-T cell therapy in 2024?",
}],
)
# Supplement with recent PubMed results
handle = Entrez.esearch(
db="pubmed",
term='"Chimeric Antigen Receptor T-Cell Therapy"[MeSH] AND "2024"[Date - Publication]',
retmax=20,
)
pubmed_ids = Entrez.read(handle)["IdList"]
handle.close()
查找特定试剂和材料
使用 AI 辅助搜索查找经过验证的试剂建议,并通过通用网络搜索补充信息。
from anthropic import Anthropic
from duckduckgo_search import DDGS
client = Anthropic()
# Search for validated reagents (Claude API + web search tool)
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
tools=[{"type": "web_search_20250305", "name": "web_search", "max_uses": 2}],
messages=[{
"role": "user",
"content": "validated antibodies for Western blot detection of p53 protein",
}],
)
# Search supplier databases
supplier_hits = DDGS().text("p53 antibody Western blot validated", max_results=5)
跨方法比较分析
使用 AI 辅助搜索,获取针对技术或工具的综合比较。
from anthropic import Anthropic
client = Anthropic()
# Compare approaches with AI synthesis (Claude API web search tool)
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
tools=[{"type": "web_search_20250305", "name": "web_search", "max_uses": 5}],
messages=[{
"role": "user",
"content": "Compare different CRISPR delivery methods for in vivo gene editing: viral vectors vs lipid nanoparticles",
}],
)
print(response.content)
质量评估清单
评估搜索结果时,请应用以下标准:
- 来源可靠性:论文是否发表于经过同行评审的期刊?
- 作者资历:作者是否为该领域公认的专家?
- 时效性:信息是否足够新,能满足你的需求?
- 研究设计:研究设计是否适用于该问题(例如,用 RCT 评估疗效,用队列研究评估风险)?
- 样本量:样本量是否足以支撑所得结论?
- 可重复性:方法描述是否清晰到足以复现?
- 利益冲突:是否声明了任何利益冲突?
- 引用次数:后续研究对该论文的引用是否充分?
延伸阅读
- PubMed 帮助 -- PubMed 搜索语法、字段标签、筛选器和高级功能的官方指南
- arXiv 帮助页面 -- arXiv 搜索、学科分类和投稿流程的文档
- MeSH 浏览器 -- NLM 用于浏览和搜索 Medical Subject Headings 受控词表的工具
- PRISMA 声明 -- 系统综述和荟萃分析透明报告指南
- Cochrane 系统综述手册 -- 系统文献综述的黄金标准方法论
相关技能
pubmed-database-- 直接访问 PubMed API,以编程方式检索文献scientific-manuscript-writing-- 在论文中构建文献综述部分research-question-formulation-- 用于定义可回答研究问题的框架