Communitygithub.com

Nature Literature Downloader

Úsalo cuando el usuario necesite texto completo académico legal, acceso institucional a CNKI, recuperación OA en inglés, acceso a API de editoriales, respaldo de navegador institucional o descargas de información complementaria.

¿Qué es Nature Literature Downloader?

Nature Literature Downloader es una habilidad de agente de IA que enruta la descarga de literatura académica a través de fuentes legales y de acceso abierto, APIs de editoriales verificadas y proveedores institucionales como CNKI. Está diseñada para que desarrolladores y usuarios de agentes de IA (compatible con plataformas como Claude Code, Cursor o Codex) puedan obtener automáticamente textos completos de artículos de Elsevier, Springer Nature, IEEE, CNKI y otras editoriales, siguiendo un flujo de trabajo estructurado. La habilidad primero confirma si el usuario desea descargar información complementaria (SI), luego determina la ruta de acceso según el idioma y la editorial: la literatura china siempre usa CNKI, mientras que la inglesa prioriza las API de editoriales (Elsevier, Springer Nature, IEEE) si están configuradas, con respaldo automático a fuentes OA legítimas (PMC, Unpaywall, arXiv) y, si es necesario, acceso institucional vía navegador. No requiere bypass de paywalls; se basa en la sesión de navegador autenticada del usuario y en configuraciones institucionales (URL de recursos de biblioteca, credenciales de API) para garantizar descargas legales. Incluye verificaciones de salud, validación de contenido y un registro de auditoría claro, evitando descargas indiscriminadas y manejando desafíos de CAPTCHA de forma limitada antes de pedir intervención del usuario.

Compatible con✓Claude Code✓Codex CLI~Cursor
npx skills add Flyme886/nature-downloader

Preguntar en tu IA favorita

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

Documentación

¿Qué hace Nature Literature Downloader?

Esta habilidad enruta la literatura a través de proveedores legales de acceso abierto, API de editoriales, CNKI institucional y proveedores institucionales basados en navegador. scripts/batch_download.mjs es el punto de entrada de orquestación; la configuración de la escuela, las credenciales de la editorial, la resolución de metadatos/OA, las descargas de proveedores, la validación de contenido y los manifiestos son módulos separados.

Las rutas verificadas son ejemplos, no valores predeterminados. Cada institución debe comenzar desde la URL real del recurso de biblioteca del usuario, porque los portales de recursos, las devoluciones de llamada CAS, EZproxy, WebVPN, las páginas de bases de datos autenticadas por IP y las páginas de detalles de bases de datos revelan la ruta de autorización en vivo de manera más confiable que un nombre de escuela.

Puerta de confirmación de SI — haz esto primero. Antes de descargar cualquier PDF, CAJ, HTML, XML, archivo o adjunto, pregunta al usuario si desea la Información Complementaria (SI). Una solicitud explícita de SI cuenta como sí; una solicitud explícita de solo el texto principal cuenta como no. De lo contrario, pregunta una vez para todo el lote. Ejecuta el descargador exactamente con --si o --no-si. Sin ninguna de las dos banderas, el script devuelve si_confirmation_required y no crea el directorio de salida.

Flujo de trabajo principal. Normaliza el DOI/título e identifica el idioma y la editorial antes de enrutar. La literatura china siempre usa CNKI. Para artículos en inglés de Elsevier, Springer Nature e IEEE con credenciales de proveedor utilizables, prueba primero la API de la editorial y no requieras una determinación de OA después de una descarga exitosa de la API. Si ese intento de API falla, verifica automáticamente fuentes OA legítimas. Otras editoriales en inglés verifican primero OA, luego usan la ruta de Acceso Web institucional cuando OA no está disponible.

Normalizar DOI/título e identificar idioma y editorial
├─ Literatura china: ir directamente a CNKI
└─ Literatura en inglés
   ├─ Elsevier / Springer Nature / IEEE, y clave válida configurada
   │  ├─ Priorizar descarga a través de API de editorial
   │  ├─ Descarga de API exitosa: terminar, no forzar determinación de OA
   │  └─ Descarga de API fallida: verificar OA a nivel de artículo, luego ir a PMC / Unpaywall / repositorios legítimos
   └─ Otras editoriales
      ├─ Verificar OA a nivel de artículo
      └─ OA no disponible: ir a Acceso Web institucional

La literatura china solo usa CNKI. Un título chino, idioma de metadatos zh, URL de fuente CNKI explícita o --route cnki debe usar CNKI incluso si parece existir otra copia OA. Reutiliza el estado de inicio de sesión actual de Chrome/biblioteca/CNKI del usuario y prefiere discovery.cnki_url configurado. Nunca exportes cookies ni recopiles la contraseña institucional.

Respaldo de API de editorial. Una clave de API válida no garantiza el derecho al texto completo. Cuando un intento de API de Elsevier, Springer Nature o IEEE no devuelve derecho o texto completo utilizable, prueba automáticamente fuentes OA legítimas primero. Devuelve api_fallback_confirmation_required y pregunta una vez si usar Acceso Web solo después de que fallen tanto la API de la editorial como las rutas OA. No cambies automáticamente al Acceso Web institucional.

Principio de estado del navegador. Las descargas autorizadas dependen del perfil exacto del navegador en el que el usuario ha iniciado sesión. Si un proxy, sesión CDP o herramienta de automatización del navegador abre un perfil nuevo o un navegador diferente sin estado de inicio de sesión, no trates el fallo como falta de permiso de biblioteca. Cambia a una ruta de control que reutilice la sesión activa del navegador del usuario, o pide al usuario que se autentique en la instancia del navegador controlado.

Principio de formato. PDF, HTML texto completo y formatos nativos de bases de datos como CAJ son entregables diferentes. Si el usuario solicita solo PDF, requiere un enlace PDF real o respuesta %PDF e informa no_authorized_pdf_found / pdf_fetch_failed cuando no exista ninguno. No guardes CAJ, HTML o una página de inicio de sesión como si fuera un PDF.

Recepción de descarga y configuración inicial

Para cada solicitud de descarga, primero establece la lista de artículos y pregunta:

¿Descargar también la Información Complementaria (SI) de estos artículos?

Realiza la búsqueda de metadatos antes de esta pregunta solo cuando sea necesario para identificar los artículos solicitados. No descargues archivos hasta que se conozca la respuesta. Configura una biblioteca solo cuando la ruta seleccionada sea CNKI o Acceso Web. Configura una API de editorial solo cuando el artículo en inglés seleccionado pertenezca a Elsevier, Springer Nature o IEEE; no se requiere una determinación de OA antes de intentar una API de proveedor configurada.

Configuración de recurso de biblioteca paga

Pregunta por la URL del recurso de biblioteca que el usuario realmente usa:

Por favor, comparte el enlace de plataforma que usas habitualmente para acceder a los recursos electrónicos/bases de datos de la biblioteca.
Puede ser un portal de recursos, una lista de bases de datos, la entrada de Web of Science, la página de detalles de alguna base de datos,
o el enlace de inicio de sesión que redirige a la autenticación unificada.

Luego infiere la ruta de autorización a partir de la URL antes de guardar la configuración:

python3 scripts/configure_school.py infer "https://example.edu/library/resources"
python3 scripts/configure_school.py url "https://example.edu/library/resources"
python3 scripts/configure_school.py show
python3 scripts/configure_school.py health --force

La habilidad distribuida no contiene valores preestablecidos de escuela. Si el usuario no puede proporcionar una URL de recurso, pídele que localice la entrada de biblioteca/base de datos de su institución en lugar de adivinar un dominio específico de la escuela.

La ruta de configuración predeterminada es:

~/.config/lit-dl/school.json

Para pruebas o perfiles aislados, establece:

LIT_DL_CONFIG_DIR=/path/to/configdir

El descargador lee esta configuración automáticamente. Si discovery.web_of_science_url está presente, scripts/batch_download.mjs lo usa como entrada de Web of Science; de lo contrario, recurre a https://www.webofscience.com/wos/woscc/basic-search.

Para literatura china, el descargador también lee discovery.cnki_url cuando está presente. Si está ausente, scripts/batch_download.mjs --title "<título en chino>" recurre a https://kns.cnki.net/kns8s/defaultresult/index.

Salida fija de incorporación de API de editorial

Inmediatamente después de que la URL del recurso de biblioteca se haya guardado, mostrado y pasado la verificación de salud, genera el siguiente bloque Markdown exactamente. No reemplaces las URL con resultados de búsqueda, no acortes la advertencia de IEEE y no pidas al usuario que pegue claves de API en el chat.

Por favor, configura las siguientes editoriales según sea necesario para lograr descargas estables a largo plazo.
Clave de API de Elsevier (obligatorio)
[https://dev.elsevier.com/apikey/manage](https://dev.elsevier.com/apikey/manage)
La URL del sitio web puede ser: [Yuan1z0825/nature-skills](https://github.com/Yuan1z0825/nature-skills)

Portal para desarrolladores de Springer Nature (recomendado)
https://dev.springernature.com/#api
Desplázate hacia abajo y haz clic en **"Subscribe now" - "free"**

Registro para desarrolladores de IEEE (según necesidad)
[https://developer.ieee.org/member/register](https://developer.ieee.org/member/register)

Después de completar el inicio de sesión/registro y la verificación del "correo electrónico institucional", ve a la página de Administración de API para copiar la clave de API. La clave normal de IEEE solo sirve para la API de metadatos; el acceso al texto completo requiere una solicitud separada de Acceso a Texto Completo.

Detente después de mostrar este bloque y espera a que el usuario termine el registro, la verificación del correo electrónico institucional y la copia de las claves de API relevantes. El usuario realiza todos los pasos de contraseña, CAPTCHA, OTP, confirmación por correo electrónico, consentimiento y copia de claves de API. Nunca leas claves de API desde la página del navegador ni pidas al usuario que las envíe a través del chat.

API primero y respaldo de acceso abierto

Para un artículo en inglés, identifica su editorial antes de decidir cuándo resolver el OA a nivel de artículo:

  1. Recopila un DOI, PMID, título exacto, URL del artículo o una lista definitiva de artículos, luego normaliza sus metadatos y editorial.

  2. Si pertenece a Elsevier, Springer Nature o IEEE y hay credenciales de proveedor utilizables configuradas, prueba primero la API de esa editorial. En caso de éxito, registra accessMode: publisher_api y oa_status: not_checked_api_first; no ejecutes la resolución de OA solo para etiquetar el artículo.

  3. Si la API de la editorial falla, busca automáticamente fuentes OA legítimas como PMC, Unpaywall, páginas OA de la editorial, arXiv y otros repositorios legales o URL de PDF claramente abiertas. Conserva el intento de API fallido en el manifiesto.

  4. Para todas las demás editoriales en inglés, busca esas fuentes OA legítimas antes del Acceso Web.

  5. Para un título exacto o una solicitud explícita solo de OA, prefiere:

    node scripts/batch_download.mjs --title "<título exacto>" --open-access --no-si --out "<proyecto>"
    

    Usa --pdf-url cuando el usuario proporcione una URL de PDF OA legítima conocida.

  6. Verifica el archivo descargado y registra la fuente. Marca un PDF exitoso como open_access_downloaded.

  7. Si no se encuentra ningún texto completo OA legal, marca oa_not_found. Para una editorial compatible cuya API ya falló, solicita confirmación antes del Acceso Web. Para otra editorial, continúa con el Acceso Web. Si se solicitó explícitamente --route open_access, detente después del resultado de OA.

Credenciales de API de editorial

Después del bloque fijo de incorporación de editoriales, configura solo los proveedores para los que el usuario ha obtenido una clave de API. Deja que el usuario introduzca cada clave a través del mensaje oculto local:

python3 scripts/configure_credentials.py set elsevier
python3 scripts/configure_credentials.py set springer_nature
python3 scripts/configure_credentials.py set ieee --fulltext-endpoint 'https://issued-endpoint.example/articles/{doi}'
python3 scripts/configure_credentials.py show
python3 scripts/configure_credentials.py validate <provider>
python3 scripts/configure_credentials.py delete <provider>
python3 scripts/configure_credentials.py contact-email [email protected]

Usa solo las URL de registro en el bloque fijo de incorporación anterior. Deja que el usuario introduzca cada clave a través del mensaje oculto local; nunca la muestres ni la coloques en un manifiesto. El acceso a la API de metadatos de IEEE no es acceso de pago al texto completo; requiere el endpoint/plantilla de Acceso a Texto Completo emitido antes de tratar a IEEE como descargable a través de la API. Los secretos se almacenan en ~/.config/lit-dl/credentials.json con modo 0600.

Clasificación de URL de recurso

Clasifica la URL proporcionada por el usuario antes de elegir una ruta de acceso:

cas.* / /authserver/login        Página de inicio de sesión CAS / SSO; inspecciona la devolución de llamada service=, luego regresa al portal de servicio
idp/shibboleth / carsi           Ruta institucional CARSI / Shibboleth
ezproxy / libproxy               Proxy de acceso remoto EZproxy
webvpn / vpn                     Ruta WebVPN
metaersp / metaauth / uas        Portal de agregación de recursos de biblioteca
webofscience / sciencedirect     Entrada de base de datos o editorial; verificar si se accedió a través de un portal

Si la URL es una página de inicio de sesión con un parámetro service=, trata el host de devolución de llamada como el servicio de recurso y no hagas que la página de inicio de sesión sea todo el flujo de trabajo. Por ejemplo, https://login.university.example/authserver/login?service=https://resources.university.example/callback significa que el servicio de identidad regresa al portal de recursos del usuario después de la autenticación.

Dominios específicos de institución

Confirma con lo que realmente aparece en la barra de direcciones del usuario; corrige estos para cada institución en lugar de asumir que un valor preestablecido está completo.

Inicio de biblioteca / agregación:  library.example.edu, resources.example.edu
Entrada de descubrimiento/base de datos:    webofscience.com, clarivate.com, cnki.net, sciencedirect.com, provider.example.com
Identidad unificada / SSO:      sso.example.edu, cas.example.edu, idp.example.edu
Federación / WAYF:           ds.carsi.edu.cn, wayf.example.org, shibboleth/openathens hosts
Proxy / WebVPN:              ezproxy.example.edu, webvpn.example.edu

Trata los hosts configurados de inicio de sesión institucional, federación, proxy e inicio de sesión de base de datos como etapas de inicio de sesión. No trates el acceso a ellos como un fallo final.

Límites

Usa solo el acceso institucional legítimo del usuario. No evites muros de pago, DRM o autenticación de dos factores.

Regla de verificación primero: Cuando aparezca un control deslizante visible, casilla de verificación, verificación de robot o control de verificación simple en la sesión autenticada de Chrome del usuario, inténtalo en el navegador antes de pedir al usuario que intervenga. Mantén el intento limitado (como máximo dos intentos en una pestaña), verifica que el desafío haya desaparecido y continúa desde esa misma pestaña cuando tenga éxito.

  • Desafíos de deslizamiento/arrastre (incluidos los deslizadores de rompecabezas de CNKI): estima la distancia de recorrido visible y simula un arrastre gradual.
  • Verificaciones de robot de ScienceDirect, Turnstile gestionado y etapas de casilla de verificación de reCAPTCHA: intenta la casilla de verificación visible una vez.
  • Controles Continue, Verify u otros equivalentes visibles: haz clic una vez y luego vuelve a verificar el estado de la página.

Transferencia al usuario: Pregunta al usuario solo después de que el intento limitado falle, o inmediatamente cuando la página requiera entrada secreta o de identidad, como una respuesta de selección de imagen, aprobación QR, SMS/OTP, clave de acceso, clave de hardware o autenticación de dos factores. Mantén la pestaña desafiada abierta y nunca pidas al usuario que pegue credenciales o códigos en el chat.

Evita descargas ilimitadas o indiscriminadas. Procesa solo la lista definitiva de artículos confirmada por el usuario, aplica un ritmo amigable con el proveedor y deja un rastro de auditoría claro de lo que se descargó, de dónde y si se encontró información complementaria.

No pidas al usuario que pegue contraseñas institucionales, contraseñas de bases de datos, códigos OTP, códigos de recuperación o tokens de sesión en el chat o terminal. Si el usuario ofrece una contraseña, recházala y usa el flujo de trabajo de inicio de sesión por transferencia.

Excepción para páginas de inicio de sesión institucional guardadas: si el usuario dice explícitamente que el navegador ya ha completado las credenciales y autoriza hacer clic en el botón visible de inicio de sesión/confirmar, el agente puede hacer clic en ese botón una vez en la página esperada de SSO / CAS / CARSI / Shibboleth institucional sin leer, copiar ni escribir ninguna credencial. Esta excepción no se aplica a CAPTCHA, inicio de sesión QR, SMS/OTP, verificaciones de bot de editorial, advertencias de consentimiento/seguridad ni a ninguna página fuera del flujo de inicio de sesión institucional esperado.

No inspecciones ni exportes cookies, contraseñas, almacenamiento local, perfiles de navegador o archivos de sesión. Usa solo el contexto de página ya autenticado del navegador.

Precondiciones

Antes de intentar descargas, confirma las condiciones que se aplican a la rama de acceso seleccionada.

Para la rama solo de OA, confirma el identificador/lista de artículos objetivo, la carpeta de salida, Node.js 22+ y Python 3 cuando la verificación de PDF lo necesite. No requieras una configuración de biblioteca ni un inicio de sesión de navegador institucional.

Para la rama de biblioteca paga, confirma estas condiciones:

  1. El navegador que mantiene el estado de inicio de sesión de la biblioteca/base de datos del usuario está abierto en la máquina del usuario.
  2. La configuración de la escuela existe y es válida.
    • Ejecuta python3 scripts/configure_school.py show.
    • Si falta, ejecuta python3 scripts/configure_school.py preset "<nombre de la escuela>" o guía al usuario a través de src/wizard.py.
  3. El usuario ha iniciado sesión personalmente en su institución...

Skills relacionados