API de automaçãoOpen-source

notebooklm-api

Transforma fluxos do NotebookLM em uma superfície programável: REST, CLI e UI server-rendered, com suporte a múltiplas contas.

FastAPICLIWeb UIMulti-accountPlaywright/storage state

Leitura técnica

Leitura rápida do case

Problema

O NotebookLM é útil na interface, mas fluxos repetidos precisam de API, seleção de conta, verificação de sessão e limites claros quando o Google exige challenge.

Solução

A aplicação expõe REST, CLI e UI web, seleciona contas por `X-NotebookLM-Account-Id`, isola o `storage_state` e protege rotas sensíveis com autenticação Bearer default-deny.

Stack

FastAPI · CLI · Web UI · Multi-account

Status

Open-source

Arquitetura

Uma API em volta de sessões web com isolamento por conta

Cada conta mantém `storage_state` próprio. Jobs e artefatos respeitam o escopo da conta, e acessos cruzados retornam 404 sem revelar a existência do recurso.

Fluxo técnico

  • Entrada
  • Processamento
  • Persistência
  • Saída
Fluxograma
Renderizando fluxograma…

Fluxo em etapas

01Entrada
Cliente REST/CLI/UIRequest HTTP, CLI ou UI server-rendered
02API
FastAPIRotas de conta e automação
03Seleção
ContaHeader X-NotebookLM-Account-Id ou default
04Sessão
storage_stateCookies/storage state isolados por conta
05Automação
NotebookLM/browserFluxo web programático
06Resultado
Download/artefatoArquivo ou saída gerada
07Saída
Resposta HTTP/APIRetorno programático
Código do diagrama (Mermaid)
Cole em qualquer renderizador Mermaid
flowchart LR
  client["Cliente REST/CLI/UI"]
  api["FastAPI"]
  account["Conta"]
  state["storage_state"]
  browser["NotebookLM/browser"]
  artifact["Download/artefato"]
  response["Resposta HTTP/API"]
  client --> api
  api --> account
  account --> state
  state --> browser
  browser --> artifact
  artifact --> response
1. Cliente REST/CLI/UI (Entrada) → FastAPI. 2. FastAPI (API) → Conta. 3. Conta (Seleção) → storage_state. 4. storage_state (Sessão) → NotebookLM/browser. 5. NotebookLM/browser (Automação) → Download/artefato. 6. Download/artefato (Resultado) → Resposta HTTP/API. 7. Resposta HTTP/API (Saída).

Stack e responsabilidades

  • FastAPI

    API REST e UI web server-rendered.

  • CLI

    Operação programática fora do navegador.

  • storage_state.json

    Persistência de sessão por conta.

  • Bearer + account scoping

    Auth default-deny e isolamento de jobs, artefatos e sessão.

Decisões técnicas

  • Multi-conta sem misturar sessão

    Cada conta recebe `storage_state` próprio e os recursos são consultados dentro do escopo selecionado.

  • Default-deny

    Sem token e fora do modo inseguro local, rotas sensíveis respondem 401.

  • Limite honesto

    Sessão web não é eterna: challenge, 2FA ou expiração exigem renovação manual.

Operação

  • documentadoStatus por conta

    healthy, warming, degraded, challenge_required, expired, disabled.

  • documentadoAuth e CORS

    Bearer obrigatório em produção e CORS fechado por padrão.

  • documentadoTestes públicos

    Testes cobrem isolamento, scoping, erros, auth e contrato de conta.

Status e próximos passos

  • Fortalecer UX de renovação quando Google exigir challenge.
  • Documentar limites de concorrência por fluxo real.

Contato

Quer algo parecido para seu processo?

Se existe uma entrada repetida, uma etapa manual e uma saída esperada, provavelmente dá para desenhar um sistema.

Falar sobre um projeto