Communitygithub.com

paperdown2md — PDF herunterladen + MinerU in Markdown konvertie…

Lädt akademische Papiere (arXiv/DOI/Titel) herunter und wandelt sie über MinerU in strukturiertes Markdown um. Für Cursor, Claude Code und andere KI-Agenten.

Was ist paperdown2md — PDF herunterladen + MinerU in Markdown konvertie…?

paperdown2md ist ein Skill für KI-Agenten (Cursor, Claude Code, Codex), der den vollständigen Workflow vom Auffinden eines akademischen Papiers bis zur lokalen Markdown-Darstellung automatisiert. Er akzeptiert verschiedene Kennungen: arXiv-IDs, DOIs, englische Titel, direkte PDF-URLs, WeChat-Artikel-Links und Xiaohongshu-Beiträge. Der Skill verwendet ein gebündeltes Python-Skript (`scripts/run.sh`) mit einer speziellen skillsplace-Umgebung, um das Papier zunächst zu identifizieren, herunterzuladen und dann über die MinerU-OpenAPI (`extract` mit Token) eine strukturierte Ausgabe zu erzeugen: das Original-PDF, eine `full.md` mit dem Volltext und ein `images/`-Verzeichnis mit extrahierten Abbildungen. Der Ausgabeordner wird vom Benutzer festgelegt und folgt einer konsistenten Ordnerstruktur. Der Skill unterstützt die Stapelverarbeitung mehrerer Papiere und enthält Fallbacks für ausgefallene HTTP-Anfragen (z. B. WeChat/Xiaohongshu per Browser-CDP). Bei sozialen Medien extrahiert er zunächst eventuelle Direktlinks; falls keine vorhanden sind, sucht er über OpenAlex und arXiv-APIs nach dem Papier. Scheitert alles, kann der Benutzer manuell ein PDF bereitstellen, und der Skill führt nur die MinerU-Konvertierung durch. Der Skill ist darauf ausgelegt, mit dem nachgelagerten Skill `aiforbio-paper-reading` für biomedizinische Detailanalysen zusammenzuarbeiten.

Funktioniert mit✓Claude Code~Codex CLI✓Cursor
npx skills add Iayce/paperdown2md

In Ihrer bevorzugten KI fragen

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

Vorschau

Aus dem Skill-README

paperdown2md — PDF herunterladen + MinerU in Markdown konvertie… preview

Dokumentation

paperdown2md — PDF herunterladen + MinerU in Markdown konvertieren

Lädt eine oder mehrere vom Benutzer genannte Publikationen in ein angegebenes Ausgabeverzeichnis herunter und wandelt sie in eine Standardstruktur um:

<output-dir>/
└── <Papier-Ordnername>/
    ├── <Papiername>.pdf      # gleicher Name wie Ordner oder vom Benutzer festgelegt
    ├── full.md               # vollständiger Markdown-Text via MinerU extract
    └── images/               # Abbildungen aus dem Papier

Referenzbeispiel: paperdown2md/example/CIDD: Collaborative Intelligence for Structure-Based Drug Design Empowered by LLMs/ (Der Ordnername kann eine kurze repräsentative Bezeichnung wie CIDD oder der vollständige Titel sein).

Wann auslösen

  • Der Benutzer gibt einen Titel, eine arXiv/DOI/URL, einen WeChat/Xiaohongshu-Post-Link oder eine direkte PDF-URL an (auch mehrere möglich)
  • Der Benutzer nennt ein Zielverzeichnis (z. B. paperdown2md/example/, ~/papers/)
  • Benötigt wird PDF + full.md + images; die Konvertierung erfolgt ausschließlich über MinerU extract (Token), nicht flash-extract bei großen PDFs

Kernablauf (pro Papier)

1. Ausgabeverzeichnis festlegen

  • Der Benutzer MUSS --output-dir / einen Zielpfad angeben; falls nicht angegeben, nachfragen, nicht raten.
  • Verzeichnis bei Bedarf anlegen; wenn der Ordner bereits existiert, vorher erklären, ob überschrieben oder übersprungen wird.

2. Ordnernamen und PDF-Dateinamen bestimmen

Der Ordnername (gleichzeitig Basisname für die PDF-Datei, Erweiterung .pdf) wird nach folgender Priorität festgelegt:

PapiertypNamensvorschlagBeispiel
Neues Modell/MethodeAbkürzung oder EigennameCIDD, TargetDiff
Benchmark-PapierName des BenchmarksCrossDocked2020
Datensatz-PapierName des DatensatzesImageNet
AndereTitel des Papiers (ggf. auf ~120 Zeichen gekürzt)identisch mit PDF-Originaltitel

Regeln:

  • Dateisystem-unzulässige Zeichen entfernen: \ / : * ? " < > |
  • Wenn der Benutzer explizit sagt „Ordner heißt CIDD“, GILT DAS
  • Bei Stapelverarbeitung mehrerer Papiere: Jedes Papier bekommt einen eigenen Ordner; nicht in einem Verzeichnis mischen

3. Identifikator auflösen und PDF herunterladen

Bevorzugt das gebündelte Skript (löst arXiv, DOI, direkte PDF-Links, WeChat/Xiaohongshu-Posts, OpenAlex/arXiv-Titelsuche auf).

Python MUSS in der skillsplace-Umgebung ausgeführt werden – verwende scripts/run.sh (erkennt automatisch skillsplace Python), nicht direkt python3:

bash paperdown2md/scripts/run.sh \
  -o "<Ausgabeverzeichnis>" \
  --name "<Ordnername>" \
  "<Identifikator>"

Oder explizit Interpreter angeben (macOS lokal):

/Users/jaycexu/anaconda3/envs/skillsplace/bin/python paperdown2md/scripts/paperdown2md.py \
  -o "<Ausgabeverzeichnis>" --name "<Ordnername>" "<Identifikator>"
Umgebungskillsplace-Pfad
macOS lokal/Users/jaycexu/anaconda3/envs/skillsplace
Windows NotebookD:\Anaconda\envs\skillsplace
jumphost-inner~/xsjenv/miniconda3/envs/skillsplace

<Identifikator> kann sein:

  • arXiv: https://arxiv.org/abs/xxxx.xxxxx oder xxxx.xxxxx
  • DOI: 10.1038/... oder https://doi.org/...
  • Direktes PDF: https://....pdf
  • WeChat-Artikel: https://mp.weixin.qq.com/s/...
  • Xiaohongshu-Beitrag: https://www.xiaohongshu.com/explore/... (Parameter wie xsec_token aus dem geteilten Link nach Möglichkeit behalten)
  • Englischer Titel: Das Skript sucht über OpenAlex nach dem besten Open-Access-PDF

Social-Media-Beiträge (WeChat / Xiaohongshu, v1.1+)

Wenn der Ausgangspunkt ein WeChat- oder Xiaohongshu-Beitrag ist, macht das Skript Folgendes:

  1. WeChat: Zunächst per HTTP HTML abrufen; Xiaohongshu: Standardmäßig Browser-CDP verwenden (Inhalte meist JS-gerendert)
  2. Falls HTTP fehlschlägt oder Anti-Bot-Maßnahmen greifen (z. B. „Umgebungsfehler“, Notiz nicht lesbar) → automatisch auf Browser-CDP umschalten (Chrome Proxy von web-access, localhost:3456)
  3. Aus dem Text einen arXiv/DOI/PDF-Direktlink extrahieren; wenn kein Direktlink vorhanden → mit Beitragstitel und Schlüsselwörtern eine OpenAlex + arXiv-API-Literatursuche durchführen (mit Relevanzfilter)
  4. Den Beitragstitel als Ordnernamen verwenden (kann mit --name überschrieben werden), dann wie gehabt PDF herunterladen + MinerU
# WeChat
bash paperdown2md/scripts/run.sh -o "<Ausgabeverzeichnis>" \
  "https://mp.weixin.qq.com/s/jMW2lbgiHDka8CASFtQ81w"

# Xiaohongshu (vollständige Share-URL verwenden)
bash paperdown2md/scripts/run.sh -o "<Ausgabeverzeichnis>" \
  "https://www.xiaohongshu.com/explore/6a1c2d75000000000603739b?xsec_token=..."

Voraussetzung für Browser-Fallback: Chrome muss mit Remote-Debugging laufen (chrome://inspect/#remote-debugging) und der folgende Befehl muss ausführbar sein:

node ~/.cursor/skills/web-access/scripts/check-deps.mjs

Wenn die Suche dennoch keine Ergebnisse liefert, kann der Agent auch lr search, web-access oder eine Websuche verwenden, um das Papier zu finden und den arXiv/DOI-Link an run.sh zu übergeben.

Wenn das Skript nicht weiterkommt, dann:

  1. Mit lr search arxiv "<englischer Titel>" --format json oder lr search "<Titel>" --format json die url finden und die arXiv-PDF-URL nehmen
  2. Gemäß web-access die Verlagsseite prüfen (Urheberrecht beachten; bevorzugt OA / arXiv)
  3. Immer noch keine PDF → dem Benutzer mitteilen, dass er manuell eine PDF in den Ordner legen soll, und dann nur für die vorhandene PDF MinerU ausführen

PDF nach dem Download benennen: --name CIDD → CIDD.pdf; wenn --name nicht angegeben, den aufgelösten Titel verwenden.

4. MinerU extract → full.md + images/

Immer die Token-basierte extract-Methode verwenden (Tabellen/Formeln/große Dateien). Vorher:

export MINERU_TOKEN="$(tr -d '\n' < "$HOME/.cursor/skills/mineru/key")"
mineru-open-api auth --verify
  • Token fehlt: Dem Benutzer explizit mitteilen, dass er ~/.cursor/skills/mineru/key oder MINERU_TOKEN konfigurieren muss; nicht heimlich flash-extract für große PDFs verwenden.
  • PDF >10 MB oder viele Seiten: --model vlm, --timeout 3600 (Standard bei wissenschaftlichen Papieren)
  • Gescannte PDFs: --ocr hinzufügen

Das run.sh-Skript enthält die extract- und Aufräumschritte bereits. Bei manueller Ausführung:

mineru-open-api extract "<Papier-Verzeichnis>/<Name>.pdf" \
  -o "<Papier-Verzeichnis>/_mineru_out" -f md --model vlm --timeout 3600

# _mineru_out/*.md → full.md, _mineru_out/images → images/, _mineru_out löschen

Nach dem Aufräumen prüfen, ob die in full.md referenzierten ![](images/...)-Pfade lokal existieren.

5. Stapelverarbeitung mehrerer Papiere

Für jeden Identifikator die Schritte 2–4 wiederholen. Mehrere Quellen können auf einmal übergeben werden (nur wenn nicht alle denselben --name verwenden können, getrennt ausführen):

bash paperdown2md/scripts/run.sh -o "<Ausgabeverzeichnis>" \
  "https://arxiv.org/abs/2301.00001" \
  "10.1038/s41586-020-00000" \
  "Ein weiterer Papiertitel auf Englisch"

Bei Stapelverarbeitung jedes Papier mit eigenem --name: entweder das Skript mehrfach aufrufen oder vorher die Kurznamen anhand des Titels festlegen und dann ausführen.

Abschlusskriterien (dem Benutzer melden)

Für jedes Papier melden:

  • Ordnerpfad
  • PDF-Dateiname und -Größe
  • full.md Zeilen/Größe, images/ Anzahl der Bilder
  • Wenn ein Papier fehlschlägt: Grund (kein OA-PDF, kein Token, MinerU-Timeout usw.) und nächster Schritt

Abhängigkeiten und Fehlerbehebung

ProblemVorgehen
no API token foundMinerU-Token konfigurieren, siehe mineru
mineru-open-api: command not foundMinerU CLI installieren (mineru skill-Installationsskript)
OpenAlex liefert kein PDFarXiv-Link, lr search oder Benutzer um PDF bitten
WeChat „Umgebungsfehler“Skript versucht automatisch CDP-Browser; immer noch Fehler → Benutzer um Captcha-Lösung oder direkte arXiv/DOI-Übergabe bitten
Xiaohongshu-Notiz nicht lesbarVollständige, mit der App geteilte URL verwenden (inkl. xsec_token); sonst arXiv/DOI direkt angeben
Beitrag enthält keinen DirektlinkSkript sucht via OpenAlex + arXiv mit Titel/Schlüsselwörtern; bei Misserfolg lr search / web-access
extract-Timeout--timeout erhöhen oder Benutzer um Wiederholung bitten
Benutzer möchte nur PDF, kein MDpaperdown2md.py --skip-extract

Beispiele

Einzelnes Papier (CIDD, repräsentativer Ordnername):

bash paperdown2md/scripts/run.sh \
  -o "paperdown2md/example" \
  --name "CIDD" \
  "CIDD Collaborative Intelligence Structure-Based Drug Design LLMs"

Ausgehend von einem WeChat-Artikel (automatischer Browser-CDP-Fallback bei HTTP-Fehlern):

bash paperdown2md/scripts/run.sh \
  -o "paperdown2md/example" \
  "https://mp.weixin.qq.com/s/jMW2lbgiHDka8CASFtQ81w"

Ausgehend von einem Xiaohongshu-Beitrag (automatische arXiv/OpenAlex-Suche bei fehlendem Direktlink):

bash paperdown2md/scripts/run.sh \
  -o "paperdown2md/example" \
  "https://www.xiaohongshu.com/explore/6a1c2d75000000000603739b?xsec_token=..."

Oder mit vorhandener PDF nur MinerU ausführen (PDF muss bereits im Ordner sein):

export MINERU_TOKEN="$(tr -d '\n' < "$HOME/.cursor/skills/mineru/key")"
mineru-open-api extract "paperdown2md/example/CIDD.../CIDD....pdf" \
  -o "paperdown2md/example/CIDD.../_mineru_out" -f md --model vlm --timeout 3600
# Dann zu full.md + images/ aufräumen

Aufgabenverteilung mit anderen Skills

  • mineru: Konvertiert nur vorhandene PDFs/Dateien → siehe mineru skill
  • lightread-cli: LightRead-Datenbank, Notizen, Übersichtsarbeiten → keine lokale paperdown2md-Verzeichnisstruktur
  • web-access: Websuche, unstrukturierte Downloads
  • paperdown2md (dieser Skill): Lokales Verzeichnis + PDF + full.md + images aus einer Hand
  • aiforbio-paper-reading (nachgelagert): Nachdem full.md + images/ bereit sind, im selben Papierordner eine {ModelName}record.md für biomedizinische Detailanalyse erstellen (Formeln Schritt für Schritt + Beispieldatenfluss). Siehe aiforbio-paper-reading

Integration mit aiforbio-paper-reading (empfohlener Workflow)

Dieser Skill übernimmt Beschaffung und Konvertierung; die Detailanalyse übernimmt aiforbio-paper-reading:

paperdown2md  -o <Literaturverzeichnis> "<Identifikator>"
    →  <Literaturverzeichnis>/<Papiername>/{pdf, full.md, images/}
aiforbio-paper-reading
    →  <Literaturverzeichnis>/<Papiername>/{ModelName}record.md

Nachdem full.md + images/ erzeugt wurden: Wenn der Benutzer „Papier lesen / Record schreiben / Detailanalyse / Formelableitung / Datenflussbeispiele“ möchte, auf aiforbio-paper-reading verweisen, nicht innerhalb dieses Skills eine längere Lesenotiz erstellen.

Skripthinweise

  • scripts/run.sh: Einzig empfohlener Einstiegspunkt; wählt automatisch Python in der skillsplace-Umgebung.
  • scripts/paperdown2md.py: Nur stdlib; prüft beim Start, ob es in skillspace läuft; resolve → Download → mineru-open-api extract → full.md / images/.

Agenten führen diesen Skill aus: Zuerst run.sh verwenden, nicht python3 paperdown2md.py.

Installation in Cursor globale Skills:

git clone https://github.com/Iayce/paperdown2md.git ~/.cursor/skills/paperdown2md

Oder lokalen Checkout verlinken: ln -s /path/to/paperdown2md ~/.cursor/skills/paperdown2md

Verwandte Skills