literature-search-europepmc

Par mkurman · zorai

Recherchez des publications scientifiques sur Europe PMC et téléchargez des textes intégraux et des PDF en accès libre. Récupérez le texte intégral XML/texte brut par PMCID, obtenez des listes de citations et des bibliographies.

npx skills add https://github.com/mkurman/zorai --skill literature-search-europepmc

Base de données Europe PMC

Une skill pour rechercher, télécharger et explorer des articles en accès ouvert depuis Europe PMC — une base de données de littérature en sciences de la vie complète et gratuite contenant plus de 43 millions de résumés et 9 millions d'articles en texte intégral.

Prérequis

  1. uv: Lisez la skill uv et suivez ses instructions de configuration pour vous assurer que uv est installé et disponible dans le PATH.
  2. Notification utilisateur: Si le fichier LICENSE_NOTIFICATION.txt n'existe pas déjà dans le répertoire de cette skill, alors (1) notifiez l'utilisateur de manière prominente pour vérifier les conditions à l'adresse https://europepmc.org/ et de toujours vérifier la licence des articles récupérés par la skill pour d'éventuelles restrictions, puis (2) créez le fichier enregistrant le texte de la notification et l'horodatage.

Règles essentielles

  • Accès ouvert uniquement: Cette skill recherche exclusivement du contenu en accès ouvert. Le script ajoute automatiquement OPEN_ACCESS:y à chaque requête de recherche. NE SUPPRIMEZ PAS et NE MODIFIEZ PAS ce filtre.
  • NE JAMAIS exécuter python3 ou python3 -c directement: le Python système n'a pas nécessairement toutes les dépendances clés. N'essayez pas de faire de pip install ou de créer de nouveaux venvs.
  • Utilisez le wrapper: TOUJOURS utiliser le script fourni plutôt que d'appeler l'API directement. Le script gère le rate limiting (1 req/s) et les erreurs.
  • Fichiers de sortie: Tous les sous-commandes nécessitent --output pour écrire les résultats dans un fichier. Lisez le fichier de sortie séparément pour éviter un débordement de contexte.
  • Lister les sources: Si cette skill est utilisée, assurez-vous que cela est mentionné dans la sortie ET listez les URLs de tous les articles utilisés pour produire la sortie.

Scripts utilitaires

Toutes les commandes sont des sous-commandes de scripts/europepmc_api.py. Le rate limiting et les retries sont gérés automatiquement.

1. Recherche (search)

Rechercher dans Europe PMC par requête. Supporte la recherche par DOI, recherche par mots-clés, recherche par auteur, recherche par PMID et la syntaxe de recherche complète d'Europe PMC.

# Rechercher un article par DOI
uv run scripts/europepmc_api.py search "DOI:10.1038/s41586-021-03819-2" --output result.json

# Recherche par mots-clés
uv run scripts/europepmc_api.py search "CRISPR cancer" --max_results 5 --output results.json

# Recherche par auteur
uv run scripts/europepmc_api.py search "AUTH:Jumper J" --max_results 10 --output results.json

# Recherche par PMID
uv run scripts/europepmc_api.py search "EXT_ID:34265844 AND SRC:MED" --output result.json

# Trié par citations
uv run scripts/europepmc_api.py search "machine learning" \
  --sort "CITED desc" --max_results 20 --output results.json

Arguments:

  • query (str, requis) — requête de recherche utilisant la syntaxe d'Europe PMC
  • --output (str, requis) — chemin du fichier JSON de sortie
  • --max_results (int, par défaut 10) — résultats maximum par page (max 1000)
  • --result_type (str, par défaut core) — core (métadonnées complètes) ou lite
  • --cursor (str, par défaut *) — curseur pour la pagination; passez la valeur nextCursorMark d'une réponse précédente pour obtenir la page suivante
  • --sort (str) — ordre de tri, par exemple CITED desc, P_PDATE_D desc (date de publication décroissante), P_PDATE_D asc

Sortie: Fichier JSON avec trois champs:

  • hitCount (int) — nombre total d'articles correspondants
  • nextCursorMark (str) — curseur pour la page suivante; chaîne vide s'il n'y a plus de pages
  • results (list) — tableau d'objets de métadonnées d'articles

Référence rapide de la syntaxe de recherche:

  • DOI:10.xxxx/yyyy — recherche par DOI
  • EXT_ID:12345678 AND SRC:MED — recherche par PMID
  • AUTH:surname initials — recherche par auteur
  • TITLE:keyword — recherche dans le titre uniquement
  • JOURNAL:name — recherche par journal
  • PUB_YEAR:2024 ou (FIRST_PDATE:[2023-01-01 TO 2023-12-31]) — filtre par date
  • HAS_FT:y — restreindre aux articles ayant le texte intégral dans Europe PMC
  • Opérateurs booléens: AND, OR, NOT

Note: OPEN_ACCESS:y est automatiquement ajouté à toutes les requêtes. Vous n'avez pas besoin de l'ajouter manuellement.

2. Télécharger PDF (download_pdf)

Télécharger un PDF en accès ouvert depuis Europe PMC par PMCID.

uv run scripts/europepmc_api.py download_pdf PMC8371605 --output alphafold.pdf

Arguments:

  • pmcid (str, requis) — PubMed Central ID (par exemple PMC8371605)
  • --output (str, requis) — chemin du fichier pour sauvegarder le PDF

Sortie: Sauvegarde le PDF dans le fichier spécifié. Quitte avec une erreur si le PMCID n'est pas trouvé ou si la réponse n'est pas un PDF valide. Chaque fois que vous téléchargez un PDF, vérifiez que le PDF téléchargé n'est pas vide ou corrompu.

3. Obtenir le texte intégral (get_fulltext)

Récupérer le texte intégral d'un article en accès ouvert et le sauvegarder dans un fichier. Retourne du texte brut (balises XML supprimées) par défaut, ou du XML brut avec --format xml.

# Obtenir le texte brut (par défaut)
uv run scripts/europepmc_api.py get_fulltext PMC8371605 --output fulltext.txt

# Obtenir le XML brut
uv run scripts/europepmc_api.py get_fulltext PMC8371605 --format xml --output fulltext.xml

Arguments:

  • pmcid (str, requis) — PubMed Central ID
  • --output (str, requis) — chemin du fichier de sortie
  • --format (str, par défaut text) — text (texte brut) ou xml (XML JATS brut)

Sortie: Le texte intégral est écrit dans le fichier spécifié. Quitte avec une erreur si l'article n'est pas dans le sous-ensemble en accès ouvert d'Europe PMC.

Important: Seuls les articles du sous-ensemble PMC Open Access ont le texte intégral disponible. Si la récupération échoue, utilisez search pour vérifier le champ isOpenAccess et revenez au résumé.

4. Obtenir les citations (get_citations)

Récupérer les articles qui citent un article donné.

# Obtenir les citations pour l'article AlphaFold (PMID 34265844)
uv run scripts/europepmc_api.py get_citations MED 34265844 \
  --page_size 25 --output citations.json

Arguments:

  • source (str, requis) — base de données source: MED (PubMed), PMC, PPR (préimpressions), PAT (brevets)
  • article_id (str, requis) — ID d'article dans la base de données source
  • --output (str, requis) — chemin du fichier JSON de sortie
  • --page (int, par défaut 1) — numéro de page
  • --page_size (int, par défaut 25) — résultats par page

Sortie: Fichier JSON avec hitCount et tableau citations.

5. Obtenir les références (get_references)

Récupérer la liste de références (bibliographie) d'un article donné.

# Obtenir les références de l'article AlphaFold
uv run scripts/europepmc_api.py get_references MED 34265844 \
  --page_size 100 --output references.json

Arguments:

  • source (str, requis) — base de données source: MED, PMC, PPR, PAT
  • article_id (str, requis) — ID d'article dans la base de données source
  • --output (str, requis) — chemin du fichier JSON de sortie
  • --page (int, par défaut 1) — numéro de page
  • --page_size (int, par défaut 25) — résultats par page

Sortie: Fichier JSON avec hitCount et tableau references.

Workflows courants

DOI vers PDF

# Étape 1: Rechercher le PMCID
uv run scripts/europepmc_api.py search "DOI:10.1038/s41586-021-03819-2" --output result.json
PMCID=$(jq -r '.results[0].pmcid // empty' result.json)

# Étape 2: Télécharger le PDF
uv run scripts/europepmc_api.py download_pdf "$PMCID" --output paper.pdf

PMID vers texte intégral

# Étape 1: Trouver le PMCID à partir d'un PMID
uv run scripts/europepmc_api.py search "EXT_ID:34265844 AND SRC:MED" --output result.json
PMCID=$(jq -r '.results[0].pmcid // empty' result.json)

# Étape 2: Obtenir le texte intégral
uv run scripts/europepmc_api.py get_fulltext "$PMCID" --output fulltext.txt

Traversée du graphe de citations

# Trouver quels articles citent une étude majeure, puis vérifier leurs références
uv run scripts/europepmc_api.py get_citations MED 34265844 --page_size 50 --output citing.json
# Parser le PMID d'un article cité et explorer ses références
uv run scripts/europepmc_api.py get_references MED <CITING_PMID> --output refs.json

Recherche avec pagination

# Première page
uv run scripts/europepmc_api.py search "CRISPR" --max_results 100 --output page1.json
# Extraire le curseur pour la page suivante
CURSOR=$(jq -r '.nextCursorMark // empty' page1.json)
# Page suivante
uv run scripts/europepmc_api.py search "CRISPR" --max_results 100 --cursor "$CURSOR" --output page2.json

Skills similaires