Yapay Zeka Ajanları

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

Shorts üretim akışı

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 + TypeScriptAna çalışma ortamı ve tip güvenliğifree
  • RemotionKod ile programatik video render (React tabanlı)free

Seslendirme (TTS)

  • PiperHızlı, hafif, yerel TTS — birçok dilfree
  • Coqui XTTSKlonlanabilir, doğal ses; çok dillifree
  • Qwen TTSAlternatif açık modelfree

Görsel & Medya

  • Stable Diffusion / FluxYerel AI görsel üretimifree
  • Pexels / Pixabay APIÜcretsiz stok video/görselfree
  • FFmpegMedya dönüştürme, ses süresi ölçümüfree

Metin & Orkestrasyon

  • Yerel LLM (Ollama) / APIFikir + senaryo üretimi (opsiyonel ücretli API)free
  • node-cronHer gece otomatik çalıştırmafree
  • ZodConfig 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.

1) Fikir üretimiLLM (Ollama / ChatGPT / Claude)

Nişe göre tekrar etmeyen video fikirleri. 'history' listesini promptta verip tekrarı önleyin.

prompt / komut
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.
2-4) Senaryo + sahne + metaLLM (Ollama / ChatGPT / Claude)

Tek çağrıda senaryoyu sahnelere böler ve her sahnenin seslendirme/altyazı/görsel promptunu üretir.

prompt / komut
Ş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.
6) Görsel üretimiStable Diffusion / Flux

Her sahnenin visualPrompt'u buraya gider. 9:16 için 1080×1920 (veya 832×1216 upscale).

prompt / komut
{{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
6) Görsel (alternatif)Stok API (Pexels / Pixabay)

Üretim yerine stok video çekmek isterseniz, sahne anahtar kelimesiyle arama yapılır.

prompt / komut
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.
5) SeslendirmeTTS (Piper / Coqui XTTS)

Her sahnenin voiceover'ı sese çevrilir; FFmpeg ile süre ölçülüp timing güncellenir.

prompt / komut
# 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}}.wav
11) Yayın metniLLM (Ollama / ChatGPT / Claude)

Her platform için ayrı başlık/açıklama/hashtag. Karakter limitlerine dikkat.

prompt / komut
Ş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/QwenChatGPT/Claude API ~ $3–15/ay (300 video)
Seslendirme (TTS)Piper / Coqui XTTS (yerel, $0)ElevenLabs ~ $5–22/ay
Görsel üretimiStable Diffusion / Flux (yerel, $0)Midjourney/DALL·E ~ $10–30/ay
Stok medya (alternatif)Pexels / Pixabay API ($0)Storyblocks ~ $15/ay
Video renderRemotion (açık kaynak, $0)Remotion Lambda (bulut render) — kullanım başına
Müzik / SFXYouTube Audio Library, Pixabay Music ($0)Epidemic Sound ~ $9–15/ay
ÇalıştırmaKendi 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ı

folder structure
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.json

Sahne JSON yapısı

Tüm sistem bu JSON'a göre çalışır — seslendirme, altyazı, görsel ve timing tek yerde.

scenes.json
{
  "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
// 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
// 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

Tek video üret
npm run generate -- --niche science-facts --count 1
10 video üret
npm run generate -- --niche science-facts --count 10
Gece otomasyonu (scheduler)
npm run scheduler   # her gece config.schedule'a göre 10 video

Kurulum (özet)

  1. 1. npm install — bağımlılıkları kur
  2. 2. Piper/XTTS modelini ve (yerel görsel için) Stable Diffusion'ı kur
  3. 3. src/config.ts ve niches/'i düzenle
  4. 4. npm run generate -- --count 1 ile test et
  5. 5. npm run scheduler ile 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

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ı.

Claude Code'a ver
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

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.

Claude Code'a ver
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

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.

Claude Code'a ver
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

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.

Claude Code'a ver
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

5. Remotion template + render

Dikey 9:16 şablonu (React) ve render.ts'i kurdurun. JSON sahne yapısı şablona props olarak gidip MP4 üretsin.

Claude Code'a ver
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

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.

Claude Code'a ver
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

7. Test et ve iyileştir

Tek videoyla uçtan uca test edip Claude Code'a hataları düzelttirin; sonra geceyi otomatikleştirin.

Claude Code'a ver
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.