mcpField
P
pubmed-database

pubmed-database

github.com/ovachiever数据与数据库5651 次安装48 周前更新
代码仓库

关于 pubmed-database

PubMed Database 是面向生物医学与生命科学文献检索的技能,适用于研究人员及文献综述工作。它涵盖高级检索语法、MeSH 词和 E-utilities 程序化访问。

主要功能

  1. 01布尔逻辑与字段标签检索
  2. 02MeSH 主题词检索
  3. 03按日期和文献类型筛选
  4. 04E-utilities API 数据访问
  5. 05引文匹配与批量导出

适用场景

  1. 01开展系统性文献综述
  2. 02按作者或研究类型查找论文
  3. 03自动提取 PubMed 记录
  4. 04监测新发表的相关文献

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ovachiever/droid-tings --skill pubmed-database

安装后在 Claude Code 中输入/pubmed-database确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
api_reference.md
common_queries.md
search_syntax.md

详细介绍

PubMed 数据库

概述

PubMed 是美国国家医学图书馆的综合数据库,提供对 MEDLINE 和生命科学文献的免费访问。使用布尔运算符、MeSH 词条和字段标签构建高级查询,通过 E-utilities API 以编程方式访问数据,用于系统综述和文献分析。

何时使用此技能

此技能应在以下情况下使用:

  • 搜索生物医学或生命科学研究文章
  • 使用布尔运算符、字段标签或 MeSH 词条构建复杂搜索查询
  • 进行系统性文献综述或元分析
  • 通过 E-utilities API 以编程方式访问 PubMed 数据
  • 按特定条件查找文章(作者、期刊、出版日期、文章类型)
  • 检索引文信息、摘要或全文文章
  • 处理 PMID(PubMed ID)或 DOI
  • 创建用于文献监测或数据提取的自动化工作流

核心能力

1. 高级搜索查询构建

使用布尔运算符、字段标签和专门语法构建复杂的 PubMed 查询。

基本搜索策略:

  • 使用布尔运算符(AND、OR、NOT)组合概念
  • 使用字段标签将搜索限制到特定记录部分
  • 使用双引号进行短语搜索以精确匹配
  • 应用通配符以匹配词条变体
  • 使用邻近搜索查找指定距离内的词条

示例查询:

# Recent systematic reviews on diabetes treatment
diabetes mellitus[mh] AND treatment[tiab] AND systematic review[pt] AND 2023:2024[dp]

# Clinical trials comparing two drugs
(metformin[nm] OR insulin[nm]) AND diabetes mellitus, type 2[mh] AND randomized controlled trial[pt]

# Author-specific research
smith ja[au] AND cancer[tiab] AND 2023[dp] AND english[la]

何时查阅 search_syntax.md:

  • 需要可用字段标签的完整列表
  • 需要搜索运算符的详细说明
  • 构建复杂的邻近搜索
  • 理解自动词条映射行为
  • 需要日期范围、通配符或特殊字符的特定语法

字段标签的 Grep 模式:\[au\]|\[ti\]|\[ab\]|\[mh\]|\[pt\]|\[dp\]

2. MeSH 词条和受控词表

使用医学主题词(MeSH)在生物医学文献中进行精确、一致的搜索。

MeSH 搜索:

  • [mh] 标签搜索 MeSH 词条,并自动包含更窄的词条
  • [majr] 标签将结果限制为主题为主要焦点的文章
  • 将 MeSH 词条与副标题组合以提高特异性(例如,diabetes mellitus/therapy[mh])

常见 MeSH 副标题:

  • /diagnosis - 诊断方法
  • /drug therapy - 药物治疗
  • /epidemiology - 疾病模式和流行情况
  • /etiology - 疾病病因
  • /prevention & control - 预防措施
  • /therapy - 治疗方法

示例:

# Diabetes therapy with specific focus
diabetes mellitus, type 2[mh]/drug therapy AND cardiovascular diseases[mh]/prevention & control
3. 文章类型和出版筛选

按出版类型、日期、文本可用性和其他属性筛选结果。

出版类型(使用 [pt] 字段标签):

  • Clinical Trial
  • Meta-Analysis
  • Randomized Controlled Trial
  • Review
  • Systematic Review
  • Case Reports
  • Guideline

日期筛选:

  • 单一年份:2024[dp]
  • 日期范围:2020:2024[dp]
  • 特定日期:2024/03/15[dp]

文本可用性:

  • 免费全文:在查询中添加 AND free full text[sb]
  • 有摘要:在查询中添加 AND hasabstract[text]

示例:

# Recent free full-text RCTs on hypertension
hypertension[mh] AND randomized controlled trial[pt] AND 2023:2024[dp] AND free full text[sb]
4. 通过 E-utilities API 进行编程访问

使用 NCBI E-utilities REST API 以编程方式访问 PubMed 数据,实现自动化和批量操作。

核心 API 端点:

  1. ESearch - 搜索数据库并检索 PMID
  2. EFetch - 以多种格式下载完整记录
  3. ESummary - 获取文档摘要
  4. EPost - 上传 UID 以进行批处理
  5. ELink - 查找相关文章和关联数据

基本工作流:

import requests

# Step 1: Search for articles
base_url = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/"
search_url = f"{base_url}esearch.fcgi"
params = {
    "db": "pubmed",
    "term": "diabetes[tiab] AND 2024[dp]",
    "retmax": 100,
    "retmode": "json",
    "api_key": "YOUR_API_KEY"  # Optional but recommended
}
response = requests.get(search_url, params=params)
pmids = response.json()["esearchresult"]["idlist"]

# Step 2: Fetch article details
fetch_url = f"{base_url}efetch.fcgi"
params = {
    "db": "pubmed",
    "id": ",".join(pmids),
    "rettype": "abstract",
    "retmode": "text",
    "api_key": "YOUR_API_KEY"
}
response = requests.get(fetch_url, params=params)
abstracts = response.text

速率限制:

  • 无 API key:每秒 3 次请求
  • 有 API key:每秒 10 次请求
  • 始终包含 User-Agent 请求头

最佳实践:

  • 对大型结果集使用历史服务器(usehistory=y)
  • 通过 EPost 为多个 UID 实现批量操作
  • 在本地缓存结果,以尽量减少冗余调用
  • 遵守速率限制,避免服务中断

何时查阅 api_reference.md:

  • 需要详细的端点文档
  • 需要每个 E-utility 的参数规格
  • 构建批量操作或历史服务器工作流
  • 了解响应格式(XML、JSON、文本)
  • 排查 API 错误或速率限制问题

API 端点的 Grep 模式:esearch|efetch|esummary|epost|elink|einfo

5. 引文匹配与文章检索

使用部分引文信息或特定标识符查找文章。

按标识符:

# By PMID
12345678[pmid]

# By DOI
10.1056/NEJMoa123456[doi]

# By PMC ID
PMC123456[pmc]

引文匹配(通过 ECitMatch API): 使用期刊名称、年份、卷、页码和作者查找 PMID:

Format: journal|year|volume|page|author|key|
Example: Science|2008|320|5880|1185|key1|

按作者和元数据:

# First author with year and topic
smith ja[1au] AND 2023[dp] AND cancer[tiab]

# Journal, volume, and page
nature[ta] AND 2024[dp] AND 456[vi] AND 123-130[pg]
6. 系统文献综述

为系统综述和荟萃分析开展全面的文献检索。

PICO 框架(Population、Intervention、Comparison、Outcome): 系统地构建临床研究问题:

# Example: Diabetes treatment effectiveness
# P: diabetes mellitus, type 2[mh]
# I: metformin[nm]
# C: lifestyle modification[tiab]
# O: glycemic control[tiab]

diabetes mellitus, type 2[mh] AND
(metformin[nm] OR lifestyle modification[tiab]) AND
glycemic control[tiab] AND
randomized controlled trial[pt]

全面检索策略:

# Include multiple synonyms and MeSH terms
(disease name[tiab] OR disease name[mh] OR synonym[tiab]) AND
(treatment[tiab] OR therapy[tiab] OR intervention[tiab]) AND
(systematic review[pt] OR meta-analysis[pt] OR randomized controlled trial[pt]) AND
2020:2024[dp] AND
english[la]

检索优化:

  1. 从宽泛检索开始,查看结果
  2. 使用字段标签增加精确性
  3. 应用日期和出版物类型过滤器
  4. 使用高级检索查看查询转换
  5. 组合检索历史以构建复杂查询

何时查阅 common_queries.md:

  • 需要针对特定疾病类型或研究领域的示例查询
  • 需要不同研究设计的模板
  • 寻找特定人群的查询模式(儿科、老年医学等)
  • 构建特定方法学的检索
  • 需要质量过滤器或最佳实践模式

查询示例的 Grep 模式:diabetes|cancer|cardiovascular|clinical trial|systematic review

7. 检索历史与已保存检索

使用 PubMed 的检索历史和 My NCBI 功能,实现高效的研究工作流。

检索历史(通过高级检索):

  • 最多保留 100 条检索
  • 闲置 8 小时后过期
  • 使用 # 引用组合之前的检索
  • 在执行前预览结果数量

示例:

#1: diabetes mellitus[mh]
#2: cardiovascular diseases[mh]
#3: #1 AND #2 AND risk factors[tiab]

My NCBI 功能:

  • 无限期保存检索
  • 为新的匹配文章设置电子邮件提醒
  • 创建已保存文章的集合
  • 按项目或主题组织研究

RSS 订阅源: 为任意检索创建 RSS 订阅源,以监控您感兴趣领域的新出版物。

8. 相关文章与引文发现

查找相关研究并探索引文网络。

相似文章功能: 每篇 PubMed 文章都包含基于以下内容预先计算的相关文章:

  • 标题和摘要相似度
  • MeSH 词重叠
  • 加权算法匹配

使用 ELink 获取相关数据:

# Find related articles programmatically
elink.fcgi?dbfrom=pubmed&db=pubmed&id=PMID&cmd=neighbor

引文链接:

  • LinkOut 到出版商提供的全文
  • 指向 PubMed Central 免费文章的链接
  • 与相关 NCBI 数据库(GenBank、ClinicalTrials.gov 等)的连接
9. 导出与引文管理

以多种格式导出搜索结果,用于引文管理和进一步分析。

导出格式:

  • 适用于参考文献管理工具(Zotero、Mendeley、EndNote)的 .nbib 文件
  • AMA、MLA、APA、NLM 引文样式
  • 用于数据分析的 CSV
  • 用于程序化处理的 XML

剪贴板与集合:

  • 剪贴板:最多 500 个条目的临时存储(8 小时过期)
  • 集合:通过 My NCBI 账户进行永久存储

通过 API 批量导出:

# Export citations in MEDLINE format
efetch.fcgi?db=pubmed&id=PMID1,PMID2&rettype=medline&retmode=text

使用参考文件

此技能在 references/ 目录中包含三个全面的参考文件:

references/api_reference.md

完整的 E-utilities API 文档,包括全部九个端点、参数、响应格式和最佳实践。在以下情况查阅:

  • 实现程序化 PubMed 访问
  • 构造 API 请求
  • 理解速率限制和身份验证
  • 通过 history server 处理大型数据集
  • 排查 API 错误
references/search_syntax.md

PubMed 搜索语法详细指南,包括字段标签、布尔运算符、通配符和特殊字符。在以下情况查阅:

  • 构造复杂搜索查询
  • 理解自动词语映射
  • 使用高级搜索功能(邻近搜索、通配符)
  • 应用过滤器和限制条件
  • 排查意外搜索结果
references/common_queries.md

针对各种研究场景、疾病类型和方法学的大量示例查询集合。在以下情况查阅:

  • 开始新的文献检索
  • 需要特定研究领域的模板
  • 寻找最佳实践查询模式
  • 开展系统综述
  • 检索特定研究设计或人群

参考文件加载策略: 根据具体任务按需将参考文件加载到上下文中。对于简短查询或基本检索,此 SKILL.md 中的信息可能已经足够。对于复杂操作,请查阅相应的参考文件。

常见工作流

工作流 1:基本文献检索
  1. 确定关键概念和同义词
  2. 使用布尔运算符和字段标签构造查询
  3. 查看初始结果并优化查询
  4. 应用过滤器(日期、文章类型、语言)
  5. 导出结果以供分析
工作流 2:系统综述检索
  1. 使用 PICO 框架定义研究问题
  2. 确定所有相关 MeSH 词和同义词
  3. 构造全面的检索策略
  4. 检索多个数据库(包括 PubMed)
  5. 记录检索策略和日期
  6. 导出结果以供筛选和综述
工作流 3:程序化数据提取
  1. 设计搜索查询并在 Web 界面中测试
  2. 使用 ESearch API 实现检索
  3. 对大型结果集使用 history server
  4. 使用 EFetch 获取详细记录
  5. 解析 XML/JSON 响应
  6. 通过缓存将数据存储在本地
  7. 实现速率限制和错误处理
工作流 4:引文发现
  1. 从已知的相关文章开始
  2. 使用 Similar Articles 查找相关工作
  3. 检查引用文章(如可用)
  4. 探索相关文章的 MeSH 词
  5. 基于发现构造新的检索
  6. 使用 ELink 查找相关数据库条目
工作流 5:持续文献监测
  1. 构造全面的搜索查询
  2. 测试并优化查询以提高精确度
  3. 将检索保存到 My NCBI 账户
  4. 为新匹配项设置电子邮件提醒
  5. 创建 RSS 订阅源以供订阅阅读器监测
  6. 定期查看新文章

提示与最佳实践

检索策略
  • 先宽泛检索,再用字段标签和过滤器缩小范围
  • 包含同义词和 MeSH 词以实现全面覆盖
  • 使用引号进行精确短语检索
  • 在 Advanced Search 中检查 Search Details 以验证查询转换
  • 使用检索历史组合多个检索
API 使用
  • 获取 API key 以获得更高的速率限制(10 req/sec 对比 3 req/sec)
  • 对于结果集超过 500 篇文章的情况,使用 history server
  • 实现指数退避以处理速率限制
  • 在本地缓存结果以尽量减少冗余请求
  • 始终包含描述性的 User-Agent 请求头
质量过滤
  • 优先选择系统综述和 meta 分析以获取综合证据
  • 使用出版物类型过滤器查找特定的研究设计
  • 按日期过滤以获取最新研究
  • 视情况应用语言过滤器
  • 使用免费全文过滤器以便立即访问
引文管理
  • 尽早且频繁地导出,以免丢失搜索结果
  • 使用 .nbib 格式以兼容大多数文献管理软件
  • 创建 My NCBI 账户以建立永久收藏
  • 记录检索策略以确保可复现性
  • 使用 Collections 按项目组织研究

局限性与注意事项

数据库覆盖范围
  • 主要为生物医学和生命科学文献
  • 1975 年之前的文章通常缺少摘要
  • 2002 年起提供完整作者姓名
  • 提供非英文摘要,但可能默认以英文显示
检索局限性
  • 显示结果最多限制为 10,000 条
  • 检索历史在 8 小时无活动后过期
  • Clipboard 最多保存 500 个条目,8 小时后过期
  • 自动词语映射可能产生意外结果
API 注意事项
  • 适用速率限制(3-10 次请求/秒)
  • 大型查询可能超时(使用 history server)
  • 提取详细数据需要解析 XML
  • 建议在生产环境中使用 API key
访问限制
  • PubMed 提供引文和摘要(不总是提供全文)
  • 全文访问取决于出版商、机构访问权限或开放获取状态
  • LinkOut 的可用性因期刊和机构而异
  • 部分内容需要订阅或付费

支持资源

评论

支持 Markdown