Bookaroo genera paper educativi in PDF su qualsiasi argomento tu voglia approfondire:
- Inserisci un argomento nella web app locale (Blazor).
- Bookaroo cerca fonti libere e autorevoli su internet: arXiv, Wikipedia, Semantic Scholar, Crossref, Project Gutenberg.
- Scarica una copia locale completa di ogni fonte usata (PDF, snapshot HTML, testi).
- Un modello AI (Claude, OpenAI o Ollama — a scelta) sintetizza un documento in stile paper scientifico nella lingua che preferisci (default: italiano).
- Il risultato è un PDF ben formattato con bibliografia cliccabile: ogni voce punta sia alla copia locale sia all'URL originale, così puoi sempre verificare l'autorevolezza delle fonti.
Ogni paper vive in una cartella portabile:
papers/<titolo-del-paper>/
├─ paper.pdf # il paper, con link [n] → bibliografia → fonti
├─ paper.json # contenuto strutturato (per ri-render / debug)
├─ sources.json # manifest: titolo, autori, URL, data di accesso, esito download
└─ references/ # copie locali delle fonti (01-*.pdf, 02-*.html, ...)
- .NET 10 SDK
- Una chiave API per il provider AI scelto:
- Claude (consigliato): variabile d'ambiente
ANTHROPIC_API_KEY - Claude via Azure AI Foundry: endpoint stile Anthropic — imposta gli user secrets
Bookaroo:FoundryResource(il<resource>inhttps://<resource>.services.ai.azure.com/anthropic/v1) eBookaroo:FoundryApiKey - OpenAI: variabile d'ambiente
OPENAI_API_KEY - Ollama: nessuna chiave, serve Ollama in esecuzione locale (qualità "best effort")
- Fake: nessuna chiave — provider deterministico per provare la pipeline offline
- Claude (consigliato): variabile d'ambiente
dotnet user-secrets set "Bookaroo:FoundryResource" "<nome-risorsa>" --project src/Bookaroo.Web
dotnet user-secrets set "Bookaroo:FoundryApiKey" "<chiave>" --project src/Bookaroo.Web
dotnet user-secrets set "Bookaroo:DefaultProvider" "foundry" --project src/Bookaroo.Web # opzionaleGli user secrets restano fuori dal repository. Poi seleziona Claude (Azure AI Foundry) nel menu del modello.
$env:ANTHROPIC_API_KEY = "sk-ant-..." # oppure OPENAI_API_KEY, o niente per ollama/fake
dotnet run --project src/Bookaroo.WebApri l'URL indicato in console (es. https://localhost:7xxx), inserisci l'argomento, scegli pagine/lingua/modello e premi Genera il paper. L'avanzamento è mostrato in tempo reale; a fine run trovi il link al PDF e l'elenco delle fonti. La generazione richiede tipicamente 1–3 minuti.
Oltre all'argomento puoi compilare il campo "La tua tesi" descrivendo una tua idea o teoria: Bookaroo la scompone nelle sue affermazioni verificabili, cerca fonti su ciascuna (incluse quelle contrarie), e il paper diventa una valutazione: presentazione della tesi, esame delle prove claim per claim, e un verdetto motivato nelle conclusioni — avvalorata, parzialmente avvalorata, confutata o prove insufficienti. Il prompt impone onestà intellettuale: se le fonti contraddicono la tesi, il paper lo dice chiaramente.
I paper generati sono in src/Bookaroo.Web/papers/ e restano consultabili dalla pagina Paper generati (servita anche via browser su /papers/...).
Nota sui link "copia locale" nel PDF: sono link relativi a file locali; i viewer desktop (SumatraPDF, Acrobat — che chiede conferma la prima volta) li aprono correttamente, mentre i viewer integrati nei browser spesso li ignorano. In quel caso usa i link della web app o apri direttamente la cartella
references/.
Sezione Bookaroo di src/Bookaroo.Web/appsettings.json: provider e modelli di default, lingua, numero di pagine, host Ollama, cartella di output, budget fonti. Tutto sovrascrivibile anche via variabili d'ambiente ASP.NET (Bookaroo__AnthropicModel, ecc.).
Semantic Scholar funziona senza chiave ma con limiti condivisi (429 frequenti). Con una chiave gratuita (indica la Academic Graph API, endpoint /graph/v1/paper/search):
dotnet user-secrets set "Bookaroo:SemanticScholarApiKey" "<chiave>" --project src/Bookaroo.WebLe fonti con DOI ma senza PDF libero (tipicamente Crossref → pagina dell'editore a pagamento) passano da Unpaywall: se esiste una versione open access legale (repository istituzionale, preprint), Bookaroo scarica quella. ContactEmail in configurazione viene inviata a Crossref e Unpaywall come da loro policy di cortesia — metti la tua se usi l'app intensivamente.
dotnet build # compila la solution (Bookaroo.slnx)
dotnet test --filter Category!=Live # test unitari e di pipeline (offline, HTTP mockato)
dotnet test --filter Category=Live # smoke test con rete reale (API gratuite + download, LLM fake)Architettura in breve: Bookaroo.Core (provider fonti → selezione AI → snapshot → estrazione testo → sintesi AI strutturata → render QuestPDF, orchestrati da PaperGenerator; JobManager in-process) + Bookaroo.Web (Blazor Server con progresso push). L'AI è dietro l'astrazione IChatClient di Microsoft.Extensions.AI: aggiungere un provider = un case in ChatClientFactory.