Communitygithub.com

V4TIME/V4SKILL

Recherche d'articles académiques sur arXiv par mot-clé, auteur, catégorie ou identifiant.

Qu'est-ce que V4SKILL ?

Cette compétence permet d'effectuer des recherches et de récupérer des articles académiques depuis arXiv via son API REST publique, sans nécessiter de clé API ni de dépendances externes. Elle offre une gamme complète d'actions : recherche par mot-clé, auteur, catégorie ou identifiant, tri des résultats, pagination, génération de BibTeX, et récupération des résumés ou PDFs. La compétence prend également en charge l'API Semantic Scholar pour obtenir des métriques de citations, des profils d'auteurs et des recommandations, fournissant ainsi un flux de travail de recherche complet. Elle est conçue pour être utilisée avec des agents IA, des terminaux de commande ou des environnements de script, avec des exemples prêts à l'emploi et un script utilitaire intégré pour un parsing XML propre.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Recherche arXiv

Recherchez et récupérez des articles académiques depuis arXiv via leur API REST gratuite. Pas de clé API, pas de dépendances — juste curl.

Référence rapide

ActionCommande
Rechercher des articlescurl "https://export.arxiv.org/api/query?search_query=all:QUERY&max_results=5"
Obtenir un article spécifiquecurl "https://export.arxiv.org/api/query?id_list=2402.03300"
Lire le résumé (web)web_extract(urls=["https://arxiv.org/abs/2402.03300"])
Lire l'article complet (PDF)web_extract(urls=["https://arxiv.org/pdf/2402.03300"])

Recherche d'articles

L'API renvoie du XML Atom. Analysez-le avec grep/sed ou passez-le par python pour une sortie propre.

Recherche de base

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

Sortie propre (analyse XML vers un format lisible)

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'   Auteurs : {authors}')
    print(f'   Publié : {published} | Catégories : {cats}')
    print(f'   Résumé : {summary}...')
    print(f'   PDF : https://arxiv.org/pdf/{arxiv_id}')
    print()
"

Syntaxe des requêtes de recherche

PréfixeRecherche dansExemple
all:Tous les champsall:transformer+attention
ti:Titreti:large+language+models
au:Auteurau:vaswani
abs:Résuméabs:reinforcement+learning
cat:Catégoriecat:cs.AI
co:Commentaireco:accepted+NeurIPS

Opérateurs booléens

# ET (par défaut lors de l'utilisation de +)
search_query=all:transformer+attention

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

# ET NON
search_query=all:language+model+ANDNOT+all:vision

# Expression exacte
search_query=ti:"chain+of+thought"

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

Tri et pagination

ParamètreOptions
sortByrelevance, lastUpdatedDate, submittedDate
sortOrderascending, descending
startDécalage des résultats (base 0)
max_resultsNombre de résultats (défaut 10, max 30000)
# Les 10 derniers articles en cs.AI
curl -s "https://export.arxiv.org/api/query?search_query=cat:cs.AI&sortBy=submittedDate&sortOrder=descending&max_results=10"

Récupération d'articles spécifiques

# Par identifiant arXiv
curl -s "https://export.arxiv.org/api/query?id_list=2402.03300"

# Plusieurs articles
curl -s "https://export.arxiv.org/api/query?id_list=2402.03300,2401.12345,2403.00001"

Génération BibTeX

Après avoir récupéré les métadonnées d'un article, générez une entrée BibTeX :

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('Article non trouvé')
title = entry.find('a:title', ns).text.strip().replace('\n', ' ')
authors = ' et '.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('}')
"

Lecture du contenu d'un article

Après avoir trouvé un article, lisez-le :

# Page de résumé (rapide, métadonnées + résumé)
web_extract(urls=["https://arxiv.org/abs/2402.03300"])

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

Pour le traitement PDF local, consultez la compétence ocr-and-documents.

Catégories courantes

CatégorieDomaine
cs.AIIntelligence artificielle
cs.CLCalcul et langage (TALN)
cs.CVVision par ordinateur
cs.LGApprentissage automatique
cs.CRCryptographie et sécurité
stat.MLApprentissage automatique (Statistiques)
math.OCOptimisation et contrôle
physics.comp-phPhysique computationnelle

Liste complète : https://arxiv.org/category_taxonomy

Script utilitaire

Le script scripts/search_arxiv.py gère l'analyse XML et fournit une sortie propre :

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

Aucune dépendance — utilise uniquement la bibliothèque standard Python.


Semantic Scholar (Citations, articles connexes, profils d'auteurs)

arXiv ne fournit pas de données de citations ni de recommandations. Utilisez l'API Semantic Scholar pour cela — gratuite, sans clé nécessaire pour une utilisation de base (1 req/seconde), renvoie du JSON.

Obtenir les détails d'un article + ses citations

# Par identifiant 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

# Par identifiant Semantic Scholar ou DOI
curl -s "https://api.semanticscholar.org/graph/v1/paper/DOI:10.1234/example?fields=title,citationCount"

Obtenir les citations D'UN article (qui l'a 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

Obtenir les références D'UN article (ce qu'il cite)

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

Recherche d'articles (alternative à la recherche arXiv, renvoie du 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

Obtenir des recommandations d'articles

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

Profil d'auteur

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

Champs Semantic Scholar utiles

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


Flux de travail de recherche complet

  1. Découverte : python scripts/search_arxiv.py "votre sujet" --sort date --max 10
  2. Évaluation de l'impact : curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:ID?fields=citationCount,influentialCitationCount"
  3. Lecture du résumé : web_extract(urls=["https://arxiv.org/abs/ID"])
  4. Lecture de l'article complet : web_extract(urls=["https://arxiv.org/pdf/ID"])
  5. Recherche de travaux connexes : curl -s "https://api.semanticscholar.org/graph/v1/paper/arXiv:ID/references?fields=title,citationCount&limit=20"
  6. Obtenir des recommandations : POST vers le point d'accès des recommandations de Semantic Scholar
  7. Suivre des auteurs : curl -s "https://api.semanticscholar.org/graph/v1/author/search?query=NOM"

Limites de taux

APITauxAuthentification
arXiv~1 req / 3 secondesAucune nécessaire
Semantic Scholar1 req / secondeAucune (100/sec avec clé API)

Remarques

  • arXiv renvoie du XML Atom — utilisez le script utilitaire ou l'extrait de parsing pour une sortie propre
  • Semantic Scholar renvoie du JSON — passez-le par python -m json.tool pour une meilleure lisibilité
  • Identifiants arXiv : ancien format (hep-th/0601001) vs nouveau (2402.03300)
  • PDF : https://arxiv.org/pdf/{id} — Résumé : https://arxiv.org/abs/{id}
  • HTML (lorsqu'il est disponible) : https://arxiv.org/html/{id}
  • Pour le traitement PDF local, consultez la compétence ocr-and-documents

Gestion des versions

  • arxiv.org/abs/1706.03762 pointe toujours vers la dernière version
  • arxiv.org/abs/1706.03762v1 pointe vers une version immuable spécifique
  • Lors de la génération de citations, conservez le suffixe de version que vous avez réellement lu pour éviter une dérive des citations (une version ultérieure peut modifier substantiellement le contenu)
  • Le champ <id> de l'API renvoie l'URL versionnée (par exemple, http://arxiv.org/abs/1706.03762v7)

Articles retirés

Les articles peuvent être retirés après soumission. Dans ce cas :

  • Le champ <summary> contient un avis de retrait (cherchez "withdrawn" ou "retracted")
  • Les champs de métadonnées peuvent être incomplets
  • Vérifiez toujours le résumé avant de traiter un résultat comme un article valide

Individual skills in this repo

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

Skills associés