Intermediário 12 minInterfaces

NotebookLM local: alternativas open-source auto-hospedadas

O NotebookLM popularizou uma ideia simples: enviar um conjunto de documentos, fazer perguntas cujas respostas citam suas fontes e gerar um resumo em áudio que você pode ouvir como um podcast. O problema é que tudo é enviado aos servidores do Google. Este guia mostra como obter um NotebookLM local usando ferramentas open-source conectadas a um LLM auto-hospedado: notebooks de fontes, respostas com citações e síntese de voz, sem que um único arquivo seu saia da sua máquina.

Por Léa B.·Atualização 2026-08-27·Testado no Windows, macOS e Linux

#O que faz o NotebookLM e o que podemos replicar

Antes de reconstruí-lo, é preciso entender o que o NotebookLM realmente oferece. Não é um chatbot generalista: é um assistente “ancorado” em um corpus de documentos que você escolhe. Ele responde apenas com base nessas fontes, cita seus trechos e, em teoria, se recusa a inventar o que não consta nelas. Três elementos compõem a experiência.

Notebook de fontes
São importados PDFs, páginas web, anotações ou transcrições. Esses materiais são as únicas fontes das quais o assistente pode extrair informações.
As respostas citadas
Cada afirmação remete ao trecho da fonte que a sustenta, permitindo verificar com um clique em vez de confiar cegamente.
O resumo em áudio (Audio Overview)
Duas vozes sintéticas discutem seus documentos como um podcast, para ouvir uma síntese andando, em vez de lê-la.

Hoje, essas três funções podem ser reproduzidas com componentes de software livre. A primeira e a segunda não são nada mais do que RAG (Retrieval-Augmented Generation) bem elaborado: indexação das fontes, busca de trechos relevantes e geração de uma resposta que remete a esses trechos. A terceira é um pipeline texto → diálogo → síntese de voz (TTS). Nada de exótico — tudo cabe em uma máquina com uma GPU de entrada.

i
O que não é replicado de forma idêntica
A ergonomia muito refinada do NotebookLM e a qualidade das vozes do seu Audio Overview continuam difíceis de igualar pixel a pixel. O objetivo aqui não é clonar a interface, mas oferecer os mesmos usos — fontes, citações, áudio — mantendo o controle sobre seus dados.

#Por que querer um NotebookLM local

O kit IA Local

Seu ChatGPT privado e gratuito na sua máquina em 1 hora — LM Studio, Ollama, Open WebUI, seus documentos, sem nuvem.

  • Espaço online vitalício
  • PDF + arquivos
  • Atualizações vitalícias

A razão número um é a confidencialidade. Um notebook costuma conter o que é mais sensível: anotações de pesquisa não publicadas, documentos internos da empresa, arquivos de clientes, contratos, relatórios médicos. Entregar isso ao Google é confiar uma cópia a um terceiro, com condições de uso que mudam e sobre as quais você não tem controle. Configurar um NotebookLM local resolve o problema pela raiz: os arquivos permanecem no seu disco e a inferência roda no seu hardware.

Soberania dos dados
Nenhum documento, nenhuma solicitação passa por um serviço de terceiros. Essencial para o RGPD, o sigilo profissional ou atividades confidenciais de pesquisa e desenvolvimento.
Sem limite de uso nem assinatura
Após a stack estar instalada, você pode processar tantas fontes quanto o disco e a sua paciência permitirem, sem limite mensal.
Offline
A cadeia completa funciona sem conexão, o que é importante para deslocamentos ou em redes isoladas.
Controle do modelo
Você escolhe o LLM, a língua preferida, a quantização e as configurações — em vez de ficar sujeito a um modelo caixa-preta.

#Alternativas open-source sólidas

Vários projetos visam explicitamente ser um NotebookLM local. Nenhum é perfeito, mas todos se conectam ao Ollama e evoluem rapidamente. A seguir, os que são boas opções em 2026, do mais próximo do NotebookLM ao mais aberto a adaptações por conta própria.

Open Notebook
O mais fiel ao espírito do NotebookLM: conceito de notebooks, gerenciamento de fontes, chat com citações e geração integrada de podcasts. De código aberto, dockerizado, compatível com Ollama para permanecer 100% local.
SurfSense
Um assistente de pesquisa open-source voltado a múltiplas fontes (documentos, web, conectores). Bom para agregar informações e fazer consultas, com suporte a LLMs locais.
Open WebUI / AnythingLLM
Não são clones do NotebookLM, mas duas interfaces maduras de RAG que cobrem o essencial: importação de documentos, chat com citações e modelos de embeddings locais. O caminho mais simples para a parte “fontes + perguntas e respostas”.
Podcastfy
Um módulo dedicado apenas à parte de áudio: transformar documentos ou URLs em uma conversa com duas vozes. Ele é controlado com um LLM local e um mecanismo TTS de sua escolha.
→
Duas estratégias
Ou você usa uma ferramenta "tudo em um" que compete diretamente com o NotebookLM (Open Notebook), ou monta por conta própria uma interface RAG (Open WebUI) para as fontes e citações, seguida de um pipeline TTS separado para o áudio. A segunda opção é mais modular e reutiliza componentes que você talvez já tenha.

#Pré-requisitos

Ollama
O daemon que serve os modelos, em http://localhost:11434 por padrão. Consultar o guia de instalação caso a instalação ainda não tenha sido feita.
Um modelo de geração
Qwen 3.5 9B (≈6,6 GB de VRAM em Q4_K_M, 256k de contexto e multimodal) ou Mistral Small 24B (≈14 GB) para um excelente desempenho em francês; um Granite 4.2 8B (≈5,3 GB) basta em uma configuração modesta.
Um modelo de embeddings
nomic-embed-text ou mxbai-embed-large, disponíveis para download via ollama pull. Leves, funcionam mesmo sem GPU.
Docker
A maioria das alternativas (Open Notebook, Open WebUI, AnythingLLM) são implantadas em um contêiner, o que evita conflitos de dependências.
Um motor de síntese de voz local
Piper para a parte de áudio: rápido, leve, com vozes em francês. Uma GPU nem sequer é obrigatória para a síntese de voz.
Recuperar os modelos
# Modèle de génération (adaptez à votre VRAM)
ollama pull qwen3.5:9b

# Modèle d'embeddings pour le RAG
ollama pull nomic-embed-text
i
Referências de VRAM em Q4_K_M
Aproximadamente 2 GB para um 3B, 5 GB para um 7B, 9 GB para um 14B e 19 GB para um 32B. Uma RTX 3060 de 12 GB roda um 14B com conforto; em um Mac com memória unificada (M4 Pro 24-48 GB), um 32B continua viável.

#Etapa 1: montar seu caderno de fontes com Ollama

A primeira peça de um NotebookLM local é o próprio notebook: o local onde se colocam as fontes e onde elas são indexadas. Aqui usamos o Open Notebook, que reproduz fielmente esse conceito. Ele é executado em um contêiner e configurado para se comunicar com o seu Ollama em vez de um serviço na nuvem.

  1. 01
    Obter o projeto
    Clone o repositório Open Notebook e entre no diretório dele. Ele fornece um arquivo docker-compose pronto para uso.
  2. 02
    Apontar para Ollama
    Na configuração (arquivo de ambiente), indique Ollama como provedor de modelos e a URL http://localhost:11434 (ou http://host.docker.internal:11434 a partir do contêiner). Escolha seu modelo de geração e nomic-embed-text para os embeddings.
  3. 03
    Iniciar a stack
    Execute docker compose up. A interface web então se abre no navegador, com o banco de dados e a indexação gerenciados para você.
  4. 04
    Criar um notebook e importar
    Crie um notebook, depois arraste seus PDFs para ele, cole URLs ou texto. Cada fonte é automaticamente dividida e vetorizada.
Terminal
# Récupérer et lancer Open Notebook
git clone https://github.com/lfnovo/open-notebook.git
cd open-notebook

# Configurer le fournisseur Ollama dans le fichier d'environnement
cp .env.example .env
# éditez .env : OLLAMA_API_BASE=http://host.docker.internal:11434

# Démarrer la stack complète
docker compose up -d
!
host.docker.internal em Linux
Dentro de um contêiner Docker, localhost refere-se ao contêiner, não à sua máquina. No macOS e no Windows, host.docker.internal aponta para o host. No Linux, às vezes é necessário adicioná-lo explicitamente (extra_hosts: host.docker.internal:host-gateway no compose) ou usar o IP do gateway do Docker. Caso contrário, o Ollama permanecerá inacessível.

Se você preferir não adicionar mais uma ferramenta, Open WebUI e AnythingLLM fazem um ótimo papel de notebook de fontes: criamos um espaço de trabalho (workspace), importamos os documentos e a indexação via nomic-embed-text é feita automaticamente. É o caminho 'sem código' detalhado nos guias RAG do site.

#Etapa 2: perguntas e respostas com citações

Esse é o coração de um NotebookLM local: fazer uma pergunta em linguagem natural e obter uma resposta que se baseie apenas em suas fontes, com o trecho exato para fundamentá-la. Tecnicamente, o RAG recupera os trechos mais próximos da pergunta, depois o LLM redige a partir deles — não de seu conhecimento geral. A qualidade das citações depende principalmente de duas coisas: um prompt de sistema rigoroso e o pedido explícito da fonte.

Tanto no Open Notebook quanto no Open WebUI, esse comportamento já está integrado: faça a pergunta no chat do notebook e a resposta exibe os trechos utilizados. Se você montar sua própria cadeia, o prompt de sistema faz toda a diferença.

Prompt de sistema para respostas com citações
Tu réponds UNIQUEMENT à partir des extraits fournis ci-dessous.

Règles :
- Si la réponse ne figure pas dans les extraits, dis « Je ne trouve pas cette information dans les sources. »
- N'utilise jamais tes connaissances générales pour compléter.
- Après chaque affirmation, indique la source entre crochets, ex. [source 2].
- Cite mot pour mot le passage clé quand c'est utile.

Réponds en français, de façon concise.

Nos ajustes do modelo, dois parâmetros são importantes. Uma temperatura baixa (0,2) limita as invenções e mantém o modelo fiel às fontes. Uma janela de contexto (num_ctx) suficiente permite incorporar os trechos recuperados sem truncá-los — caso contrário, o modelo responde com base em apenas uma parte dos trechos.

Chamada ao Ollama com fontes
import requests

SYSTEM = open('prompt_systeme.txt').read()

# extraits = passages renvoyés par votre recherche vectorielle
contexte = "\n\n".join(
    f"[source {i+1}] {e}" for i, e in enumerate(extraits)
)

resp = requests.post("http://localhost:11434/api/chat", json={
    "model": "qwen3.5:9b",
    "stream": False,
    "options": {"num_ctx": 8192, "temperature": 0.2},
    "messages": [
        {"role": "system", "content": SYSTEM},
        {"role": "user", "content": f"{contexte}\n\nQuestion : {question}"},
    ],
})

print(resp.json()["message"]["content"])
i
O RAG não lê 'tudo'
Ao contrário do que muita gente imagina, o modelo não percorre todas as suas fontes a cada pergunta: ele recebe apenas alguns dos trechos mais próximos. Uma pergunta mal formulada recupera os trechos errados e produz uma resposta que foge da pergunta. Reformule com os termos exatos do documento se a resposta decepcionar.

#Etapa 3: gerar um resumo em áudio local (TTS)

Essa é a função emblemática do NotebookLM — o Audio Overview, duas vozes que discutem seus documentos — e também é a mais impressionante de recriar localmente. O pipeline se divide em duas etapas: o LLM escreve um roteiro de diálogo a partir das fontes, depois um mecanismo TTS local transforma esse roteiro em áudio. Assim, tanto a voz quanto o texto permanecem inteiramente off-line.

Primeira etapa: fazer o LLM redigir a conversa. Pedimos ao LLM um diálogo entre dois personagens que explique o conteúdo de forma acessível, identificando quem fala em cada fala — essa marcação servirá para alternar as vozes na síntese.

Prompt de script de podcast
À partir des sources ci-dessous, écris un dialogue de podcast en français
entre deux animateurs, Alex et Camille, qui vulgarisent le contenu.

Règles :
- Format strict, une réplique par ligne : « Alex: ... » ou « Camille: ... ».
- Reste fidèle aux sources, n'invente aucun fait ni chiffre.
- Ton vivant et curieux, phrases courtes, adaptées à l'oral.
- 12 à 18 répliques, une vraie conversation qui se répond.

A segunda etapa é a síntese de voz. Piper é a escolha natural para uso local: rápido, leve, com vozes em francês de boa qualidade. Atribui-se a ele uma voz por falante (dois arquivos de modelo .onnx diferentes) para distinguir Alex e Camille; depois, concatenam-se os segmentos de áudio.

Instalar Piper e uma voz FR
# Installer Piper
pip install piper-tts

# Télécharger deux voix françaises depuis Hugging Face (rhasspy/piper-voices)
# ex. fr_FR-siwis-medium et fr_FR-upmc-medium (fichiers .onnx + .onnx.json)

# Synthétiser une réplique
echo "Bonjour et bienvenue dans cet épisode." | \
  piper --model fr_FR-siwis-medium.onnx --output_file alex_01.wav
script_vers_audio.py
import subprocess, re

VOIX = {
    "Alex": "fr_FR-siwis-medium.onnx",
    "Camille": "fr_FR-upmc-medium.onnx",
}

segments = []
for i, ligne in enumerate(open("script.txt")):
    m = re.match(r"(Alex|Camille):\s*(.+)", ligne.strip())
    if not m:
        continue
    locuteur, texte = m.group(1), m.group(2)
    wav = f"seg_{i:03d}.wav"
    subprocess.run(
        ["piper", "--model", VOIX[locuteur], "--output_file", wav],
        input=texte.encode(),
    )
    segments.append(wav)

# Concaténer les segments (ex. avec ffmpeg ou pydub)
print("Segments générés :", len(segments))

Para evitar escrever esse pipeline manualmente, o Open Notebook inclui a geração de podcasts, e o Podcastfy realiza exatamente esse trabalho de “documentos → conversa em áudio” com um LLM local e o motor TTS de sua escolha. O pipeline manual apresentado acima continua útil para entender o que acontece e manter total controle sobre as vozes e a formatação.

→
Vozes mais naturais
O Piper prioriza a velocidade em relação à expressividade. Se o resultado parecer robótico demais para você, motores como Kokoro ou Coqui XTTS produzem vozes mais naturais, ao custo de uma síntese mais pesada e de uma GPU quase obrigatória. Para uma escuta utilitária, o Piper é mais do que suficiente.

#Solução de problemas

O contêiner não consegue se conectar ao Ollama
Dentro do Docker, localhost aponta para o contêiner. Use host.docker.internal (adicionado via extra_hosts no Linux) ou o IP do host e, se necessário, verifique se o Ollama está de fato escutando em 0.0.0.0.
Respostas sem citações ou inventadas
O prompt de sistema não é rigoroso o suficiente ou a temperatura está alta demais. Imponha “apenas a partir dos trechos”, exija o formato [source N] e reduza a temperatura para 0,2.
O PDF sai vazio na indexação
É um documento digitalizado sem camada de texto. Processe-o com OCR (ocrmypdf entree.pdf sortie.pdf) antes de importá-lo.
A resposta ignora uma parte das fontes
num_ctx muito pequeno: os trechos foram truncados. Aumente se a VRAM permitir, ou reduza o número de passagens recuperadas.
Piper não encontra a voz
São necessários os dois arquivos por voz: o .onnx e seu .onnx.json ao lado dele. Verifique o caminho exato passado para --model.
Áudio entrecortado entre as falas
A concatenação bruta junta os WAV sem pausa. Insira um silêncio curto entre os segmentos (com ffmpeg ou pydub) para um resultado mais fluido.

#Para se aprofundar

Este guia reúne peças já detalhadas em outros lugares do site. Para aprofundar cada etapa:

Instalar o Ollama: Windows, macOS e Linux
O ponto de partida para servir seus modelos localmente na porta 11434, se ainda não estiver em funcionamento.
RAG local com Ollama sem codar (Open WebUI, AnythingLLM)
O caminho sem código para a parte “fontes + perguntas e respostas com citações” do seu NotebookLM local.
Assistente de voz 100 % local: Whisper + Ollama + Piper
Para ir além com Piper e a síntese de voz local, além do simples resumo em áudio.
Este guia ajudou você?

Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.