This repository is a private internal tool for a small group of friends. Proof of concept for shared knowledge capture and discussion around a shared YouTube playlist. Not a SaaS product.
- Friends add videos to a shared YouTube playlist
- Transcripts are embedded in the repo at
pipeline/(synced via GitHub Action) - Users can watch the video inside the app while reading analysis
- Analysis runs headlessly through local CLI providers (
claudeCLI,codexCLI)
- Preserve fast browse/read/watch UX
- Keep insight lookup stable by
videoId - Keep human-readable artifacts alongside canonical machine paths
- Keep provider-specific logic behind a provider boundary
- Keep the runtime observable through status, logs, and run metadata
- Design the analysis runtime so it can move behind a dedicated worker without forcing UI changes
Each analysis lives under data/insights/<videoId>/:
analysis.md<slugified-video-title>.mdvideo-metadata.jsonrun.jsonworker-stdout.txt/worker-stderr.txtstatus.json
- Deployed via Coolify on Proxmox LXC 105 (
10.69.1.138) - Docker Compose build pack — auto-deploys on push to
main - Canary:
library-canary.aojdevstudio.me| Production:library.aojdevstudio.me - Persistent volumes:
data/cataloganddata/insights - Claude CLI auth volume-mounted from host
docker-entrypoint.shauto-rebuilds catalog when transcripts change
source-refresh.tsand/api/sync-hookare retired.
pipeline/contains the merged playlist-transcripts repo (Python/Bash)- GitHub Action syncs playlists every 4h, commits transcripts, triggers auto-deploy
playlists.ymldefines tracked playlists
just start
just prod-start
just build
just lint
just typecheck
just backfill-insights
just daily-sweep # run daily maintenance sweep
just insights # run nightly insights generationRequired: (none — transcripts are embedded in pipeline/)
Optional:
PLAYLIST_TRANSCRIPTS_REPO=/absolute/path/to/playlist-transcripts # local dev override
ANALYSIS_PROVIDER=claude-cli # or codex-cli
ANALYSIS_MODEL=...
CLAUDE_ANALYSIS_MODEL=...
CODEX_ANALYSIS_MODEL=...
SYNC_TOKEN=...