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.
Automatiza o trabalho repetitivo de caçar PDF por PDF — e é transparente sobre o que não conseguiu encontrar.
Entradas sem DOI são resolvidas no Crossref por título + autor, com correspondência validada por título, sobrenome e ano.
Unpaywall, OpenAlex, Semantic Scholar, Europe PMC, arXiv, CORE, DOAJ, SciELO e mais — consultadas em sequência até achar o PDF.
Um relatorio.html classifica o que faltou (anti-bot, paywall, erro) com links para baixar à mão, e um manifest.csv abre no Excel.
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.
Aperte ⌘ + Espaço, escreva Terminal e tecle Enter.
Menu Iniciar, escreva PowerShell e tecle Enter.
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.
Os passos 1 a 3 são feitos uma única vez. Depois disso, usar o BibGetPDF é só repetir os passos 4 e 5.
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.
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.
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:
⚙️ 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.
.bib na pastaÉ a lista das referências que você quer baixar, no formato BibTeX. Do Zotero:
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.
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.
Dentro da pasta PDFs/ você encontra:
Os artigos baixados, com nome limpo e legível — um arquivo por referência encontrada.
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.
Uma planilha com uma linha por referência: situação, fonte de onde veio, DOI e motivo da falha. Abre no Excel ou LibreOffice.
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.
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ção | Para que serve |
|---|---|
--init | Pergunta 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. |
--bib | O arquivo .bib de entrada. Se você não disser nada, procura por references.bib. |
--output | A pasta onde salvar os PDFs (padrão: PDFs). Ela é criada se não existir. |
--email | Informa o e-mail direto no comando, sem usar o arquivo de configuração. |
--openalex-key | Idem para a chave da OpenAlex. |
--delay | Pausa em segundos entre um artigo e outro (padrão: 3). Aumente para 6 ou 8 se estiver apanhando bloqueio. |
--threshold | Rigor na comparação de títulos, de 0 a 1 (padrão: 0.75). Maior = mais exigente, menos falsos positivos. |
--doi-scrape | Liga 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-discovery | Nã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-filename | Nomeia cada PDF pelo DOI em vez de sobrenome-ano-titulo. Útil quando há títulos repetidos. |
--no-report | Não gerar o relatorio.html no fim. |
--no-probe | No diagnóstico final, não fazer as requisições extras de checagem — termina mais rápido, classifica com menos precisão. |
--version | Mostra a versão instalada. |
--help | Mostra a ajuda completa no Terminal. |
Cada caixa começa com a mensagem que aparece na tela. Ache a sua e clique para abrir.
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.
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.
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.
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.
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:
--delay 8.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.
Sinal clássico de que o seu IP levou um bloqueio temporário por excesso de requisições. O que fazer:
--delay 8.--doi-scrape, que é justamente a fonte mais propensa a provocar bloqueio.Nada se perde ao interromper: o que já foi baixado permanece, e rodar de novo retoma de onde parou.
O BibGetPDF procura o bibgetpdf.config em três lugares, nesta ordem:
--init cria.~/.config/bibgetpdf/bibgetpdf.config — use este se quiser uma configuração única, válida em qualquer pasta.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.
Consultadas em ordem de confiabilidade, com deduplicação de URLs entre elas.
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).