
Literature Search
- 573 installs
- 56 repo stars
- Updated January 21, 2026
- yorkeccak/scientific-skills
literature-search is a Claude Code skill that runs comprehensive natural-language scientific literature searches across PubMed, arXiv, bioRxiv, and medRxiv for developers and researchers who need multi-source paper disco
About
literature-search from yorkeccak/scientific-skills searches PubMed, arXiv, bioRxiv, and medRxiv simultaneously using natural-language queries powered by Valyu semantic search. Developers pass plain-language research questions directly without constructing complex per-database API parameters or parsing search syntax. The skill aggregates results across all four major scientific literature sources in one workflow, licensed under MIT. Researchers reach for literature-search when surveying biomedical papers, preprints, or cross-disciplinary evidence before writing proposals, designing experiments, or grounding technical decisions in published science.
- Searches PubMed, arXiv, bioRxiv, and medRxiv simultaneously in one query
- Natural language queries powered by Valyu semantic search - no parameter parsing required
- Returns full-text content plus image links and figures from papers
- Unified results from all four sources in a single response
- Requires only a Valyu API key (includes $10 free credits)
Literature Search by the numbers
- 573 all-time installs (skills.sh)
- +16 installs in the week ending Jul 28, 2026 (Skillselion tracking)
- Ranked #1,630 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 1, 2026 (Skillselion catalog sync)
npx skills add https://github.com/yorkeccak/scientific-skills --skill literature-searchAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 573 |
|---|---|
| repo stars | ★ 56 |
| Last updated | January 21, 2026 |
| Repository | yorkeccak/scientific-skills ↗ |
How do you search PubMed and arXiv together?
Run comprehensive natural-language scientific literature searches across PubMed, arXiv, bioRxiv and medRxiv without writing complex API queries.
Who is it for?
Developers and researchers who need cross-database scientific literature surveys without building per-archive API queries manually.
Skip if: Teams needing patent searches, clinical trial registries, or full-text PDF extraction pipelines outside the four supported preprint and journal indexes.
When should I use this skill?
The user needs scientific literature from PubMed, arXiv, bioRxiv, or medRxiv using natural-language research questions.
What you get
Aggregated paper results from PubMed, arXiv, bioRxiv, and medRxiv ranked by semantic relevance to the natural-language query.
- Aggregated literature search results
- Multi-source paper references
By the numbers
- Searches 4 scientific literature databases: PubMed, arXiv, bioRxiv, and medRxiv
Files
Literature Search
Search across all major scientific literature databases (PubMed, arXiv, bioRxiv, medRxiv) simultaneously using natural language queries powered by Valyu's semantic search API.
Why This Skill is Powerful
- No API Parameter Parsing: Just pass natural language queries directly - no need to construct complex search parameters
- Semantic Search: Understands the meaning of your query, not just keyword matching
- Full-Text Access: Returns complete article content, not just abstracts
- Image Links: Includes figures and images from papers
- Comprehensive Coverage: Search across PubMed, arXiv, bioRxiv, and medRxiv simultaneously
- Unified Results: Get results from all sources in a single query
Requirements
1. Node.js 18+ (uses built-in fetch) 2. Valyu API key from https://platform.valyu.ai ($10 free credits)
CRITICAL: Script Path Resolution
The scripts/search commands in this documentation are relative to this skill's installation directory.
Before running any command, locate the script using:
LITERATURE_SCRIPT=$(find ~/.claude/plugins/cache -name "search" -path "*/literature-search/*/scripts/*" -type f 2>/dev/null | head -1)Then use the full path for all commands:
$LITERATURE_SCRIPT "CRISPR gene editing advances" 15API Key Setup Flow
When you run a search and receive "setup_required": true, follow this flow:
1. Ask the user for their API key: "To search scientific literature, I need your Valyu API key. Get one free ($10 credits) at https://platform.valyu.ai"
2. Once the user provides the key, run:
scripts/search setup <api-key>3. Retry the original search.
When to Use This Skill
- Comprehensive literature reviews across all domains
- Finding all relevant research on a topic
- Cross-domain scientific discovery
- Combining biomedical, physics, and preprint literature
- Emerging research across disciplines
Output Format
{
"success": true,
"type": "literature_search",
"query": "CRISPR gene editing advances",
"result_count": 15,
"results": [
{
"title": "Article Title",
"url": "https://...",
"content": "Full article text with figures...",
"source": "pubmed|arxiv|biorxiv|medrxiv",
"relevance_score": 0.95,
"images": ["https://example.com/figure1.jpg"]
}
],
"cost": 0.025
}Processing Results
With jq
# Get article titles
scripts/search "query" 20 | jq -r '.results[].title'
# Get URLs
scripts/search "query" 20 | jq -r '.results[].url'
# Extract full content
scripts/search "query" 20 | jq -r '.results[].content'
# Filter by source
scripts/search "query" 20 | jq -r '.results[] | select(.source == "arxiv") | .title'Common Use Cases
Comprehensive Literature Review
# Search across all sources for thorough review
scripts/search "mechanisms of cellular senescence" 100Cross-Disciplinary Research
# Find papers spanning multiple fields
scripts/search "quantum computing applications in drug discovery" 50Recent Developments
# Get latest preprints and publications
scripts/search "foundation models for protein folding" 30Medical Research
# Search biomedical literature comprehensively
scripts/search "immunotherapy checkpoint inhibitors resistance" 40Error Handling
All commands return JSON with success field:
{
"success": false,
"error": "Error message"
}Exit codes:
0- Success1- Error (check JSON for details)
API Endpoint
- Base URL:
https://api.valyu.ai/v1 - Endpoint:
/search - Authentication: X-API-Key header
Architecture
scripts/
├── search # Bash wrapper
└── search.mjs # Node.js CLIDirect API calls using Node.js built-in fetch(), zero external dependencies.
Adding to Your Project
If you're building an AI project and want to integrate Literature Search directly into your application, use the Valyu SDK:
Python Integration
from valyu import Valyu
client = Valyu(api_key="your-api-key")
response = client.search(
query="your search query here",
included_sources=["valyu/valyu-pubmed", "valyu/valyu-arxiv", "valyu/valyu-biorxiv", "valyu/valyu-medrxiv"],
max_results=20
)
for result in response["results"]:
print(f"Title: {result['title']}")
print(f"URL: {result['url']}")
print(f"Content: {result['content'][:500]}...")TypeScript Integration
import { Valyu } from "valyu-js";
const client = new Valyu("your-api-key");
const response = await client.search({
query: "your search query here",
includedSources: ["valyu/valyu-pubmed", "valyu/valyu-arxiv", "valyu/valyu-biorxiv", "valyu/valyu-medrxiv"],
maxResults: 20
});
response.results.forEach((result) => {
console.log(`Title: ${result.title}`);
console.log(`URL: ${result.url}`);
console.log(`Content: ${result.content.substring(0, 500)}...`);
});See the Valyu docs for full integration examples and SDK reference.
#!/bin/bash
# Search CLI wrapper
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SCRIPT_PATH="${SCRIPT_DIR}/search"
# Special commands for discoverability
case "$1" in
--path|--location|--where)
echo "$SCRIPT_PATH"
exit 0
;;
--script-dir)
echo "$SCRIPT_DIR"
exit 0
;;
esac
node "${SCRIPT_DIR}/search.mjs" "$@"
#!/usr/bin/env node
/**
* literature-search Search via Valyu API
* Full-text search across multiple data sources with semantic search capabilities
*/
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
import { homedir } from 'os';
import { join } from 'path';
const VALYU_API_BASE = 'https://api.valyu.ai/v1';
const CONFIG_DIR = join(homedir(), '.valyu');
const CONFIG_FILE = join(CONFIG_DIR, 'config.json');
/**
* Get API key from multiple sources (in order of priority):
* 1. Environment variable (VALYU_API_KEY)
* 2. Config file (~/.valyu/config.json)
*/
function getApiKey() {
if (process.env.VALYU_API_KEY) {
return process.env.VALYU_API_KEY;
}
if (existsSync(CONFIG_FILE)) {
try {
const config = JSON.parse(readFileSync(CONFIG_FILE, 'utf-8'));
if (config.apiKey) {
return config.apiKey;
}
} catch (e) {
// Ignore parse errors
}
}
return null;
}
/**
* Save API key to config file
*/
function saveApiKey(apiKey) {
if (!existsSync(CONFIG_DIR)) {
mkdirSync(CONFIG_DIR, { recursive: true });
}
let config = {};
if (existsSync(CONFIG_FILE)) {
try {
config = JSON.parse(readFileSync(CONFIG_FILE, 'utf-8'));
} catch (e) {
// Start fresh if parse fails
}
}
config.apiKey = apiKey;
writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
return true;
}
/**
* Return setup required response
*/
function setupRequiredResponse() {
return {
success: false,
setup_required: true,
message: "Valyu API key not configured. Get your free API key ($10 credits) at https://platform.valyu.ai"
};
}
/**
* Search multiple sources via Valyu API
*/
async function search(query, maxResults = 10) {
const apiKey = getApiKey();
if (!apiKey) {
return setupRequiredResponse();
}
try {
const response = await fetch(`${VALYU_API_BASE}/search`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': apiKey
},
body: JSON.stringify({
query: query,
search_type: 'proprietary',
included_sources: ['valyu/valyu-pubmed', 'valyu/valyu-arxiv', 'valyu/valyu-biorxiv', 'valyu/valyu-medrxiv'],
limit: maxResults
})
});
const data = await response.json();
if (!response.ok) {
return {
success: false,
error: data.detail || data.message || `HTTP ${response.status}`,
status: response.status
};
}
return {
success: true,
type: 'literature_search',
query: query,
result_count: data.results?.length || 0,
results: data.results || [],
cost: data.cost || 0
};
} catch (error) {
return {
success: false,
error: error.message
};
}
}
/**
* Setup command - save API key
*/
function setup(apiKey) {
if (!apiKey) {
return {
success: false,
error: "API key required. Usage: search setup <api-key>"
};
}
saveApiKey(apiKey);
return {
success: true,
type: 'setup',
message: "API key saved to ~/.valyu/config.json"
};
}
// Main CLI handler
const [,, command, ...args] = process.argv;
(async () => {
let result;
if (command === 'setup') {
result = setup(args[0]);
} else {
// Treat first arg as query, second as maxResults
const query = command || '';
const maxResults = args[0] ? parseInt(args[0], 10) : 10;
if (!query) {
result = {
success: false,
error: "Query required. Usage: search <query> [maxResults]"
};
} else {
result = await search(query, maxResults);
}
}
console.log(JSON.stringify(result, null, 2));
process.exit(result.success ? 0 : 1);
})();
Related skills
How it compares
Choose literature-search for cross-archive biomedical and preprint discovery rather than general web search or citation-manager bibliography formatting.
FAQ
Which databases does literature-search query?
literature-search searches PubMed, arXiv, bioRxiv, and medRxiv simultaneously. Developers submit natural-language queries powered by Valyu semantic search without constructing separate API parameters for each database.
Does literature-search require complex API query syntax?
literature-search accepts plain natural-language research questions directly. Valyu semantic search handles query interpretation across PubMed, arXiv, bioRxiv, and medRxiv, eliminating manual per-archive API parameter construction.