hezaohezao/arxiv
Search arXiv papers by keyword, author, category, or ID.
npx skills add https://github.com/HezaoHezao/poirot --skill arxiv
Search and retrieve academic papers from arXiv via their free REST API. No API
key, no dependencies — just bash with curl.
| Action | Command |
|--------|---------|
| Search papers | bash("curl -s 'https://export.arxiv.org/api/query?search_query=all:QUERY&max_results=5'") |
| Get specific paper | bash("curl -s 'https://export.arxiv.org/api/query?id_list=2402.03300'") |
| Read abstract | browse_page(url="https://arxiv.org/abs/2402.03300") |
| Read full paper (PDF) | browse_page(url="https://arxiv.org/pdf/2402.03300") |
The API returns Atom XML. Parse with python3 for clean output.
curl -s "https://export.arxiv.org/api/query?search_query=all:GRPO+reinforcement+learning&max_results=5"
curl -s "https://export.arxiv.org/api/query?search_query=all:GRPO+reinforcement+learning&max_results=5&sortBy=submittedDate&sortOrder=descending" | python3 -c "
import sys, xml.etree.ElementTree as ET
ns = {'a': 'http://www.w3.org/2005/Atom'}
root = ET.fromstring(sys.stdin.read())
for entry in root.findall('a:entry', ns):
title = entry.find('a:title', ns).text.strip().replace('\n', ' ')
published = entry.find('a:published', ns).text[:10]
summary = entry.find('a:summary', ns).text.strip()[:200]
link = entry.find('a:id', ns).text
print(f'{published} | {title}')
print(f' {link}')
print(f' {summary}...')
print()
"
| Field | Example |
|-------|---------|
| All fields | all:transformer |
| Title | ti:attention |
| Author | au:vaswani |
| Abstract | abs:reinforcement |
| Category | cat:cs.CL |
| Combine (AND) | all:transformer+AND+ti:attention |
| Combine (OR) | all:LLM+OR+all:large+language+model |
cs.CL — Computation and Language (NLP)cs.CV — Computer Visioncs.LG — Machine Learningcs.AI — Artificial Intelligencestat.ML — Machine Learning (Stats)physics — Physicsbrowse_page for promising papersbrowse_page for full content (if needed)hammer it.
imaging"` returns 0 results. Use 2-3 core keywords + category filter.
submittedDate for topicalsearches; use submittedDate only when user wants chronological order.
browse_page on PDF URLs may return raw text or fail onsome papers. Prefer abstract pages for reliable content.
Take hezaohezao/arxiv from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.