用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/brycewang-stanford/Auto-Empirical-Research-Skills --skill plos-open-access-api命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | plos-open-access-api |
| description | Search PLOS open access journals with full-text Solr-powered API |
| metadata | {"openclaw":{"emoji":"🔬","category":"literature","subcategory":"search","keywords":["PLOS","open access","biomedical","Solr search","full text","peer reviewed"],"source":"https://api.plos.org/"}} |
PLOS (Public Library of Science) publishes 7 peer-reviewed open access journals covering biology, medicine, genetics, and more. The Search API provides Solr-powered full-text search across all PLOS content — 350K+ articles, all freely available under CC-BY licenses. No authentication required. Particularly valuable for biomedical and life sciences systematic reviews.
https://api.plos.org/search
# Basic keyword search
curl "https://api.plos.org/search?q=CRISPR+gene+editing&rows=20&wt=json"
# Search in specific fields
curl "https://api.plos.org/search?q=title:\"machine learning\"+AND+abstract:biomarker&wt=json"
# Filter by journal
curl "https://api.plos.org/search?q=microbiome&fq=journal:\"PLOS ONE\"&wt=json"
# Filter by date range
curl "https://api.plos.org/search?q=COVID-19+vaccine&\
fq=publication_date:[2024-01-01T00:00:00Z TO 2026-12-31T23:59:59Z]&wt=json"
# Filter by article type
curl "https://api.plos.org/search?q=climate+change&fq=article_type:\"Research Article\"&wt=json"
# Return specific fields only
curl "https://api.plos.org/search?q=deep+learning&fl=id,title,author,publication_date,score&wt=json"
| Field | Description | Example |
|---|---|---|
title | Article title | title:"attention mechanism" |
abstract | Abstract text | abstract:neural+network |
body | Full text body | body:transformer |
author | Author name | author:"Vaswani" |
subject | Subject area | subject:"Neuroscience" |
journal | Journal name | journal:"PLOS Medicine" |
| Parameter | Description | Default |
|---|---|---|
q | Solr query (supports AND/OR/NOT) | Required |
fq | Filter query (narrows without affecting score) | None |
fl | Fields to return (comma-separated) | All |
rows | Results per page (max 999) | 10 |
start | Pagination offset | 0 |
sort | Sort order | score desc |
wt | Format: json or xml | xml |
hl | Enable highlighting | false |
| Field | Type | Description |
|---|---|---|
id | string | DOI |
title | string | Article title |
author | array | Author names |
abstract | string | Abstract text |
body | string | Full text (large) |
publication_date | date | Publication date |
journal | string | Journal name |
article_type | string | Article type |
subject | array | Subject categories |
score | float | Relevance score |
| Journal | Scope |
|---|---|
| PLOS ONE | Multidisciplinary |
| PLOS Biology | Life sciences |
| PLOS Medicine | Clinical medicine |
| PLOS Genetics | Genetics and genomics |
| PLOS Computational Biology | Computational biology |
| PLOS Pathogens | Infectious disease |
| PLOS Neglected Tropical Diseases | Tropical medicine |
import requests
BASE_URL = "https://api.plos.org/search"
def search_plos(query: str, rows: int = 20,
journal: str = None,
from_date: str = None,
fields: str = None) -> list:
"""Search PLOS open access articles."""
params = {
"q": query,
"wt": "json",
"rows": rows,
"fl": fields or "id,title,author,abstract,publication_date,journal,score",
}
fq_parts = []
if journal:
fq_parts.append(f'journal:"{journal}"')
if from_date:
fq_parts.append(
f"publication_date:[{from_date}T00:00:00Z TO NOW]"
)
if fq_parts:
params["fq"] = " AND ".join(fq_parts)
resp = requests.get(BASE_URL, params=params)
resp.raise_for_status()
data = resp.json()
results = []
for doc in data.get("response", {}).get("docs", []):
results.append({
"doi": doc.get("id"),
"title": doc.get("title"),
"authors": doc.get("author", []),
"date": doc.get("publication_date", "")[:],
: doc.get(),
: (doc.get(, [])[])[:]
(doc.get(), )
(doc.get(, ))[:],
})
results
() -> :
params = {
: ,
: ,
: ,
}
resp = requests.get(BASE_URL, params=params)
resp.raise_for_status()
docs = resp.json().get(, {}).get(, [])
docs[].get(, ) docs
papers = search_plos(
,
journal=,
from_date=,
)
p papers:
()
()
papers = search_plos()
p papers:
()
# Phrase proximity search (words within 5 of each other)
q=abstract:"machine learning"~5
# Boosted field search
q=title:"CRISPR"^2 OR abstract:"CRISPR"
# Wildcard search
q=title:neuro*
# Range query on dates
fq=publication_date:[2024-01-01T00:00:00Z TO 2024-12-31T23:59:59Z]
No formal rate limit, but PLOS requests courtesy delays of 1 request per second for bulk operations. No authentication needed.