Communitygithub.com

paperdown2md — Baixar PDF de artigos acadêmicos e converter par…

Skill para baixar artigos acadêmicos (arXiv, DOI, título) e convertê-los para Markdown estruturado usando o extrator MinerU, organizando os arquivos em pastas padronizadas.

O que é paperdown2md — Baixar PDF de artigos acadêmicos e converter par…?

O paperdown2md é uma skill para agentes de IA (compatível com Cursor, Claude Code, Codex) que automatiza o fluxo de obtenção e conversão de artigos acadêmicos. Dado um identificador — como link do arXiv, DOI, título do artigo, ou até mesmo links de posts do WeChat (微信公众号) ou Xiaohongshu (小红书) — a skill baixa o PDF do artigo em acesso aberto e, em seguida, utiliza o MinerU (versão Token, com `extract`) para gerar um arquivo Markdown completo (`full.md`) e extrair as imagens do artigo (`images/`). O resultado é armazenado em uma estrutura de pastas padronizada no diretório de saída especificado pelo usuário. A skill lida com múltiplos artigos em lote, resolve automaticamente identificadores via OpenAlex e arXiv API, e possui mecanismos de fallback para páginas que exigem renderização JavaScript (via Chrome CDP). É ideal para pesquisadores que precisam de um pipeline rápido e confiável de PDF para Markdown estruturado, prontamente consumível por outras skills de leitura aprofundada (como a aiforbio-paper-reading).

Funciona com✓Claude Code~Codex CLI✓Cursor
npx skills add Iayce/paperdown2md

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Prévia

Do README da skill

paperdown2md — Baixar PDF de artigos acadêmicos e converter par… preview

Documentação

paperdown2md — Baixar PDF de Artigos + Converter para Markdown com MinerU

Dado um ou mais identificadores de artigos acadêmicos fornecidos pelo usuário, esta skill baixa os PDFs e os converte para Markdown estruturado em um diretório de saída especificado, organizando os arquivos da seguinte forma:

<diretorio-saida>/
└── <nome-da-pasta-do-artigo>/
    ├── <nome-do-artigo>.pdf      # Mesmo nome da pasta ou nome curto definido pelo usuário
    ├── full.md           # Texto completo em Markdown extraído pelo MinerU
    └── images/           # Imagens do artigo

Exemplo de referência: paperdown2md/example/CIDD: Collaborative Intelligence for Structure-Based Drug Design Empowered by LLMs/ (a pasta pode usar um nome curto representativo como CIDD, ou o título completo).

Quando acionar

  • O usuário fornece o título do artigo, link arXiv/DOI, link de post no WeChat (微信公众号) / Xiaohongshu (小红书), ou uma URL direta de PDF (podem ser vários)
  • O usuário especifica um diretório de destino (ex.: paperdown2md/example/, ~/papers/)
  • É necessário o trio PDF + full.md + images, e a extração deve usar o MinerU extract (Token), não flash-extract para artigos grandes

Fluxo principal (para cada artigo)

1. Confirmar diretório de saída

  • O usuário deve fornecer --output-dir / caminho de destino; se não for especificado, pergunte primeiro, não adivinhe.
  • Se o caminho não existir, crie-o; se já existir uma pasta com o mesmo nome, informe se deseja sobrescrever ou pular.

2. Definir nome da pasta e nome do arquivo PDF

A escolha do nome da pasta (que também será o nome base do PDF, com extensão .pdf) segue esta prioridade:

Tipo de artigoSugestão de nomeExemplo
Propõe novo modelo/métodoAbreviação ou nome do modelo/métodoCIDD, TargetDiff
Artigo de BenchmarkNome do benchmarkCrossDocked2020
Artigo de DatasetNome do datasetImageNet
OutrosTítulo do artigo (pode truncar em ~120 caracteres)Igual ao título original do PDF

Regras:

  • Remova caracteres ilegais para sistemas de arquivos: \ / : * ? " < > |
  • Se o usuário disser explicitamente "a pasta chama CIDD", prevalece a vontade do usuário
  • Ao processar vários artigos em lote, cada artigo em sua própria pasta; não misture em um único diretório

3. Resolver identificador e baixar o PDF

Use preferencialmente o script bundled (que resolve arXiv, DOI, links diretos de PDF, posts do WeChat/Xiaohongshu, e busca por título via OpenAlex/arXiv).

O Python deve ser executado no ambiente skillsplace — use scripts/run.sh (que localiza automaticamente o Python do skillsplace), não python3 diretamente:

bash paperdown2md/scripts/run.sh \
  -o "<diretorio-saida>" \
  --name "<nome-da-pasta>" \
  "<identificador>"

Ou especificando o interpretador explicitamente (macOS local):

/Users/jaycexu/anaconda3/envs/skillsplace/bin/python paperdown2md/scripts/paperdown2md.py \
  -o "<diretorio-saida>" --name "<nome-da-pasta>" "<identificador>"
AmbienteCaminho do skillsplace
macOS local/Users/jaycexu/anaconda3/envs/skillsplace
Windows notebookD:\Anaconda\envs\skillsplace
jumphost-inner~/xsjenv/miniconda3/envs/skillsplace

O identificador pode ser:

  • arXiv: https://arxiv.org/abs/xxxx.xxxxx ou xxxx.xxxxx
  • DOI: 10.1038/... ou https://doi.org/...
  • PDF direto: https://....pdf
  • Post do WeChat (微信公众号): https://mp.weixin.qq.com/s/...
  • Post do Xiaohongshu (小红书): https://www.xiaohongshu.com/explore/... (recomenda-se manter parâmetros como xsec_token do link compartilhado)
  • Título em inglês: o script pesquisa no OpenAlex e obtém o melhor PDF de acesso aberto disponível

Posts de redes sociais (WeChat / Xiaohongshu, v1.1+)

Quando a origem é um post do WeChat ou Xiaohongshu, o script:

  1. WeChat: primeiro tenta baixar o HTML via HTTP; Xiaohongshu: usa navegador CDP por padrão (conteúdo é majoritariamente renderizado por JS)
  2. Se HTTP falhar ou for bloqueado (ex.: "ambiente anormal", nota não pode ser visualizada) → muda automaticamente para navegador CDP (proxy Chrome do web-access, em localhost:3456)
  3. Extrai do corpo do post links arXiv / DOI / PDF direto; se não houver link direto → usa o título e palavras-chave do post para buscar no OpenAlex + arXiv API (com filtro de relevância)
  4. Usa o título do post como nome da pasta (pode ser sobrescrito com --name), depois baixa o PDF e executa o MinerU normalmente
# WeChat
bash paperdown2md/scripts/run.sh -o "<diretorio-saida>" \
  "https://mp.weixin.qq.com/s/jMW2lbgiHDka8CASFtQ81w"

# Xiaohongshu (mantenha a URL de compartilhamento completa)
bash paperdown2md/scripts/run.sh -o "<diretorio-saida>" \
  "https://www.xiaohongshu.com/explore/6a1c2d75000000000603739b?xsec_token=..."

Pré-requisito para fallback via navegador: Chrome com depuração remota ativada (chrome://inspect/#remote-debugging) e capaz de executar:

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

Se a busca ainda não encontrar resultados, o Agente pode usar lr search, web-access ou WebSearch para localizar o artigo e passar o link arXiv/DOI para run.sh.

Se o script não conseguir resolver, então:

  1. Use lr search arxiv "<titulo em ingles>" --format json ou lr search "<titulo>" --format json para encontrar a url e obter o PDF do arXiv
  2. Consulte a página da editora conforme web-access (atenção aos direitos autorais; prefira OA / arXiv)
  3. Se ainda assim não houver PDF → informe o usuário que é necessário colocar o PDF manualmente na pasta, e então execute apenas o MinerU no PDF existente

Após o download, o PDF é nomeado: --name CIDD → CIDD.pdf; se --name não for especificado, usa o título resolvido.

4. MinerU extract → full.md + images/

Sempre use a versão Token extract (para tabelas/fórmulas/arquivos grandes). Antes de executar:

export MINERU_TOKEN="$(tr -d '\n' < "$HOME/.cursor/skills/mineru/key")"
mineru-open-api auth --verify
  • Token ausente: informe claramente ao usuário que é necessário configurar ~/.cursor/skills/mineru/key ou a variável MINERU_TOKEN, e não use flash-extract para enganar com PDFs grandes.
  • PDF >10MB ou com muitas páginas: --model vlm, --timeout 3600 (padrão para artigos acadêmicos)
  • Documentos digitalizados (scans): adicione --ocr

O script já inclui as etapas de extração e organização; para execução manual:

mineru-open-api extract "<pasta-do-artigo>/<nome>.pdf" \
  -o "<pasta-do-artigo>/_mineru_out" -f md --model vlm --timeout 3600

# Mover _mineru_out/*.md → full.md, _mineru_out/images → images/, deletar _mineru_out

Após a organização, verifique se os caminhos em full.md no formato ![](images/...) existem localmente.

5. Processamento em lote (múltiplos artigos)

Repita os passos 2–4 para cada identificador. É possível passar várias fontes de uma vez (apenas quando não fizer sentido usar o mesmo --name para todos, execute separadamente):

bash paperdown2md/scripts/run.sh -o "<diretorio-saida>" \
  "https://arxiv.org/abs/2301.00001" \
  "10.1038/s41586-020-00000" \
  "Another Paper Title In English"

No processamento em lote, cada artigo tem seu próprio --name: chame o script várias vezes, ou primeiro você decide os nomes curtos com base nos títulos e depois executa.

Critérios de conclusão (relatório ao usuário)

Para cada artigo, reporte:

  • Caminho da pasta
  • Nome do arquivo PDF e tamanho
  • Número de linhas/tamanho do full.md, quantidade de imagens em images/
  • Se algum artigo falhou: motivo (sem PDF OA, sem Token, timeout do MinerU, etc.) e sugestão de próximo passo

Dependências e solução de problemas

ProblemaAção
no API token foundConfigure o Token do MinerU, veja mineru
mineru-open-api: command not foundInstale a CLI do MinerU (script de instalação da skill mineru)
OpenAlex sem PDFTente link arXiv, lr search, ou peça ao usuário para fornecer o PDF
WeChat "ambiente anormal"O script tentará automaticamente o CDP do navegador; se ainda falhar, peça ao usuário para concluir a verificação ou enviar diretamente arXiv/DOI
Nota do Xiaohongshu não pode ser visualizadaUse a URL completa de compartilhamento do App (com xsec_token); ou envie diretamente arXiv/DOI
Post sem link direto para artigoO script usará título/palavras-chave para pesquisar no OpenAlex + arXiv; se ainda falhar, use lr search / web-access
extract com timeoutAumente --timeout ou informe ao usuário para tentar novamente
Usuário só quer o PDF, sem Markdownpaperdown2md.py --skip-extract

Exemplos

Artigo único (CIDD, nome de pasta representativo):

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"

Começando a partir de um post do WeChat (fallback automático para navegador CDP se HTTP falhar):

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

Começando a partir de um post do Xiaohongshu (busca automática em arXiv/OpenAlex se não houver link direto):

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

Ou, usando um PDF já existente apenas para o MinerU (o PDF já deve estar na pasta):

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
# Em seguida, organize em full.md + images/

Divisão de trabalho com outras skills

  • mineru: apenas converte PDF/arquivos existentes → consulte a skill mineru
  • lightread-cli: base de conhecimento LightRead, anotações, resenhas → não é a estrutura de diretórios local do paperdown2md
  • web-access: busca em páginas web, downloads não estruturados
  • paperdown2md (esta skill): pipeline completo: diretório local + PDF + full.md + images
  • aiforbio-paper-reading (a jusante): após full.md + images/ estarem prontos, escreve {ModelName}record.md no mesmo diretório do artigo para leitura aprofundada biomédica (dedução de fórmulas elemento por elemento + fluxo de dados de amostra). Veja aiforbio-paper-reading

Integração com aiforbio-paper-reading (pipeline recomendado)

Esta skill é responsável por obter e converter; a leitura aprofundada fica a cargo do aiforbio-paper-reading:

paperdown2md  -o <diretorio-artigos> "<identificador>"
    →  <diretorio-artigos>/<nome-artigo>/{pdf, full.md, images/}
aiforbio-paper-reading
    →  <diretorio-artigos>/<nome-artigo>/{ModelName}record.md

Após a geração de full.md + images/, se o usuário quiser "ler o artigo / escrever record / leitura aprofundada / dedução de fórmulas / exemplos de fluxo de dados", lembre e conecte ao aiforbio-paper-reading, não escreva longas notas de leitura dentro desta skill.

Notas sobre os scripts

  • scripts/run.sh: a única entrada recomendada; seleciona automaticamente o Python do skillsplace.
  • scripts/paperdown2md.py: apenas stdlib; verifica se está no skillsplace na inicialização; resolve → download → mineru-open-api extract → full.md / images/.

Quando o Agente executar esta skill: use run.sh primeiro, não python3 paperdown2md.py.

Instalação nos skills globais do Cursor:

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

Ou symlink de um checkout local: ln -s /caminho/para/paperdown2md ~/.cursor/skills/paperdown2md

Habilidades Relacionadas