📚 Ferramenta acadêmica · código aberto

Da sua bibliografia
aos PDFs, automaticamente.

O BibGetPDF lê seu arquivo .bib e busca o PDF de acesso aberto de cada artigo — descobrindo DOIs que faltam, validando cada arquivo e dizendo exatamente o que não encontrou.

🌐 10 fontes de acesso aberto 🐍 Python 3.10+ 🔓 só open access
O que ele faz

Feito para pesquisadores e docentes

Automatiza o trabalho repetitivo de caçar PDF por PDF — e é transparente sobre o que não conseguiu encontrar.

🔎

Descoberta de DOI

Entradas sem DOI são resolvidas no Crossref por título + autor, com correspondência validada por título, sobrenome e ano.

🌐

10 fontes legítimas

Unpaywall, OpenAlex, Semantic Scholar, Europe PMC, arXiv, CORE, DOAJ, SciELO e mais — consultadas em sequência até achar o PDF.

📊

Relatório + planilha

Um relatorio.html classifica o que faltou (anti-bot, paywall, erro) com links para baixar à mão, e um manifest.csv abre no Excel.

Antes de começar

Onde é que se digita isso?

Os comandos deste guia são digitados no Terminal — a janelinha de texto onde o computador aceita comandos escritos. Se você não usa uma há tempos, comece por aqui.

🍎 macOS

Aperte ⌘ + Espaço, escreva Terminal e tecle Enter.

🪟 Windows

Menu Iniciar, escreva PowerShell e tecle Enter.

🐧 Linux

Aperte Ctrl + Alt + T.

📁

O truque que resolve 90% da confusão: o Terminal está sempre “dentro” de alguma pasta, e é lá que ele vai procurar seus arquivos e salvar os PDFs. Para entrar na pasta que você quer, digite cd, um espaço, e então arraste a pasta do Finder/Explorador para dentro da janela do Terminal — o caminho aparece sozinho. Tecle Enter e pronto, você está lá dentro.

Como usar

Do zero aos PDFs, passo a passo

Os passos 1 a 3 são feitos uma única vez. Depois disso, usar o BibGetPDF é só repetir os passos 4 e 5.

Instale o Python só uma vez

O BibGetPDF é um programa em Python, então o Python precisa estar no computador — versão 3.10 ou mais nova. Para descobrir se você já tem, digite no Terminal:

python3 --version

Se responder algo como Python 3.12.1, está pronto. Se disser que o comando não existe, ou se o número for menor que 3.10, baixe o instalador em python.org/downloads e instale normalmente.

🪟

No Windows, troque python3 por python em todos os comandos deste guia. E, ao instalar o Python, marque a caixinha “Add Python to PATH” na primeira tela do instalador — sem ela, o Terminal não acha o Python depois.

Instale o BibGetPDF só uma vez

Um comando só. Ele baixa o programa e tudo de que ele precisa:

pip install "bibgetpdf[full]"

Isso cria um comando novo no seu Terminal, chamado bibgetpdf. Para conferir que deu certo:

bibgetpdf --version

Deve responder com o número da versão. Se der erro de instalação ou “comando não encontrado”, veja Se algo der errado.

Informe o seu e-mail só uma vez

O BibGetPDF precisa saber o seu e-mail. Não é burocracia: as bases acadêmicas pedem um endereço de contato para saber quem está consultando (a Unpaywall recusa quem não informa) e, em troca, atendem você com mais folga.

Você não precisa editar arquivo nenhum — o programa pergunta e guarda sozinho. Rode:

bibgetpdf --init

Ele faz duas perguntas ali mesmo, no Terminal. Digite o seu e-mail, tecle Enter, e na segunda pergunta tecle Enter de novo para pular:

Terminal
⚙️  Configuração do BibGetPDF

   Seu e-mail: voce@universidade.br

   Chave da API OpenAlex — opcional, tecle Enter para pular.
   Chave [Enter pula]:

✅ Pronto, salvo em: /Users/voce/Bibliografia/bibgetpdf.config
   Não vou perguntar de novo — o arquivo é lido a cada execução.

Pronto, acabou. E é só desta vez: o BibGetPDF lê essa configuração sozinho a cada execução, então das próximas vezes você vai direto ao passo 5.

🔑

Sobre a chave da OpenAlex (opcional): sem ela, a OpenAlex — que é uma das dez fontes — limita você a cerca de 100 buscas por dia; as outras nove seguem funcionando sem restrição. Se um dia quiser, ela é gratuita e sai em um minuto em openalex.org/settings/api. Para adicioná-la depois, rode bibgetpdf --init de novo e responda s quando ele perguntar se quer alterar.

⌨️

Prefere não guardar nada? Dá para informar o e-mail no próprio comando, toda vez, sem criar arquivo: bibgetpdf --bib references.bib --email voce@universidade.br

🔒

O arquivo bibgetpdf.config, criado por esse comando, guarda dados seus. Não publique e não versione no Git.

Ponha o seu arquivo .bib na pasta

É a lista das referências que você quer baixar, no formato BibTeX. Do Zotero:

  1. Selecione as referências desejadas (ou a coleção inteira).
  2. Clique com o botão direito → Exportar itens…
  3. Em “Formato”, escolha BibTeX e confirme.
  4. Salve o arquivo na mesma pasta onde você criou o bibgetpdf.config.

No Mendeley e no EndNote o caminho é equivalente (exportar como BibTeX). O nome do arquivo pode ser qualquer um — só precisa terminar em .bib.

⚡

Rende mais assim: no Zotero, rode antes o “Find Available PDFs” para pegar o que ele já resolve sozinho, e exporte para o .bib só as referências que ficaram sem PDF. Aí o BibGetPDF trabalha só no que sobrou.

Rode

Com o Terminal dentro da pasta (lembre do truque do cd + arrastar), rode — trocando references.bib pelo nome real do seu arquivo:

bibgetpdf --bib references.bib --output PDFs

E é só esperar. O programa vai listando cada referência com o resultado, uma por linha. Ele pausa alguns segundos entre um artigo e outro de propósito — é o que evita que as bases bloqueiem o seu acesso por excesso de requisições. Uma bibliografia de 50 itens leva alguns minutos.

↻

Pode interromper e rodar de novo à vontade. Ao repetir o comando, o BibGetPDF pula o que já baixou (conferindo se cada arquivo está íntegro) e retoma de onde parou.

Veja o que chegou

Dentro da pasta PDFs/ você encontra:

📄
sobrenome-ano-titulo.pdf

Os artigos baixados, com nome limpo e legível — um arquivo por referência encontrada.

📊
relatorio.html

Abra no navegador (clique duas vezes). É o mais útil: mostra o que não baixou e por quê — paywall de verdade, bloqueio anti-robô, erro de servidor — com links prontos para buscar cada um à mão.

🧾
manifest.csv

Uma planilha com uma linha por referência: situação, fonte de onde veio, DOI e motivo da falha. Abre no Excel ou LibreOffice.

📋
download_log.txt

O registro detalhado da execução, caso você queira investigar algum caso específico.

🔁

Da próxima vez que precisar — e é para este parágrafo que você deve voltar daqui a seis meses — pule tudo acima. Abra o Terminal, entre na sua pasta de trabalho (cd + arrastar a pasta), ponha lá o novo .bib e rode bibgetpdf --bib nome-do-arquivo.bib --output PDFs. A configuração do passo 3 continua valendo.

Referência rápida

Todas as opções

Nada aqui é obrigatório — o comando do passo 5 já funciona sozinho. Estas opções existem para ajustes finos, e você pode ver a lista completa a qualquer momento com bibgetpdf --help.

OpçãoPara que serve
--initPergunta o seu e-mail (e a chave opcional da OpenAlex) e grava em bibgetpdf.config, na pasta atual. É o primeiro comando de quem acabou de instalar — e serve também para alterar o que já está salvo.
--bibO arquivo .bib de entrada. Se você não disser nada, procura por references.bib.
--outputA pasta onde salvar os PDFs (padrão: PDFs). Ela é criada se não existir.
--emailInforma o e-mail direto no comando, sem usar o arquivo de configuração.
--openalex-keyIdem para a chave da OpenAlex.
--delayPausa em segundos entre um artigo e outro (padrão: 3). Aumente para 6 ou 8 se estiver apanhando bloqueio.
--thresholdRigor na comparação de títulos, de 0 a 1 (padrão: 0.75). Maior = mais exigente, menos falsos positivos.
--doi-scrapeLiga uma fonte extra que lê as páginas das editoras. Acha mais alguns PDFs, mas é a maior causa de bloqueio — por isso vem desligada.
--no-doi-discoveryNão procurar no Crossref o DOI das entradas que não têm um. Deixe ligado (padrão): é o que mais aumenta a taxa de acerto.
--use-doi-as-filenameNomeia cada PDF pelo DOI em vez de sobrenome-ano-titulo. Útil quando há títulos repetidos.
--no-reportNão gerar o relatorio.html no fim.
--no-probeNo diagnóstico final, não fazer as requisições extras de checagem — termina mais rápido, classifica com menos precisão.
--versionMostra a versão instalada.
--helpMostra a ajuda completa no Terminal.
Se algo der errado

Os tropeços mais comuns

Cada caixa começa com a mensagem que aparece na tela. Ache a sua e clique para abrir.

“command not found: bibgetpdf”
bibgetpdf: command not found 'bibgetpdf' não é reconhecido como um comando interno ou externo

O programa foi instalado, mas o Terminal não sabe onde ele está. Não precisa reinstalar: existe uma forma equivalente de chamá-lo, que funciona sempre —

python3 -m bibgetpdf --bib references.bib --output PDFs

Todas as opções funcionam igual; é só trocar bibgetpdf por python3 -m bibgetpdf (no Windows, python -m bibgetpdf) no começo do comando.

“Falta configurar o seu e-mail de contato”
⚠️ Falta configurar o seu e-mail de contato — as APIs acadêmicas exigem um (a Unpaywall recusa quem não informa).

Rodando no Terminal, normalmente você não vê essa mensagem: o BibGetPDF simplesmente pergunta o seu e-mail, salva e continua. Ela aparece quando não há ninguém para responder — em tarefa agendada, script ou quando a saída do comando foi redirecionada para um arquivo.

Nesses casos, informe o e-mail sem depender de pergunta, de uma destas formas:

bibgetpdf --bib references.bib --email voce@universidade.br

…ou deixe-o gravado antes, rodando bibgetpdf --init uma vez num Terminal normal. Se a mensagem apontar um arquivo de configuração que já existe, é porque ele ainda está com o e-mail de exemplo — rode bibgetpdf --init e responda s para corrigir.

“Não encontrei o arquivo .bib”
❌ Não encontrei o arquivo .bib: references.bib

Quase sempre é uma de duas coisas: o Terminal não está na pasta certa, ou o arquivo tem outro nome (o Zotero costuma exportar como Exportado.bib ou My Library.bib).

O programa ajuda: ele mostra o caminho exato onde procurou e lista os arquivos .bib que encontrou na pasta, já com o comando pronto para copiar. Se o nome tiver espaços, ponha entre aspas:

bibgetpdf --bib "Minha Biblioteca.bib"

Se a lista vier vazia, o Terminal está na pasta errada — volte ao truque do cd + arrastar, lá em Onde é que se digita isso.

Erro ao instalar: “Failed building wheel for bibtexparser”
ERROR: Failed building wheel for bibtexparser ERROR: Could not build wheels for bibtexparser

As ferramentas de instalação do seu Python estão velhas. Atualize-as e tente de novo:

python3 -m pip install --upgrade pip setuptools wheel
pip install "bibgetpdf[full]"

Se ainda assim falhar, instale num ambiente isolado — três linhas, e não mexe em mais nada do sistema:

python3 -m venv bibgetpdf-env
source bibgetpdf-env/bin/activate   # Windows: bibgetpdf-env\Scripts\activate
pip install "bibgetpdf[full]"

Feito isso, use o bibgetpdf normalmente. Só lembre de repetir a linha do activate toda vez que abrir um Terminal novo.

Baixou bem menos PDFs do que eu esperava

Isso costuma ser o resultado correto, não um defeito. O BibGetPDF só busca cópias de acesso aberto: artigo que só existe atrás de paywall não vai aparecer, por definição.

Abra o relatorio.html antes de concluir qualquer coisa — ele separa o que faltou por motivo, e a leitura muda conforme o caso:

  • Paywall real — não há versão aberta. Baixe pelo login institucional, via Portal CAPES/CAFe; o relatório já traz o link de cada artigo.
  • Bloqueio anti-robô — o servidor recusou o acesso automatizado. Tente de novo mais tarde com --delay 8.
  • Erro de servidor — problema temporário do outro lado; vale repetir o comando depois.

Vale também conferir se as referências têm DOI. Sem DOI, quase toda fonte fica sem chave de busca — o BibGetPDF tenta descobrir o DOI sozinho no Crossref, mas nem sempre consegue.

Muitos erros de rede, ou tudo falhando de repente

Sinal clássico de que o seu IP levou um bloqueio temporário por excesso de requisições. O que fazer:

  • Pare, espere algumas horas e recomece com uma pausa maior: --delay 8.
  • Não use --doi-scrape, que é justamente a fonte mais propensa a provocar bloqueio.
  • Prefira lotes menores — exporte 30 ou 40 referências por vez em vez de 500.

Nada se perde ao interromper: o que já foi baixado permanece, e rodar de novo retoma de onde parou.

Onde fica o arquivo de configuração?

O BibGetPDF procura o bibgetpdf.config em três lugares, nesta ordem:

  • A pasta onde você está rodando o comando — é o caso normal, e o que o --init cria.
  • ~/.config/bibgetpdf/bibgetpdf.config — use este se quiser uma configuração única, válida em qualquer pasta.
  • Ao lado do arquivo bibgetpdf.py, se você estiver rodando a partir do código-fonte.

Vale lembrar a ordem de precedência: o que você escreve no comando (--email) vence a variável de ambiente (BIBGETPDF_EMAIL), que vence o arquivo.

Cobertura

Dez fontes de acesso aberto

Consultadas em ordem de confiabilidade, com deduplicação de URLs entre elas.

1 Unpaywall
2 Semantic Scholar
3 OpenAlex
4 Europe PMC
5 PMC / NCBI
6 arXiv
7 CORE
8 DOAJ
9 DOI por editora
10 SciELO
🔓

Somente acesso aberto

O BibGetPDF busca apenas cópias legítimas de open access. Não acessa o Sci-Hub, não burla paywalls e não faz login em nada. O que estiver realmente em paywall aparece no relatório com o caminho para o acesso institucional (CAPES/CAFe).

Autor

Quem construiu

HA

Dr. Henrique Alvarenga

Médico psiquiatra e professor do curso de Medicina da Universidade Federal de São João del-Rei (UFSJ), onde coordena as disciplinas de Psicopatologia e Psiquiatria. Atua na interface entre ciência, tecnologia, filosofia, comportamento e emoção, com interesse em análise de dados (R e Python) — terreno de onde nasceu esta ferramenta.

henriquealvarenga.com ↗   GitHub ↗