ShelfCaster
BookTube, without the algorithm deciding what you read next.
- Status
- Live
- Launched
- September 2026
- Stack
- FastAPI · React/TypeScript · Tailwind · PostgreSQL · Redis · Flyway · Stripe · Anthropic Claude / DeepSeek
- Data
- YouTube Data API (26 curated channels), transcripts, book metadata

Live interface · captured November 2026
01What it does
BookTube is one of the last places where a recommendation comes from a person rather than a ranking model. It is also scattered across thousands of videos. ShelfCaster rebuilds the YouTube experience around the books instead: one feed of book videos, a watch page that tells you which books a video covers and how widely each one is covered, and filters by book, author, series, channel, genre, length and spoiler level. Follow a reader whose taste matches yours instead of whatever the recommendation model decided you should read next.
02What's inside
- Infinite home feed mixing new videos, books covered by several channels, hidden gems and picks from your own shelves, with the reason on hover
- Watch page with a privacy-enhanced YouTube embed, likes, Watch Later, the books in the video and an up-next rail
- Filters that live in the URL, so every filtered view is a shareable link
- Book, author and channel pages, each with its own filterable video list, plus a full search across all four
- Liked, History and Watch Later work without an account and merge into it on sign-in; subscriptions and shelves need one
- Curated, deliberately ordered playlists, Longs, Play All, mid-video thumbnails, light/dark and keyboard shortcuts
03How it works
A FastAPI backend with Postgres and Redis behind nginx, with Flyway owning migrations. Channels are synced hourly through the YouTube Data API, then an LLM (Claude, or DeepSeek for the bulk extraction runs) reads each video’s title, description and transcript and returns the books it actually mentions, along with the video category and spoiler level. A deterministic linker matches those mentions onto real editions. The extraction is the easy half — the matching is where most of the work went.