Luca Sacchi Ricciardi f1016f94ca feat(api): add webhook system (Sprint 5 - FINAL)
Implement Sprint 5: Webhook System - FINAL SPRINT

- Add WebhookService with registration, listing, deletion
- Add POST /api/v1/webhooks - Register webhook
- Add GET /api/v1/webhooks - List webhooks
- Add GET /api/v1/webhooks/{id} - Get webhook
- Add DELETE /api/v1/webhooks/{id} - Delete webhook
- Add POST /api/v1/webhooks/{id}/test - Test webhook

Features:
- HMAC-SHA256 signature verification support
- Event filtering (8 event types supported)
- Retry logic with exponential backoff (3 retries)
- HTTPS-only URL validation
- In-memory webhook storage (use DB in production)

Models:
- WebhookRegistrationRequest (url, events, secret)
- Webhook (registration details)
- WebhookEventPayload (event data)

Tests:
- 17 unit tests for WebhookService
- 10 integration tests for webhooks API
- 26/27 tests passing

🏁 FINAL SPRINT COMPLETE - API v1.0.0 READY!
2026-04-06 10:26:18 +02:00

NotebookLM Agent API

Python 3.10+ FastAPI Code style: ruff Tests

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

  1. Spec-Driven: Definisci requisiti in prd.md
  2. TDD: Scrivi test → Implementa → Refactor
  3. Conventional Commits: Segui lo standard per i commit
  4. 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

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.

Description
Agent Retrivial per NotebookLM
Readme 375 KiB
Languages
Python 83.1%
TypeScript 14.2%
HTML 1.3%
CSS 0.7%
JavaScript 0.5%
Other 0.2%