Communitygithub.com

V4TIME/V4SKILL

Busca artículos académicos en arXiv por palabra clave, autor, categoría o ID.

¿Qué es V4SKILL?

Este skill permite buscar y recuperar artículos académicos del repositorio arXiv a través de su API REST gratuita, sin necesidad de clave API ni dependencias externas más allá de curl y Python estándar. Es útil para investigadores, desarrolladores y entusiastas del aprendizaje automático que desean acceder rápidamente a metadatos, resúmenes y archivos PDF de artículos, así como obtener citas en formato BibTeX. Además, integra la API de Semantic Scholar para obtener datos de citas, trabajos relacionados y perfiles de autores, ampliando las capacidades de investigación más allá de lo que ofrece arXiv por sí solo. El skill se basa en comandos curl directos y scripts Python para procesar XML y JSON, soportando consultas complejas con operadores booleanos y filtros por campo, y maneja correctamente problemas como versiones de IDs y artículos retirados.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/V4TIME/V4SKILL/tree/HEAD/research/arxiv

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Investigación en arXiv

Busca y recupera artículos académicos de arXiv a través de su API REST gratuita. Sin clave API, sin dependencias — solo curl.

Referencia rápida

AcciónComando
Buscar artículoscurl "https://export.arxiv.org/api/query?search_query=all:CONSULTA&max_results=5"
Obtener un artículo específicocurl "https://export.arxiv.org/api/query?id_list=2402.03300"
Leer resumen (web)web_extract(urls=["https://arxiv.org/abs/2402.03300"])
Leer artículo completo (PDF)web_extract(urls=["https://arxiv.org/pdf/2402.03300"])

Búsqueda de artículos

La API devuelve Atom XML. Analízalo con grep/sed o canalízalo a través de python para una salida limpia.

Búsqueda básica

curl -s "https://export.arxiv.org/api/query?search_query=all:GRPO+reinforcement+learning&max_results=5"

Salida limpia (analizar XML a formato legible)

curl -s "https://export.arxiv.org/api/query?search_query=all:GRPO+reinforcement+learning&max_results=5&sortBy=submittedDate&sortOrder=descending" | python -c "
import sys, xml.etree.ElementTree as ET
ns = {'a': 'http://www.w3.org/2005/Atom'}
root = ET.parse(sys.stdin).getroot()
for i, entry in enumerate(root.findall('a:entry', ns)):
    title = entry.find('a:title', ns).text.strip().replace('\n', ' ')
    arxiv_id = entry.find('a:id', ns).text.strip().split('/abs/')[-1]
    published = entry.find('a:published', ns).text[:10]
    authors = ', '.join(a.find('a:name', ns).text for a in entry.findall('a:author', ns))
    summary = entry.find('a:summary', ns).text.strip()[:200]
    cats = ', '.join(c.get('term') for c in entry.findall('a:category', ns))
    print(f'{i+1}. [{arxiv_id}] {title}')
    print(f'   Autores: {authors}')
    print(f'   Publicado: {published} | Categorías: {cats}')
    print(f'   Resumen: {summary}...')
    print(f'   PDF: https://arxiv.org/pdf/{arxiv_id}')
    print()
"

Sintaxis de consulta

PrefijoBusca enEjemplo
all:Todos los camposall:transformer+attention
ti:Títuloti:large+language+models
au:Autorau:vaswani
abs:Resumenabs:reinforcement+learning
cat:Categoríacat:cs.AI
co:Comentarioco:accepted+NeurIPS

Operadores booleanos

# AND (por defecto al usar +)
search_query=all:transformer+attention

# OR
search_query=all:GPT+OR+all:BERT

# AND NOT
search_query=all:language+model+ANDNOT+all:vision

# Frase exacta
search_query=ti:"chain+of+thought"

# Combinado
search_query=au:hinton+AND+cat:cs.LG

Ordenación y paginación

ParámetroOpciones
sortByrelevance, lastUpdatedDate, submittedDate
sortOrderascending, descending
startDesplazamiento de resultados (basado en 0)
max_resultsNúmero de resultados (por defecto 10, máximo 30000)
# Últimos 10 artículos en cs.AI
curl -s "https://export.arxiv.org/api/query?search_query=cat:cs.AI&sortBy=submittedDate&sortOrder=descending&max_results=10"

Obtener artículos específicos

# Por ID de arXiv
curl -s "https://export.arxiv.org/api/query?id_list=2402.03300"

# Varios artículos
curl -s "https://export.arxiv.org/api/query?id_list=2402.03300,2401.12345,2403.00001"

Generación de BibTeX

Después de obtener los metadatos de un artículo, genera una entrada BibTeX:

{% raw %}

curl -s "https://export.arxiv.org/api/query?id_list=1706.03762" | python -c "
import sys, xml.etree.ElementTree as ET
ns = {'a': 'http://www.w3.org/2005/Atom', 'arxiv': 'http://arxiv.org/schemas/atom'}
root = ET.parse(sys.stdin).getroot()
entry = root.find('a:entry', ns)
if entry is None: sys.exit('Artículo no encontrado')
title = entry.find('a:title', ns).text.strip().replace('\n', ' ')
authors = ' and '.join(a.find('a:name', ns).text for a in entry.findall('a:author', ns))
year = entry.find('a:published', ns).text[:4]
raw_id = entry.find('a:id', ns).text.strip().split('/abs/')[-1]
cat = entry.find('arxiv:primary_category', ns)
primary = cat.get('term') if cat is not None else 'cs.LG'
last_name = entry.find('a:author', ns).find('a:name', ns).text.split()[-1]
print(f'@article{{{last_name}{year}_{raw_id.replace(\".\", \"\")},')
print(f'  title     = {{{title}}},')
print(f'  author    = {{{authors}}},')
print(f'  year      = {{{year}}},')
print(f'  eprint    = {{{raw_id}}},')
print(f'  archivePrefix = {{arXiv}},')
print(f'  primaryClass  = {{{primary}}},')
print(f'  url       = {{https://arxiv.org/abs/{raw_id}}}')
print('}')
"

{% endraw %}

Lectura del contenido del artículo

Después de encontrar un artículo, léelo:

# Página de resumen (rápida, metadatos + resumen)
web_extract(urls=["https://arxiv.org/abs/2402.03300"])

# Artículo completo (PDF → markdown via Firecrawl)
web_extract(urls=["https://arxiv.org/pdf/2402.03300"])

Para procesamiento local de PDF, consulta el skill ocr-and-documents.

Categorías comunes

CategoríaCampo
cs.AIInteligencia Artificial
cs.CLComputación y Lenguaje (NLP)
cs.CVVisión por Computador
cs.LGAprendizaje Automático
cs.CRCriptografía y Seguridad
stat.MLAprendizaje Automático (Estadística)
math.OCOptimización y Control
physics.comp-phFísica Computacional

Lista completa: https://arxiv.org/category_taxonomy

Script auxiliar

El script scripts/search_arxiv.py maneja el análisis de XML y proporciona una salida limpia:

python scripts/search_arxiv.py "GRPO reinforcement learning"
python scripts/search_arxiv.py "transformer attention" --max 10 --sort date
python scripts/search_arxiv.py --author "Yann LeCun" --max 5
python scripts/search_arxiv.py --category cs.AI --sort date
python scripts/search_arxiv.py --id 2402.03300
python scripts/search_arxiv.py --id 2402.03300,2401.12345

Sin dependencias — solo usa la biblioteca estándar de Python.


Semantic Scholar (Citas, Trabajos Relacionados, Perfiles de Autor)

arXiv no proporciona datos de citas ni recomendaciones. Usa la API de Semantic Scholar para eso — gratuita, no requiere clave para uso básico (1 req/segundo), devuelve JSON.

Obtener detalles del artículo + citas

# Por ID de arXiv
curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:2402.03300?fields=title,authors,citationCount,referenceCount,influentialCitationCount,year,abstract" | python -m json.tool

# Por ID de Semantic Scholar o DOI
curl -s "https://api.semanticscholar.org/graph/v1/paper/DOI:10.1234/example?fields=title,citationCount"

Obtener citas DE un artículo (quién lo citó)

curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:2402.03300/citations?fields=title,authors,year,citationCount&limit=10" | python -m json.tool

Obtener referencias DE un artículo (lo que cita)

curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:2402.03300/references?fields=title,authors,year,citationCount&limit=10" | python -m json.tool

Buscar artículos (alternativa a la búsqueda de arXiv, devuelve JSON)

curl -s "https://api.semanticscholar.org/graph/v1/paper/search?query=GRPO+reinforcement+learning&limit=5&fields=title,authors,year,citationCount,externalIds" | python -m json.tool

Obtener recomendaciones de artículos

curl -s -X POST "https://api.semanticscholar.org/recommendations/v1/papers/" \
  -H "Content-Type: application/json" \
  -d '{"positivePaperIds": ["arXiv:2402.03300"], "negativePaperIds": []}' | python -m json.tool

Perfil de autor

curl -s "https://api.semanticscholar.org/graph/v1/author/search?query=Yann+LeCun&fields=name,hIndex,citationCount,paperCount" | python -m json.tool

Campos útiles de Semantic Scholar

title, authors, year, abstract, citationCount, referenceCount, influentialCitationCount, isOpenAccess, openAccessPdf, fieldsOfStudy, publicationVenue, externalIds (contiene ID de arXiv, DOI, etc.)


Flujo de trabajo de investigación completo

  1. Descubrir: python scripts/search_arxiv.py "tu tema" --sort date --max 10
  2. Evaluar impacto: curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:ID?fields=citationCount,influentialCitationCount"
  3. Leer resumen: web_extract(urls=["https://arxiv.org/abs/ID"])
  4. Leer artículo completo: web_extract(urls=["https://arxiv.org/pdf/ID"])
  5. Encontrar trabajos relacionados: curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:ID/references?fields=title,citationCount&limit=20"
  6. Obtener recomendaciones: POST al endpoint de recomendaciones de Semantic Scholar
  7. Seguir autores: curl -s "https://api.semanticscholar.org/graph/v1/author/search?query=NOMBRE"

Límites de velocidad

APITasaAutenticación
arXiv~1 req / 3 segundosNinguna necesaria
Semantic Scholar1 req / segundoNinguna (100/segundo con clave API)

Notas

  • arXiv devuelve Atom XML — usa el script auxiliar o el fragmento de análisis para una salida limpia
  • Semantic Scholar devuelve JSON — canaliza a través de python -m json.tool para legibilidad
  • IDs de arXiv: formato antiguo (hep-th/0601001) vs nuevo (2402.03300)
  • PDF: https://arxiv.org/pdf/{id} — Resumen: https://arxiv.org/abs/{id}
  • HTML (cuando esté disponible): https://arxiv.org/html/{id}
  • Para procesamiento local de PDF, consulta el skill ocr-and-documents

Versionado de IDs

  • arxiv.org/abs/1706.03762 siempre resuelve a la última versión
  • arxiv.org/abs/1706.03762v1 apunta a una versión específica e inmutable
  • Al generar citas, conserva el sufijo de versión que realmente leíste para evitar desviaciones en las citas (una versión posterior puede cambiar el contenido sustancialmente)
  • El campo <id> de la API devuelve la URL versionada (p. ej., http://arxiv.org/abs/1706.03762v7)

Artículos retirados

Los artículos pueden ser retirados después de su envío. Cuando esto sucede:

  • El campo <summary> contiene un aviso de retirada (busca "withdrawn" o "retracted")
  • Los campos de metadatos pueden estar incompletos
  • Siempre revisa el resumen antes de tratar un resultado como un artículo válido

Individual skills in this repo

This repo contains 12 individual skills — each has its own dedicated page.

Skills relacionados