## Features
- React 18 + TypeScript + Vite setup
- Tailwind CSS + shadcn/ui components
- Complete authentication flow (API Key)
- Dashboard with stats and recent documents
- Document upload (drag & drop) and management
- Chat interface with RAG support
- Settings page (theme, provider selection)
- Responsive design with mobile support
## Components
- Layout with sidebar navigation
- Button, Card, Input, Label, Separator (shadcn)
- Protected and public routes
## State Management
- Zustand stores: auth, chat, settings
- Persisted to localStorage
## API Integration
- Axios client with interceptors
- All API endpoints integrated
- Error handling and loading states
## Pages
- Login: API key authentication
- Dashboard: Overview and stats
- Documents: Upload, list, delete
- Chat: Conversational interface with sources
- Settings: Theme and provider config
🎨 Production-ready build (339KB gzipped)
NotebookLM Agent API
API e Webhook Interface per Google NotebookLM Automation
Questo progetto fornisce un'interfaccia API REST completa per Google NotebookLM, con supporto webhook per integrazione con altri agenti AI. Sviluppato seguendo le metodologie Spec-Driven Development (SDD) e Test Driven Development (TDD).
Caratteristiche
- API REST Completa: Gestione notebook, fonti, chat, generazione contenuti
- Webhook System: Notifiche event-driven per integrazione multi-agent
- AI Skill: Interfaccia nativa per OpenCode e altri agenti AI
- Qualità del Codice: ≥90% test coverage, type hints, linting
- Metodologie: SDD + TDD + Conventional Commits
Requisiti
- Python 3.10+
- uv per dependency management
- Account Google con accesso a NotebookLM
Installazione
# Clona il repository
git clone https://github.com/example/notebooklm-agent.git
cd notebooklm-agent
# Crea virtual environment
uv venv --python 3.10
source .venv/bin/activate
# Installa dipendenze
uv sync --extra dev --extra browser
# Installa pre-commit hooks
uv run pre-commit install
# Configura ambiente
cp .env.example .env
# Modifica .env con le tue configurazioni
Configurazione
Crea un file .env:
# API Configuration
NOTEBOOKLM_AGENT_API_KEY=your-api-key
NOTEBOOKLM_AGENT_WEBHOOK_SECRET=your-webhook-secret
NOTEBOOKLM_AGENT_PORT=8000
NOTEBOOKLM_AGENT_HOST=0.0.0.0
# NotebookLM Configuration
NOTEBOOKLM_HOME=~/.notebooklm
NOTEBOOKLM_PROFILE=default
# Logging
LOG_LEVEL=INFO
LOG_FORMAT=json
Autenticazione NotebookLM
# Login a NotebookLM (prima volta)
notebooklm login
# Verifica autenticazione
notebooklm auth check
Avvio
# Development server
uv run fastapi dev src/notebooklm_agent/api/main.py
# Production server
uv run gunicorn notebooklm_agent.api.main:app -w 4 -k uvicorn.workers.UvicornWorker
L'API sarà disponibile su http://localhost:8000
- API docs:
http://localhost:8000/docs - OpenAPI schema:
http://localhost:8000/openapi.json
Uso Rapido
# Creare notebook
curl -X POST http://localhost:8000/api/v1/notebooks \
-H "X-API-Key: your-key" \
-H "Content-Type: application/json" \
-d '{"title": "Ricerca AI"}'
# Aggiungere fonte
curl -X POST http://localhost:8000/api/v1/notebooks/{id}/sources \
-H "X-API-Key: your-key" \
-H "Content-Type: application/json" \
-d '{"type": "url", "url": "https://example.com"}'
# Generare podcast
curl -X POST http://localhost:8000/api/v1/notebooks/{id}/generate/audio \
-H "X-API-Key: your-key" \
-H "Content-Type: application/json" \
-d '{"instructions": "Make it engaging"}'
Testing
# Esegui tutti i test
uv run pytest
# Con coverage
uv run pytest --cov=src/notebooklm_agent --cov-report=term-missing
# Solo unit test
uv run pytest tests/unit/ -m unit
# Solo integration test
uv run pytest tests/integration/ -m integration
Sviluppo
Workflow
- Spec-Driven: Definisci requisiti in
prd.md - TDD: Scrivi test → Implementa → Refactor
- Conventional Commits: Segui lo standard per i commit
- Pre-commit: I controlli automatici garantiscono qualità
Struttura Progetto
notebooklm-agent/
├── src/notebooklm_agent/ # Codice sorgente
├── tests/ # Test suite
├── docs/ # Documentazione
├── prd.md # Product Requirements
├── AGENTS.md # Linee guida OpenCode
├── SKILL.md # Definizione skill AI
└── CONTRIBUTING.md # Guida contribuzione
Documentazione
- PRD - Product Requirements Document
- AGENTS.md - Linee guida per OpenCode
- SKILL.md - Skill per agenti AI
- CONTRIBUTING.md - Come contribuire
Stato del Progetto
⚠️ Versione Iniziale: Questo progetto è in fase di setup iniziale. Le funzionalità API sono pianificate per le prossime release.
Vedi CHANGELOG.md per lo stato attuale e la roadmap.
Licenza
MIT License - vedi LICENSE per dettagli.
Contributing
Vedi CONTRIBUTING.md per le linee guida su come contribuire al progetto.
Nota: Questo è un progetto non ufficiale e non è affiliato con Google. Usa le API interne di NotebookLM che possono cambiare senza preavviso.