PubMed 資料庫
當任務需要來自 PubMed 的生物醫學文獻而非一般網路搜尋時,請使用此技能。
使用時機
- 搜尋 MEDLINE 或生命科學文獻。
- 使用 MeSH 詞彙、欄位標籤、日期或文章類型建立 PubMed 查詢。
- 查詢 PMID、摘要、出版品元資料或相關引用。
- 執行需要可重複搜尋字串的系統性文獻回顧搜尋。
- 直接從 Python、Shell 或其他 HTTP 用戶端使用 NCBI E-utilities。
查詢建構
從研究問題開始,將其拆解為概念,然後使用布林運算子組合這些概念。
概念_1 AND 概念_2 AND 篩選器
同義詞_a OR 同義詞_b
NOT 排除詞
有用的 PubMed 欄位標籤:
[ti]:標題[ab]:摘要[tiab]:標題或摘要[au]:作者[ta]:期刊名稱縮寫[mh]:MeSH 詞彙[majr]:主要 MeSH 主題[pt]:出版類型[dp]:出版日期[la]:語言
範例:
diabetes mellitus[mh] AND treatment[tiab] AND systematic review[pt] AND 2023:2026[dp]
(metformin[nm] OR insulin[nm]) AND diabetes mellitus, type 2[mh] AND randomized controlled trial[pt]
smith ja[au] AND cancer[tiab] AND 2026[dp] AND english[la]
MeSH 與副標題
當概念有穩定的控制詞彙時,優先使用 MeSH。當主題較新或詞彙不一致時,將 MeSH 與標題/摘要詞彙結合使用。
正確的副標題語法將副標題置於欄位標籤之前:
diabetes mellitus, type 2/drug therapy[mh]
cardiovascular diseases/prevention & control[mh]
僅在主題必須是論文核心時使用 [majr]。這能提高精確度,但可能會遺漏相關文獻。
篩選器
出版類型:
clinical trial[pt]meta-analysis[pt]randomized controlled trial[pt]review[pt]systematic review[pt]guideline[pt]
日期篩選器:
2026[dp]
2020:2026[dp]
2026/03/15[dp]
可用性篩選器:
free full text[sb]
hasabstract[text]
E-utilities 工作流程
NCBI E-utilities 支援可重複的 API 工作流程:
esearch.fcgi:搜尋並回傳 PMID。esummary.fcgi:回傳輕量級文章元資料。efetch.fcgi:以 XML、MEDLINE 或純文字格式擷取摘要或完整記錄。elink.fcgi:尋找相關文章與連結資源。
在生產腳本中使用電子郵件與 API 金鑰。將 API 金鑰儲存在環境變數中,切勿儲存在已提交的檔案或命令歷史中。
import os
import time
import requests
BASE = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils"
def esearch(query: str, retmax: int = 20) -> list[str]:
params = {
"db": "pubmed",
"term": query,
"retmode": "json",
"retmax": retmax,
"tool": "ecc-pubmed-search",
"email": os.environ.get("NCBI_EMAIL", ""),
}
api_key = os.environ.get("NCBI_API_KEY")
if api_key:
params["api_key"] = api_key
response = requests.get(f"{BASE}/esearch.fcgi", params=params, timeout=30)
response.raise_for_status()
time.sleep(0.35)
return response.json()["esearchresult"]["idlist"]
pmids = esearch("hypertension[mh] AND randomized controlled trial[pt] AND 2024:2026[dp]")
print(pmids)
對於大量資料,建議使用 NCBI 歷史伺服器參數(usehistory=y、WebEnv、query_key),而不是透過 URL 傳遞非常長的 PMID 列表。
輸出紀律
每次搜尋時,請記錄:
- 確切的搜尋字串
- 搜尋的資料庫
- 搜尋日期
- 使用的篩選器
- 結果數量
- 匯出格式
- 任何手動排除項目
範例:
| 資料庫 | 搜尋日期 | 查詢 | 篩選器 | 結果 |
| --- | --- | --- | --- | ---: |
| PubMed | 2026-05-11 | `sickle cell disease[mh] AND CRISPR[tiab]` | 2020:2026[dp], English | 42 |
審查核對清單
- 欄位標籤是否為有效的 PubMed 標籤?
- MeSH 詞彙是否已搭配新興主題的自由文字同義詞?
- 日期範圍是否明確且適當?
- 搜尋日誌是否包含足夠的詳細資訊以重現查詢?
- API 金鑰是否從環境變數載入?
- HTTP 程式碼是否在解析前呼叫
raise_for_status()或以其他方式處理非 200 的回應? - 是否遵守速率限制?