5447a8d26988c20efa2124bb4a46faf44ebb2660
Cookie header'ı eklemek beklenen sonucu vermedi — @ertemsener kanalı gerçekten canlıydı ama sistem hâlâ "değil" diyordu. Kör tahminle devam etmek yerine, her kontrolde (sonuç ne olursa olsun) final URL, HTML uzunluğu, cookie gönderilip gönderilmediği, videoDetails bulunup bulunmadığı ve consent formu varlığı GET /status'ta lastPollDebug alanında görünür kılındı. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
StreamClipper AI — Faz 1
prd.md içindeki tam kapsamlı otonom pipeline'ın ilk fazı: ingestion (yt-dlp
headless capture + 15dk segmentleme), sinyal analizi (ses peak + chat
velocity), Whisper STT (OpenAI API, kelime zaman damgalı), BullMQ/Redis/
Postgres altyapısı ve durum/transkript gösteren bir Next.js panel. LLM
virality skorlama, render/crop/altyazı ve multi-platform dağıtım bu fazda
yok — bkz. prd.md Modül 3 (skorlama kısmı), 4 ve 5.
Klasör Yapısı
apps/
frontend/ Next.js panel (kanal durumu, segment/transkript kütüphanesi)
api-daemon/ Node/TS — YouTube polling, BullMQ producer, yt-dlp/ffmpeg capture
worker/ Python — chat-downloader, sinyal analizi, Whisper STT
packages/
db/ Prisma schema + client (Node tarafı)
docker-compose.yml
Ön Koşullar
- Node.js 22.13+ (pnpm 11'in gereksinimi), pnpm, Python 3.12+,
ffmpeg,yt-dlp(host'ta çalıştırırken) - Docker + Docker Compose (container'larla çalıştırırken)
- OpenAI API key — Whisper STT için
- Telegram bot token + chat id — bildirimler için (
@BotFather)
Canlı yayın tespiti YouTube Data API yerine yt-dlp'nin kendisiyle yapılıyor
(/channel/<id>/live kontrolü) — API key veya kota gerekmiyor.
Kurulum
cp .env.example .env
# .env içindeki OPENAI_API_KEY / TELEGRAM_* değerlerini doldurun
pnpm install
Yerelde (Docker olmadan)
# Redis + Postgres'i ayağa kaldır
docker compose up sc_redis sc_postgres
# Şemayı uygula
pnpm db:migrate
pnpm db:generate
# Test kanalı ekle (gerçek bir YouTube channel_id ile)
SEED_CHANNEL_ID=UCxxxxxxxx SEED_CHANNEL_NAME="Test Kanal" pnpm db:seed
# Servisleri ayrı terminallerde çalıştır
pnpm dev:daemon
pnpm dev:frontend
Python worker ayrı bir sanal ortamda çalışır (pnpm workspace'in parçası değil):
cd apps/worker
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python -m worker.main
Docker Compose ile (tüm servisler)
docker compose up --build
Panel: http://localhost:3000 · API daemon health: http://localhost:4001/health
Test / Doğrulama Akışı
FORCE_LIVE_URL=<gerçek veya kısa test yayını URL'si>ileapps/api-daemon'ı çalıştırırsan polling'i atlayıp doğrudan capture'ı tetikler.shared-media/raw/<sessionId>/altında 15dk'lık segment dosyaları vesegments.csvoluştuğunu doğrula; DB'deraw_segmentssatırları düşer.sc_heavy_worker(Python) her tamamlanan segmentisignal-detectionkuyruğundan alıp ses peak + (varsa) chat velocity analiziylecandidate_segmentsüretir.- Her aday,
stt-scoringkuyruğunda OpenAI Whisper API ile transkribe edilir; sonuçcandidate_segments.transcript_jsonalanına yazılır ve Telegram'a bildirim gider. - Panelde (
/ve/segments) kanal durumu ve üretilen transkriptleri kontrol et.
Bilinen Sınırlamalar (bu faz kapsamı dışı)
- LLM virality skorlama, metadata üretimi, telif/görüntü filtresi yok.
- 9:16 crop/altyazı render motoru yok.
- YouTube/Instagram/TikTok'a otomatik yayınlama yok (bu API'ler ayrı onay
süreçleri gerektiriyor —
prd.mdtartışmasına bkz.). - Aday pencere çıkarımı her zaman tek bir 15dk'lık segment dosyasıyla sınırlı; segment sınırına yakın bir an kırpılabilir (segment'ler arası dikiş, gelecek bir iyileştirme).
Languages
TypeScript
79.8%
Python
17.6%
CSS
1.4%
Dockerfile
1.1%
JavaScript
0.1%