Open-Source Cold Email & Warmup Platform
Warmbly is the open-source platform for cold email: warm your mailboxes, send campaigns, and triage every reply. Run it on our cloud or self-host the whole thing.
Track inspiration reels, spot what's rising, and turn the best ideas into scripts.
MarketingGitHub @EngMajdSayedTahaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗ReelSpy is a Next.js App Router application for tracking inspiration reels, scoring virality, and generating original scripts. Production: https://app.reelspy.dev (marketing site: https://reelspy.dev).
📚 Documentation lives in docs/ — start there for the business-logic rulebook (docs/BUSINESS-LOGIC.md), the full technical reference, and all setup runbooks.
.env.example to .env.local and fill all values.supabase/schema.sql in Supabase SQL Editor.
supabase/migrations/ instead (timestamped YYYYMMDDHHMMSS_name.sql — see supabase/migrations/README.md for the convention and the GitHub↔Supabase auto-deploy).lock_down_ig_tokens migration — it makes the stored Instagram token unreadable from browser clients (column-level grants) and restricts the rate-limiter RPCs to the server. The app already routes all token access through the service-role client, so applying it changes no behavior.META_APP_ID or META_IG_APP_ID, META_APP_SECRET, META_REDIRECT_URI).
META_IG_APP_ID.docs/google-supabase-setup.md.The reel transcript feature stores and displays the spoken transcript of a tracked reel.
The pipeline (app/api/reels/[reel_id]/transcript):
--dump-single-json --skip-download to read the reel's metadata and a
direct (short-lived) media URL — without downloading the video binary. The self-contained
yt-dlp_linux binary is fetched into bin/ at install time by scripts/fetch-ytdlp.mjs
and bundled into the function via outputFileTracingIncludes in next.config.ts.GROQ_API_KEY (Groq whisper-large-v3,
free tier, primary) or HF_API_TOKEN (Hugging Face, fallback).tracked_reels; only the transcript text is persisted
(the media file itself is not stored).Env keys (all optional — without them the UI shows a clean "transcript unavailable" state and never errors):
GROQ_API_KEY — required for transcripts to actually work (free tier available).HF_API_TOKEN — optional Whisper fallback.app_settings) and are rotated at runtime with
node scripts/update-ig-cookies.mjs <cookies.txt> (no redeploy). The session self-refreshes
and a daily health check alerts on failure — see docs/ig-cookies-runbook.md.
YTDLP_COOKIES_B64 remains only as a bootstrap fallback.profiles.is_admin: an admin passphrase,
enrolled out of band with npm run admin:passphrase -- invite --email [email protected]
and redeemed at /admin/setup. Without it /admin stays locked — see docs/admin-security.md.IG_HEALTHCHECK_REEL_URL / ADMIN_ALERT_EMAIL — cookie health check + fallback admin-alert recipient (alerts are configured in-product at Admin → Notifications; see docs/admin-notifications.md).YTDLP_BIN — optional path override for the yt-dlp binary.Set GROQ_API_KEY in .env.local locally and in the Vercel project's Production
environment variables.
npm install
npm run dev
Open http://localhost:3000/login.
npm run build
npm run check:auth-setup
This verifies local env keys required for Supabase + Google auth flow and confirms core database tables exist.
/dashboard/onboarding): connect Instagram, set your brand voice + niche, add inspiration accounts./dashboard/feed (default sort: out-performance vs each account's own baseline) and select a reel to generate a script./dashboard/scripts; explore niche-wide winners in /dashboard/trends.