AI-powered summarizer for TikTok, YouTube Shorts, Instagram Reels, Bilibili, and Xiaohongshu videos. Paste a link, get a structured breakdown in seconds. Also ships a real-time screen translation overlay for Android.
Live app → uchia.io Download APK → Latest release
- Summarize any short video — TikTok, YouTube Shorts, Instagram Reels, Bilibili, Xiaohongshu
- Extract full subtitles — pull the full transcript from supported videos, with bilingual side-by-side output when the transcript language differs from the selected app language
- Gemini 2.5 Flash analysis — visuals, subtitles, humor/meme structure, overall impression
- Real-time screen translation — Android overlay that captures any app's screen, OCR-detects subtitles, and translates them live using ML Kit (fully on-device, no network needed)
- Free tier — 15 summaries included, no account required to start
- Multi-platform — Expo web app + native Android APK
┌─────────────────────────────────────────────────┐
│ Expo App (TypeScript) │
│ React Native + Web (Vercel) │
└──────────────────────┬──────────────────────────┘
│ REST
┌──────────────────────▼──────────────────────────┐
│ FastAPI Backend (Python) │
│ Railway — web + celeryworker + redis │
│ │
│ yt-dlp download → Gemini 2.5 Flash analysis │
│ Platform abstraction: TikTok / YouTube / IG / XHS│
└──────────────────────┬──────────────────────────┘
│
┌──────────────────────▼──────────────────────────┐
│ Supabase (Auth + DB) │
│ users · summaries · usage quota tracking │
└─────────────────────────────────────────────────┘
Android Live Translation (separate, on-device):
MediaProjection → FrameDiffSampler → ML Kit OCR
→ ML Kit Translate → PositionalOverlayView
| Layer | Tech |
|---|---|
| Frontend | Expo (React Native + Web), TypeScript |
| Backend | FastAPI, Celery, Redis |
| AI | Gemini 2.5 Flash (video analysis) |
| Video download | yt-dlp |
| Auth / DB | Supabase |
| Android translation | ML Kit OCR + Translate, MediaProjection (Kotlin) |
| Deployment | Vercel (frontend), Railway (backend) |
| Platform | Status |
|---|---|
| TikTok | ✅ |
| YouTube Shorts | ✅ |
| Instagram Reels | ✅ |
| Bilibili | ✅ |
| RedNote | ✅ |
cd backend
pip install -r requirements.txt
cp .env.example .env # fill in GEMINI_API_KEY, SUPABASE_URL, SUPABASE_KEY
uvicorn main:app --reloadcd app
npm install
npx expo startcd app/android
./gradlew assembleDebug
# APK → app/android/app/build/outputs/apk/debug/| Variable | Where | Purpose |
|---|---|---|
GEMINI_API_KEY |
backend | Gemini API access |
SUPABASE_URL |
backend + app | Supabase project URL |
SUPABASE_ANON_KEY |
app | Supabase public key |
SUPABASE_SERVICE_KEY |
backend | Supabase admin key |
YOUTUBE_COOKIES |
Railway celeryworker | Cookie string for age-gated videos |
INSTAGRAM_COOKIES |
Railway celeryworker | Cookie string for Instagram downloads |
BILIBILI_COOKIES |
Railway celeryworker | Cookie string for Bilibili videos that require a logged-in session |
XIAOHONGSHU_COOKIES |
Railway celeryworker | Optional cookie string for Xiaohongshu videos that require a logged-in session |
REDIS_URL |
Railway | Celery broker |
MIT