Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 Bookaroo

Bookaroo genera paper educativi in PDF su qualsiasi argomento tu voglia approfondire:

  1. Inserisci un argomento nella web app locale (Blazor).
  2. Bookaroo cerca fonti libere e autorevoli su internet: arXiv, Wikipedia, Semantic Scholar, Crossref, Project Gutenberg.
  3. Scarica una copia locale completa di ogni fonte usata (PDF, snapshot HTML, testi).
  4. Un modello AI (Claude, OpenAI o Ollama — a scelta) sintetizza un documento in stile paper scientifico nella lingua che preferisci (default: italiano).
  5. 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, ...)

Requisiti

  • .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> in https://<resource>.services.ai.azure.com/anthropic/v1) e Bookaroo: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

Configurare Azure AI Foundry (user secrets)

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   # opzionale

Gli user secrets restano fuori dal repository. Poi seleziona Claude (Azure AI Foundry) nel menu del modello.

Avvio

$env:ANTHROPIC_API_KEY = "sk-ant-..."   # oppure OPENAI_API_KEY, o niente per ollama/fake
dotnet run --project src/Bookaroo.Web

Apri 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.

Modalità "valuta la mia tesi"

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/.

Configurazione

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.Web

Le 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.

Sviluppo

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.

About

Creates scientific paper on any argument OR evaluates your idea with grounded scientific references

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages