| name | literature-explorer |
| description | 生命科学领域学术文献探索与可视化;基于 Europe PMC 数据源;支持高级检索、PMC过滤、并行多检索;支持 PMCID/PMID/DOI 混合批量提取;生成美化的 HTML 可视化报告 |
| dependency | {"python":["requests>=2.31.0"]} |
生命科学文献探索与可视化
任务目标
- 本 Skill 用于:从 PubMed 和 Europe PMC 数据库搜索生命科学领域的开放获取学术文献,并提取 PDF 下载链接
- 能力包含:
- 双数据源支持:
- PubMed API(默认):适合进化生物学、生态学、遗传学等非临床医学领域
- Europe PMC API(
--use-europepmc):适合临床医学、药学、生物医学等临床领域
- 高级检索:支持 MeSH 主题词检索、精确短语搜索、上下文感知检索
- PMC 过滤:确保 100% 可下载(通过
pubmed pmc[sb] 过滤器)
- 并行多检索:同时执行多个检索式,自动合并去重
- 智能分类报告:根据全文/摘要可用性自动分组,生成 HTML 可视化报告
- 适用领域:进化生物学、生态学、遗传学、生物医学、临床医学、药学、生物学、公共卫生等生命科学相关学科
- 触发条件:用户需要搜索生命科学领域的学术文献,获取 PDF 下载链接,并生成可视化报告时
默认规范
- 全文链接过滤(重要):默认只返回有全文下载链接的文献,确保所有结果可直接下载
- 默认行为:自动过滤掉没有 PDF/TGZ 下载链接的文献
- 包含无全文:如需包含无全文链接的文献,使用
--include-no-fulltext 参数
- 过滤提示:脚本会显示过滤掉的文献数量,便于了解检索情况
- MeSH 检索(推荐):优先使用 MeSH(Medical Subject Headings)主题词检索,提升检索精度和全面性
- 时间范围(默认10年):默认获取近 10 年内的文献,从当前年份向前推算(如当前年份 2026 年,默认检索范围是 2016-2026 年)
- 默认行为:所有检索式自动添加
2016:2026[pd] 年份限制(根据当前年份动态计算)
- 自定义时间范围:如需其他时间范围,用户明确指定后才调整
- 年份格式:使用
[pd] 字段限定,格式为 起始年:结束年[pd]
- 检索模式:默认使用较为宽泛的检索模式,多用 OR 连接关键词,获取更广的结果范围;避免过度使用 AND,提高检索覆盖面
- 文献类型过滤:默认排除会议论文(conference proceedings),专注于期刊论文;使用
NOT conference NOT proceedings 过滤
- 筛选策略:先宽泛检索获取更多结果,后续在 HTML 报告中使用筛选功能缩小范围
- PMC 过滤:默认使用
pubmed pmc[sb] 过滤器,确保 100% 可下载
- 检索数量:单次检索默认返回 100 篇文献,多检索式合并后不超过 300 篇
前置准备
操作步骤
-
标准流程:
-
理解需求并整理关键词
-
构建多组检索式
- 重要:构建检索式时必须遵循默认规范
- 时间范围:默认获取近 10 年内的文献(当前年份 - 10 至当前年份)
- 动态计算:使用
datetime.now().year 获取系统时间,自动计算年份范围
- 示例:如当前 2026 年,默认年份限制为
2016:2026[pd]
- 默认行为:所有检索式必须添加近10年的年份限制,除非用户明确要求其他时间范围
- 优先使用 MeSH 术语,提升检索精度(参见 MeSH 检索说明)
- 使用 OR 连接关键词,获取更广的结果(后续可在 HTML 报告中筛选)
- 默认排除会议论文,使用
NOT conference NOT proceedings 专注于期刊论文
- 避免过度使用 AND,提高检索覆盖面
- 基于整理的关键词,构建 2-4 组不同的检索式
- 检索式 A(默认宽泛检索 - 推荐 MeSH 模式):使用 MeSH 术语 + PMC 过滤 + 排除会议 + 近 10 年
- 示例(当前年份 2026):
"Neoplasms/drug therapy"[MeSH] AND pubmed pmc[sb] NOT conference NOT proceedings 2016:2026[pd]
- 检索内容:所有癌症药物治疗的期刊论文(MeSH 自动扩展同义词)
- 检索式 B(多概念宽泛检索):使用 OR 连接多个 MeSH 术语 + PMC 过滤 + 排除会议 + 近 10 年
- 示例:
("Neoplasms"[MeSH] OR "Diabetes Mellitus"[MeSH]) AND pubmed pmc[sb] NOT conference NOT proceedings 2016:2026[pd]
- 检索内容:癌症或糖尿病相关文献
- 检索式 C(普通关键词宽泛检索):使用 OR 连接普通关键词 + PMC 过滤 + 排除会议 + 近 10 年
- 示例:
("cancer OR tumor OR neoplasm") AND pubmed pmc[sb] NOT conference NOT proceedings 2016:2026[pd]
- 检索内容:使用同义词检索,但不如 MeSH 精确
- 检索式 D(可选精确检索):仅在用户明确要求精确检索时使用 AND 连接(如
title: 字段限定)
- 示例:
title:"specific term" AND pubmed pmc[sb] 2016:2026[pd]
- 检索式 E(可选排除检索):排除无关文献 + PMC 过滤 + 排除会议 + 近 10 年(仅在用户需要排除某些类型时使用)
- 示例:
("topic1"[MeSH] OR "topic2"[MeSH]) AND pubmed pmc[sb] NOT conference NOT proceedings NOT review 2016:2026[pd]
-
获取 PDF 链接
- 使用
get_pdf_links.py 搜索文献并获取 PDF 下载链接
- 重要:执行搜索前确认检索式已包含:
- 近 10 年的年份限制
NOT conference NOT proceedings 排除会议论文
- PMC 过滤器
pubmed pmc[sb]
- 单次检索模式:
python scripts/get_pdf_links.py --search "(cancer OR tumor) AND pubmed pmc[sb] NOT conference NOT proceedings 2016:2026[pd]" --limit 100 --output links.json
- 并行多检索模式:
python scripts/get_pdf_links.py --search-multi "(cancer OR tumor) AND pubmed pmc[sb] NOT conference NOT proceedings 2016:2026[pd]";"(Alzheimer OR dementia) AND pubmed pmc[sb] NOT conference NOT proceedings 2016:2026[pd]" --limit 50 --max-workers 3 --output links.json
- 输出结果:
links.json 包含文献信息和 PDF 链接
-
提取 PDF 下载链接
- 使用
extract_pdf_links.py 提取 PDF 下载链接
python scripts/extract_pdf_links.py --json links.json --output pdf_links.txt
输出:pdf_links.txt 包含所有可用的 HTTP 下载链接,用户可以自行选择下载方式(如 wget、IDM 等)
-
生成美化的 HTML 报告
-
验证结果
- 检查生成的 HTML 报告是否正确展示文献信息
- 确认 PDF 链接是否有效
- 查看链接提取统计和成功率
- 验证年份显示是否为当前年份(动态获取)
-
可选分支:
- 当用户明确要求其他时间范围:按用户指定的时间范围检索,否则默认使用近10年
- 当用户需要更精确的检索:使用字段限定(如 title:、author:)缩小范围
- 当用户需要排除某些类型:使用 NOT 操作符排除无关文献
- 当检索结果过多:进一步增加年份限制或添加更多关键词限定
- 当 API 请求受限:配置 NCBI API 邮箱和密钥
- 当需要快速浏览文献列表:生成 HTML 报告并使用搜索/筛选功能
资源索引
- 必要脚本:
- HTML 模板资产:
- 领域参考:见 references/literature-usage.md(何时读取:需要了解高级检索语法、完整参数说明、PMC 过滤技巧、MeSH 检索指南时)
- 输出资产:
links.json(文献元数据)、pdf_links.txt(下载链接)、literature_report.html(美化的 HTML 报告)
注意事项
- 虚拟环境使用:强烈建议使用 Python 虚拟环境安装依赖,避免权限冲突和系统包污染
- 适用领域:本 Skill 专门用于生命科学领域(生物医学、临床医学、药学、生物学、公共卫生等)的文献搜索
- 数据源说明:PubMed 和 Europe PMC 主要收录生物医学和生命科学领域的文献,不适用于物理、数学、计算机等其他学科
- PMC 过滤的重要性:默认使用
pubmed pmc[sb] 过滤器可确保 100% 可下载
- 文献类型过滤的重要性:默认使用
NOT conference NOT proceedings 过滤会议论文,专注于期刊论文;如需检索会议论文,可移除此过滤
- 时间范围默认规范(10年):默认获取近 10 年内的文献(当前年份 - 10 至当前年份)
- 示例:当前 2026 年 → 默认范围 2016-2026 年
- 年份格式:必须添加
2016:2026[pd] 格式的年份限制
- 例外情况:仅在用户明确要求其他时间范围时才调整默认值
- 检索模式默认规范:默认使用较为宽泛的检索模式,多用 OR 连接关键词,获取更广的结果范围;后续可在 HTML 报告中使用筛选功能缩小范围;仅在用户需要精确检索时才使用 AND 连接或添加字段限定
- 分步骤执行:获取链接和下载是两个独立的步骤,可以先获取链接并审查结果,再决定是否下载
- API 速率限制:未配置 API 密钥时,NCBI 每秒最多 3 个请求;配置后可提升至 10 个请求
- HTML 报告设计:报告应美观、易用、功能完善,支持搜索和筛选,提升用户体验
- 链接有效性:部分文献可能因权限或访问限制导致 PDF 链接失效,建议优先使用 PMC 过滤器
- MeSH 检索:参见默认规范中的 MeSH 检索说明和 references/literature-usage.md 中的详细指南
使用示例
示例 1:搜索文献并获取链接(默认模式)
示例 2:并行搜索多组关键词(默认模式)
示例 3:提取 PDF 下载链接
示例 4:生成美化的 HTML 报告(推荐方式)
示例 5:检索自定义主题的文献
示例 6:从标识符直接提取链接
示例 7:自定义时间范围检索(非默认场景)
示例 8:使用 MeSH 术语检索(推荐模式)
示例 9:并行搜索多个 MeSH 术语(推荐模式)
示例 10:检索会议论文(非默认场景)
高级功能
文献智能分组和排序
根据全文和摘要的可用性自动分组排序,优先展示最有价值的文献:
- 高优先级组(有全文 + 有摘要):彩色边框,置顶展示
- 中优先级组(有全文 + 无摘要):正常样式,紧随其后
- 低优先级组(无全文 + 有摘要):浅色样式,次要位置
- 最低优先级组(无全文 + 无摘要):灰色样式,置于页面底部
详细主题说明:参见「示例 4:生成美化的 HTML 报告」,包含 3 种配色方案(modern/academic/dark)的完整介绍。
批量处理标识符
支持从 CSV 文件批量提取下载链接:
python scripts/extract_pdf_links.py --csv identifiers.csv --column pmcid --output pdf_links.txt
包含没有全文链接的文献(非默认场景)
检索结果排序
根据影响因子、引用次数、发表日期等维度对文献排序(需要在 HTML 报告中实现)
检索策略最佳实践(基于实际测试)
术语歧义问题
问题说明:许多生物学术语在非生物医学领域中存在歧义,导致检索结果包含无关文献。
| 术语 | 生物学含义 | 歧义(非生物学) | 影响 |
|---|
speciation | 物种形成 | 化学形态(chemical speciation) | 混入化学/材料文献 |
hybridization | 杂交/杂交物种形成 | 细胞杂交、分子杂交 | 混入癌症/细胞生物学文献 |
evolution | 进化 | 演变、算法进化 | 混入计算机科学文献 |
推荐检索策略
策略 1:精确短语搜索(推荐用于核心概念)
使用双引号进行精确短语搜索,避免术语歧义:
python scripts/get_pdf_links.py --search '"hybrid speciation"' --limit 100 --output links.json
策略 2:上下文感知搜索(推荐用于宽泛主题)
结合多个相关术语构建上下文,提高检索精度:
python scripts/get_pdf_links.py --search 'speciation AND (evolution OR "gene flow" OR introgression)' --limit 100 --output links.json
策略 3:字段限定搜索(推荐用于精确检索)
限定检索字段,缩小检索范围:
python scripts/get_pdf_links.py --search 'speciation[Title] AND (evolution[Title] OR genetic[Title])' --limit 100 --output links.json
python scripts/get_pdf_links.py --search '"Evolution, Molecular"[MeSH] AND pubmed pmc[sb]' --limit 100 --output links.json
策略 4:排除式检索(推荐用于过滤无关文献)
使用 NOT 操作符排除非生物学领域的文献:
python scripts/get_pdf_links.py --search 'speciation NOT (chemistry OR material OR "chemical speciation")' --limit 100 --output links.json
python scripts/get_pdf_links.py --search 'hybridization NOT (cell OR "in vitro" OR cancer)' --limit 100 --output links.json
不同领域的 API 选择建议
| 领域 | 推荐数据源 | 原因 |
|---|
| 进化生物学 | PubMed(默认) | Europe PMC 偏向临床医学,"hybridization" 返回细胞杂交而非物种杂交 |
| 生态学 | PubMed(默认) | 更广泛的生物学覆盖,不限于生物医学 |
| 临床医学 | Europe PMC(--use-europepmc) | 更精准的临床医学文献 |
| 药学 | Europe PMC(--use-europepmc) | 专注于药物开发和临床试验 |
python scripts/get_pdf_links.py --search '"hybrid speciation"' --limit 100 --output links.json
python scripts/get_pdf_links.py --search 'cancer immunotherapy' --use-europepmc --limit 100 --output links.json
测试验证数据
以下检索策略已通过实际测试验证:
| 检索式 | 相关性 | 有全文占比 | 备注 |
|---|
"hybrid speciation" | 100% | 56.7% (17/30) | 推荐用于杂交物种形成 |
speciation AND (evolution OR introgression) | 70-80% | 40% (12/30) | 推荐用于宽泛主题 |
speciation[Title] | 25% | 33% (10/30) | 不推荐(术语歧义严重) |
构建检索式的决策树
是否检索核心概念(如"杂交物种形成")?
├─ 是 → 使用精确短语搜索:"hybrid speciation"
└─ 否 → 是否检索宽泛主题?
├─ 是 → 使用上下文感知:speciation AND (evolution OR introgression)
└─ 否 → 是否需要极高精度?
├─ 是 → 使用字段限定:term[Title] OR term[MeSH]
└─ 否 → 使用排除式:term NOT (unrelated_terms)