CilginYazilim/transcript-system:YouTube 视频转土耳其语时间戳报告
CilginYazilim/transcript-system
CilginYazilim/transcript-system 可将 YouTube 链接的视频转录稿用 AI 转成土耳其语报告,报告中每条要点都绑定视频秒数,点击即从该时刻播放。
Transkript: YouTube videolarından zaman damgalı Türkçe rapor
Transkript, bir YouTube bağlantısını alır, videonun zaman damgalı dökümünü (transcript) çıkarır ve yapay zekâyla Türkçe bir rapora dönüştürür. Rapordaki her madde videodaki saniyesine bağlıdır: tıklayınca gömülü oynatıcı o andan başlar. Uzun bir konuşmayı, dersi ya da podcast'i izlemeden önce dakikalar içinde okursunuz.
Aynı video ikinci kez yapay zekâya gitmez. Bir kullanıcı analiz ettirdiğinde rapor ortak önbelleğe girer; başkası aynı bağlantıyı gönderdiğinde rapor hakkından düşmeden kendi kütüphanesine eklenir.
İçindekiler
- Ne yapar?
- Ekranlar
- Nasıl çalışır?
- Roller
- Kurulum
- Yapay zekâ sağlayıcıları
- REST API
- Testler
- Güvenlik ve gizlilik
- Mimari
- Yol haritası
- Geliştirici ve lisans
Ne yapar?
- Rapor: kısa özet, detaylı özet, konular, önemli noktalar (kritik / önemli / faydalı), zaman çizelgesi, teknik bilgiler, iddialar ve fikirler. Video hangi dilde olursa olsun rapor Türkçe yazılır.
- Zaman damgaları denetlenir: yapay zekânın verdiği her saniye gerçek transcript satırlarına çekilir; tutmayan zaman damgası rapora girmez.
- Transcript'te arama: Türkçe harf duyarsız arama, eşleşen yer vurgulanır, satıra tıklayınca video o saniyeden oynar.
- Dışa aktarma: rapor (Markdown), transcript (TXT), altyazı (SRT / VTT) ve video açıklamasına yapıştırılınca YouTube bölümleri oluşturan liste.
- Kişisel kütüphane: herkes yalnız kendi analizlerini görür. Yönetici bir raporu "Üyelerle paylaş" ile herkese açabilir. Yönetici listesinde her kaydın kim tarafından başlatıldığı görünür ve kişiye göre süzülür.
- Kotalar: kullanıcı başına günlük ve saatlik analiz hakkı, herkes için günlük token ve maliyet tavanı. Önbellekten açılan rapor ve hiç yapay zekâ çağrısı yapmadan biten analiz haktan düşmez.
- Yedekli yapay zekâ zinciri: Google Gemini, OpenRouter ve Groq'un ücretsiz katmanları sırayla denenir. Kotası dolan sağlayıcı açılış saatine kadar dinlenir; hepsi dinlenirken analiz hata vermez, en erken açılışta kendiliğinden sürer.
- Arka planda çalışır: analiz kuyruk işlerinde yürür, sayfa canlı ilerleme gösterir. Kuyruk işçisi yoksa açık bir panel sayfası işleri tarayıcı üzerinden de işletebilir.
- Yönetim: Kontrol Paneli'nde sağlayıcı durumu, kuyruk ve son analizler; ayarlardan her sağlayıcının modeli, kotalar ve maliyet tahmini; yönetici parola sormadan bir üyenin gözünden paneli gezebilir.
- REST API: aynı işlemler
Authorization: Beareranahtarıyla.
Ekranlar
| Rapor | Telefonda rapor |
|---|---|
![]() |
![]() |
| Analiz listesi (yönetici) | Transkript ayarları |
|---|---|
![]() |
![]() |
Nasıl çalışır?
YouTube bağlantısı
→ kaynak bilgisi başlık, kanal, süre (YouTube Data API, yoksa oEmbed)
→ önbellek video daha önce analiz edildiyse rapor hemen açılır
→ transcript YouTube altyazısı; yoksa Gemini'ye video bağlantısı
→ temizle ve parçala ~8-10 dakikalık bölümler, 30 sn örtüşme
→ bölüm analizi (map) her bölüm ayrı yapay zekâ çağrısı, satır başı [hh:mm:ss]
→ birleştir (reduce) tek rapor
→ doğrula JSON şeması, zaman damgaları gerçek satırlara çekilir
→ rapor
Her adım bir kuyruk işidir (KaynakBilgisiAl → TranskriptAl → ParcaAnalizEt × N → AnalizBirlestir → RaporuTamamla). İş iki kez çalışsa bile biten bölüm ikinci kez
yapay zekâya gitmez. Promptlar sürümlüdür (modules/Transkript/prompts/) ve
raporla birlikte kaydedilir.
YouTube'dan ses ya da video indirilmez. Yalnız herkese açık altyazı okunur; altyazısı olmayan videoda Gemini'ye video bağlantısı verilir.
Roller
| Yönetici | Analist | Üye | |
|---|---|---|---|
| Analiz başlatma | ✓ | ✓ | ayara bağlı (varsayılan kapalı) |
| Kendi kütüphanesi | ✓ | ✓ | ✓ |
| Herkesin analizleri, "Kim" sütunu | ✓ | ||
| Raporu üyelerle paylaşma, tamamen silme | ✓ | ||
| Token ve maliyet bilgisi | ✓ | ||
| API anahtarı | ✓ | ✓ | |
| Kullanıcılar, site ve Transkript ayarları | ✓ |
Kurallar tek yerdedir: TranskriptPolicy (PHP) ve onun SQL karşılığı
KaynakRepository::gorunurluk(). Ayrıntılı tablo: modules/Transkript/README.md.
Kurulum
Gereksinimler: PHP 8.1+ (pdo_mysql, mbstring, curl; gd ve fileinfo önerilir),
MySQL 5.7+ ya da MariaDB 10.3+, Apache (mod_rewrite) ya da Nginx. Composer ve npm gerekmez.
- Depoyu klonlayın:
git clone https://github.com/CilginYazilim/transcript-system.git
XAMPP'teC:\xampp\htdocs\transcript-systemolarak. - Boş bir veritabanı açın:
CREATE DATABASE transcript_system CHARACTER SET utf8mb4 COLLATE utf8mb4_turkish_ci;
http://localhost/transcript-system/kurulum/adresindeki sihirbazı tamamlayın. Sihirbaz.envdosyasını yazar, tabloları kurar ve yönetici hesabını açar. XAMPP yoksaphp cy serveilehttp://127.0.0.1:8000/kurulum/.- Modülü açın ve tablolarını kurun:
php cy module --enable=Transkript php cy migrate
- Yapay zekâ anahtarlarını
.env'e yazın (aşağıya bakın). - Kuyruğu çalıştırın. Linux'ta tek cron satırı yeter:
Windows'ta* * * * * cd /yol/transcript-system && php cy schedule:runkuyruk-isci-kur.batbir Görev Zamanlayıcı görevi kurar. Kurmazsanız açık bir panel sayfası işleri tarayıcı üzerinden işletir (Transkript ayarları → Kuyruk).
Yayına almadan önce .env'de APP_DEBUG=false yapın, HTTPS açın ve kurulum
klasörünü silin (Panel → Sistem).
Yapay zekâ sağlayıcıları
Anahtarlar yalnız .env'de durur; koda, veritabanına, günlüğe ya da sayfaya
yazılmaz. Panel yalnız "tanımlı / tanımsız" gösterir.
AI_PROVIDER=gemini AI_PROVIDERS=gemini,openrouter,groq # deneme sırası; anahtarı olmayan atlanır GEMINI_API_KEY= # aistudio.google.com/apikey (ücretsiz katman) OPENROUTER_API_KEY= # openrouter.ai/keys (":free" modeller) GROQ_API_KEY= # console.groq.com/keys YOUTUBE_API_KEY= # isteğe bağlı; yoksa oEmbed
Her sağlayıcının modeli Transkript ayarlarından seçilir; boşsa .env'deki
<AD>_MODEL, o da boşsa koddaki varsayılan kullanılır. Mistral, Cerebras,
Anthropic Claude ve OpenAI uyumlu servisler de desteklenir.
| Hata | Sağlayıcı ne kadar dinlenir? |
|---|---|
| Günlük kota doldu | Bir sonraki sıfırlamaya kadar (Gemini: Pasifik gece yarısı, Türkiye'de 10:00) |
| Hız sınırı (429) | Sağlayıcının söylediği kadar (Retry-After) |
| Anahtar geçersiz, model kaldırılmış | 6 saat devre dışı (model hatası yalnız o modele) |
| Sunucu, bağlantı, zaman aşımı | 2 dakika |
Dinlenmeler kalıcı bir dosyada tutulur; önbellek temizlenince kaybolmaz.
REST API
Anahtar Panel → Hesabım → API anahtarları'ndan ya da php cy api:token <kullanıcı> "<ad>"
ile üretilir. Yanıtlar {success, data, meta} ya da
{success: false, error: {code, message}} biçimindedir.
curl -X POST https://site.com/api/v1/transkript/analiz \
-H "Authorization: Bearer cy_…" \
-d "url=https://www.youtube.com/watch?v=iG9CE55wbtY"| Yöntem | Adres | İş |
|---|---|---|
| POST | api/v1/transkript/analiz |
Analiz başlat (önbellekte varsa 200, yeni iş 202) |
| GET | api/v1/transkript/kaynaklar |
Liste: durum, q, kapsam (kutuphanem · paylasilan), yönetici için kullanici |
| GET | api/v1/transkript/kaynaklar/{id} |
Durum ve ilerleme |
| GET | api/v1/transkript/kaynaklar/{id}/ozet |
Rapor |
| GET | api/v1/transkript/kaynaklar/{id}/transkript |
Zaman damgalı satırlar (bas, bit saniye) |
| GET | api/v1/transkript/istatistik |
Kullanım (yalnız yönetici) |
Testler
php tests/unit.php # çekirdek birim testleri (veritabanı gerekmez) php tests/transkript.php # modül birim testleri (veritabanı ve ağ gerekmez) php tests/transkript-yetki.php # rol × eylem × sahiplik → HTTP kodu (yerel veritabanı) php tests/smoke.php http://localhost/transcript-system # çalışan siteye HTTP güvenlik denetimi
Birim testleri gerçek yapay zekâ API'sine gitmez. GitHub Actions her gönderimde birim testlerini PHP 8.1–8.4 ile çalıştırır; MySQL 8 ile kurulumu ve HTTP duman testini de dener.
Güvenlik ve gizlilik
- Yapay zekâ ve transcript metni hiçbir zaman HTML olarak basılmaz (PHP'de
e(), JavaScript'tetextContent); yapay zekâ çıktısı şemadan geçmeden kaydedilmez. - Rol ve sahiplik her istekte veritabanından okunur. Görünmeyen kayıt 404, yetkisiz işlem 403 döner.
- Veri değiştiren her istek CSRF korumalıdır. Girişte kademeli gecikme ve kilit vardır; ikisi de kullanıcı adı ile IP'nin ikisine birlikte bağlıdır.
- Panelde içerik güvenliği politikası (CSP) ve güvenlik başlıkları vardır; YouTube
oynatıcısı
youtube-nocookie.com'dan yüklenir. - Silinen hesapların kütüphane ve sohbet kayıtları her gece silinir. Aydınlatma metni yapay zekâ sağlayıcılarına hangi verinin gittiğini anlatır.
Mimari
- Temel: cy-php-starter 1.6.2: giriş, rol ve yetki, kuyruk, zamanlayıcı, REST API, panel, kurulum sihirbazı. Starter'ın belgesi: SISTEM.md ve docs/STARTER-README.md.
- Projeye ait kodun tamamı
modules/Transkript/modülündedir. Çekirdekte yapılan birkaç değişiklik modülün README'sinde tek tek listelidir. - Bağımlılık yok: Composer ya da npm paketi kullanılmaz; dış servislere PHP
curlile gidilir. - Veritabanı: 11 modül tablosu (
transkript_kaynaklar,transkript_analizler,transkript_segmentler,transkript_kutuphane…) veai_kullanim_kaydi.
modules/Transkript/
├─ module.json künye, menü, rollere dağıtılan yetkiler
├─ config.php davranış ayarları (anahtar yok)
├─ routes.php panel/transkript/… ve api/v1/transkript/…
├─ events.php Kontrol Paneli kartları, zamanlanmış görevler, ana sayfa
├─ migrations/ tablolar
├─ prompts/ sürümlü promptlar
├─ src/ Ai/, Transcript/, Jobs/, Services/, Repositories/, Controllers/
├─ views/ panel ekranları ve tanıtım sayfası
└─ assets/ transkript.css, transkript.js
Belgeler: docs/TEKNIK_RAPOR.md (onaylı plan), modules/Transkript/README.md (modül kılavuzu), modules/Transkript/CHANGELOG.md (değişiklik günlüğü).
Yol haritası
- YouTube bağlantısından rapor, transcript araması, dışa aktarma
- Kişisel kütüphane, paylaşım, roller ve kotalar
- Yedekli yapay zekâ zinciri, kalıcı dinlenme, kuyruk
- Hata yönetimi: her hata türü için ayrıntılı Türkçe mesaj (MVP 9. adım)
- Uçtan uca deneme: kısa, 3 saatlik, altyazısız, gizli ve silinmiş videolar (MVP 10. adım)
- Rapora soru sorma (kayda dayalı, kaynak saniyeleriyle)
- Ses ve video dosyası yükleme (ASR)
- Oynatma listesi ve kanal analizi, iki kaydı karşılaştırma
Geliştirici ve lisans
Evren ÇILGIN: ÇILGIN Yazılım · GitHub: @CilginYazilim
MIT lisansı ile dağıtılır.
来源:GitHub · github.com




