# Meraktan Bilgiye — Üretim Sistemi v2 (Çalışma Notları)

Son güncelleme: 2026-10-18

## Ne bu?
`youtube/` klasöründeki ön testlerden (10 yayınlanmış Short) çıkan derslerle sıfırdan kurulan üretim hattı.
Hedef: her videoda yeniden koordinat hesaplamamak, metinlerin üst üste binmemesi, ses ile görüntünün kelime düzeyinde senkron olması.
Eski çalışma alanı `youtube/` arşiv olarak duruyor; MoneyPrinterTurbo kullanılmıyor.

## Kaldığımız yer (2026-10-18 akşam) — buradan devam
**2026-10-18 20:30 YAYINLANDI:** 011 Su stresi üç platformda (YouTube vvyJoR-IIpo, Instagram DepOMZxhYp7, Facebook Sayfası). Bekleyen: YouTube'da sabitlenmiş yorum (YouTube "video inceleniyor" uyarısı verdi; 19.10'da tekrar dene) ve "ilgili video" = Baraj. Instagram web'de Facebook çapraz paylaşım anahtarı yok → Facebook'a ayrıca yüklenir.
**(eski not) Hazır, yüklenmeyi bekleyen:** 011 Su stresi — `videolar/011-su-stresi/cikti/` (56,8 sn; yükleme 9,0 MB HEVC, reels 9,1 MB, kapak 24,0 sn eşik ölçeği). Metinler: `yayin/youtube.md`, Instagram `kanal/instagram-reels.md` (ikisi de düzeltilmiş ifadeler + A/B kapanış). Yükledikten sonra `yayin/yayin-kaydi.md` doldurulacak.
**Kullanıcı kararları (2026-10-18, uygulandı):** ikinci kanca hedefi 7–9 sn, videoya göre esnek (011'de ilk sorudan sonra 1,1 sn sessizlikle 7,0 sn); kapanışta **A/B ikilem** ("Sence asıl sorun ne: tarımda israf mı, şehirde tüketim mi?") — evet/hayır soru kullanılmaz; rakam yoğunluğu hedefi ≤ 1,25 korunur (011: s03'ten "86 milyon" ve 2000 karşılaştırması çıkarıldı → 1,25). Yeniden seslendirme: s03 + s09, ~140 karakter.
**Altyazı ve ses seviyesi (2026-10-18, agy önerileri):** altyazı öbekleri artık ekran kelimesi ↔ seslendirilen kelime eşlemesiyle zamanlanıyor (`core/trSayi.ts` → `alignDisplay`; "1923'te" = "bin dokuz yüz yirmi üçte"; birim takma adları m³→metreküp vb.). Eski oran yöntemindeki kayma: Krizler'de en kötü 0,88 sn, Su stresi'nde 0,80 sn, Baraj'da 0,33 sn → eşlemeyle sıfır; üç videoda 357 ekran kelimesinin 357'si kesin eşleşti. Sayılar ve birimleri söylendikleri anda sarıya dönüyor (karaoke). Eşleşmeyen kelime olursa Studio'da `[kurgu] … altyazı eşlemesi tahmini` uyarısı çıkar. Render artık iki geçişli loudnorm uyguluyor: hedef −14 LUFS, gerçek tepe −1,5 dBTP (`meta.lufs` ile değişir). Su stresi: −16,8 → −14,0 LUFS, yeniden render ve paketlendi.
**100 gönderi planı (kullanıcı hedefi 2026-10-18):** tüm hesaplarda 100 gönderiye kadar günde 3–5 video. Plan ve konu havuzu: `kanal/yayin-plani.md`. Kullanıcı onayladı: Su stresi'nin sıradaki bölümü "tarımda su nasıl harcanıyor" (Türkiye'nin Suyu 3). **Tempo kararı: karışık (Pzt 3 · Sal 4 · Çar 5 · Per 3 · Cum 4 · Cmt 5 · Paz 3 = 27/hafta).** Açık kararlar: ElevenLabs plan yükseltme, saatler, yükleme onayı.
**📅 2026-10-25: metrikleri yeniden ölç** (kullanıcı isteği). YouTube: `python3 -I araclar/youtube_izlenme.py` · Instagram: Chrome'da reels sayfası metni + her reel'in og:description'ı (beğeni/yorum) · YouTube Studio: "izlendi/kaydırıldı" oranı ve ortalama izlenme yüzdesi. Sonuçları `kanal/performans.md`'ye yeni tarih bölümü olarak ekle; yayın yaşı eşitlenmiş karşılaştır. Aynı oturumda **büyüme stratejisi fikirlerini** (aşağıdaki bölüm) veriye göre değerlendir. Özellikle bak: A/B kapanışlı 011'in yorum sayısı, Saat'in takvim etkisi sonrası durumu, 72 sn'lik Sel tarihi.
**Onaylanmış tercihler:** efektler seyrek ve dengeli (memory: sfx-tercihi); yayınlanmış videolar yeniden üretilmez; standartlar referans videolardan (Nüfus, Saat, Palamut, Baraj).
**Sistem durumu:** adım 1, 1b, 2 (17 bileşen), paket, 3 (kontrol + qa + SFX) bitti. `npm run lint` temiz.
**Sıradaki olası işler:** 011'i yayınla · 010 Cumhuriyet 27.10 19:00 planlı (YouTube'da hazır, Instagram aynı gün) · yeni konu seçimi (Türkiye + "şu an" kuralı; Google Trends notları youtube/NOTLAR.md) · bir hafta sonra performans yeniden ölçümü (`python3 -I araclar/youtube_izlenme.py`, Instagram sayfa metni → `kanal/performans.md`; YouTube Studio'dan "izlendi/kaydırıldı" ve ortalama izlenme yüzdesi de eklenecek) · telifsiz müzik (`bgm`) henüz yok.

## Büyüme stratejisi fikirleri (kullanıcının arkadaşından, 2026-10-18) — hatırlatılacak
Ne zaman açılacak: **2026-10-25 metrik ölçümünde** ve her yeni yayında. Her biri önce veriyle sınanır; para harcayan adım kullanıcı onayı olmadan yapılmaz.
1. **Hızlı izlenene reklam (boost).** Kural taslağı: yayından sonraki 24–48 saatte kanal ortalamasının ≥2 katı izlenen ve izlenme yüzdesi yüksek video aday. Instagram "Öne çıkar" / YouTube Studio "Tanıt". Küçük bütçe (ör. günlük 50–100 TL, 3 gün), hedef: profil ziyareti ve takip, izlenme değil. Ölç: takip başına maliyet. Önce organik 1 haftalık veri lazım (25.10).
2. **Paylaşım stratejisini analiz edip kopyalama.** Benzer Türkçe veri/bilgi kanallarının (ve kendi en iyi videolarımızın) saat, gün, sıklık, başlık kalıbı, kapak, hashtag, ilk yorum kullanımı çıkarılır → kendi takvimimize uygulanır. Kopyalanan şey içerik değil, yayın düzeni. Kendi verimiz: Instagram'da ilk gün Saat 50 bin (gündem/takvim etkisi), Türkiye + "şu an" konuları önde.
3. **Profile / kanala yönlendirme.** Video sonunda ya da açıklamada "Seriye devam: profildeki X videosu"; YouTube Shorts'ta "ilgili video" bağlantısı (uzun/kısa videoya bağlama), sabitlenmiş yorum, oynatma listeleri ("Türkiye'nin suyu", "Ekonomi"). Instagram'da bio linki + seri kapakları + sabitlenmiş 3 Reels. Ölç: profil ziyareti → takip oranı.
Not (2026-10-18 kontrol edildi): YouTube telefon doğrulaması **zaten yapılmış**; "Orta seviye özellikler" etkin. Açıklamada tıklanabilir harici bağlantı "Gelişmiş özellikler"de: durum "Uygun", açmak için kullanıcı Studio → Ayarlar → Kanal → Özellik uygunluğu → "Özelliklere erişin" ile videolu doğrulama, kimlik ya da kanal geçmişi yolunu kendisi tamamlamalı. Shorts'taki "ilgili video" bağlantısı bundan bağımsız, şimdiden kullanılabilir.

## Facebook (2026-10-18)
- Sayfa: **Meraktan Bilgiye** — https://www.facebook.com/profile.php?id=61595657425339 (Business Suite varlık kodu 1377524232115880, "Mesut Üstün" işletme portfolyosunda). Kategori Eğitim Sitesi; biyografi "Merak ettiğin konular, 1 dakikada 📊 Bilim · tarih · doğa · Türkiye ve dünya. Her bilgi kaynaklı." Profil `kanal/logo.png`, kapak `kanal/facebook-kapak.png` (banner'dan 1640x624). Meta pazarlama e-postaları kapatıldı. Sözleşme onayını kullanıcı verdi.
- Not: Facebook'ta varsayılan profil "Bafra Üstün 2. El Eşya Alım Satım" sayfasıydı; paylaşım yaparken sağ üstten **Meraktan Bilgiye** profiline geçildiğinden emin ol.
- 2026-10-18: Instagram @meraktanbilgiye Sayfaya **bağlandı** (kullanıcı telefondan/onayla tamamladı; Sayfa → Ayarlar → Instagram'da "Connected Instagram"). Instagram mesajlarının Sayfa gelen kutusuna erişimi kapalı bırakıldı.
- Paylaşım akışı: Instagram web'de Reels yüklerken son adımda **"Facebook'ta paylaş / öner"** anahtarını aç → aynı Reels Meraktan Bilgiye Sayfasına da gider. (Genel otomatik paylaşım ayarı Instagram uygulamasında Ayarlar → "Diğer uygulamalarda paylaşım"; web Hesap Merkezi kişisel profile geçmek istediği için açılmadı.)
- 2026-10-18 18:47–19:02: Instagram'daki 8 Reels Facebook Sayfasına yüklendi (kullanıcı isteği "instagramdakilerin aynısı, güncel versiyonları"): Orionid, Saat (düzeltilmiş sesli 17.10 akşam sürümü), Umami, Nüfus, Baraj (yeni sistem 002-baraj-reels, ElevenLabs SFX), Sel kuralları, Sel tarihi, Palamut. Açıklamalar `kanal/instagram-reels.md` ile birebir, her birinde "Yapay zeka etiketi" açık. Krizler Instagram'da olmadığı için yüklenmedi.
- Facebook web yükleme notu: Reels oluştur → video → İleri → İleri → açıklama → AI etiketi → **"Reels videonu güvenle yayınlayabilirsin" yazısını bekle (telif kontrolü ~30–70 sn)** → Paylaş. Kontrol bitmeden Paylaş'a basınca gönderi **taslağa** düşüyor (Umami ve Nüfus böyle oldu; Business Suite → İçerik → Taslaklar → Yayınla ile düzeltildi).
- Dosya: `cikti/NNN-konu-reels.mp4`, metin `kanal/instagram-reels.md`, AI etiketi açık.

## Örtük takip stratejisi (kullanıcı isteği 2026-10-18: "takip et demeden, hissettirmeden")
Mantık: izleyiciye bir **dizinin** ortasında olduğunu ve **devamının geleceğini** göstermek (açık döngü). "Takip et/abone ol" hiç söylenmez.
1. **Dizi etiketi** — `meta.seri: {ad, bolum}` → kanca ve kapanış sahnesinde sağ üstte "TÜRKİYE'NİN SUYU · 2. BÖLÜM". Tek videoya rastlayan izleyici başka bölümler olduğunu ilk saniyede görür.
2. **Sıradaki bölüm kartı** — `meta.sonraki` → son cümle ("Yorumlara yaz") **bittikten sonra**, ekrandaki "Yorumlara yaz"dan belirgin boşlukla aşağıda (stage 900, tuvalde ~1110); kuyruk otomatik ≥ 2,6 sn olur (kart ~2,6 sn görünür). Kapanış QuestionOutro ise altyazıdaki "Yorumlara yaz" öbeği gizlenir (ekranda iki kez görünmesin; kullanıcı geri bildirimi 2026-10-18). Rakam içermez. **Söz verilen video gerçekten yapılmalı** (yapılmazsa güven kaybı); sonraki bölüm yayınlanınca önceki videonun sabitlenmiş yorumu güncellenir.
3. **Açıklama + sabitlenmiş yorum** — dizinin bölüm listesi ve önceki bölüm bağlantısı; YouTube "ilgili video" = önceki bölüm. Instagram/Facebook'ta açıklamada aynı liste.
4. Konular dizi halinde planlanır: Türkiye'nin Suyu (Baraj 1 · Su stresi 2 · tarım suyu 3), Sel (kurallar · tarih), Nüfus, Ekonomi… Yayınlanmış eski videolar yeniden üretilmez; dizi bağı açıklama/yorumla kurulur.
Ölç (25.10 ve sonrası): profil ziyareti → takip oranı, dizi videolarında ortalama izlenme yüzdesi.

## Yapı
```
MeraktanBilgiye/
├── engine/                 Remotion 4.0.536 (npm ci ile kurulur)
│   ├── src/core/           theme, layout (safe-zone), timeline, cues (kelime çapaları), SceneLayout, Header, Captions, Scene, primitives, AudioManager, defineVideo
│   ├── src/components/     Lego kütüphanesi (16 bileşen) + index.ts kaydı — katalog: engine/BILESENLER.md
│   ├── src/schema/         script.ts — script.json Zod şeması (role, component, props)
│   ├── src/videolar/       video kayıtları: NNN-konu/index.ts (script.json'dan defineVideo; gerekirse TSX sahneler) + index.ts listesi
│   ├── public/videolar →   ../../videolar (symlink)
│   ├── BILESENLER.md       bileşen kataloğu + aday bileşenler (ihtiyaç anında bakılacak indeks)
│   └── scripts/mb.mjs      yeni / voice / render / still komutları
├── araclar/                elevenlabs_tts.py, pixabay_aday.py, commons.py, youtube_izlenme.py — .env'i MeraktanBilgiye/.env'den okur
├── videolar/NNN-konu/      her video kendi klasöründe (standart: videolar/README.md): script.json · arastirma/ · telif/ · ses/ · gorsel/ · cikti/ · yayin/ · kaynak-kod-eski/
├── kanal/                  logo, banner, instagram akışı, performans.md (izlenme günlüğü), referans/ (kare şeritleri), incelemeler/ (agy raporları)
└── .env                    ELEVENLABS_API_KEY, MPT_PIXABAY_API_KEY (chmod 600, paylaşılmaz)
```
Video numaraları (yayın sırası): 001 nüfus · 002 baraj · 003 sel kuralları · 004 sel tarihi · 005 palamut · 006 orionid · 007 saat · 008 umami · 009 krizler · 010 cumhuriyet (27.10 planlı) · 011 su stresi (hazır, yüklenmedi). Eski 11 videonun araştırma/telif/ses/görsel/çıktı/yayın belgeleri 2026-10-18'de buraya taşındı (youtube/ arşiv olarak duruyor).

## Safe-Zone (1080x1920) — `engine/src/core/layout.ts` (2026-10-18 revizyonu, referans videolar + agy)
| Bölge | Piksel | İçerik |
|---|---|---|
| topUi | 0–130 | boş (Shorts/Reels üst çubuğu) |
| header | 130–210 | yalnızca SourceTag (kaynak) |
| stage | 210–1260 | sahne içeriği; koordinatlar stage'e göre (0–1050). Taşma kesilmez, görünür kalır (3. adımda denetlenecek) |
| caption | 1280–1460 | altyazı, dikeyde ortalı (~1370), soldan/sağdan 150 px içeride, en çok 4 kelime |
| bottomUi | 1460–1920 | boş (kanal adı, başlık, ses çubuğu; Reels'te daha yüksek) |
Sağ 160 px, tuvalde y ≥ 900 YouTube ikon sütunu (STAGE_RIGHT_SAFE). Bölüm başlığı (ChapterHead, "1/5 · 1720 · LONDRA") isteğe bağlı: script'te `chapter` varsa stage'in üst 130 px'ini kaplar, sahne içeriği onun altından başlar. `debugZones` ile Studio'da bölgeler çizdirilir.

## script.json (video başına tek dosya)
- `meta`: id (klasör adı, `001-konu`), compositionId, title, fps, tailSeconds.
- `voices / model / voice_settings / gap_ms / segments`: elevenlabs_tts.py ile birebir aynı (text = fonetik, display = ekranda görünen).
- `scenes[]`: id, segment (başladığı ses parçası), bg, dim, source (header etiketi), chapter {kicker, big, title}; 2. adımda `component` + `props`.
- `defineVideo()` yüklerken doğrular: parça var mı, sahne sırası doğru mu, script metni ile ses metni aynı mı (değişmişse "npm run voice" ister), her sahnenin bileşeni var mı.

## Komutlar (engine/ içinde)
- `npm run yeni -- 012-konu "Başlık"` — klasör şablonu (script.json iskeleti, kaynak-dogrulama.md, lisans kaydı, yayın kaydı)
- `npm run dev` — Studio
- `npm run voice -- 001-krizler` — ElevenLabs ses + zaman-cizelgesi.json (önbellekli; aynı metin+ses için kredi harcamaz)
- `npm run render -- 001-krizler` — `videolar/001-krizler/cikti/001-krizler.mp4`
- `npm run kontrol -- 002-baraj` — statik denetim: şema, roller, kelime sayıları/oranı, ekrandaki sayı ↔ okunuş (Türkçe sayı okuyucu `scripts/tr-sayi.mjs`), arka plan süresi < sahne süresi. `render` bunu otomatik çalıştırır; HATA varsa durur, uyarılar geçer.
- `npm run qa -- 002-baraj [--her=15]` — görsel denetim: her N. karede stage'deki metin/görsel kutuları ölçülür (`core/QaProbe.tsx`); altyazı bandına / üst-yan paylara / sağ ikon sütununa girenler ve üst üste binen metinler sahne + saniye ile listelenir.
- `npm run still -- 001-krizler 2 31 38` — kalite kontrol kareleri (`cikti/kareler/`)
- `npm run paket -- 002-baraj [--kapak=29.5]` — `-yukleme.mp4` (HEVC 2-pass, ≤9,9 MB), `-reels.mp4` (H.264 2-pass, ≤9,9 MB), `kapak.jpg` (meta.kapakSn ya da --kapak)
- `npm run lint` — tsc + eslint

## Yeni video akışı
1. `npm run yeni -- NNN-konu "Başlık"` → `videolar/NNN-konu/`.
2. Araştırma: `arastirma/kaynak-dogrulama.md` (her rakam birincil kaynak + agy çift teyit). Görseller: `telif/gorsel-lisans-kaydi.json`.
3. `script.json`: segments (text fonetik / display rakamlı), scenes (role: kanca → kanca2 (7–9 sn) → icerik… → kapanis; component + props; çapalar "@s02:kelime"). Bileşen seçimi: `engine/BILESENLER.md`.
4. `npm run voice -- NNN-konu` → ses + kelime zamanları.
5. `engine/src/videolar/NNN-konu/index.ts` (3 satır: script + zaman → defineVideo) ve `src/videolar/index.ts` listesine ekle. Özel sahne gerekiyorsa `stages` ile TSX.
6. `npm run kontrol` → `npm run qa` (0 görsel uyarı hedef) → `npm run still` ile kareler → `npm run render` → `npm run paket` → `yayin/youtube.md`, `yayin/yayin-kaydi.md` doldur → yükle.

## Durum
- 2026-10-18: 1. adım bitti. İskelet, safe-zone layout, schema, altyazı taşındı. Krizler videosu (001-krizler) yeni sistemle yeniden üretildi; eski videoyla kare kare karşılaştırıldı (`cikti/kareler/tile-*.png`), yerleşim birebir.
  - Düzeltmeler: 1923 sayacı `FitNum` ile kutuya sığıyor (alt etiketle çakışmaz); 1929 "−%89" sayacı "yüzde seksen dokuz" söylenirken sayıp "değer" kelimesinde kilitleniyor (altyazı ile ekran aynı anda 89).
- 2026-10-18 (1b): agy kod incelemesinin 1–5. öncelikleri uygulandı: yeni safe-zone (130/210/1260/1280–1460), taşma kesilmiyor, ilk kare dolu (ilk sahne solmadan girer, son sahne solmadan biter), kesimler kareye yuvarlanıp farktan hesaplanıyor (1 karelik boşluk yok), ekran metni her zaman script.json'dan, parça listesi/okunuş eşitliği zorunlu, sahne kimlikleri tekil, FitNum `maxText` ile sabit ölçüm, altyazıda `;` ve tire öbek sınırı + sayı+birim sarı + kutu 150 px içeride, kelime eşlemede tam eşleşme önceliği, arşiv telif yazısı 28 px, müzik fade-out, `still` tek paketleme, ses dosyası ön kontrolü, elevenlabs_tts.py son parça boşluğu 0 ve önbellekte abonelik sorgusu yok. Kurgu uyarıları (kanca2, süre, kelime oranı, parça kelime sayısı) Studio/render konsolunda görünür. Krizler yeni bölgelere taşındı, kontrol: `cikti/kareler/kontrol.png`.
- 2026-10-18 (2. adım): Lego kütüphanesi yazıldı (16 bileşen: HookTitle, BigStat, TwoPhaseStat, TankGauge, RankedBarList, ComparisonBar, IconGrid, YearBars, LineChart, MapHighlight, ClockPair, ArchiveFigure, SplitCompare, TimelineStep, TextCard, QuestionOutro) + kelime çapası çözücü (`@b03:elmalı`, `!` bitiş, `#n`, `+0.3`) + kayıt (registry). Baraj videosu (002) **tamamen script.json'dan** yeniden üretildi, eski videoyla 9 karede birebir karşılaştırıldı (`videolar/002-baraj/cikti/kareler/cmp/karsilastirma.png`). Aday bileşen indeksi `engine/BILESENLER.md` altında. Video klasörü standardı + 11 videonun belgeleri taşındı (`videolar/README.md`).
- 2026-10-18 (paket + 3. adım): `npm run paket` (Baraj: yükleme 9,3 MB HEVC, Reels 9,5 MB H.264, kapak). Kalite kontrolleri: `kontrol` (statik; Türkçe sayı okuyucu ile ekran ↔ okunuş denetimi) ve `qa` (tarayıcı içi bounding-box; Baraj ve Krizler 0 uyarıya indirildi: hook başlığı 170 px, tank "geçen yıl" etiketi sola, liste değer sütunu ikon payının içinde, Krizler grafik/etiket kenarları). Ses tasarımı: `core/Sfx.tsx` + `public/sfx/` — efektler **ElevenLabs Sound Effects API** ile üretildi (`araclar/elevenlabs_sfx.py`, ücretli plan lisansı, `public/sfx/lisans-kaydi.json`); ilk sentez sürümü `yedek-*/`. Kullanıcı kararı 2026-10-18: "her geçişte bas ses gereksiz, yalnız vurucu sahnelerde; 2 efekt daha olsa iyi". Uygulama: sahne geçiş sesi varsayılan **yok**. Açılış (role kanca) `boom`; vurucu sahneler kullanıcının duyduğu "dong" = `whoosh` dosyası: role kanca2 otomatik, diğerleri script'te `"gecis": "whoosh"` (Baraj'da kanca2 10,9 sn ve "106 GÜN" 25,7 sn). Yeni efektler: **riser** (BigStat kilitten 1 sn önce) ve **ding** (TwoPhaseStat ikinci sayı, HookTitle flip). Temel kademeye alınanlar: RankedBarList alarm vurgusu (pulse), ComparisonBar oran rozeti, kapanış sorusu pop'u. Kullanıcı 2026-10-18 (2. dinleme): "sade geldi, biraz artıralım, abartmadan" → `sfxVolume` varsayılan 0,6, vurucu sahne sesi 0,75, Baraj'a üçüncü vurucu sahne "melen" (gizli musluk) eklendi. Baraj'da 9 olay: 0,0 · 10,9 · 15,7 · 23,1 · 25,7 · 28,2 · 30,1 · 43,9 · 49,2 sn; karışımda −13,5 … −21 dB RMS (konuşma ≈ −20), tepe −2,3 dBFS (kırpma yok). ding/lock/riser/pop dosyaları +3–6 dB yükseltilip limitlendi. `meta.sfxLevel: "orta"` kalan aksanları açar.
Müzik: `bgm` alanı hazır, dosya kullanıcıdan (YouTube Ses Kitaplığı) — henüz yok.
- 2026-10-18 (011 Su stresi, yeni sistemle ilk gerçek üretim): tamamen script.json'dan; yeni bileşen ThresholdScale. Seslendirmede iki hata düzeltildi, yalnız s06–s07 yeniden seslendirildi (223 karakter): "doksan üç buçuk milyon" → 93,8 (TÜİK 93.774.618), "binin altına" → "1.000 metreküp seviyesine düşeceğini öngörüyor" (Bakanlık metni). Eski hatalı çıktılar `cikti/eski-duzeltilmemis/` (yüklenmeyecek). kontrol: 0 hata (uyarı: kelime oranı 1,31; ikinci kanca 6,2 sn). qa: 0. Çıktılar: 011-su-stresi.mp4 (56,6 sn), -yukleme 9,0 MB, -reels 9,1 MB, kapak 26,3 sn (eşik ölçeği). Yükleme bekliyor; `yayin/youtube.md` 93,8 ve 1.000 seviyesi ifadeleriyle zaten uyumlu.
- Kullanıcı kuralı 2026-10-18: yayınlanmış eski videolar yeni sistemde **yeniden üretilmez**.
- (eski not) Sıradaki: kullanıcı ElevenLabs efektli Baraj'ı dinleyip onaylar (`videolar/002-baraj/cikti/002-baraj.mp4`); sonra Su stresi (011) yeni sistemden (TankGauge, ComparisonBar, MapHighlight, BigStat hazır). Efekt istemlerini değiştirmek: `araclar/elevenlabs_sfx.py` → `python3 -I araclar/elevenlabs_sfx.py whoosh` (yalnız o ses yenilenir).
- (eski plan notu) 2. adım: Lego bileşen kütüphanesi (BigStatCounter, ComparisonBar, TimelineStep, MapHighlight, SplitCompare) — Krizler/Baraj/Saat/Umami kalıplarından; render sonrası sıkıştırma + kapak + yükleme metni tek komutta.
- 3. adım: kalite kontrolleri (display vs tts tutarlılığı, bounding-box çakışma) + ses tasarımı (tick/whoosh, hafif müzik; YouTube Ses Kitaplığı).
  - Altyazıda sayı yalnızca söylendiği anda sarıya dönsün (karaoke vurgu): sayaç animasyonu ile altyazıdaki bitmiş sayı arasındaki kısa uyumsuzluk (1929: "%89" görünürken sayaç sayıyor) böyle kalkar.
- 4. adım: Su stresi videosu (`youtube/videolar/su-stresi-1`) ilk gerçek üretim olarak buradan çıkar.

## Kurallar (youtube/NOTLAR.md'den devralındı)
- Her rakam birincil kaynakla doğrulanmadan senaryoya girmez; tek kaynaklı ayrıntı kullanılmaz.
- Higgsfield kullanılmaz. Ücretli kaynaklar onaysız açılmaz. CC BY-SA görseller kullanılmaz; kamu malı / CC0 / CC BY (atıflı).
- Ses: ElevenLabs Orçun (`c9eIhSvMHBxtYhLX4oBt`), `eleven_v4`, speed 1.12–1.18.
- Tarayıcı yükleme ≤10 MB → HEVC 2-pass; Instagram için H.264 `-reels.mp4`.

## Referans seti ve standart taslağı (2026-10-18)
Ölçüm: `kanal/performans.md`. Kareler: `kanal/referans/tile-*.png`. Referans: **Nüfus, Saat, Palamut, Baraj** (iki platformun ilk 3'ünün birleşimi). Krizler (1. adımın regresyon tabanı) en düşük performanslı video; yerleşim için referans alınmayacak.

### Standartlar (taslak; agy incelemesiyle düzeltildi: kanal/incelemeler/2026-10-18-agy-referans-videolar.md)
**İçerik**
- Konu: Türkiye + "şu an" (bu pazar / bu sonbahar / bugün itibarıyla). Evrensel bilim tek başına değil, Türkiye bağına bağlanarak.
- Tek sayı ya da tek soru etrafında anlatı. Liste formatı ("5 şey") yok; gerekiyorsa en fazla 3 madde.
- Süre 50–64 sn (hedef 52–58). Konuşulan 110–145 kelime, ekran 95–130 kelime, konuşulan/ekran oranı ≤ 1,25 (Krizler 1,38 → 78 sn). 9–11 ses parçası; parça 3–9,5 sn ve ≤ 22 konuşulan kelime; sabit görsel ≤ 8,5 sn, videoda 8–9 görsel durum.
- Kanca (0–5,8 sn): Türkiye öznesi + güncel zaman zarfı (bu pazar / bu sonbahar / şu an) + ikili çatışma. Ana konu 1. saniyede ekranda, 1,5–3,5 sn arasında bir görsel durum değişimi (renk alarmı, saat geri alınır, görsel grileşir). Soru zorunlu değil.
- **İkinci kanca (7–9 sn, kullanıcı kararı 2026-10-18):** ilk sayı/olgu verildikten hemen sonra onu tersine çeviren ya da büyüten cümle: "Kulağa çok geliyor, ama asıl hikâye şu: 1,42" (Nüfus 8,2 sn), "Ama asıl hikâye barajlar arasında" (Baraj 10,9 sn), "Tam 35 kat fark. Üstelik bu ilk değil" (Palamut 12,9 sn). Düşük performanslı üç videoda 6. saniyeden sonra düz açıklama başlıyor. script.json'da `role: "kanca2"`; defineVideo 7–9 sn dışındaysa uyarır.
- Kapanış (2–5,5 sn), iki kalıp (kullanıcı tercihi 2026-10-18: varsayılan A): (A) A/B ikilem sorusu + 2 ikon ("karanlık sabah mı, erken akşam mı?"), (B) hero sayı tekrarı + "Sence neden?". Evet/hayır soruları ve 3+ seçenek yok. 19 IG yorumunun 18'i Saat ve Nüfus'tan: yorumu "Yorumlara yaz" değil, taraf tutturan soru getiriyor.

**Görsel**
- Aynı anda en fazla 4 öge (kaynak etiketi ve altyazı hariç); çok satırlı listelerde konuşulmayan satırlar yarı saydam (0,45). Font ölçeği: zirve sayı 360–420 px (videoda 1–2 kez), sahne ana sayısı 120–260, ikincil 80–120, etiket 38–56, en küçük yazı 28 px (telif/atıf dahil).
- Kaynak etiketi her sahnede sol üstte. Sayı + kısa alt etiket + kaynak: üçlü kalıp.
- İçerik bandı: referanslarda y 220–1250 (agy ölçümü; öge yükseklikleriyle). Safe-zone önerisi (agy, benimsenecek): üst 130 · header 130–210 yalnız kaynak etiketi · stage 210–1260 · altyazı 1280–1460, soldan 70 sağdan 160 px içeride · alt 460 · sağ ikon sütunu 155–160 px (y ≥ 900). Bölüm başlığı (1/5 · 1720 · LONDRA) header'dan çıkar, isteğe bağlı sahne bileşeni olur.
- Altyazı 2–4 kelime, sayılar sarı, kutu sağdan ikon sütununa girmeyecek.

**2. adım bileşen kütüphanesi, referanslardan**
- BigStat (Nüfus 1,42 · Baraj 106 GÜN) · ComparisonBar (Baraj doluluk · Saat anket) · MapHighlight (Nüfus · Saat Hakkâri) · PictogramGrid (Palamut balık simgeleri) · YearBars/ProjectionLine (Palamut yıllar · Nüfus projeksiyon) · ClockPair (Saat) · ArchiveImage (Palamut gravür) · HookTitle / QuestionOutro (A/B ikon veya hero sayı). agy eklemeleri: TankGauge (baraj/su stresi doluluk + geçen yıl hayalet çizgisi), RankedBarList (çok satırlı sıralama + spotlight) ile ikili ComparisonBar ayrı, IconGrid (PeopleGrid + FishGrid tek bileşen), MapHighlight rota/boylam çizgisi desteği, TwoPhaseStat (895.374 → 1,42 kalıbı).

- 2026-10-19: 012 (tarımda su), 013 (yaşlanma), 014 (evlenme yaşı) araştırmaları yapıldı. 012'nin sulama payı (%77/79/87) çelişkisi çözüldü: DSİ eski web %77 (44/57), Şûra 2025 güncel %79 (48,7/61,7); videoda "yaklaşık %80" kullanılmasına karar verildi; sulama randımanı %52 (DSİ 2025 FR s. 109), salma sulama %59, sayaçlı sistemde %48 su tasarrufu doğrulandı (`videolar/012-tarimda-su/arastirma/kaynak-dogrulama.md`). Seri 1'in 10 bölümünün tamamı resmi/bilimsel kaynaklarla doğrulandı (`kanal/analitik/seri-1-su-arastirma.md`).
- 2026-10-19: 014-evlenme-yasi üretildi (render + QA 0 uyarı + paket; 59 sn; seri "Türkiye'nin Nüfusu" bölüm 3). Arka planlar Pixabay (telif/gorsel-lisans-kaydi.json). YAYIN ÖNCESİ: agy çapraz teyidi, 013 (bölüm 2) önce yayınlanmalı. 013 sıradaki iş.
- 2026-10-19: agy kuralı eklendi; agy 014'ün 9 iddiasını birincil kaynaktan bağımsız doğruladı (arastirma/agy-dogrulama-raporu.md). 2 düzeltme yapıldı: "2003'ten beri her yıl" → "2007'den beri" (yuvarlanmış seride 2004-05 ve 2006-07 sabit); 2001 fark "3,4" ekranda 26,0−22,7=3,3 gibi göründüğü için kaldırıldı. 014 yeniden seslendirilip render/paket edildi (58,9 sn). agy headless için: `agy --print ... --mode plan --dangerously-skip-permissions`; rapor ~/.gemini/antigravity-cli/brain/<id>/implementation_plan.md içine yazılıyor (çıktıya kopyala).
- 2026-10-19 01:36/01:40: 009 Krizler Instagram (DepxUWevpxD) ve Facebook Sayfasına yüklendi (YouTube 17.10'da vardı). Dosya: `009-krizler/cikti/009-krizler-reels.mp4` (001-krizler.mp4'ten −14 LUFS'a normalleştirilip paketlendi, kapak 4. sn). Facebook Business Suite 'Reels videosu oluştur' notları: 'Şurada paylaş' varsayılan olarak Facebook+Instagram işaretli geliyor → Instagram'ı KALDIR yoksa çift gönderi olur; 'Video Ekle' dosya girişi dinamik: JS ile `HTMLInputElement.prototype.click`'i yakalayıp input'u DOM'a ekle, sonra file_upload; küçük resim 'Görsel yükle'. Facebook web'de ayrı 'Yapay zeka etiketi' anahtarı bulunamadı (Instagram'da var).
- 2026-10-19 TikTok: kullanıcının kendi (kişisel) hesabı kanal hesabına çevrildi (kullanıcı kararı "1"). Profil: https://www.tiktok.com/@meraktanbilgiye · ad "Meraktan Bilgiye" · logo (`kanal/logo.png`) · bio "Merak ettiğin konular, 1 dakikada 📊 Bilim · tarih · doğa. Her bilgi kaynaklı." (78/80). Kullanıcı adı en erken 18.11.2026'da, takma ad en erken 26.10.2026'da tekrar değişebilir. TikTok web'de dosya girişi `file_upload` ile doğrudan çalışıyor (profil fotoğrafı). Videolar henüz yüklenmedi: Reels dosyaları (`*-reels.mp4`) hazır; eski 10 videoyu 2–3 güne yayarak yüklemek önerildi (kullanıcı kararı bekleniyor). Higgsfield TikTok araçları kullanılmaz.
- 2026-10-19 ~03:30: TikTok kanalı kuruldu ve eski 10 video 3 saatte bir planlandı (19.10 08:00→23:00, 20.10 08:00→17:00). Ayrıntı ve akış: `kanal/tiktok.md`. 100 gönderi planına dördüncü platform olarak TikTok eklendi.
- 2026-10-19: `kanal/analitik/index.html` ve `araclar/analitik.py` 4 platformlu (YouTube, Instagram, TikTok, Facebook) birleşik analitik matrisine dönüştürüldü: Header'a TikTok (@meraktanbilgiye) ve Facebook Sayfası eklendi; KPI kartları 6'ya çıkarıldı; platform split çubuğuna TikTok ve Facebook payları eklendi; video performans tablosuna TikTok (10 video planlı takvimi) ve Facebook (2 yayında) sütunları ile filtre çipleri eklendi; AI Stratejist paneline TikTok ve Facebook rehberleri eklendi; modal Instagram/TikTok/Facebook çok sekmeli giriş mimarisine geçirildi.

- 2026-10-19: 013 Yaşlanan Türkiye üretildi (script.json, ses 53 sn ~770 karakter → bu ay 6.377/34.386, render −14,07 LUFS, QA 0 uyarı, paket: yukleme 8,9 MB + reels 9,0 MB + kapak 11. sn). Rakamlar TÜİK 58231/53899 ile doğrulandı; bağımsız teyit Claude ajanıyla (agy kotası 25.10'a kadar dolu). Teaser: "Kadınlar ve erkekler kaç yaşında evleniyor?" → 014 Bölüm 3 (seri sırası A varsayımı; kullanıcı onayı bekliyor). agyoneriler/seri-2-02'deki sahte alıntılar ve "agy teyitli" ifadesi kullanılmadı. Yayın metni hazır: yayin/youtube.md.
- 2026-10-19: Analitik paneli canlıya alındı: https://metrik.mesutustun.com. Cloudflare'da DNS A kaydı (metrik -> 46.225.57.13) açıldı; Hetzner `siteler` sunucusunda Caddy yapılandırması (`/etc/caddy/sites/metrik.caddy`, noindex header'lı) kuruldu ve Let's Encrypt TLS sertifikası alındı. Tek komutla canlıya alma betiği eklendi: `araclar/yayinla_metrik.sh`.

- 2026-10-19: Kullanıcı "mantıklı hareket edelim" dedi → A seçeneği (013 = Bölüm 2, 014 = Bölüm 3; seri sırası değişmedi) ve 013 bugünkü plan slotu 13.00'te yayınlanacak. TikTok'ta 013 20.10 20:00'ye planlanacak (14.00/17.00 slotları eski videolara ayrılmıştı).
- 2026-10-19 ~05:00: 013 Yaşlanan Türkiye dört platformda PLANLANDI: YouTube 19.10 13:00 (xC_6iCwZkMA), Instagram + Facebook 19.10 13:00 (Business Suite 'Planla'), TikTok 20.10 20:00. Yapılacak: 13:00 sonrası yayını doğrula, Instagram yapay zekâ etiketini ekle (Business Suite akışında etiket anahtarı yok), YouTube sabitlenmiş seri yorumunu yaz, bağlantıları yayin-kaydi.md'ye işle. Business Suite notu: Reels composer'da 'Gönderiyi özelleştir' anahtarı açılırsa Instagram açıklaması BOŞ gelir; anahtar kapalı kalmalı. Sihirbazda İleri/Planla düğmesi aynı konumda: iki kez İleri'ye basmak planlamayı tetikler.
