NotebookLM para criar conteúdo · Capítulo 26 de 28 · 25 min
Instalar a biblioteca não oficial e provar a sessão
Instale a notebooklm-py com versão fixada, prove a sessão contra o servidor e baixe a primeira geração assíncrona.
Este capítulo faz parte do curso gratuito NotebookLM para criar conteúdo.
Numa conta pessoal, não existe rota oficial de programação para o NotebookLM; a automação por código descrita aqui usa uma biblioteca não oficial (a API Enterprise é outra rota, com os requisitos vistos no capítulo anterior). A instalação e a autenticação trazem problemas conhecidos: versão que muda sozinha, sessão que parece viva e já morreu, comando que espera um vídeo de 30 minutos e desiste no meio. Antes de instalar qualquer coisa, confira se a operação precisa mesmo de automação. Uma peça por semana sai melhor pela interface web, com Generate later quando o limite acaba.
Se a resposta for automatizar, este capítulo leva você do zero a uma geração assíncrona baixada para a pasta do ciclo: biblioteca instalada com versão fixada, login feito por você, sessão provada com um teste que fala com o servidor, perfil amarrado a uma única conta, código de idioma certo e, no fechamento, o servidor MCP para usar tudo isso de dentro do Claude Code. O resultado conferível é um arquivo de áudio na pasta do ciclo e uma linha no manifesto com a versão da biblioteca que gerou a peça.
Antes de começar
0/4Escolha a rota pela capacidade de cada superfície
| Operação | Caminho só pela web | Rota oficial de programação | Biblioteca não oficial |
|---|---|---|---|
| Gerar Audio Overview | Studio, com prompt de foco e Generate later | API Enterprise, um por notebook | Sim, com formato e idioma |
| Gerar vídeo, slides ou infográfico | Studio | Nenhuma documentada | Sim |
| Adicionar fontes em lote | Painel de fontes, uma a uma | Workspace Studio ou API Enterprise | Sim, em lotes pequenos |
| Perguntar com citação | Chat do notebook | Workspace Studio (Ask NotebookLM) | Sim |
| Baixar as peças | Menu de cada peça no Studio | Não há download geral documentado | Sim, com destino posicional |
A notebooklm-py é uma biblioteca Python publicada por teng-lin no GitHub, que oferece API Python, linha de comando (o comando notebooklm), uma skill para agentes e um servidor MCP. O próprio README avisa, em outubro de 2026: biblioteca não oficial, use por sua conta e risco; usa APIs do Google não documentadas, que podem mudar sem aviso; não tem vínculo com o Google; limites de uso se aplicam; serve melhor a protótipos, pesquisa e projetos pessoais. A versão mais recente era a v0.8.5, publicada no GitHub em 12/10/2026, compatível com Python 3.15 e com correções de autenticação. Este curso fica no Python 3.12 porque é a versão do ambiente montado no capítulo de preparação e a da instalação auditada do caso; trocar de Python e de biblioteca ao mesmo tempo dobra as variáveis quando algo quebra.
MCP (Model Context Protocol) é o protocolo que permite a um agente, como o Claude Code, chamar ferramentas externas por um servidor padronizado. A notebooklm-py traz um servidor MCP que roda localmente (transporte stdio) ou como conector remoto hospedado por você. Com ele, o Claude Code lista notebooks, adiciona fontes e dispara gerações sem você digitar cada comando. Se você ainda não usa o Claude Code, o curso Claude Code cobre a instalação.
Da instalação à primeira peça baixada
Seis passos levam da escolha da rota ao arquivo registrado. Os três primeiros acontecem uma vez; os três últimos se repetem a cada ciclo.
- Escolher a rota
Confirme que a operação não tem caminho oficial suficiente para o seu volume.
Decisão humana - Instalar com versão fixada
Versão explícita no comando de instalação, anotada no manifesto.
Local, cota zero - Fazer login
Login interativo no navegador, feito por você, uma vez por perfil.
Decisão humana - Provar a sessão
auth check com --test fala com o servidor; sem a flag, só lê um arquivo.
Local, cota zero - Gerar sem esperar
Disparar com --no-wait, sondar o estado e aguardar o completed.
Gera no NotebookLM - Baixar e registrar
Download com destino posicional na pasta do ciclo e linha no manifesto.
Local, cota zero
A sessão salva pela biblioteca é uma credencial da sua conta Google inteira. Nunca cole o arquivo de sessão, cookies ou tokens em chat, issue, prompt ou repositório, e pare tudo no primeiro CAPTCHA ou alerta de login: o capítulo seguinte trata dessas travas.
Instalação solta, sem versão no comando ou com um upgrade pelo pipx (o instalador que isola a ferramenta do Python do sistema, usado no passo a passo abaixo) quando algo quebra, deixa você sem saber qual versão gerou a peça do mês passado. Instalação fixada põe a versão explícita no comando e no manifesto, e voltar atrás vira reinstalar a anterior. O motivo: a biblioteca acompanha APIs internas que mudam, e cada versão pode trocar nome de comando, flag ou formato de saída. O caso real deste curso fixa a v0.7.3 num commit auditado e proíbe atualização cega; a migração passa por backup, instalação num ambiente isolado, teste rápido e plano de volta. Fixar pela versão do PyPI é mais simples; pelo commit é mais rígido, porque um commit não muda depois de publicado. Os comandos de cada caminho estão nas abas abaixo do passo a passo.
Instalar e autenticar com a versão fixada
Passo 1: Confirme o Python 3.12 e o pipx
No terminal, rode py -3.12 --version no Windows ou python3.12 --version no Linux. Instale o pipx, que isola a ferramenta do Python do sistema, e rode pipx ensurepath. Feche e reabra o terminal.
Deu certo quando: O terminal mostra Python 3.12 e o comando pipx responde.
Erro comum: Instalar com pip global numa distribuição Linux moderna. Ela costuma recusar a instalação; fique no pipx.
Passo 2: Instale a biblioteca com versão explícita
Escolha a versão, anote no manifesto e instale com o extra browser, que traz o login pelo navegador. Depois baixe o Chromium do Playwright: o caso usou playwright install chromium; se o terminal disser que o comando playwright não é reconhecido, rode o playwright que fica dentro do ambiente da biblioteca criado pelo pipx (comandos nas abas abaixo). Confira com notebooklm --version.
Deu certo quando: A versão impressa é exatamente a que você anotou.
Erro comum: Copiar um comando antigo sem versão e acabar com outra versão instalada, diferente da que os seus comandos esperam. Outro tropeço comum é supor que o pipx deixa o playwright no PATH; ele expõe o comando notebooklm, e o playwright pode ficar só dentro do ambiente isolado.
Passo 3: Faça o login você mesmo
Rode notebooklm login. Uma janela do navegador abre; entre na sua conta Google e conclua o login. Se o navegador embutido falhar no Windows, use notebooklm login --browser chrome.
Deu certo quando: A biblioteca informa que a autenticação foi salva no perfil.
Erro comum: Tentar extrair cookies do navegador em silêncio. O caso registra que isso é frágil no Chrome atual e trata a sessão como credencial.
Passo 4: Prove que a sessão fala com o servidor
Rode notebooklm auth check --test e depois notebooklm list. O código de saída zero indica sessão viva.
Deu certo quando: auth check --test passa e a lista mostra os seus notebooks.
Erro comum: Rodar auth check sem --test. Sem a flag, o comando só confere o arquivo local e aprova uma sessão expirada.
No fim você tem: Biblioteca instalada na versão anotada, login feito por você e sessão provada contra o servidor.
Versão do PyPI (mais recente)
Fixe o número da versão no próprio comando. Em 23/10/2026 a mais recente era a 0.8.5.
Windows (PowerShell)
py -3.12 -m pip install --upgrade pip pipx
py -3.12 -m pipx ensurepath
Feche e reabra o PowerShell antes de seguir.
$py312 = py -3.12 -c "import sys; print(sys.executable)"
pipx install --python $py312 "notebooklm-py[browser]==0.8.5"
playwright install chromium
notebooklm --version
Se o PowerShell disser que playwright não é reconhecido, rode pipx list para ver a pasta onde ficam os ambientes do pipx e chame o playwright.exe de dentro dela, na subpasta notebooklm-py\Scripts, com o mesmo argumento install chromium.
Linux
sudo apt install pipx
pipx ensurepath
pipx install --python python3.12 "notebooklm-py[browser]==0.8.5"
~/.local/share/pipx/venvs/notebooklm-py/bin/playwright install chromium
notebooklm --version
Antes de usar qualquer comando deste capítulo numa versão nova, confira a ajuda local com notebooklm <comando> --help.
Commit auditado (como no caso)
O caso instala a v0.7.3 pelo commit da tag auditada, com o Python 3.12
$py312 = py -3.12 -c "import sys; print(sys.executable)"
pipx install --python $py312 "notebooklm-py[browser] @ git+https://github.com/teng-lin/notebooklm-py@a6c54417058bd5e43e0162dd93a390308d2f99f6"
notebooklm --version
Resultado esperado do último comando: 0.7.3.
Regra do caso: não rodar pipx upgrade notebooklm-py. Trocar de versão só pelo processo revisado de migração, com backup e rollback.
Login e prova de sessão
Login padrão
notebooklm login
Se o navegador embutido falhar no Windows
notebooklm login --browser chrome
Login corporativo pelo Edge
notebooklm login --browser msedge
Prova de sessão, depois a versão para leitura por script e a lista de notebooks
notebooklm auth check --test
notebooklm auth check --test --json
notebooklm list
Geração assíncrona
notebooklm-py: comandos verificados pelo caso na v0.7.3; confira com --help na sua versão
notebooklm --profile default language get
notebooklm --profile default artifact list -n <id-completo> --json
notebooklm --profile default generate audio -n <id-completo> --language pt_BR --format deep-dive --no-wait
notebooklm --profile default artifact poll <task-id> -n <id-completo> --json
notebooklm --profile default artifact wait <artifact-id> -n <id-completo> --timeout 1200 --json
notebooklm --profile default download audio -a <artifact-id> -n <id-completo> "ciclo-2026-10-23/audio-overview.m4a"
falhou? tente reaproveitar antes de gerar de novo
notebooklm --profile default artifact retry <artifact-id>
Perfil é a identidade de uma conta. A biblioteca guarda cada login num perfil, com a sessão salva em ~/.notebooklm/profiles/<perfil>/. A flag global --profile escolhe o perfil de cada comando, e os subcomandos profile create, list e switch administram a lista. Trate um perfil como uma pessoa: um perfil, uma conta, sempre a sua. Um notebook pode ser compartilhado com outras contas, mas cada perfil enxerga os notebooks e as permissões da própria conta; rodar um comando no perfil errado cria a peça na conta errada.
Perfil não é atalho para somar limites. Criar contas para multiplicar o volume, ou trocar de perfil quando o limite acaba, é exatamente o comportamento que as regras de automação do capítulo seguinte proíbem, e o caso registra a troca de conta como gatilho antifraude do Google. Os Termos de Serviço do Google proíbem usos indevidos dos serviços; leia-os antes de qualquer automação. Na automação, escreva o perfil e o ID completo do notebook em cada comando (-n com o ID inteiro devolvido por notebooklm create): o caso registra que um prefixo de ID que era único pode virar ambíguo e operar no notebook errado.
Gerar e baixar sem ficar preso ao terminal
Passo 1: Ajuste o idioma com sublinhado
Rode notebooklm language get e, se precisar, notebooklm language set pt_BR. Na biblioteca o português do Brasil é pt_BR, com sublinhado.
Deu certo quando: language get devolve pt_BR.
Erro comum: Escrever pt-BR com hífen, que falha com Unknown language code. O hífen fica para o RSS e para a página.
Passo 2: Confira a fila antes de disparar
Rode notebooklm artifact list -n <id> --json e veja se já existe uma peça do mesmo tipo em in_progress ou pending.
Deu certo quando: Nenhuma peça do mesmo tipo está em andamento.
Erro comum: Disparar de novo porque a primeira parece demorar. O caso registra que isso enfileira outro job e gasta limite à toa.
Passo 3: Dispare a geração sem esperar
Rode notebooklm generate audio -n <id> --language pt_BR --format deep-dive --no-wait. O comando devolve o controle na hora e o servidor continua o trabalho.
Deu certo quando: O comando termina na hora; anote o identificador que ele devolver ou consulte artifact list.
Erro comum: Usar --wait em vídeo. O caso registra espera padrão de 1200 s no generate audio, e um vídeo pode passar de 30 minutos; confira o --timeout de cada tipo com --help, porque a espera da linha de comando expira e o servidor segue gerando.
Passo 4: Sonde o estado até completed
Use notebooklm artifact poll <task-id> -n <id> --json para uma sondagem, notebooklm artifact list -n <id> --json para ver todas as peças, ou notebooklm artifact wait <artifact-id> -n <id> --timeout 1200 --json para aguardar com limite de tempo.
Deu certo quando: A peça passa de in_progress para completed e você anota o artifact-id.
Erro comum: Baixar antes do completed. O download falha ou traz arquivo incompleto.
Passo 5: Baixe com destino posicional e registre
Rode notebooklm download audio -a <artifact-id> -n <id> "<pasta do ciclo>/audio-overview.m4a". O destino vem como argumento posicional. Depois escreva no manifesto a peça, a data, a versão da biblioteca e o estado aguardando.
Deu certo quando: O arquivo está na pasta do ciclo e o manifesto tem a linha nova.
Erro comum: Procurar uma flag --output. Ela não existe na versão do caso; o destino é posicional.
No fim você tem: Um Audio Overview em português do Brasil, baixado na pasta do ciclo e registrado no manifesto com a versão da biblioteca.
auth check --test passa no seu perfil, artifact list mostra a peça como completed e o arquivo audio-overview.m4a está na pasta do ciclo, com uma linha no manifesto que traz a data, o perfil, a versão da biblioteca e o estado aguardando.
O servidor MCP para o Claude Code. O guia de MCP da biblioteca diz que o servidor vem no extra mcp, que a lista de ferramentas não segue versionamento semântico (pode mudar entre versões menores) e traz instruções para Claude Desktop, Claude Code, Cursor e Windsurf. O caso mantém a produção na v0.7.3; o plano de adoção dele prevê, para a série 0.8 e só num ambiente descartável separado da produção, a instalação no Claude Code pelo comando notebooklm mcp install claude-code e a variável NOTEBOOKLM_MCP_STRICT_IDS=1, que recusa IDs parciais ou ambíguos. Antes de usar o servidor, instale o extra mcp, confira notebooklm mcp install claude-code --help e abra a configuração que o comando gravou para conferir se ela chama a mesma versão fixada da linha de comando. A v0.7.3 não tem servidor MCP: notebooklm mcp --help responde No such command 'mcp' e pode sair com código zero, por isso a detecção confere o texto da resposta além do código de saída.
Duas regras do caso valem para qualquer versão. Primeira: todo fluxo escrito para MCP documenta o comando equivalente da linha de comando, porque as ferramentas MCP podem sumir do índice quando a conexão reinicia no meio da sessão, e aí o agente segue pela linha de comando. Segunda: rotina agendada usa a linha de comando, e o MCP fica para a sessão interativa, onde você acompanha cada chamada. A biblioteca também instala uma skill para agentes com notebooklm skill install.
Linha de comando, MCP ou interface?
A mesma biblioteca chega ao trabalho por três portas. A escolha depende de quem acompanha a execução e de quantas peças entram no ciclo.
- é uma peça avulsa ou a primeira de um formato novoInterface web
Você vê a peça, ajusta o prompt e baixa pelo menu. Sem instalar nada.
Gera no NotebookLM - você conduz a sessão no Claude Code e acompanha cada chamadaServidor MCP
IDs estritos ligados e o comando equivalente da linha de comando anotado para quando as ferramentas sumirem.
Gera no NotebookLM - é uma rotina agendada que repete os mesmos passosLinha de comando
Versão fixada, perfil explícito, ID completo e saída em JSON para o script conferir.
Gera no NotebookLM
Exemplo resolvido, do caso real. Em 11/07/2026 a esteira GEO-Pesquisador fez uma auditoria da instalação e encontrou dois problemas sobrepostos. O primeiro: o lançador global do comando notebooklm tinha zero bytes e apontava para um Python 3.12 que já não existia. A decisão foi não remendar o lançador: um ambiente isolado provou que a v0.7.3 funcionava, e o reparo foi remover só a instalação quebrada e repetir a instalação fixada pelo commit, sob um Python 3.12 existente.
O segundo problema era mais traiçoeiro. Todo comando devolvia erro de certificado, porque o antivírus da máquina interceptava as conexões seguras, e esse erro escondia o problema real: a sessão tinha expirado. Um ciclo anterior chegou a concluir, errado, que o login exigiria sempre interação. A decisão foi tratar as camadas em ordem: primeiro corrigir a cadeia de certificados com um arquivo próprio apontado por variável de ambiente, para que reinstalar não apagasse o ajuste; aí a mensagem mudou para Authentication expired; então login interativo e auth check --test. Corrigir o certificado validou apenas a conexão; a sessão continuava sem prova até o teste contra o servidor.
Variação: se o seu auth check sem --test passa e a geração falha, rode de novo com --test antes de mexer em qualquer outra coisa. Sessão expirada é uma causa frequente. O caso anotou que repositórios de fluxos da comunidade relatam expiração dos cookies do Google em duas a quatro semanas; trate esse número como estimativa e deixe o auth check --test decidir.
Para avaliar o script, procure três coisas antes de rodar. Primeira: alguma linha lê ou imprime o arquivo de sessão? Se sim, recuse e peça de novo. Segunda: auth check aparece com --test em todos os lugares? Terceira: existe algum pipx install ou upgrade escondido? A verificação não pode mudar o ambiente que ela verifica. Depois rode uma vez com o perfil certo e outra com um nome de perfil que não existe; a segunda precisa parar com código diferente de zero.
Verificação rápida
Seu script de rotina mostra auth check OK, mas a geração do áudio falha com erro de autenticação. Qual é o primeiro passo?
Verificação rápida
No meio de uma sessão do Claude Code, as ferramentas notebooklm do servidor MCP somem da lista. O que fazer?
Perguntas frequentes deste capítulo
A notebooklm-py é oficial do Google?
Por que pt_BR com sublinhado e não pt-BR?
Qual versão da notebooklm-py devo instalar?
Seu caderno neste capítulo
Abrir o caderno completoSelecione um trecho do capítulo para destacar ou anotar. Nos vídeos e áudios, use Anotar este momento. No teclado, selecione com Shift e as setas e use Alt+Shift+D para destacar ou Alt+Shift+N para anotar.
Salvo neste navegador. Entre na sua conta para levar o caderno a outros aparelhos.
Entre na sua conta para compartilhar o que aprendeu e convidar alguém para estudar com você.
Conexões deste capítulo
Veja o que estudar antes e para onde seguir depois, explore os conceitos e compare abordagens em outros cursos. Sugestões marcadas como “sugerido pelo grafo” vêm dos assuntos em comum, não do índice do curso.
Estude antes
- Usar o mapa do curso e o glossário mínimosugerido pelo grafoApresenta o conceito “MCP”, usado em “Instalar a biblioteca não oficial e provar a sessão”.
- Projete um cliente HTTP que falhe de forma previsívelsugerido pelo grafoApresenta o conceito “Timeout”, usado em “Instalar a biblioteca não oficial e provar a sessão”.
- CursoSíntese e didática com IAsugerido pelo grafoO NotebookLM resume e transforma fontes em áudio, vídeo e slides; quem já sabe preservar fatos e condições numa síntese confere melhor o que a ferramenta gerou.
- CursoPrompt Engineering para Executivossugerido pelo grafo5 capítulos de “NotebookLM para criar conteúdo” usam conceitos apresentados em “Prompt Engineering para Executivos”.
Conceitos deste capítulo
O mesmo assunto em outros cursos
- Python: do zero ao vibecodingPython em outubro de 2026: escolha e reproduza seu ambienteExaminar conexões de Python em outubro de 2026: escolha e reproduza seu ambiente
- Frontends com VibecodingConfigurar ambiente, skills e o contêiner de contextoExaminar conexões de Configurar ambiente, skills e o contêiner de contexto
- Setup Completo: do zero ao Claude CodeVeja o que o Claude Code faz antes de instalarExaminar conexões de Veja o que o Claude Code faz antes de instalar
- Setup de Vibecoding no MacInstalar o Claude CodeExaminar conexões de Instalar o Claude Code
Terminou a leitura?
Marque como concluído para o capítulo contar no seu painel e no certificado.
Voltar ao capítulo anterior: Superfícies por tipo de conta e o que cada caminho faz
Leve uma ideia para a prática
Escolha uma atividade no painel e volte a este curso quando quiser.
Atividades e evolução ficam reunidas no painel da sua conta.
Capítulos vizinhos em NotebookLM para criar conteúdo
- 24O caso real do ciclo semanal de pesquisa, do acervo às lições
- 25Superfícies por tipo de conta e o que cada caminho faz
- 26Instalar a biblioteca não oficial e provar a sessão
- 27Automação que para sozinha antes de causar estrago
- 28Projeto final com o pacote completo de um tema seu