# InstaScheduler Downloader — Extensão Chrome

Extensão MV3 que baixa Reels/Posts/Stories do Instagram e vídeos do TikTok direto pro Google Drive do usuário, com processamento profissional no navegador (anti-detect, transcode IG-safe, moldura, marca d'água).

## Modelo

- **Plano InstaScheduler ativo** (`monthly` / `monthly_pro` / `yearly`): ilimitado, incluído.
- **Sem plano** (grátis): **10 downloads/dia TikTok + 10/dia Instagram**.
- **Plano "Extensão Ilimitada"** R$ 25/mês PIX dentro da extensão (SyncPay): ilimitado sem precisar do InstaScheduler.

## Status de fases

- [x] **Fase 1** — Estrutura MV3 + popup + login + backend de quota
- [x] **Fase 2** — Content scripts TikTok + IG (captura) + auto-scroll
- [x] **Fase 3** — Fila persistente (IndexedDB) + Google Drive OAuth + dedup
- [x] **Fase 4** — ffmpeg.wasm via offscreen + transcode + anti-detect
- [x] **Fase 5** — Moldura + Marca d'água via presets do InstaScheduler
- [x] **Fase 6** — Tela de upgrade + checkout PIX dentro da extensão
- [x] **Fase 7** — Polish + privacy policy + welcome page + guia de publicação

## Estrutura

```
instascheduler-extension/
├── manifest.json
├── README.md                      este arquivo
├── PRIVACY.md                     política de privacidade (também a hospedar como URL pública)
├── PUBLISHING.md                  guia passo a passo de publicação
├── STORE_LISTING.md               textos prontos pra Web Store (PT-BR + EN)
├── public/
│   ├── icons/                     icones 16/48/128 PNG
│   └── ffmpeg/                    binários do ffmpeg.wasm (não commitados — ver README desta pasta)
└── src/
    ├── background/sw.js           Service Worker (MV3)
    ├── offscreen/
    │   ├── transcode.html
    │   └── transcode.js           ffmpeg.wasm host
    ├── content/
    │   ├── tiktok.js              content script TikTok
    │   ├── instagram.js           content script Instagram
    │   ├── inject-tt.js           page-world TikTok (intercept item_list)
    │   ├── inject-ig.js           page-world IG (intercept GraphQL/REST)
    │   ├── panel.js               painel flutuante
    │   └── autoscroll.js          auto-scroll inteligente
    ├── popup/
    │   ├── popup.html             dashboard + checkout + settings
    │   ├── popup.css
    │   ├── popup.js
    │   └── welcome.html           first-run page
    └── lib/
        ├── api.js                 cliente HTTP pro InstaScheduler API
        ├── config.js              constantes
        ├── db.js                  wrapper IndexedDB (fila)
        ├── drive.js               Google Drive client
        ├── ffmpeg-bridge.js       SW ↔ offscreen
        ├── camera-profiles.js     perfis Samsung/iPhone/Pixel/Xiaomi/OnePlus
        └── qrcode.js              QR code helper (qrserver.com)
```

## Quick start (desenvolvimento)

```bash
# 1. Carregar no Chrome
# chrome://extensions/ → Modo desenvolvedor ON → Carregar sem compactação

# 2. Baixar binários ffmpeg.wasm (1x só)
cd public/ffmpeg
curl -L -o ffmpeg-core.js   https://unpkg.com/@ffmpeg/[email protected]/dist/umd/ffmpeg-core.js
curl -L -o ffmpeg-core.wasm https://unpkg.com/@ffmpeg/[email protected]/dist/umd/ffmpeg-core.wasm

# 3. Configurar OAuth (1x só) — ver PUBLISHING.md seção 2

# 4. Abrir tiktok.com ou instagram.com → botão flutuante aparece
```

## Pra publicar na Chrome Web Store

Ver **`PUBLISHING.md`** — passo a passo completo com:
- Como criar conta Google Web Store ($5)
- Como criar OAuth Client tipo Chrome Extension (reusando projeto do InstaScheduler)
- Como hospedar privacy policy
- Como empacotar o ZIP final
- Submissão e review

## Backend (InstaScheduler API)

Endpoints consumidos (já implementados em `backend/routes/extension.js`):

- `POST /api/auth/login` — login JWT
- `GET /api/auth/me` — info do user
- `GET /api/extension/quota` — quota do dia
- `POST /api/extension/reserve` — reserva 1 download (429 se passou do free)
- `POST /api/extension/notify-imported` — webhook quando upload Drive completa
- `GET /api/preferences/frames` + `/watermarks` — presets do user
- `POST /api/subscriptions/checkout` — cria PIX pra plan_id=extension_only
- `GET /api/subscriptions/status/:id` — polling de status

## Suporte

- **Site**: https://instascheduler.net
- **Email**: suporteinstascheduler@gmail.com
- **WhatsApp**: +55 19 98854-2526
