paperdown2md — 論文PDFダウンロード + MinerU変換Markdown は何をしますか?
ユーザーから指定された1つ以上の論文識別子を、指定された出力ディレクトリに次の標準構造で保存します:
<output-dir>/
└── <論文フォルダ名>/
├── <論文名>.pdf # フォルダと同じ名前、またはユーザー指定の短縮名
├── full.md # MinerU extractによる全文Markdown
└── images/ # 文中の画像リソース
参考例:paperdown2md/example/CIDD: Collaborative Intelligence for Structure-Based Drug Design Empowered by LLMs/(フォルダ名には CIDD のような代表的な短縮名、または完全なタイトルを使用できます)。
いつトリガーするか
- ユーザーが論文のタイトル、arXiv/DOI/リンク、微信公衆号/小紅書の投稿リンク、または直接 PDF URL を指定した場合(複数可)
- ユーザーがターゲットディレクトリを指定した場合(例:
paperdown2md/example/、~/papers/) - PDF + full.md + images の三点セットが必要で、解析が MinerU
extract(Token) を使用する場合(flash-extractで大きな論文を代替してはいけません)
コアフロー(各論文ごと)
1. 出力ディレクトリの確認
- ユーザーは必ず
--output-dir/ ターゲットパスを指定する必要があります。指定がない場合はまず質問し、推測しないでください。 - パスが存在しない場合は作成します。既に同名のフォルダが存在する場合は、上書きするかスキップするかを先に説明します。
2. フォルダ名とPDFファイル名の決定
以下の優先順位でフォルダ名(同時にデフォルトのPDFベース名、拡張子 .pdf)を決定します:
| 論文タイプ | 命名提案 | 例 |
|---|---|---|
| 新しいモデル/手法を提案する論文 | モデル/手法の略称または固有名 | CIDD、TargetDiff |
| Benchmark 論文 | benchmark名 | CrossDocked2020 |
| データセット 論文 | データセット名 | ImageNet |
| その他 | 論文タイトル(120文字程度に切り詰め可) | PDF原題と同じ |
ルール:
- ファイルシステムで使用できない文字
\ / : * ? " < > |を除去します。 - ユーザーが「フォルダ名をCIDDにして」と明示した場合は、ユーザーの指定を優先します。
- 複数論文を一括処理する場合、各論文を個別のフォルダに保存し、1つのディレクトリに混在させないでください。
3. 識別子の解析とPDFのダウンロード
バンドルされたスクリプトを優先して使用します(arXiv、DOI、直リンクPDF、微信公衆号/小紅書の投稿、OpenAlex/arXivのタイトル検索を解析)。
Pythonはskillsplace環境で実行する必要があります——scripts/run.sh(skillsplaceのPythonを自動的に見つける)を使用し、直接 python3 を実行しないでください:
bash paperdown2md/scripts/run.sh \
-o "<出力ディレクトリ>" \
--name "<フォルダ名>" \
"<識別子>"
または、インタプリタを明示的に指定(macOS本機):
/Users/jaycexu/anaconda3/envs/skillsplace/bin/python paperdown2md/scripts/paperdown2md.py \
-o "<出力ディレクトリ>" --name "<フォルダ名>" "<識別子>"
| 環境 | skillsplaceパス |
|---|---|
| macOS本機 | /Users/jaycexu/anaconda3/envs/skillsplace |
| Windowsノートパソコン | D:\Anaconda\envs\skillsplace |
| jumphost-inner | ~/xsjenv/miniconda3/envs/skillsplace |
識別子 には次のものが使用できます:
- arXiv:
https://arxiv.org/abs/xxxx.xxxxxまたはxxxx.xxxxx - DOI:
10.1038/...またはhttps://doi.org/... - 直接PDF:
https://....pdf - 微信公衆号記事:
https://mp.weixin.qq.com/s/... - 小紅書投稿:
https://www.xiaohongshu.com/explore/...(共有リンクのxsec_tokenなどのパラメータは保持することを推奨) - 英字タイトル:スクリプトがOpenAlex経由で検索し、最適なオープンアクセスPDFを取得します
ソーシャルメディア投稿(公衆号 / 小紅書、v1.1+)
公衆号や小紅書の投稿を起点とする場合、スクリプトは以下の処理を行います:
- 公衆号:最初にHTTPでHTMLを取得します。小紅書:デフォルトでブラウザCDPを経由します(コンテンツは主にJSレンダリング)
- HTTPが失敗した場合、またはアンチスクレイピングに遭遇した場合(例:「環境異常」、ノートが閲覧不可)→ 自動的にブラウザCDPに切り替えます(web-access のChrome Proxy、
localhost:3456) - 本文からarXiv / DOI / PDF直リンクを抽出します。直リンクがない場合 → 投稿タイトルと本文のキーワードを使用してOpenAlex + arXiv APIによる文献検索を実行します(関連性フィルタリングを含む)
- 投稿タイトルをフォルダ名として使用します(
--nameで上書き可)。その後、既存のフローに従ってPDFをダウンロードし、MinerUで処理します。
# 公衆号
bash paperdown2md/scripts/run.sh -o "<出力ディレクトリ>" \
"https://mp.weixin.qq.com/s/jMW2lbgiHDka8CASFtQ81w"
# 小紅書(完全な共有URLを保持)
bash paperdown2md/scripts/run.sh -o "<出力ディレクトリ>" \
"https://www.xiaohongshu.com/explore/6a1c2d75000000000603739b?xsec_token=..."
ブラウザフォールバックの前提条件:Chromeがリモートデバッグを有効にしていること(chrome://inspect/#remote-debugging)、および次のコマンドが実行可能であること:
node ~/.cursor/skills/web-access/scripts/check-deps.mjs
検索しても結果がない場合、Agentはさらに lr search、web-access、またはWebSearchを使用して論文を特定し、arXiv/DOIリンクを run.sh に渡すことができます。
スクリプトが対応できない場合は、次のようにします:
lr search arxiv "<英字タイトル>" --format jsonまたはlr search "<タイトル>" --format jsonを使用してurlを探し、arXiv PDFを取得します。- web-access に従って出版社のページを確認します(著作権に注意;OA / arXivを優先)。
- それでもPDFがない場合 → ユーザーに通知し、手動でフォルダに配置してもらい、既存のPDFに対してのみMinerUを実行します。
ダウンロード後のPDFファイル名:--name CIDD → CIDD.pdf;--name が指定されていない場合は、解析されたタイトルを使用します。
4. MinerU extract → full.md + images/
必ずToken版の extract を使用します(テーブル/数式/大容量ファイル)。操作前:
export MINERU_TOKEN="$(tr -d '\n' < "$HOME/.cursor/skills/mineru/key")"
mineru-open-api auth --verify
- Tokenがない場合:ユーザーに明確に伝え、
~/.cursor/skills/mineru/keyまたはMINERU_TOKENを設定するよう指示します。flash-extractで大きなPDFをごまかしてはいけません。 - PDFが10MBを超える、またはページ数が多い場合:
--model vlm、--timeout 3600(学術論文のデフォルト) - スキャン文書:
--ocrを追加
スクリプトにはextractと整理の手順が含まれています。手動で実行する場合:
mineru-open-api extract "<paper-dir>/<name>.pdf" \
-o "<paper-dir>/_mineru_out" -f md --model vlm --timeout 3600
# _mineru_out/*.md → full.md、_mineru_out/images → images/、_mineru_outを削除
整理後、full.md 内の  パスがローカルに存在することを確認します。
5. 複数論文の一括処理
各識別子に対してステップ2〜4を繰り返します。複数のソースを一度に渡せます(同一の --name が適用できない場合は個別に実行):
bash paperdown2md/scripts/run.sh -o "<出力ディレクトリ>" \
"https://arxiv.org/abs/2301.00001" \
"10.1038/s41586-020-00000" \
"Another Paper Title In English"
一括処理の場合、各論文に個別の --name を指定します:スクリプトを複数回呼び出すか、事前にタイトルに基づいて短縮名を決定してから実行します。
完了基準(ユーザーへの報告)
各論文について報告:
- フォルダパス
- PDFファイル名とサイズ
full.mdの行数/サイズ、images/の画像数- 失敗した場合:理由(OA PDFなし、Tokenなし、MinerUタイムアウトなど)と推奨される次のステップ
依存関係とトラブルシューティング
| 問題 | 対処 |
|---|---|
no API token found | MinerU Tokenを設定します。mineru を参照 |
mineru-open-api: command not found | MinerU CLIをインストールします(mineru skillインストールスクリプト) |
| OpenAlexにPDFがない | arXivリンク、lr search、またはユーザーにPDFを提供してもらう |
| 公衆号「環境異常」 | スクリプトは自動的にCDPブラウザを試みます。それでも失敗する場合は、ユーザーに検証を完了してもらうか、arXiv/DOIを直接提供してもらいます |
| 小紅書ノートが閲覧不可 | アプリの共有完全URL(xsec_token を含む)を使用する。またはarXiv/DOIを直接提供 |
| 投稿に論文直リンクがない | スクリプトはタイトル/キーワードでOpenAlex + arXivを検索します。それでも失敗する場合は lr search / web-access を使用 |
| extractがタイムアウト | --timeout を増やすか、ユーザーに再試行を説明 |
| ユーザーがPDFのみでMarkdown不要 | paperdown2md.py --skip-extract |
例
単一論文(CIDD、代表的なフォルダ名):
bash paperdown2md/scripts/run.sh \
-o "paperdown2md/example" \
--name "CIDD: Collaborative Intelligence for Structure-Based Drug Design Empowered by LLMs" \
"CIDD Collaborative Intelligence Structure-Based Drug Design LLMs"
微信公衆号記事から開始(HTTP失敗時に自動的にブラウザCDPに切り替え):
bash paperdown2md/scripts/run.sh \
-o "paperdown2md/example" \
"https://mp.weixin.qq.com/s/jMW2lbgiHDka8CASFtQ81w"
小紅書投稿から開始(直リンクがない場合、自動的にarXiv/OpenAlexを検索):
bash paperdown2md/scripts/run.sh \
-o "paperdown2md/example" \
"https://www.xiaohongshu.com/explore/6a1c2d75000000000603739b?xsec_token=..."
または既存のPDFをMinerUに渡すのみ(PDFがすでにフォルダ内にある場合):
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
# その後、full.md + images/ に整理
他のskillとの役割分担
- mineru:既存のPDF/ファイルのみを変換 → mineru skillを参照
- lightread-cli:LightRead資料庫、ノート、レビュー → ローカルのpaperdown2mdディレクトリ構造ではない
- web-access:ウェブ検索、非構造化ダウンロード
- paperdown2md(本skill):ローカルディレクトリ + PDF + full.md + images のオールインワン
- aiforbio-paper-reading(下流):
full.md+images/が準備できた後、同じ論文ディレクトリに{ModelName}record.mdを書き込み、生物医学の精読(数式の要素ごとの導出 + サンプルデータフロー)を行います。aiforbio-paper-reading を参照
aiforbio-paper-readingとの連携(推奨パイプライン)
本skillは取得と変換を担当します。精読記録は aiforbio-paper-reading に委ねます:
paperdown2md -o <文献ディレクトリ> "<識別子>"
→ <文献ディレクトリ>/<論文名>/{pdf, full.md, images/}
aiforbio-paper-reading
→ <文献ディレクトリ>/<論文名>/{ModelName}record.md
full.md + images/ が生成された後、ユーザーが「論文を読む / recordを書く / 精読 / 数式導出 / データフロー例」を希望する場合、aiforbio-paper-readingを促して連携し、本skill内で長い読書ノートを書かないでください。
スクリプト説明
scripts/run.sh:唯一推奨されるエントリポイント。skillsplace内のPythonを自動的に選択します。scripts/paperdown2md.py:stdlibのみ。起動時にskillsplaceにいるか確認。resolve→ ダウンロード →mineru-open-api extract→full.md/images/。
Agentが本skillを実行する場合:まず run.sh を実行し、python3 paperdown2md.py を直接実行しないでください。
Cursorのグローバルskillsにインストール:
git clone https://github.com/Iayce/paperdown2md.git ~/.cursor/skills/paperdown2md
またはローカルチェックアウトをシンボリックリンク:ln -s /path/to/paperdown2md ~/.cursor/skills/paperdown2md