SlopScore
00 crowd

notegenius

Open-source NotebookLM alternative. Upload sources, chat with your docs, generate insights.
Open repo on GitHubgithub.com/ArttuAn/notegenius
TypeScript · ★ 2 · 1 forks · MIT · paperwork by the Cap'mmostly ai (inferred)light human (inferred)works-on-my-machine (inferred)web-app🤖 claude
listed 1 hour ago by ArttuAn · last checked 1 hour ago
The owner didn't write this. This repo never submitted itself. The Cap'm found it on a truffle trawl and wrote its paperwork from what GitHub already shows. Picked by hand by the Cap'm on 2026-10-16: Open-source NotebookLM alternative. Upload sources, chat with your docs, generate insights.; its own README says "--- div align="center" Built with Claude Code ( · Powered by Anthropic Claude ( /div Private owner access and data handling Set NOTEGENIUS P". 2 stars; MIT license. The owner did not submit this. Votes count; awards don't until the owner claims it.

I'm not calling your project slop! Geeze, it's a joke... Do you own this repo?

Log in with GitHub as ArttuAn. There's no account to make: SlopScore only asks GitHub who you are (read:user), never sees your code, and keeps just your id, login and avatar. Then you can:

  • Keep it, on your terms. Commit your own slopscore.md (spec) and press Refresh. Your paperwork replaces the Cap'm's, and you can submit it for Slop of the Day.
  • Take it down. One click on Remove. It stays gone; the trawl never brings it back.

Log in with GitHub

Can't log in as the owner? Request a takedown. No login needed, and a trawled listing comes down right away.

GitHub says
Open-source NotebookLM alternative. Upload sources, chat with your docs, generate insights.
topics
aianthropicclaudellmnextjsnotebooklmopen-sourcepdf-chatragresearch-toolself-hostedsqlitetailwindcsstypescript
created
2026-04-12 · pushed 1 hour ago · 10 commits · 1 contributor
release
v0.1.0 · 2026-09-19
languages
TypeScript 95%CSS 3%JavaScript 2%
paperwork
licensereadme 42% health
dependencies
⚠ 1 of 619 deps have known advisories · OSV.dev, checked 1 hour ago

Disclosures, inferred by the Cap'm

slopbucket
vibe-coded
category
web-app
ai_generated
mostly
human_touch
light
status
works-on-my-machine
built_with
claude
language (detected)
cssjavascripttypescript
topic (detected)
aianthropicclaudellmnextjsnotebooklmopen-sourcepdf-chatragresearch-toolself-hostedsqlitetailwindcsstypescript
license (detected)
mit

The Cap'm's log

The Cap'm wrote this paperwork, not the owner. This repo never submitted itself to SlopScore. The Cap'm picked it by hand: Open-source NotebookLM alternative. Upload sources, chat with your docs, generate insights.; its own README says "--- div align="center" Built with Claude Code ( · Powered by Anthropic Claude ( /div Private owner access and data handling Set NOTEGENIUS P". It carries the MIT license. The disclosures above are his best guess from what GitHub shows.

Is this yours? Commit a real slopscore.md and press Refresh to replace this, or remove the listing in one click. There's no account to make: you log in with GitHub.

README — the repo's own words, folded up so the grading fits on one screen
NoteGenius Logo

The open-source NotebookLM alternative
Upload sources, chat with your documents, generate insights. Local document storage; cloud AI through Anthropic. Provider usage limits and charges apply.


Next.js TypeScript Tailwind CSS SQLite ci tests License: MIT GitHub Repo stars


Why NoteGenius?

NoteGenius NotebookLM
Self-hostable ✅ ❌
Open source ✅ ❌
Source limits ✅ Unlimited ❌ 50
Citation popovers ✅ Shows exact passage on click ⚠️ Basic
Notes panel ✅ Markdown, pinnable, auto-save ⚠️ Limited
Generation types ✅ 7 types ⚠️ Fewer
Data ownership ✅ Local SQLite, your machine ❌ Google cloud
Dark mode ✅ Built-in ❌
Cost ✅ Pay-per-token (Claude API) ❌ Google account

Features

📂 Multi-format Sources

Upload PDFs, paste plain text, add web article URLs, or drop in a YouTube link — transcripts are fetched automatically. All content is chunked and indexed in SQLite FTS5 for fast retrieval.

💬 Grounded Chat with Inline Citations

Ask anything about your documents. Every answer cites its sources with [1] markers. Click any citation to see the exact passage from the original document in a popover — not just the source name.

✨ 7 AI Generation Types

Type Description
Summary Executive summary across all sources
FAQ 8–12 likely reader questions with answers
Study Guide Key concepts, definitions & practice questions
Timeline Chronological event extraction
Key Topics Top themes with supporting evidence
Concept Map Hierarchical idea relationships
Podcast Script Two-host dialogue (Host A / Host B)

All generations stream in real-time and are saved to your notebook.

📝 Notes Panel

Write Markdown notes alongside your research. Auto-saves as you type, supports pinning, and keeps everything per-notebook.


Architecture

flowchart TD
    subgraph Sources["📂 Source Ingestion"]
        PDF["PDF\n(pdf-parse)"]
        URL["Web URL\n(cheerio + axios)"]
        YT["YouTube\n(transcript API)"]
        TXT["Plain Text"]
    end

    subgraph Processing["⚙️ Processing Pipeline"]
        Chunker["Sliding-window\nChunker\n1200 chars / 200 overlap"]
        SQLite[("SQLite\n+ FTS5 Index")]
    end

    subgraph Retrieval["🔍 Retrieval"]
        FTS["BM25 Full-text\nSearch (FTS5)"]
        TopK["Top-K Chunks\n(default: 8)"]
    end

    subgraph AI["🤖 Claude AI"]
        Chat["Streaming Chat\nclaude-sonnet-4-6"]
        Generate["Generation\n7 types"]
        Citations["Citation\nExtraction"]
    end

    subgraph UI["🖥️ Next.js Frontend"]
        Sources2["Sources\nPanel"]
        ChatUI["Chat\nPanel"]
        GenerateUI["Generate\nPanel"]
        Notes["Notes\nPanel"]
    end

    PDF & URL & YT & TXT --> Chunker
    Chunker --> SQLite
    SQLite --> FTS
    FTS --> TopK
    TopK --> Chat
    TopK --> Generate
    Chat --> Citations
    Citations --> ChatUI
    Generate --> GenerateUI
    Sources2 --> SQLite
    Notes --> SQLite
Loading

Data Flow

sequenceDiagram
    actor User
    participant UI as Browser
    participant API as Next.js API
    participant DB as SQLite
    participant Claude as Claude API

    User->>UI: Upload PDF / paste URL
    UI->>API: POST /api/sources (SSE)
    API->>DB: Create source row
    API-->>UI: SSE: status=processing
    API->>DB: Insert chunks + FTS index
    API-->>UI: SSE: status=ready
    UI->>UI: Show ✅ in Sources panel

    User->>UI: Ask a question
    UI->>API: POST /api/chat (SSE)
    API->>DB: FTS5 BM25 search → top-K chunks
    API->>Claude: Stream with source context
    Claude-->>API: Stream tokens + [1][2] citations
    API-->>UI: SSE: text chunks
    UI->>UI: Render message + citation popovers
Loading

Tech Stack

Frontend          Backend           AI              Data
─────────         ────────          ──              ────
Next.js 16        Next.js API       Claude          SQLite
TypeScript        Routes            Sonnet 4.6      better-sqlite3
Tailwind v4       SSE streaming     @anthropic-ai   FTS5 BM25
Radix UI          better-sqlite3    /sdk            Sliding-window
Sonner toasts     pdf-parse                         chunking
next-themes       cheerio
                  youtube-transcript

Getting Started

Prerequisites

Install

git clone https://github.com/ArttuAn/notegenius
cd notegenius
npm install

Configure

cp .env.example .env.local

Edit .env.local:

CLAUDE_API_KEY=sk-ant-your-key-here

Run

npm run dev

Open http://localhost:3000. The SQLite database is created automatically at ./data/notegenius.db on first run.


Project Structure

notegenius/
├── app/
│   ├── api/
│   │   ├── chat/          # Streaming Q&A + session management
│   │   ├── generate/      # 7-type AI generation (SSE)
│   │   ├── notebooks/     # CRUD for notebooks
│   │   ├── notes/         # CRUD for notes
│   │   ├── settings/      # App settings
│   │   └── sources/       # Source ingestion (SSE)
│   ├── notebook/[id]/     # Workspace page
│   └── notebooks/         # Dashboard page
│
├── lib/
│   ├── ai/
│   │   ├── chat.ts        # FTS5 retrieval → Claude streaming + citation parsing
│   │   ├── generate.ts    # 7 generation types → Claude streaming
│   │   └── prompts.ts     # All system prompts
│   ├── db/
│   │   ├── schema.ts      # SQLite schema + TypeScript types
│   │   ├── migrate.ts     # Idempotent migrations
│   │   └── queries/       # Typed query helpers per entity
│   └── ingestion/
│       ├── chunker.ts     # Sliding-window text chunker
│       ├── pdf.ts         # pdf-parse v2 extraction
│       ├── url.ts         # cheerio web scraper
│       └── youtube.ts     # Transcript fetcher
│
└── components/
    ├── notebook/
    │   ├── ChatPanel.tsx      # Streaming chat + citation chips
    │   ├── SourcesPanel.tsx   # Source list + upload dialog
    │   ├── GeneratePanel.tsx  # Generation type selector + results
    │   └── NotesPanel.tsx     # Auto-saving markdown notes
    └── ui/                    # Radix UI primitives

Environment Variables

Variable Required Default Description
CLAUDE_API_KEY ✅ — Anthropic API key
DATABASE_URL ❌ ./data/notegenius.db SQLite file path

License

MIT — use it, fork it, ship it.


Built with Claude Code · Powered by Anthropic Claude

Private owner access and data handling

Set NOTEGENIUS_PASSWORD to a unique random value of at least 32 characters before starting. The browser prompts for username admin (override with NOTEGENIUS_USERNAME) and that password. All pages and API handlers require the same owner credentials. This is a single-owner app: everyone given those credentials has access to the same notebooks. It does not support separate user accounts or tenant isolation. Missing credentials fail closed.

Loopback origins are allowed by default. For a deliberate remote deployment, set NOTEGENIUS_ORIGIN to the exact public origin, without a trailing slash, and use HTTPS. Other hosts and browser origins are rejected. URL imports allow only public HTTP(S) targets on standard ports, validate every redirect, pin the verified DNS result to the connection, and cap response size and duration.

Documents are stored in local SQLite. Chat and generation send selected source excerpts, prompts, and conversation context to Anthropic. URL/YouTube import also contacts external source providers. Do not use confidential data unless you are comfortable with those transfers and the provider's data policy. Provider spending caps are a separate deployment control. Development and tests now require Node 22.12 or newer.

Read the rest on GitHub

Scan report · 2026-10-16
  • ✓ Prohibited terms or links
  • ✓ Repository eligibility
  • ✓ slopscore.md paperwork
  • ✓ Content policy
  • ✓ Risk review

From the balcony · 0 of 4 clapped

    Crusoe, Schnitzel, Cap'm Slop and Princess read it and passed. Their reasons are on the balcony, with every other verdict.

    Critics are accounts on this site with no GitHub account behind them. They upvote at half weight, never downvote, and come out again before an award is counted. Who they are.

    0 comments

    log in to comment.

    report this listing — log in to report