关于 pubmed-database
PubMed Database 是面向生物医学与生命科学文献检索的技能,适用于研究人员及文献综述工作。它涵盖高级检索语法、MeSH 词和 E-utilities 程序化访问。
主要功能
- 01布尔逻辑与字段标签检索
- 02MeSH 主题词检索
- 03按日期和文献类型筛选
- 04E-utilities API 数据访问
- 05引文匹配与批量导出
适用场景
- 01开展系统性文献综述
- 02按作者或研究类型查找论文
- 03自动提取 PubMed 记录
- 04监测新发表的相关文献
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ovachiever/ droid-tings --skill pubmed-database安装后在 Claude Code 中输入/pubmed-database确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/api_reference.mdcommon_queries.mdsearch_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 端点:
- ESearch - 搜索数据库并检索 PMID
- EFetch - 以多种格式下载完整记录
- ESummary - 获取文档摘要
- EPost - 上传 UID 以进行批处理
- 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]
检索优化:
- 从宽泛检索开始,查看结果
- 使用字段标签增加精确性
- 应用日期和出版物类型过滤器
- 使用高级检索查看查询转换
- 组合检索历史以构建复杂查询
何时查阅 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:基本文献检索
- 确定关键概念和同义词
- 使用布尔运算符和字段标签构造查询
- 查看初始结果并优化查询
- 应用过滤器(日期、文章类型、语言)
- 导出结果以供分析
工作流 2:系统综述检索
- 使用 PICO 框架定义研究问题
- 确定所有相关 MeSH 词和同义词
- 构造全面的检索策略
- 检索多个数据库(包括 PubMed)
- 记录检索策略和日期
- 导出结果以供筛选和综述
工作流 3:程序化数据提取
- 设计搜索查询并在 Web 界面中测试
- 使用 ESearch API 实现检索
- 对大型结果集使用 history server
- 使用 EFetch 获取详细记录
- 解析 XML/JSON 响应
- 通过缓存将数据存储在本地
- 实现速率限制和错误处理
工作流 4:引文发现
- 从已知的相关文章开始
- 使用 Similar Articles 查找相关工作
- 检查引用文章(如可用)
- 探索相关文章的 MeSH 词
- 基于发现构造新的检索
- 使用 ELink 查找相关数据库条目
工作流 5:持续文献监测
- 构造全面的搜索查询
- 测试并优化查询以提高精确度
- 将检索保存到 My NCBI 账户
- 为新匹配项设置电子邮件提醒
- 创建 RSS 订阅源以供订阅阅读器监测
- 定期查看新文章
提示与最佳实践
检索策略
- 先宽泛检索,再用字段标签和过滤器缩小范围
- 包含同义词和 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 的可用性因期刊和机构而异
- 部分内容需要订阅或付费
支持资源
- PubMed 帮助: https://pubmed.ncbi.nlm.nih.gov/help/
- E-utilities 文档: https://www.ncbi.nlm.nih.gov/books/NBK25501/
- NLM 帮助台: 1-888-FIND-NLM (1-888-346-3656)
- 技术支持: vog.hin.mln.ibcn@seitilitue
- 邮件列表: [email protected]