# Literature Search

> Search PubMed for scientific literature. Use when asked to find papers, search literature, look up publications, or gather references on a topic. Returns article titles, authors, abstracts, and PMIDs.

- Skill: `gexijin/literature-search` (Agent Skill)
- Install (CLI): `npx skillmds@latest add gexijin/literature-search`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gexijin/literature-search/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Research & Search
- Author: gexijin (https://skillmd.com/u/gexijin)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/gexijin/literature-search

---


# PubMed Literature Search Skill

This skill searches PubMed using the NCBI E-utilities API to find relevant scientific literature.

## How to Use

When the user asks to search for literature, use the WebFetch tool to query PubMed's E-utilities API.

### Step 1: Search for Articles

Use ESearch to find PMIDs matching a query:

```
https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=<QUERY>&retmode=json&retmax=<COUNT>
```

Parameters:
- `term`: URL-encoded search query (use `+` for spaces, standard PubMed syntax)
- `retmax`: Maximum results to return (default 20, max 10000)
- `retstart`: Offset for pagination
- `sort`: Sort order (`relevance`, `pub_date`, `first_author`)

Example query for vitiligo transcriptomics:
```
https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=vitiligo+transcriptome&retmode=json&retmax=20
```

### Step 2: Get Article Details

Use ESummary to retrieve article metadata from PMIDs:

```
https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=<PMID_LIST>&retmode=json
```

Parameters:
- `id`: Comma-separated list of PMIDs from Step 1

### Step 3: Get Abstracts (Optional)

Use EFetch to retrieve full abstracts:

```
https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=<PMID_LIST>&rettype=abstract&retmode=text
```

## Search Syntax

PubMed supports advanced search operators:

| Operator | Example | Description |
|----------|---------|-------------|
| `AND` | `vitiligo AND transcriptome` | Both terms required |
| `OR` | `vitiligo OR depigmentation` | Either term |
| `NOT` | `vitiligo NOT mouse` | Exclude term |
| `[tiab]` | `vitiligo[tiab]` | Title/abstract only |
| `[au]` | `smith[au]` | Author search |
| `[jour]` | `nature[jour]` | Journal search |
| `[pdat]` | `2020:2024[pdat]` | Publication date range |
| `[mesh]` | `vitiligo[mesh]` | MeSH term |
| `"phrase"` | `"gene expression"` | Exact phrase |

## Example Workflow

When user asks: "Find recent papers on vitiligo RNA-seq"

1. **Search PubMed:**
   ```
   WebFetch: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=vitiligo+RNA-seq+2020:2024[pdat]&retmode=json&retmax=15&sort=pub_date
   ```

2. **Get summaries for found PMIDs:**
   ```
   WebFetch: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&id=12345,67890,11111&retmode=json
   ```

3. **Present results** with:
   - Title
   - Authors (first author et al.)
   - Journal, Year
   - PMID (link: https://pubmed.ncbi.nlm.nih.gov/PMID/)

## Output Format

Present search results as a formatted table or list:

```
## Literature Search Results

**Query:** vitiligo transcriptome

| # | Title | Authors | Journal | Year | PMID |
|---|-------|---------|---------|------|------|
| 1 | Example title... | Smith J et al. | J Invest Dermatol | 2023 | [12345](https://pubmed.ncbi.nlm.nih.gov/12345/) |
```

## Tips

1. **Refine searches** - Start broad, then add filters if too many results
2. **Use MeSH terms** - More precise than keyword searching
3. **Date filters** - Use `[pdat]` for recent literature reviews
4. **Combine queries** - Build complex queries with AND/OR/NOT
5. **Check result count** - ESearch returns total count in `esearchresult.count`

## Rate Limits

NCBI allows 3 requests/second without an API key. For higher throughput, users should register for an API key at: https://www.ncbi.nlm.nih.gov/account/settings/

Add API key to requests: `&api_key=YOUR_KEY`

