Download academic papers from open-access sources when the user provides a DOI/arXiv ID or requests a keyword-based paper search, and return the saved PDF path.
59
68%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Fix and improve this skill with Tessl
tessl review fix ./scientific-skills/Evidence Insight/research-paper-downloader/SKILL.md10.1038/s41586-020-2649-2) and wants the corresponding open-access PDF.1706.03762) and wants the preprint PDF.max_results){first_author}_{year}_{title}.pdf (truncated to a maximum length).>= 3.8requests >= 2.0.0api.semanticscholar.orgapi.openalex.orgapi.unpaywall.orgarxiv.orgpubmed.ncbi.nlm.nih.govapi.crossref.orgDownload by DOI:
python scripts/download.py --doi "10.1038/s41586-020-2649-2" --output "~/Downloads/ResearchPapers"Download by arXiv ID:
python scripts/download.py --arxiv "1706.03762" --output "~/Downloads/ResearchPapers"Search by keywords and download up to 3 results:
python scripts/download.py --search "attention mechanism" --max-results 3 --output "~/Downloads/ResearchPapers"from pathlib import Path
# These functions are expected to be provided by the skill implementation (e.g., scripts/download.py or a module it exposes).
from download import download_by_doi, download_by_arxiv, search_download
output_dir = Path.home() / "Downloads" / "ResearchPapers"
output_dir.mkdir(parents=True, exist_ok=True)
# 1) Download by DOI
pdf_path = download_by_doi(doi="10.1016/j.clinimag.2022.03.004", output_dir=str(output_dir))
print("Saved to:", pdf_path)
# 2) Download by arXiv ID
pdf_path = download_by_arxiv(arxiv_id="2310.12345", output_dir=str(output_dir))
print("Saved to:", pdf_path)
# 3) Keyword search and download
pdf_paths = search_download(query="transformer attention", max_results=5, output_dir=str(output_dir))
for p in pdf_paths:
print("Saved to:", p)The downloader attempts open-access sources in priority order and stops at the first successful PDF retrieval:
api.semanticscholar.orgapi.openalex.orgapi.unpaywall.orgarxiv.orgpubmed.ncbi.nlm.nih.govapi.crossref.orgIf a source is unavailable, returns no OA link, or times out, the implementation should automatically proceed to the next source.
Recommended configuration keys:
output_dir: default download directory (e.g., ~/Downloads/ResearchPapers)timeout: request timeout in seconds (recommended range: 30-120)max_retries: maximum retry attempts for transient failurespreferred_sources: ordered list of sources to try (overrides default priority)output_dir.~/Downloads/ResearchPapers (if not overridden).{first_author}_{year}_{title}.pdfmax_retries, then fall back to the next source.research_paper_downloader_result.md unless the skill documentation defines a better convention.Run this minimal verification path before full execution when possible:
python scripts/download.py --helpExpected output format:
Result file: research_paper_downloader_result.md
Validation summary: PASS/FAIL with brief notes
Assumptions: explicit list if any63c61d3
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.