
Biomedical Search
- 672 installs
- 56 repo stars
- Updated January 21, 2026
- yorkeccak/scientific-skills
biomedical-search is a CLI agent skill that runs semantic full-text searches across biomedical and academic sources via the Valyu API for developers who need terminal-driven scientific literature discovery.
About
biomedical-search is a Node.js CLI skill in the scientific-skills repository that wraps search.mjs behind a bash entry script. It performs full-text semantic search across multiple biomedical and scientific data sources using the Valyu API at api.valyu.ai. Developers invoke it from terminal sessions or agent workflows to discover papers, datasets, and academic evidence without leaving the command line. The wrapper exposes --path, --location, and --script-dir flags for discoverability. Reach for biomedical-search when building health-tech features, reviewing clinical claims, or grounding agent answers in searchable scientific sources.
- Semantic search via Valyu API across multiple biomedical and scientific data sources
- CLI wrapper with Node.js backend for easy agent integration
- Automatic API key management from environment or ~/.valyu/config.json
- Supports both one-off queries and persistent research sessions
- Designed for reproducible research workflows in health and life sciences
Biomedical Search by the numbers
- 672 all-time installs (skills.sh)
- +15 installs in the week ending Jul 28, 2026 (Skillselion tracking)
- Ranked #1,461 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Security screen: HIGH risk (skills.sh audit)
- Data as of Aug 1, 2026 (Skillselion catalog sync)
npx skills add https://github.com/yorkeccak/scientific-skills --skill biomedical-searchAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 672 |
|---|---|
| repo stars | ★ 56 |
| Security audit | 2 / 3 scanners passed |
| Last updated | January 21, 2026 |
| Repository | yorkeccak/scientific-skills ↗ |
How do you search biomedical literature from the CLI?
Run semantic full-text searches across biomedical, scientific, and academic sources directly from the terminal or agent workflows.
Who is it for?
Developers and researchers building health, bioinformatics, or evidence-driven features who need programmatic literature search from agent or shell workflows.
Skip if: General web search, non-scientific content discovery, or teams without Valyu API access and Node.js runtime support.
When should I use this skill?
A task requires semantic search across biomedical papers, clinical data, or academic sources from terminal or agent automation.
What you get
Semantic search result sets, Valyu API responses, and cached query output from biomedical and academic full-text sources.
- semantic search results
- biomedical literature hits
Files
Biomedical Search
Search across all major biomedical databases (PubMed, bioRxiv, medRxiv, ClinicalTrials.gov, FDA drug labels) 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 content from literature, trials, and drug labels
- Image Links: Includes figures and images when available
- Comprehensive Coverage: Search across PubMed, bioRxiv, medRxiv, clinical trials, and drug labels simultaneously
- Unified Results: Get results from all biomedical 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:
BIOMEDICAL_SCRIPT=$(find ~/.claude/plugins/cache -name "search" -path "*/biomedical-search/*/scripts/*" -type f 2>/dev/null | head -1)Then use the full path for all commands:
$BIOMEDICAL_SCRIPT "CAR-T cell therapy" 20API 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 biomedical databases, 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
- Complete biomedical information gathering
- Clinical research combined with basic science
- Finding trials, literature, and official drug info together
- Evidence-based medicine research
- Disease understanding from multiple angles
Output Format
{
"success": true,
"type": "biomedical_search",
"query": "CAR-T cell therapy",
"result_count": 20,
"results": [
{
"title": "Title",
"url": "https://...",
"content": "Full content...",
"source": "pubmed|biorxiv|medrxiv|clinical-trials|drug-labels",
"relevance_score": 0.95,
"images": ["https://example.com/figure1.jpg"]
}
],
"cost": 0.035
}Processing Results
With jq
# Get 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 type
scripts/search "query" 20 | jq -r '.results[] | select(.source == "clinical-trials") | .title'Common Use Cases
Clinical Research Planning
# Gather evidence for clinical study design
scripts/search "phase 2 trials checkpoint inhibitors melanoma" 50Drug Safety Assessment
# Search literature, labels, and trials for safety data
scripts/search "SGLT2 inhibitors cardiovascular safety" 40Treatment Protocol Development
# Find current practice and emerging approaches
scripts/search "pembrolizumab dosing regimens NSCLC" 30Medical Writing
# Comprehensive research for medical communications
scripts/search "JAK inhibitors rheumatoid arthritis efficacy" 60Error 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 Biomedical 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-biorxiv", "valyu/valyu-medrxiv", "valyu/valyu-clinical-trials", "valyu/valyu-drug-labels"],
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-biorxiv", "valyu/valyu-medrxiv", "valyu/valyu-clinical-trials", "valyu/valyu-drug-labels"],
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
/**
* biomedical-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-biorxiv', 'valyu/valyu-medrxiv', 'valyu/valyu-clinical-trials', 'valyu/valyu-drug-labels'],
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: 'biomedical_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
FAQ
What API does biomedical-search use?
biomedical-search queries scientific and biomedical sources through the Valyu API using a Node.js search.mjs script. The bash wrapper delegates all arguments to that script for full-text semantic search from the terminal.
How do you run biomedical-search from the shell?
biomedical-search executes via a bash wrapper that calls node search.mjs with passed arguments. Special flags --path, --location, and --script-dir print script locations for agent discoverability.
Is Biomedical Search safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.