Communitygithub.com

V4TIME/V4SKILL

Pesquise artigos do arXiv por palavra-chave, autor, categoria ou ID.

O que é V4SKILL?

Esta skill permite que agentes de IA pesquisem e recuperem artigos acadêmicos do repositório arXiv utilizando a API REST gratuita, sem necessidade de chave de API ou dependências complexas — apenas comandos curl e Python. Ela suporta consultas por palavra-chave, autor, categoria, título, resumo, e busca por IDs específicos, além de ordenação e paginação dos resultados. A skill também integra a API do Semantic Scholar para obter dados de citações, perfis de autores e recomendações de artigos, complementando as informações do arXiv. O fluxo de trabalho completo inclui descoberta, avaliação de impacto, leitura de resumos e artigos completos, e geração automática de BibTeX, sendo útil para pesquisadores e desenvolvedores que precisam de acesso rápido e programático à literatura científica.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Pesquisa no arXiv

Pesquise e recupere artigos acadêmicos do arXiv via sua API REST gratuita. Sem chave de API, sem dependências — apenas curl.

Referência Rápida

AçãoComando
Pesquisar artigoscurl "https://export.arxiv.org/api/query?search_query=all:QUERY&max_results=5"
Obter artigo específicocurl "https://export.arxiv.org/api/query?id_list=2402.03300"
Ler resumo (web)web_extract(urls=["https://arxiv.org/abs/2402.03300"])
Ler artigo completo (PDF)web_extract(urls=["https://arxiv.org/pdf/2402.03300"])

Pesquisando Artigos

A API retorna XML Atom. Analise com grep/sed ou encaminhe via python para obter uma saída limpa.

Pesquisa básica

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

Saída limpa (analisar XML para formato legível)

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} | Categorias: {cats}')
    print(f'   Resumo: {summary}...')
    print(f'   PDF: https://arxiv.org/pdf/{arxiv_id}')
    print()
"

Sintaxe da Consulta de Pesquisa

PrefixoPesquisa emExemplo
all:Todos os camposall:transformer+attention
ti:Títuloti:large+language+models
au:Autorau:vaswani
abs:Resumoabs:reinforcement+learning
cat:Categoriacat:cs.AI
co:Comentárioco:accepted+NeurIPS

Operadores booleanos

# E (padrão ao usar +)
search_query=all:transformer+attention

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

# E NÃO
search_query=all:language+model+ANDNOT+all:vision

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

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

Ordenação e Paginação

ParâmetroOpções
sortByrelevance, lastUpdatedDate, submittedDate
sortOrderascending, descending
startDeslocamento do resultado (base 0)
max_resultsNúmero de resultados (padrão 10, máximo 30000)
# Últimos 10 artigos em cs.AI
curl -s "https://export.arxiv.org/api/query?search_query=cat:cs.AI&sortBy=submittedDate&sortOrder=descending&max_results=10"

Obtendo Artigos Específicos

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

# Vários artigos
curl -s "https://export.arxiv.org/api/query?id_list=2402.03300,2401.12345,2403.00001"

Geração de BibTeX

Após obter os metadados de um artigo, gere uma 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('Artigo não 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 %}

Lendo Conteúdo de Artigos

Após encontrar um artigo, leia-o:

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

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

Para processamento local de PDF, consulte a skill ocr-and-documents.

Categorias Comuns

CategoriaÁrea
cs.AIInteligência Artificial
cs.CLComputação e Linguagem (PLN)
cs.CVVisão Computacional
cs.LGAprendizado de Máquina
cs.CRCriptografia e Segurança
stat.MLAprendizado de Máquina (Estatística)
math.OCOtimização e Controle
physics.comp-phFísica Computacional

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

Script Auxiliar

O script scripts/search_arxiv.py lida com a análise XML e fornece saída limpa:

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

Sem dependências — usa apenas a stdlib do Python.


Semantic Scholar (Citações, Artigos Relacionados, Perfis de Autores)

O arXiv não fornece dados de citações ou recomendações. Use a API do Semantic Scholar para isso — gratuita, sem chave necessária para uso básico (1 req/segundo), retorna JSON.

Obter detalhes do artigo + citações

# Por ID do 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 do Semantic Scholar ou DOI
curl -s "https://api.semanticscholar.org/graph/v1/paper/DOI:10.1234/example?fields=title,citationCount"

Obter citações DE um artigo (quem o citou)

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

Obter referências DE um artigo (o que ele 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

Pesquisar artigos (alternativa à pesquisa do arXiv, retorna 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

Obter recomendações de artigos

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 úteis do Semantic Scholar

title, authors, year, abstract, citationCount, referenceCount, influentialCitationCount, isOpenAccess, openAccessPdf, fieldsOfStudy, publicationVenue, externalIds (contém ID do arXiv, DOI, etc.)


Fluxo de Trabalho Completo de Pesquisa

  1. Descobrir: python scripts/search_arxiv.py "seu tópico" --sort date --max 10
  2. Avaliar impacto: curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:ID?fields=citationCount,influentialCitationCount"
  3. Ler resumo: web_extract(urls=["https://arxiv.org/abs/ID"])
  4. Ler artigo completo: web_extract(urls=["https://arxiv.org/pdf/ID"])
  5. Encontrar trabalhos relacionados: curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:ID/references?fields=title,citationCount&limit=20"
  6. Obter recomendações: POST para o endpoint de recomendações do Semantic Scholar
  7. Rastrear autores: curl -s "https://api.semanticscholar.org/graph/v1/author/search?query=NOME"

Limites de Taxa

APITaxaAutenticação
arXiv~1 req / 3 segundosNenhuma necessária
Semantic Scholar1 req / segundoNenhuma (100/segundo com chave de API)

Notas

  • O arXiv retorna XML Atom — use o script auxiliar ou o trecho de análise para obter saída limpa
  • O Semantic Scholar retorna JSON — encaminhe via python -m json.tool para legibilidade
  • IDs do arXiv: formato antigo (hep-th/0601001) vs novo (2402.03300)
  • PDF: https://arxiv.org/pdf/{id} — Resumo: https://arxiv.org/abs/{id}
  • HTML (quando disponível): https://arxiv.org/html/{id}
  • Para processamento local de PDF, consulte a skill ocr-and-documents

Versionamento de ID

  • arxiv.org/abs/1706.03762 sempre resolve para a versão mais recente
  • arxiv.org/abs/1706.03762v1 aponta para uma versão específica imutável
  • Ao gerar citações, preserve o sufixo de versão da versão que você realmente leu para evitar desvio de citação (uma versão posterior pode alterar substancialmente o conteúdo)
  • O campo <id> da API retorna a URL versionada (ex.: http://arxiv.org/abs/1706.03762v7)

Artigos Retirados

Artigos podem ser retirados após a submissão. Quando isso acontece:

  • O campo <summary> contém um aviso de retirada (procure por "withdrawn" ou "retracted")
  • Os campos de metadados podem estar incompletos
  • Sempre verifique o resumo antes de tratar um resultado como um artigo válido

Individual skills in this repo

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

Habilidades Relacionadas