Communitygithub.com

Nature Literature Downloader

Nutzung für rechtskonforme akademische Volltexte, CNKI-Institutionszugriff, englische OA-Beschaffung, Publisher-API-Zugriff, institutionelle Browser-Fallback und Downloads von ergänzenden Materialien.

Was ist Nature Literature Downloader?

Dieser Skill leitet die Recherche von akademischer Literatur über rechtskonforme Open-Access-Quellen, Publisher-APIs, CNKI-Institutionszugriffe und browserbasierte institutionelle Anbieter. Er eignet sich für Entwickler und Nutzer von KI-Agenten, die wissenschaftliche Volltexte benötigen und dabei rechtliche und institutionelle Zugangswege korrekt einhalten möchten. Der Skill unterstützt Plattformen wie Claude Code, Cursor oder Codex und arbeitet mit DOI/Normalisierung, Metadatenabgleich, OA-Erkennung und modularen Downloadskripten. Das Hauptskript `scripts/batch_download.mjs` orchestriert den gesamten Workflow, wobei die Konfiguration von Bibliotheksressourcen, Publisher-Anmeldedaten und OA-Routing über separate Module erfolgt. Der Workflow priorisiert chinesische Literatur strikt über CNKI, englische Literatur von Elsevier, Springer Nature und IEEE über Publisher-APIs (mit automatischem OA-Fallback bei Fehlschlag) und andere englische Verlage über OA-Prüfung vor institutionellem Webzugriff. Der Skill vermeidet automatisierte Umgehungen von Paywalls oder DRM und setzt auf legitime institutionelle Authentifizierung über den bestehenden Browser-Login des Nutzers. Er enthält eine feste Publisher-Onboarding-Ausgabe, die den Nutzer durch die Registrierung bei Elsevier, Springer Nature und IEEE führt, ohne API-Keys über den Chat zu übertragen. Der Skill ist besonders nützlich für Szenarien mit Mehrfachanforderungen (z. B. Hauptartikel plus ergänzende Materialien) und bietet eine strukturierte Fehlerbehandlung mit klaren Rückgabecodes bei fehlgeschlagenen API- oder OA-Versuchen.

Funktioniert mit✓Claude Code✓Codex CLI~Cursor
npx skills add Flyme886/nature-downloader

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht Nature Literature Downloader?

Dieser Skill leitet Literatur über rechtskonforme Open-Access-, Publisher-API-, CNKI-Institutions- und browserbasierte institutionelle Anbieter. scripts/batch_download.mjs ist der Orchestrierungs-Einstiegspunkt; Schulkonfiguration, Publisher-Anmeldedaten, Metadaten/OA-Auflösung, Provider-Downloads, Inhaltsvalidierung und Manifeste sind separate Module.

Verifizierte Routen sind Beispiele, keine Voreinstellungen. Jede Institution sollte von der tatsächlichen Bibliotheks-Ressourcen-URL des Nutzers ausgehen, da Ressourcenportale, CAS-Callbacks, EZproxy, WebVPN, IP-authentifizierte Datenbankseiten und Datenbank-Detailseiten den Live-Autorisierungspfad zuverlässiger anzeigen als ein Schulname.

SI-Bestätigungsgate – dies zuerst tun. Vor dem Herunterladen eines PDF, CAJ, HTML, XML, Archivs oder Anhangs fragen, ob der Nutzer ergänzende Informationen (Supporting Information) wünscht. Eine explizite Anfrage nach SI gilt als Ja; eine explizite Anfrage nur nach 正文 gilt als Nein. Andernfalls einmal für den gesamten Batch fragen. Führen Sie den Downloader mit genau einem der Flags --si oder --no-si aus. Ohne eines dieser Flags gibt das Skript si_confirmation_required zurück und erstellt kein Ausgabeverzeichnis.

Hauptworkflow. Normalisieren Sie die DOI/den Titel und identifizieren Sie Sprache und Publisher vor dem Routing. Chinesische Literatur verwendet immer CNKI. Bei englischen Elsevier-, Springer Nature- und IEEE-Artikeln mit nutzbaren Provider-Anmeldedaten zuerst die Publisher-API versuchen und nach erfolgreichem API-Download keine OA-Bestimmung verlangen. Wenn dieser API-Versuch fehlschlägt, automatisch legitime OA-Quellen prüfen. Bei anderen englischen Publishern zuerst OA prüfen, dann den institutionellen Webzugriff verwenden, wenn OA nicht verfügbar ist.

Normalisiere DOI/Titel und identifiziere Sprache und Publisher
├─ Chinesische Literatur: direkt zu CNKI
└─ Englische Literatur
   ├─ Elsevier / Springer Nature / IEEE, und konfigurierter gültiger Key
   │  ├─ Priorität: Download über Publisher-API
   │  ├─ API-Erfolg: Ende, keine OA-Prüfung erforderlich
   │  └─ API-Fehlschlag: Prüfe Artikel-OA, dann zu PMC / Unpaywall / legitimes Repository
   └─ Andere Publisher
      ├─ Prüfe Artikel-OA
      └─ OA nicht verfügbar: Gehe zu Web Access (Institution)

Chinesische Literatur ist nur CNKI. Ein chinesischer Titel, zh Metadaten-Sprache, explizite CNKI-Quell-URL oder --route cnki muss CNKI verwenden, selbst wenn eine andere OA-Kopie zu existieren scheint. Wiederverwenden der aktuellen Chrome-Bibliothek/des CNKI-Login-Status des Nutzers und bevorzugen der konfigurierten discovery.cnki_url. Niemals Cookies exportieren oder das Institutionspasswort sammeln.

Publisher-API-Fallback. Ein gültiger API-Key garantiert keinen Volltext-Zugriff. Wenn ein Elsevier-, Springer Nature- oder IEEE-API-Versuch keinen Berechtigungsnachweis oder keinen nutzbaren Volltext zurückgibt, automatisch zuerst legitime OA-Quellen versuchen. Rückgabe von api_fallback_confirmation_required und einmal fragen, ob Web Access verwendet werden soll, erst nachdem sowohl die Publisher-API als auch die OA-Routen fehlgeschlagen sind. Nicht automatisch zum institutionellen Webzugriff wechseln.

Browser-State-Prinzip. Autorisiertes Herunterladen hängt vom genauen Browser-Profil ab, in dem der Nutzer eingeloggt ist. Wenn ein Proxy, eine CDP-Sitzung oder ein Browser-Automatisierungstool ein neues Profil oder einen anderen Browser ohne Login-Status öffnet, behandeln Sie den Fehler nicht als fehlende Bibliotheksberechtigung. Wechseln Sie zu einem Kontrollpfad, der die aktive Browsersitzung des Nutzers wiederverwendet, oder bitten Sie den Nutzer, sich in der gesteuerten Browser-Instanz zu authentifizieren.

Formatprinzip. PDF, HTML-Volltext und datenbankspezifische Formate wie CAJ sind unterschiedliche Liefergegenstände. Wenn der Nutzer nur PDF anfordert, einen echten PDF-Link oder %PDF-Antwort verlangen und no_authorized_pdf_found / pdf_fetch_failed melden, wenn keiner existiert. CAJ, HTML oder eine Login-Seite nicht als PDF speichern.

Download-Eingang und Erstkonfiguration

Für jede Download-Anfrage zuerst die Papierliste erstellen und fragen:

Sollen auch die ergänzenden Materialien (SI) dieser Literatur heruntergeladen werden?

Metadatenabfrage nur vor dieser Frage durchführen, wenn nötig, um die angeforderten Papiere zu identifizieren. Keine Dateien herunterladen, bis die Antwort bekannt ist. Eine Bibliothek nur konfigurieren, wenn die ausgewählte Route CNKI oder Web Access ist. Eine Publisher-API nur konfigurieren, wenn der ausgewählte englische Artikel zu Elsevier, Springer Nature oder IEEE gehört; eine OA-Bestimmung ist nicht erforderlich, bevor eine konfigurierte Provider-API versucht wird.

Konfiguration der bezahlten Bibliotheksressource

Nach der Bibliotheks-Ressourcen-URL fragen, die der Nutzer tatsächlich verwendet:

Bitte geben Sie den Link zur Plattform, die Sie normalerweise für den Zugriff auf elektronische Ressourcen/Datenbanken der Bibliothek verwenden.
Dies kann ein Ressourcenportal, eine Datenbankliste, ein Web of Science-Einstieg, eine bestimmte Datenbank-Detailseite oder ein Link zur einheitlichen Authentifizierung sein.

Dann den Autorisierungspfad aus der URL ableiten, bevor die Konfiguration gespeichert wird:

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

Der verteilte Skill enthält keine Schulvoreinstellungen. Wenn der Nutzer keine Ressourcen-URL angeben kann, bitten Sie ihn stattdessen, den Bibliotheks-/Datenbankeintrag seiner Einrichtung zu finden, anstatt eine schulspezifische Domain zu erraten.

Der Standardkonfigurationspfad ist:

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

Für Tests oder isolierte Profile setzen Sie:

LIT_DL_CONFIG_DIR=/path/to/configdir

Der Downloader liest diese Konfiguration automatisch. Wenn discovery.web_of_science_url vorhanden ist, verwendet scripts/batch_download.mjs es als Web of Science-Einstieg; andernfalls fällt es auf https://www.webofscience.com/wos/woscc/basic-search zurück.

Für chinesische Literatur liest der Downloader auch discovery.cnki_url, wenn vorhanden. Wenn nicht vorhanden, fällt scripts/batch_download.mjs --title "<chinesischer Titel>" auf https://kns.cnki.net/kns8s/defaultresult/index zurück.

Feste Publisher-API-Onboarding-Ausgabe

Unmittelbar nachdem die Bibliotheks-Ressourcen-URL gespeichert, angezeigt und den Health-Check bestanden hat, geben Sie den folgenden Markdown-Block exakt aus. Ersetzen Sie die URLs nicht durch Suchergebnisse, kürzen Sie die IEEE-Warnung nicht und bitten Sie den Nutzer nicht, API-Keys in den Chat einzufügen.

Bitte konfigurieren Sie die folgenden Publisher nach Bedarf, um einen langfristig stabilen Download zu gewährleisten:
Elsevier API Key (erforderlich)
[https://dev.elsevier.com/apikey/manage](https://dev.elsevier.com/apikey/manage)
Website URL kann sein: [Yuan1z0825/nature-skills](https://github.com/Yuan1z0825/nature-skills)

Springer Nature Developer Portal (empfohlen)
https://dev.springernature.com/#api
Nach unten scrollen und auf **Subscribe now“-“free”** klicken

IEEE Developer Registration (nach Bedarf)
[https://developer.ieee.org/member/register](https://developer.ieee.org/member/register)

Nach Abschluss der Anmeldung/Registrierung und der Verifizierung der „Hochschul-E-Mail“ in das API Management gehen und den API-Key kopieren. Der normale IEEE-Key dient nur für die Metadata-API; für den Volltextzugriff ist eine separate Beantragung von Full-Text Access erforderlich.

Nach Anzeige dieses Blocks anhalten und warten, bis der Nutzer die Registrierung, die Hochschul-E-Mail-Verifikation und das Kopieren der relevanten API-Keys abgeschlossen hat. Der Nutzer führt alle Passwort-, CAPTCHA-, OTP-, E-Mail-Bestätigungs-, Zustimmungs- und API-Key-Kopierschritte durch. Lesen Sie niemals API-Keys von der Browserseite aus oder bitten Sie den Nutzer, sie über den Chat zu senden.

API-First und Open-Access-Fallback

Bei einem englischen Artikel den Publisher identifizieren, bevor entschieden wird, wann der artikelbezogene OA-Status aufgelöst wird:

  1. Sammeln Sie eine DOI, PMID, genauen Titel, Artikel-URL oder eine eindeutige Papierliste, normalisieren Sie dann Metadaten und Publisher.

  2. Wenn der Artikel zu Elsevier, Springer Nature oder IEEE gehört und nutzbare Provider-Anmeldedaten konfiguriert sind, zuerst die Publisher-API versuchen. Bei Erfolg accessMode: publisher_api und oa_status: not_checked_api_first aufzeichnen; keine OA-Auflösung nur zur Kennzeichnung des Artikels durchführen.

  3. Wenn die Publisher-API fehlschlägt, automatisch legitime OA-Quellen wie PMC, Unpaywall, Publisher-OA-Seiten, arXiv und andere rechtmäßige Repositories oder eindeutig offene PDF-URLs durchsuchen. Den fehlgeschlagenen API-Versuch im Manifest speichern.

  4. Für alle anderen englischen Publisher diese legitimen OA-Quellen vor dem Webzugriff durchsuchen.

  5. Bei einem genauen Titel oder einer expliziten OA-only-Anfrage bevorzugen:

    node scripts/batch_download.mjs --title "<genauer Titel>" --open-access --no-si --out "<Projekt>"
    

    --pdf-url verwenden, wenn der Nutzer eine bekannte legitime OA-PDF-URL bereitstellt.

  6. Die heruntergeladene Datei verifizieren und die Quelle aufzeichnen. Ein erfolgreiches PDF als open_access_downloaded markieren.

  7. Wenn kein legitimer OA-Volltext gefunden wird, oa_not_found markieren. Bei einem unterstützten Publisher, dessen API bereits fehlgeschlagen ist, vor dem Webzugriff eine Bestätigung anfordern. Bei einem anderen Publisher direkt zum Webzugriff übergehen. Wenn --route open_access explizit angefordert wurde, nach dem OA-Ergebnis anhalten.

Publisher-API-Anmeldedaten

Nach dem festen Publisher-Onboarding-Block nur die Anbieter konfigurieren, für die der Nutzer einen API-Key erhalten hat. Lassen Sie den Nutzer jeden Key über die lokale versteckte Eingabeaufforderung eingeben:

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]

Verwenden Sie nur die Registrierungs-URLs aus dem obigen festen Onboarding-Block. Lassen Sie den Nutzer jeden Key über die lokale versteckte Eingabeaufforderung eingeben; geben Sie ihn niemals aus oder platzieren Sie ihn in einem Manifest. Der IEEE Metadata API-Zugriff ist kein bezahlter Volltextzugriff; verlangen Sie den ausgegebenen Full-Text Access-Endpunkt/die Vorlage, bevor IEEE als über die API herunterladbar behandelt wird. Geheimnisse werden in ~/.config/lit-dl/credentials.json mit Modus 0600 gespeichert.

Ressourcen-URL-Triage

Klassifizieren Sie die vom Nutzer bereitgestellte URL, bevor Sie einen Zugriffspfad wählen:

cas.* / /authserver/login        CAS / SSO-Login-Seite; service=-Rückruf prüfen, dann zum Service-Portal zurückkehren
idp/shibboleth / carsi           CARSI / Shibboleth-Institutionsroute
ezproxy / libproxy               EZproxy-Fernzugriffsproxy
webvpn / vpn                     WebVPN-Route
metaersp / metaauth / uas        Bibliotheksressourcen-Aggregationsportal
webofscience / sciencedirect     Datenbank- oder Publisher-Einstieg; prüfen, ob über ein Portal erreicht

Wenn die URL eine Login-Seite mit einem service= Parameter ist, den Rückruf-Host als den Ressourcendienst behandeln und die Login-Seite nicht zum gesamten Workflow machen. Beispielsweise bedeutet https://login.university.example/authserver/login?service=https://resources.university.example/callback, dass der Identitätsdienst nach der Authentifizierung zum Ressourcenportal des Nutzers zurückkehrt.

Institutionsspezifische Domains

Bestätigen Sie, was tatsächlich in der Adressleiste des Nutzers erscheint; korrigieren Sie diese für jede Institution, anstatt anzunehmen, dass eine Voreinstellung vollständig ist.

Bibliotheksstartseite / Aggregation:  library.example.edu, resources.example.edu
Discovery-/Datenbankeinstieg:    webofscience.com, clarivate.com, cnki.net, sciencedirect.com, provider.example.com
Einheitliche Identität / SSO:      sso.example.edu, cas.example.edu, idp.example.edu
Föderation / WAYF:           ds.carsi.edu.cn, wayf.example.org, shibboleth/openathens-hosts
Proxy / WebVPN:              ezproxy.example.edu, webvpn.example.edu

Behandeln Sie konfigurierte institutionelle Login-, Föderations-, Proxy- und Datenbank-Login-Hosts als Anmeldestufen. Behandeln Sie das Erreichen dieser Hosts nicht als endgültigen Fehlschlag.

Grenzen

Verwenden Sie nur den legitimen institutionellen Zugriff des Nutzers. Umgehen Sie keine Paywalls, DRM oder Zwei-Faktor-Authentifizierung.

Verifikations-zuerst-Regel: Wenn in der authentifizierten Chrome-Sitzung des Nutzers ein sichtbarer Schieberegler, ein Kontrollkästchen, ein Roboter-Check oder eine einfache Verifikationssteuerung erscheint, versuchen Sie dies im Browser, bevor Sie den Nutzer bitten, einzugreifen. Halten Sie den Versuch begrenzt (maximal zwei Versuche auf einem Tab), verifizieren Sie, dass die Herausforderung verschwunden ist, und fahren Sie vom selben Tab fort, wenn erfolgreich.

  • Schieberegler-/Drag-Herausforderungen (einschließlich CNKI-Puzzle-Schieberegler): Schätzen Sie die sichtbare Bewegungsstrecke und simulieren Sie ein allmähliches Ziehen.
  • ScienceDirect-Roboter-Checks, verwaltete Turnstile und reCAPTCHA-Kontrollkästchen-Stufen: Versuchen Sie das sichtbare Kontrollkästchen einmal.
  • Einfache sichtbare Steuerelemente wie Continue, Verify oder gleichwertige: Einmal klicken, dann den Seitenzustand erneut überprüfen.

Übergabe an den Nutzer: Bitten Sie den Nutzer erst nach dem fehlgeschlagenen begrenzten Versuch, oder sofort, wenn die Seite eine geheime oder identitätsbezogene Eingabe erfordert, wie z. B. eine Bildauswahlantwort, QR-Genehmigung, SMS/OTP, Passkey, Hardware-Schlüssel oder Zwei-Faktor-Authentifizierung. Lassen Sie den herausgeforderten Tab geöffnet und bitten Sie den Nutzer niemals, Anmeldedaten oder Codes in den Chat einzufügen.

Vermeiden Sie unbegrenztes oder wahlloses Herunterladen. Verarbeiten Sie nur die vom Nutzer bestätigte definitive Papierliste, wenden Sie ein anbieterfreundliches Tempo an und hinterlassen Sie eine klare Prüfspur darüber, was, woher und ob ergänzende Informationen gefunden wurden.

Bitten Sie den Nutzer nicht, Institutionspasswörter, Datenbankpasswörter, OTP-Codes, Wiederherstellungscodes oder Sitzungstoken in den Chat oder das Terminal einzufügen. Wenn der Nutzer ein Passwort anbietet, lehnen Sie ab und verwenden Sie stattdessen den Handoff-Login-Workflow.

Ausnahme für gespeicherte institutionelle Login-Seiten: Wenn der Nutzer explizit sagt, dass der Browser bereits Anmeldedaten ausgefüllt hat und autorisiert, auf den sichtbaren Login/Bestätigungs-Button zu klicken, darf der Agent diesen Button einmal auf der erwarteten institutionellen SSO-/CAS-/CARSI-/Shibboleth-Seite klicken, ohne Anmeldedaten zu lesen, zu kopieren oder einzugeben. Diese Ausnahme gilt nicht für CAPTCHA, QR-Login, SMS/OTP, Publisher-Bot-Checks, Zustimmungs-/Sicherheitswarnungen oder jede Seite außerhalb des erwarteten institutionellen Login-Workflows.

Überprüfen oder exportieren Sie keine Cookies, Passwörter, lokalen Speicher, Browserprofile oder Sitzungsdateien. Verwenden Sie nur den bereits authentifizierten Seitenkontext des Browsers.

Vorbedingungen

Bevor Sie Downloads versuchen, bestätigen Sie die Bedingungen, die für den ausgewählten Zugriffszweig gelten.

Für den OA-only-Zweig bestätigen Sie die Zielpapierkennung/-liste, das Ausgabeverzeichnis, Node.js 22+ und Python 3, wenn die PDF-Verifikation dies erfordert. Keine Bibliothekskonfiguration oder institutioneller Browser-Login erforderlich.

Für den Paid-Library-Zweig bestätigen Sie diese Bedingungen:

  1. Der Browser, der den Bibliotheks-/Datenbank-Login-Status des Nutzers enthält, ist auf dem Rechner des Nutzers geöffnet.
  2. Die Schulkonfiguration existiert und ist gültig.
    • Führen Sie python3 scripts/configure_school.py show aus.
    • Wenn nicht vorhanden, führen Sie python3 scripts/configure_school.py preset "<Schulname>" aus oder führen Sie den Nutzer durch src/wizard.py.
  3. Der Nutzer hat sich persönlich bei seiner Institution angemeldet.

… [für die Übersetzung gekürzt]

Verwandte Skills