Repo of the Day
FireBird-Technologies/NotestackAI
Published: Oct 10, 2026
Open repository ↗NotebookLM Alternative + Marketing agent optimized for publishers on substack/Medium/Wordpress
Summary
NotestackAI is a Python/FastAPI project that turns a writer's blog archive into a grounded research notebook with line-range citations, audio overviews, short-form video, and scheduled launch kits. It ships a React frontend, a Remotion renderer, a Postgres job-queue worker, and an LLM abstraction that defaults to Z.ai and can be swapped to Anthropic or OpenAI via env vars. The README positions it as a self-hostable NotebookLM alternative aimed at newsletter and blog publishers rather than a general research tool.
What it is useful for
- Backend engineers studying a FastAPI + SQLAlchemy + Alembic layout with a Postgres job worker, DSPy orchestration, and Cloudflare R2 storage via presigned uploads.
- Frontend engineers reading a React + Vite + TypeScript app with Google auth, pricing pages, blog content, and a custom SkyCanvas background.
- Builders prototyping publisher pipelines: source ingestion from Substack, Ghost, WordPress, Medium, RSS, or a Firecrawl crawler, plus ElevenLabs narration for audio overviews.
- Teams building social launch flows. Launchpad schedules posts to X and LinkedIn through jobs and emails Substack Notes at send time since that platform has no API, with documented handling for expired tokens.
- Anyone needing a multi-format media pipeline. The
renderer/directory uses Remotion to produce 9:16 shorts, 16:9 explainers, 1:1 audiograms and quote cards, with rebuild scripts for the launch trailer and demo.
How engineers can use it
The documented Docker path is cp .env.example .env (filling LLM_API_KEY, GOOGLE_CLIENT_ID, RESEND_API_KEY), then docker compose up --build. Local services include the frontend on http://localhost:5173, the API at http://localhost:8000/docs, and a MinIO console at http://localhost:9001 standing in for R2; the README adds 127.0.0.1 minio to your hosts file so browser uploads resolve correctly.
Without Docker the README gives: create a venv in backend/, pip install -r requirements.txt, alembic upgrade head, then uvicorn app.main:app --reload against SQLite at backend/notestack.db, with npm run dev in frontend/ and npm start in renderer/ for video output. ENV=development keeps the worker in-process so syncing, topic mapping, audio and launch kits work from one terminal; production runs python -m app.worker separately.
LLM provider switching is env-driven, with example lines for Z.ai (LLM_MODEL=openai/glm-5.3), Anthropic Claude, and OpenAI GPT-5. Audio needs ELEVENLABS_API_KEY, and X or LinkedIn auto-posting needs developer app keys described in backend/.env.example; the README notes LinkedIn connections last about 60 days and paused scheduled posts resume on reconnect. The roadmap lists an unfinished checkout flow and mobile layout, so treat billing and responsive UI as work in progress and consult docs/PHASE0.md alongside the README for the current scope.