AI Video Fabrikası
Otomatik Shorts Üretimi Pipeline'ı
YouTube Shorts, Instagram Reels ve TikTok için her gece otomatik 10 dikey video üreten yerel bir AI pipeline'ı — manuel kurgu olmadan. Tamamen ücretsiz/açık kaynak araçlarla, modüler ve ölçeklenebilir.
Uçtan uca akış
Tek komut, 10 video
Fikir
Senaryo
Sahneler
Seslendirme
Görsel
Render (Remotion)
MP4 + Yayın metni
1. Fikir üretimi
Seçilen niş (örn. 'ilginç bilim gerçekleri') için AI otomatik olarak video fikirleri üretir. Tekrarı önlemek için üretilen başlıklar bir geçmiş dosyasında tutulur.
2. Senaryo yazımı
Her fikir için 30–60 saniyelik, dikkat çekici bir kısa video senaryosu yazılır. İlk 3 saniye (hook) ayrı vurgulanır; izleyiciyi tutacak ritim hedeflenir.
3. Sahnelere bölme
Senaryo, her biri tek bir görsel + tek bir cümleye karşılık gelen sahnelere bölünür. Sahne sayısı genelde 5–8 arasıdır.
4. Sahne meta verisi
Her sahne için seslendirme metni, görsel promptu, altyazı metni ve süre (timing) bilgisi üretilir — hepsi tek bir JSON yapısında toplanır.
5. Seslendirme (TTS)
Senaryo, ücretsiz/açık kaynak bir TTS modeliyle (Piper, Coqui XTTS, Qwen TTS) doğal seslendirmeye çevrilir. Her sahnenin ses süresi ölçülüp timing güncellenir.
6. Görsel üretimi/toplama
Her sahne için görsel; ücretsiz AI görsel araçlarıyla (Stable Diffusion, Flux) üretilir veya stok medya API'lerinden (Pexels, Pixabay) çekilir.
7. Dikey video render (Remotion)
Remotion ile 9:16 dikey video oluşturulur. Sahneler, ses ve görseller JSON yapısına göre zaman çizelgesine yerleştirilir.
8. Altyazı + müzik + branding
Otomatik altyazılar, sahne geçişleri, arka plan müziği, ses efektleri ve marka öğeleri (logo, renk) eklenir.
9. MP4 dışa aktarım
Final video MP4 olarak render edilir. Çözünürlük ve kare hızı config'ten ayarlanır (örn. 1080×1920, 30fps).
10. Dosya organizasyonu
Üretilen tüm dosyalar (senaryo, ses, görsel, video, metin) tarih ve video ID'sine göre düzenli klasörlere kaydedilir.
11. Yayın metni hazırlama
Her platform için başlık, açıklama, hashtag ve paylaşım metni üretilir (YouTube Shorts, Instagram Reels, TikTok ayrı ayrı).
12. Zamanlama (scheduler)
Sistem her gece çalışacak şekilde planlanır (cron) ve tek seferde 10 video üretir. Hata yönetimi ve yeniden deneme (retry) ile dayanıklı çalışır.
Teknoloji yığını
Ücretsiz / açık kaynak araçlar
Çekirdek
- Node.js + TypeScript — Ana çalışma ortamı ve tip güvenliğifree
- Remotion — Kod ile programatik video render (React tabanlı)free
Seslendirme (TTS)
- Piper — Hızlı, hafif, yerel TTS — birçok dilfree
- Coqui XTTS — Klonlanabilir, doğal ses; çok dillifree
- Qwen TTS — Alternatif açık modelfree
Görsel & Medya
- Stable Diffusion / Flux — Yerel AI görsel üretimifree
- Pexels / Pixabay API — Ücretsiz stok video/görselfree
- FFmpeg — Medya dönüştürme, ses süresi ölçümüfree
Metin & Orkestrasyon
- Yerel LLM (Ollama) / API — Fikir + senaryo üretimi (opsiyonel ücretli API)free
- node-cron — Her gece otomatik çalıştırmafree
- Zod — Config ve JSON şema doğrulamafree
Promptlar
Hangi araca ne prompt verilir?
Her aşamada hangi araca, ne tür bir prompt/komut gönderileceğinin kopyalanabilir örnekleri.{{...}} alanları pipeline tarafından otomatik doldurulur.
Nişe göre tekrar etmeyen video fikirleri. 'history' listesini promptta verip tekrarı önleyin.
Sen viral kısa video editörüsün. Niş: "{{niche}}".
Daha önce kullanılanlar (tekrar etme): {{history}}.
10 adet YouTube Shorts fikri üret. Her biri:
- başlık (max 60 karakter, merak uyandıran)
- 1 cümlelik kanca (hook) fikri
- tahmini izlenme potansiyeli (düşük/orta/yüksek)
Çıktı: JSON dizi [{title, hook, potential}]. Sadece JSON döndür.Tek çağrıda senaryoyu sahnelere böler ve her sahnenin seslendirme/altyazı/görsel promptunu üretir.
Şu fikir için 35-50 saniyelik bir Shorts senaryosu yaz: "{{idea}}".
Dil: {{language}}. Ton: {{tone}}.
Kurallar:
- İlk sahne güçlü bir hook olsun (ilk 3 saniye).
- 5-7 sahneye böl. Her sahne tek görsel + tek kısa cümle.
- Sonda net bir CTA: "{{cta}}".
Her sahne için üret:
- voiceover (seslendirme metni, doğal konuşma)
- subtitle (kısa, büyük harf vurgulu altyazı)
- visualPrompt (İngilizce, görsel üretimi için: konu + stil + "vertical 9:16")
Çıktı JSON: { "title": "...", "scenes": [ {voiceover, subtitle, visualPrompt} ] }
Sadece JSON döndür.Her sahnenin visualPrompt'u buraya gider. 9:16 için 1080×1920 (veya 832×1216 upscale).
{{scene.visualPrompt}}, cinematic lighting, high detail, vertical 9:16 composition, no text, no watermark
Negative: text, watermark, logo, blurry, low quality, extra fingers
Size: 1080x1920 | Steps: 28 | CFG: 6Üretim yerine stok video çekmek isterseniz, sahne anahtar kelimesiyle arama yapılır.
GET https://api.pexels.com/videos/search?query={{scene.keyword}}&orientation=portrait&per_page=1
Header: Authorization: {{PEXELS_API_KEY}}
→ portrait (dikey) ilk sonucun video dosyasını indir.Her sahnenin voiceover'ı sese çevrilir; FFmpeg ile süre ölçülüp timing güncellenir.
# Piper (yerel, hızlı)
echo "{{scene.voiceover}}" | piper -m {{voice}}.onnx -f scene-{{index}}.wav
# Coqui XTTS (klonlanmış/doğal ses)
tts --text "{{scene.voiceover}}" --model_name tts_models/multilingual/multi-dataset/xtts_v2 \
--speaker_wav voice-sample.wav --language_idx {{language}} --out_path scene-{{index}}.wavHer platform için ayrı başlık/açıklama/hashtag. Karakter limitlerine dikkat.
Şu video için yayın metinlerini üret. Başlık: "{{title}}".
Platformlar: YouTube Shorts, Instagram Reels, TikTok.
Her platform için:
- başlık/caption (platforma uygun uzunluk)
- açıklama (1-2 cümle)
- 8-12 alakalı hashtag
Çıktı JSON: { youtube:{title,description,hashtags}, instagram:{...}, tiktok:{...} }
Sadece JSON döndür.Maliyet
Ücretsiz mi, ücretli mi? Aylık maliyet
Her bileşen için ücretsiz/açık kaynak seçenek ve (kalite/hız için) ücretli alternatif. Tahminler ~300 video/ay (günde 10) içindir.
| Bileşen | Ücretsiz / Açık kaynak | Ücretli (opsiyonel) |
|---|---|---|
| Fikir + senaryo (LLM) | Ollama (yerel, $0) — Llama/Qwen | ChatGPT/Claude API ~ $3–15/ay (300 video) |
| Seslendirme (TTS) | Piper / Coqui XTTS (yerel, $0) | ElevenLabs ~ $5–22/ay |
| Görsel üretimi | Stable Diffusion / Flux (yerel, $0) | Midjourney/DALL·E ~ $10–30/ay |
| Stok medya (alternatif) | Pexels / Pixabay API ($0) | Storyblocks ~ $15/ay |
| Video render | Remotion (açık kaynak, $0) | Remotion Lambda (bulut render) — kullanım başına |
| Müzik / SFX | YouTube Audio Library, Pixabay Music ($0) | Epidemic Sound ~ $9–15/ay |
| Çalıştırma | Kendi bilgisayarın / GPU ($0) | Bulut GPU (render hızı için) ~ $0.5–1/saat |
Özet: Tamamen yerel ve açık kaynak kurulumla aylık maliyet ~$0 (yalnızca elektrik + kendi donanımın). Kaliteyi/hızı artırmak için seçili ücretli servisler eklendiğinde tipik bir kurulum aylık ~$20–60 bandındadır (300 video/ay). En büyük değişken: yerel görsel üretimi için yeterli GPU olup olmaması.
Proje mimarisi
Klasör yapısı
shorts-factory/
├─ src/
│ ├─ config.ts # Tek dosyadan ayar
│ ├─ pipeline.ts # Uçtan uca akışı yürütür
│ ├─ modules/
│ │ ├─ ideas.ts # 1) Fikir üretimi
│ │ ├─ script.ts # 2-4) Senaryo + sahne + meta
│ │ ├─ tts.ts # 5) Seslendirme (Piper/XTTS)
│ │ ├─ media.ts # 6) Görsel/medya
│ │ ├─ subtitles.ts # 8) Altyazı
│ │ ├─ render.ts # 7,9) Remotion render → MP4
│ │ ├─ publish.ts # 11) Yayın metinleri
│ │ └─ scheduler.ts # 12) Gece otomasyonu
│ └─ utils/ { logger.ts, retry.ts, files.ts }
├─ remotion/
│ ├─ Root.tsx # Composition tanımı
│ └─ templates/
│ ├─ FactsTemplate.tsx # Stil 1
│ └─ QuoteTemplate.tsx # Stil 2
├─ assets/ { music/, sfx/, fonts/, logo/ }
├─ output/ # Üretilen videolar (tarihe göre)
│ └─ 2026-06-04/
│ └─ vid-001/ { scenes.json, audio/, images/, final.mp4, post.json }
├─ niches/
│ └─ science-facts.json # Örnek niş config
└─ package.jsonSahne JSON yapısı
Tüm sistem bu JSON'a göre çalışır — seslendirme, altyazı, görsel ve timing tek yerde.
{
"id": "vid-001",
"niche": "science-facts",
"title": "3 Mind-Blowing Space Facts",
"fps": 30,
"width": 1080,
"height": 1920,
"template": "FactsTemplate",
"scenes": [
{
"index": 0,
"voiceover": "Did you know a day on Venus is longer than its year?",
"subtitle": "A day on Venus > its year",
"visualPrompt": "planet venus, cinematic, vertical, dramatic light",
"start": 0,
"duration": 4.2
},
{
"index": 1,
"voiceover": "Venus rotates so slowly that one rotation takes 243 Earth days.",
"subtitle": "1 rotation = 243 Earth days",
"visualPrompt": "slow rotating planet, stars background, vertical",
"start": 4.2,
"duration": 5.0
}
],
"music": "assets/music/ambient-01.mp3"
}Modüller
ideas.ts
Nişe göre fikir üretir, geçmişle tekrarları eler.
script.ts
Fikirden senaryo + sahne + meta JSON üretir.
tts.ts
Sahne metinlerini sese çevirir, süreleri ölçer.
media.ts
Sahne görsellerini üretir veya stok API'den çeker.
subtitles.ts
Zaman damgalı altyazı (SRT/ASS) üretir.
render.ts
Remotion ile 9:16 videoyu MP4'e render eder.
publish.ts
Platform başına başlık/açıklama/hashtag hazırlar.
scheduler.ts
Cron ile her gece 10 video üretir; retry + log.
Tek dosyadan ayar
Tüm sistem tek bir config'ten yönetilir; nişe özel ayarlar ayrı dosyadadır.
// src/config.ts
export const config = {
niche: "science-facts", // niches/ altındaki dosya
videosPerNight: 10, // her gece kaç video
schedule: "0 2 * * *", // cron: her gece 02:00
script: { minSeconds: 30, maxSeconds: 60, scenesPerVideo: 6 },
tts: {
engine: "piper", // "piper" | "xtts" | "qwen"
voice: "en_US-amy-medium",
language: "en",
},
media: {
source: "stable-diffusion", // "stable-diffusion" | "pexels" | "pixabay"
fallback: "pexels", // üretim başarısızsa stok
},
video: { width: 1080, height: 1920, fps: 30, template: "FactsTemplate" },
branding: { logo: "assets/logo/brand.png", primaryColor: "#EC4899" },
retry: { attempts: 3, delayMs: 2000 },
logLevel: "info",
};// niches/science-facts.json
{
"name": "science-facts",
"displayName": "Mind-Blowing Science Facts",
"language": "en",
"tone": "energetic, curious, punchy",
"hookStyle": "Did you know...",
"topics": ["space", "human body", "ocean", "physics", "animals"],
"hashtags": ["#shorts", "#sciencefacts", "#didyouknow", "#learnontiktok"],
"callToAction": "Follow for daily facts"
}Çalıştırma
Komutlar
npm run generate -- --niche science-facts --count 1
npm run generate -- --niche science-facts --count 10
npm run scheduler # her gece config.schedule'a göre 10 video
Kurulum (özet)
- 1.
npm install— bağımlılıkları kur - 2. Piper/XTTS modelini ve (yerel görsel için) Stable Diffusion'ı kur
- 3.
src/config.tsveniches/'i düzenle - 4.
npm run generate -- --count 1ile test et - 5.
npm run schedulerile geceyi otomatikleştir
Uygulamalı
Claude Code ile bu sistemi nasıl kurarsınız?
Bu pipeline'ı sıfırdan yazmak zorunda değilsiniz. Claude Code (terminal tabanlı agentic kodlama aracı) ile her modülü adım adım kurdurabilir, hataları ona düzelttirebilir ve uçtan uca çalışan bir sistemi günler değil saatler içinde elde edebilirsiniz. Aşağıdaki promptları sırayla Claude Code'a verin; her adımda önerdiği değişiklikleri gözden geçirip onaylayın.
1. Projeyi başlat
Boş bir klasör açıp Claude Code'u başlatın. İlk olarak iskeleti kurdurun: Node + TypeScript + Remotion + klasör yapısı.
Boş bir Node.js + TypeScript projesi kur. Remotion'ı ekle. Şu klasör yapısını oluştur: src/modules, src/utils, remotion/templates, assets, output, niches. package.json'a "generate" ve "scheduler" script'lerini ekle. tsconfig'i strict yap. Her şeyi commit'le.
2. Config ve tipleri tanımlat
Tek dosyadan ayar (config.ts) ve sahne JSON tipini (Zod ile doğrulanan) oluşturun. Sistemin sözleşmesi burada başlar.
src/config.ts oluştur: niche, videosPerNight, schedule (cron), script ayarları, tts (engine: piper|xtts), media (source), video (1080x1920, fps), branding ve retry alanları olsun. Ayrıca src/types.ts'te Scene ve VideoProject tiplerini tanımla ve Zod şemalarıyla doğrula. Örnek bir niches/science-facts.json ekle.
3. Fikir + senaryo modülünü yazdır
ideas.ts ve script.ts'i kurdurun. Yerel LLM (Ollama) veya API ile çalışsın; çıktıyı JSON şemaya göre doğrulasın.
src/modules/ideas.ts ve src/modules/script.ts yaz. ideas: nişe göre 10 fikir üretsin, output/history.json ile tekrarı önlesin. script: bir fikri 5-7 sahneye bölsün; her sahnede voiceover, subtitle, visualPrompt üretsin. LLM çağrısını soyutla (Ollama varsayılan, OpenAI/Claude opsiyonel). Çıktıyı Zod ile doğrula, hatalıysa 1 kez yeniden iste.
4. TTS ve görsel modülleri
tts.ts (Piper/XTTS) ve media.ts (Stable Diffusion / Pexels) modüllerini, her sahnenin sesini ve görselini üretecek şekilde kurdurun.
src/modules/tts.ts: her sahnenin voiceover'ını Piper ile sese çevirsin (engine config'ten gelsin, xtts alternatifi olsun). FFmpeg ile ses süresini ölçüp sahnenin duration'ını güncellesin. src/modules/media.ts: visualPrompt'tan Stable Diffusion API ile 1080x1920 görsel üretsin; başarısızsa Pexels API'den dikey stok video çeksin (config.fallback).
5. Remotion template + render
Dikey 9:16 şablonu (React) ve render.ts'i kurdurun. JSON sahne yapısı şablona props olarak gidip MP4 üretsin.
remotion/templates/FactsTemplate.tsx yaz: 1080x1920 dikey kompozisyon, sahne görseli + altyazı (büyük, ortalı) + sahne geçişleri + arka plan müziği. remotion/Root.tsx'te composition'ı tanımla. src/modules/render.ts: scenes.json'u props olarak verip Remotion ile output/<tarih>/<id>/final.mp4 üretsin. Altyazıları timing'e göre senkronla.
6. Yayın metni + pipeline + scheduler
publish.ts, pipeline.ts (uçtan uca akış) ve scheduler.ts'i (node-cron, retry, log) kurdurup tek komuta bağlayın.
src/modules/publish.ts: her platform için başlık/açıklama/hashtag üretip output klasörüne post.json yazsın. src/pipeline.ts: ideas→script→tts→media→render→publish akışını tek videoda yürütsün, her adımı utils/logger ile loglasın, utils/retry ile 3 kez denesin. src/modules/scheduler.ts: node-cron ile config.schedule'da çalışıp config.videosPerNight kadar video üretsin. package.json: "generate" → pipeline'ı --count ile, "scheduler" → scheduler'ı çağırsın.
7. Test et ve iyileştir
Tek videoyla uçtan uca test edip Claude Code'a hataları düzelttirin; sonra geceyi otomatikleştirin.
npm run generate -- --niche science-facts --count 1 çalıştır. Oluşan hataları analiz et ve düzelt; final.mp4 üretilene kadar devam et. Sonra ses-altyazı senkronunu ve sahne geçişlerini iyileştir. Son olarak README.md yaz: kurulum, Piper/SD kurulumu, komutlar ve örnek çıktı.
Sık sorulan sorular
- Tamamen ücretsiz araçlarla mümkün mü?
- Büyük ölçüde evet. Remotion, Piper/XTTS (TTS), Stable Diffusion/Flux (görsel), FFmpeg, node-cron ve Pexels/Pixabay API'leri ücretsiz/açık kaynaktır. Fikir ve senaryo üretimi için yerel bir LLM (Ollama) kullanırsanız o da ücretsizdir; ChatGPT/Claude API opsiyonel ve ücretlidir.
- Neden Remotion?
- Remotion, videoyu React/TypeScript ile kod olarak tanımlamanızı sağlar. Bu sayede şablonları yeniden kullanabilir, JSON sahne yapısından programatik olarak yüzlerce video üretebilir ve her şeyi sürüm kontrolünde tutabilirsiniz — manuel kurgu gerekmez.
- Her video birbirinin aynısı olmaz mı?
- Hayır. Farklı şablonlar (FactsTemplate, QuoteTemplate...), farklı niş, ses, görsel ve müzik kombinasyonlarıyla çeşitlilik sağlanır. Üretilen başlıklar geçmişte tutularak tekrar önlenir.
- Gerçekten gece otomatik çalışır mı?
- Evet. scheduler modülü node-cron ile config'teki saatte (örn. 02:00) tetiklenir, sırayla 10 videoyu üretir. Hata yönetimi ve retry sayesinde bir adım başarısız olursa süreç çökmeden devam eder ve loglanır.
- Otomatik yayınlama (auto-post) var mı?
- Bu blueprint yayın metinlerini (başlık/açıklama/hashtag) hazırlar ve dosyaya yazar. Doğrudan auto-post, platformların API ve politikalarına bağlıdır; n8n/Make ile bir yayın adımı eklenebilir, ancak platform kurallarına uyum şarttır.