ReelGrabber — TODO
Tracks pre-launch and post-launch tasks for a CLI tool that downloads Instagram reels and builds podcast MP3s.
What this file does
Tracks pre-launch and post-launch tasks for a CLI tool that downloads Instagram reels and builds podcast MP3s.
When to use it
- Starting a new CLI project and want a structured MVP checklist
- Planning a paid tier with license activation and analytics
- Organising marketing tasks like landing page copy and launch posts
- Tracking audio processing features like crossfade and chapter markers
Assumes this stack
ReelGrabber — TODO
Done (MVP shipped)
Auth & browser
-
--loginwizard: opens browser visible, user logs in to Instagram, session saved - Login detection: if not logged in during
--collect, prints clear--logininstruction - Auto-import system cookies (browser-cookie3: Firefox only)
- Cookie export: Playwright session →
config/instagram_cookies.txt(Netscape format for yt-dlp) - yt-dlp uses exported cookie file first
- Stale cookie detection: auto-refresh if >24h old
- Consent banner auto-dismiss (cookie dialog, age verification, consent pages)
- OS-specific error messages: PermissionError on Firefox
Edge cases & robustness
- yt-dlp missing: clear error + OS-aware install hint (apt/brew/pip/winget)
- ffmpeg missing: clear error + OS-aware install hint (apt/brew/choco)
- Browser not found: OS-aware hint for Firefox
- yt-dlp download failure detection: check returncode, detect auth errors, show re-login tip
- Cookie resolution moved outside download loop (performance)
- Shared
deps.pymodule for all dependency checks (platform-aware)
Core features
- CLI: collect, download, build-podcast, split, update, export csv, --all
- FREE limits: 15 reels (last), 1 creator, no --update
- PRO gate via
REELGRABBER_PRO=1 - Video-only flow (
--downloadwithout build-podcast)
Audio & metadata
- Split/album mode: individual tagged MP3s per reel (
--split, PRO only) - FREE users get medley only — individual MP3s deleted after merge
- Podcast medley: merge all MP3s into one file (FREE & PRO)
- Auto cover: profile pic upscaled to 500×500 min + ReelGrabber pill badge top-right (Apple Music style)
- Cover embedded as
attached_picstream with explicit disposition → works in Lollypop, VLC, Apple Music -
album_artisttag set → prevents cover bleed between artists in Lollypop/iTunes - Genre = Podcast on medley
- Track number tag (
1/N) on individual MP3s - Apple Music-style filenames:
username - Reel 01.mp3,Reel 02.mp3, etc. - Custom cover:
--cover path/to/img(PRO), badge always applied - Custom badge: place
assets/badge.png - Clean auto metadata for ALL users: artist=creator name, album=creator Reels, title per track
- Every individual MP3 tagged with ID3: artist, album, title, cover art embedded
- Medley tagged with ID3: artist, album, title, cover art embedded
- Custom metadata:
--title,--artist,--album(PRO only) - FREE users who pass custom metadata get a clear message + auto fallback
CI/CD & Delivery
- Packaging Python officiel via
pyproject.toml(installationpip install .) - Versionnement : Flag
--versiondans le CLI - Optimisation Git : fichier
.gitignorerobuste pourvenv, caches et dossiers dedata/ - Intégration Continue (CI) : Test automatisé avec
pytestetffmpegsur chaque Push GitHub (ci.yml) - Déploiement Continu (CD) : Création automatique de GitHub Releases lors des tags (
release.yml)
UX & polish
- FREE upgrade messages: consistent, include
export REELGRABBER_PRO=1 - All messages in English
- Auto-open videos folder after
--download(Linux xdg-open, macOS open, Windows explorer) - Auto-open output folder after
--build-podcast - Unit tests: 16 passing (downloader limits, branding, FREE/PRO metadata, split/medley, export) ✅
To do (pre-launch)
- Demo video: 30s showing
--collect -> --build-podcast -> Apple Music/Lollypop - Reddit launch posts (r/selfhosted, r/productivity, r/marketing, r/automation)
- Direct outreach: Reply to the r/automation "Excel links" thread with ReelGrabber solution
Marketing & Copywriting (next)
- Gumroad checkout page — description produit, bullet points, FAQ
- Email post-achat Gumroad — instructions activation + onboarding PRO
- Email de bienvenue FREE → nurture vers PRO
- Copy landing page — revoir hero headline, pricing CTA
Analytics & tracking (PostHog)
Web (done)
-
instrumentation-client.ts— PostHog init (pageview + pageleave auto-captured) -
page_viewedwith source detection (utm_source, ref, referrer: reddit/hn/google) -
section_viewedvia IntersectionObserver (hero, problem, features, pricing, faq) -
pricing_viewedwhen pricing section enters viewport -
hero_cta_clickedon Try Free + Star GitHub + Get PRO buttons -
github_clickedon all GitHub links -
gumroad_clickedwith location (pricing, cta_final)
CLI (done)
-
src/reelgrabber/telemetry.py— fire-and-forget PostHog wrapper, fails silently - Persistent
user_idUUID in~/.reelgrabber/config.json(cross-session CLI identity) -
cli_collect_startedin grabber.py (tier, creator) -
cli_free_limit_hitin grabber.py + downloader.py (reason: creator_limit | reel_limit) -
cli_podcast_builtin podcast.py (tier, mode: medley|split, reels_count) -
telemetry.identify(email)ready for Gumroad email bridge (future)
PRO activation flow
Code (done)
-
src/reelgrabber/license.py— Gumroad API verification + local storage -
is_pro()— remplaceREELGRABBER_PRO=1dans grabber, downloader, podcast (env var reste override dev) -
activate(license_key)— vérifie viahttps://api.gumroad.com/v2/licenses/verify, stocke dans~/.reelgrabber/config.json -
./reelgrabber --activate <key>— commande d'activation utilisateur -
./reelgrabber --status— affiche le tier actuel - PostHog
identify(email)appelé automatiquement à l'activation → bridge web→CLI
À faire (manuel)
- Créer le produit Gumroad — https://reelgrabber.gumroad.com/l/reelgrabber-pro
- Permalink
reelgrabber-prodéjà danslicense.py(défaut) - Tester une vraie activation — créer coupon 100% sur Gumroad → acheter → tester
--activate <clé>- Note: la clé "sample" du dashboard Gumroad ne passe PAS l'API verify, seule une vraie purchase fonctionne
- Webhook Gumroad (optionnel) → ping PostHog avec email à chaque achat
Recently completed
-
--last N/--first Nfiltering for--download&--export csv -
--update: full pipeline — collect new reels → download missing → rebuild podcast (PRO) - FREE/PRO parity: individual MP3s deleted for FREE, kept for PRO ✅
- Badge placement fully proportional (ECHELLE_BADGE=15%)
- Crossfade 2s (triangular) between tracks in medley
- Full end-to-end CLI validation (16 tests passing) ✅
Roadmap (post first sale)
Phase 1 — Daily value
- Smart ordering by recency (use reel date if available)
Phase 2 — Audio UX
- Chapter markers (1 reel = 1 chapter in the merged MP3)
- Clean filenames from reel titles
Phase 3 — Filters & export
-
--top N: sort by view count -
--since DATE: filter by date - CSV export with filters (last N, date range)
- Include reel URL in CSV for marketers
Phase 4 — Future
- FFmpeg smooth transitions / fades between reels
- AI-generated titles per reel
- Single video download by URL
What's inside
6 sections: Done (MVP shipped), To do (pre-launch), Recently completed, Roadmap with 4 phases, plus sub-sections for marketing and analytics.
Change this for your project
- Replace
ReelGrabberwith your project name throughout - Replace
acelest/ReelGrabberwith your GitHub repo path - Replace
reelgrabber.gumroad.com/l/reelgrabber-prowith your Gumroad product URL - Replace
REELGRABBER_PRO=1with your own pro env var name
Where it goes
Keep it in your repository where the agent or team that needs it will read it.
Worth borrowing
- Separate FREE and PRO feature checklists with clear upgrade messaging
- Include analytics setup (PostHog) as a tracked task, not an afterthought
- Break roadmap into phases by user value, not by technical component
Related Documents
Setup & Deployment Checklist
Guides you through 10 phases to set up, test, deploy, and customize a content agent system using OpenRouter and Streamlit.
RealDiag Demo Video Script
Provides a complete 5-7 minute demo video script for a clinical decision support tool, including timing, visual cues, and production notes.
📱 Mobile Phone Preview - Quick Start
Walks you through four ways to preview a React Native Expo app on real devices and emulators, plus a testing checklist and troubleshooting guide.
🚀 Product Hunt Launch Prep
Provides a Product Hunt launch checklist, listing copy, and newsletter template for an open-source AI vulnerability database.