08569ce4ae09c1a25936cbbf582f289e8c19ae54
İlk gerçek capture denemesi 2 saniyede sessionı bitirdi (0 segment) — Coolify /logs endpoint'i api-daemon'un stdout'unu güvenilir şekilde izole edemediği için sebebi göremedik. Artık her session'ın son yt-dlp/ffmpeg stderr satırları bellekte tutulup HTTP'den okunabiliyor. 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%