

2Slides API ile 100 Kelime Deck'i Toplu Olarak Nasıl Oluşturulur (2026 İçerik Fabrikası Kılavuzu)
Manuel iş akışını doğruladıktan sonra — bir kelime deck'i oluşturup, seslendirip, varlıkları dışa aktardıktan sonra — sonraki darboğaz hacimdir. 12 seviyesi ve 30 haftalık teması olan bir dil okulu yılda 360 deck'e ihtiyaç duyar. Günlük gönderi yapan faceless bir TikTok kanalı 365 deck'e artı en boy oranı varyantlarına ihtiyaç duyar. Bir EdTech şirketindeki içerik ekibi L1/L2 çiftlerine göre segmentlere ayrılmış yüzlerce deck'e ihtiyaç duyar.
360 deck'i elle inşa etmezsiniz. Bir içerik fabrikası inşa edersiniz.
Bu rehber, kelime deck'lerini (ve diğer slayt içeriklerini) 2Slides API ile toplu üretmek için pratik 2026 kılavuzudur. En önemli mimari karar — ve en sık yanlış yapılan — doğru oluşturma endpoint'ini seçmektir.
Önce doğru endpoint'i seçin (çoğu fabrika burada bozulur)
2Slides, API üzerinden iki farklı oluşturma akışı sunar. Sadece biri sonradan seslendirilebilen deck'ler üretir.
| Endpoint | Ne ürettiği | Seslendirme mümkün mü? | Kredi |
|---|---|---|---|
POST /api/v1/slides/generate | Fast PPT — şablon güdümlü PPTX. Şablon kütüphanesinden bir themeId gerektirir. | ❌ Hayır. Seslendirme endpoint'i burada oluşturulan işleri açıkça reddeder. | 10 / sayfa |
POST /api/v1/slides/create-pdf-slides | Nano Banana — metin prompt'undan görsel üretilen slaytlar. Workspace ile aynı motor. | ✅ Evet | 10 (planlama) + 100 / slayt (1K/2K) veya 200 / slayt (4K) |
POST /api/v1/slides/create-like-this | Nano Banana — referans bir görseli eşleştiren görsel üretilen slaytlar. | ✅ Evet | Yukarıdakiyle aynı |
Seslendirme ve dışa aktarılabilir sesi olan bir kelime kartı içerik fabrikası için, create-pdf-slides (veya referans bir layout'unuz varsa create-like-this) kullanın. /api/v1/slides/generate kullanmayın — bu Fast PPT endpoint'idir ve buna seslendirme ekleyemezsiniz.
Fabrikanız sadece sessiz PPTX'e ihtiyaç duyuyorsa (ses yok, video yok), /api/v1/slides/generate aracılığıyla Fast PPT en ucuz yoldur. Bu kılavuzun geri kalanı seslendirilmiş iş akışını varsayar.
Tek diyagramda mimari
[Source data] [Orchestrator] [2Slides API] [Outputs]
│ │ │ │
vocabulary ──prompt──▶ Job queue ──POST──▶ /api/v1/slides/create-pdf-slides ──▶ jobId (UUID)
spreadsheet (Cron/script) │ │
│ │ │ │
Poll ──GET──▶ /api/v1/jobs/{jobId} ◀─────────────────────────────┘
every 20-30s status: success │
│ ▼
│ [pages slides PNG · downloadUrl PDF]
│
▶ POST /api/v1/slides/generate-narration
│ (jobId, voice, mode, etc.) — async only
│
Poll ──GET──▶ /api/v1/jobs/{jobId}
message: "Voice narration generation in progress" → success
│
▶ POST /api/v1/slides/download-slides-pages-voices
│ (free; returns ZIP)
▼
pages/*.png + voices/*.{wav,mp3} + transcript.txt
│
▼
(Optional) compose MP4 client-side
with FFmpeg, or use the Workspace UI
│
▼
[LMS / TikTok / newsletter / S3]Kaynak veri → orkestratör → API → pages + voices ZIP → dağıtım. MP4 kompozisyonu isteğe bağlıdır ve 2026 itibariyle bir public API endpoint'i değildir — bu, tarayıcıda FFmpeg.wasm kullanan bir Workspace UI özelliğidir. API eşdeğeri pages-and-voices ZIP'idir; fabrikada MP4'e ihtiyacınız varsa sunucu tarafında ffmpeg ile birleştirebilirsiniz.
Adım 1 — Önce kaynak şemasını tasarlayın
En yüksek kaldıraçlı hareket, herhangi bir API çağrısından önce kaynak veri şemasını tanımlamaktır. Temiz bir şemadan inşa edilen deck'ler tekrarlanabilirdir; ad-hoc prompt'lardan inşa edilenler değildir.
Ölçeklenen bir kelime deck'i kaynak satırı:
deck_id: vocab-b1-travel-2026-w14
source_l1: en # learner's native language
target_l2: es # language being learned
cefr_level: B1
theme: travel
words:
- { word: "boarding pass", ipa: "/ˈbɔːrdɪŋ pæs/", pos: noun, l1: "tarjeta de embarque" }
- { word: "layover", ipa: "/ˈleɪoʊvər/", pos: noun, l1: "escala" }
- { word: "to delay", ipa: "/dɪˈleɪ/", pos: verb, l1: "retrasar" }
# ... 27 more
generation:
endpoint: create-pdf-slides
aspect_ratio: "9:16" # vertical for short-form review
resolution: "2K"
page_count: 30
content_detail: "concise"
narration:
enabled: true
voice: "Puck" # see /tts_sample_voices for the catalog
mode: "single"
distribution:
social: [tiktok, reels, shorts]
newsletter: monday-2026-w14Bu nesne iş birimidir. Aşağı akıştaki her şey onu tüketir.
Kaynak şemasını zaten sahip olduğunuz şeyde inşa edin: teknik olmayan ekipler için Google Sheet, mühendislik ekipleri için bir Postgres tablosu, içerik ekipleri için yapısal alanlara sahip bir CMS. Düz Markdown dosyalarında inşa etmekten kaçının — Markdown insan yazımı için iyidir ancak toplu otomasyon için kötüdür.
Adım 2 — Kimlik doğrulama
API yönetim sayfasından bir API key alın. Format:
sk-2slides-{64-character-hex-string}Tüm istekler bearer auth kullanır:
Authorization: Bearer sk-2slides-...Endpoint başına rate limit'ler 2slides.com/api.md adresinde belgelenmiştir. Toplu üretim için:
create-pdf-slidesvecreate-like-this: kuyruğunuzu 429 üzerinde exponential backoff ile concurrency limit'leri etrafında tasarlayınjobs/{id}(poll): aşağıdaki polling cadence'ine saygı gösterin — agresif değil, 20-30sdownload-slides-pages-voices: ücretsiz ve daha hızlı, ancak yine de rate limit'li
Adım 3 — Bir Nano Banana oluşturma işi gönderin
Kelime kartları en iyi async modda çalışır (slayt başına görsel üretimi 30 kartlık bir deck için 1-3 dakika sürer).
curl -X POST "https://2slides.com/api/v1/slides/create-pdf-slides" \
-H "Authorization: Bearer sk-2slides-..." \
-H "Content-Type: application/json" \
-d '{
"userInput": "<your deck-shaped prompt — see Step 4>",
"responseLanguage": "en",
"aspectRatio": "9:16",
"resolution": "2K",
"page": 30,
"contentDetail": "concise",
"mode": "async"
}'Yanıt jobId (bir UUID) içerir. Tamamlanma için poll yapın:
curl -X GET "https://2slides.com/api/v1/jobs/{jobId}" \
-H "Authorization: Bearer sk-2slides-..."Polling cadence: her 20-30 saniyede. Daha hızlı poll yapmayın — API belgeleri bunu açıkça belirtir ve agresif polling 429'ların en yaygın nedenidir. Çoğu deck 1-3 dakikada tamamlanır.
status: "success" olduğunda, iş R2'de saklanan slayt görsellerine ve PDF derlemesi için bir downloadUrl'e sahiptir. Slayt görsellerinin kendisi daha sonra sesle birleştireceğiniz şeydir.
Adım 4 — Ölçekte tutunan prompt şablonları oluşturun
Sallantılı bir fabrika ile güvenilir bir fabrika arasındaki en büyük fark prompt şablonlarıdır. Deck başına çalışma zamanında prompt yazmayın. Deck türü başına bir şablon tanımlayın ve değerleri yerine koyun.
Kelime deck'i şablonu (userInput):
Generate a {{cefr_level}}-level vocabulary deck for {{source_l1}}-speaking learners
of {{target_l2}}. Theme: {{theme}}.
Number of cards: {{word_count}}.
For each card, output exactly:
- Target word (in {{target_l2}})
- Part of speech
- IPA transcription
- Translation in {{source_l1}}
- Two example sentences in natural {{theme}} context, B1 syntax, 8–14 words each
Words to include:
{{word_list_yaml}}
End with a 3-card recap of the most useful 3 words from the deck.Görsel stil designStyle parametresi (özel prompt) ile kontrol edilir veya varsayılana bırakılır ("clean infographic, no photographs, balanced typography"). Prompt'ları git'te sürümlendirilmiş tutun. Bir prompt değiştiğinde, üretilen her deck'le sürümü logla; böylece kalite gerilemelerini prompt değişiklikleriyle ilişkilendirebilirsiniz.
Adım 5 — Seslendirme ekleyin
Oluşturma işi status: "success" olduğunda, seslendirmeyi başlatın. Seslendirme yalnızca async olup aynı jobId üzerinde çalışır:
curl -X POST "https://2slides.com/api/v1/slides/generate-narration" \
-H "Authorization: Bearer sk-2slides-..." \
-H "Content-Type: application/json" \
-d '{
"jobId": "550e8400-e29b-41d4-a716-446655440000",
"mode": "single",
"voice": "Puck",
"speakerName": "Vocabulary Coach",
"contentMode": "concise",
"includeIntro": true
}'Sonra mesaj "Voice narration generation in progress" durumundan başarı durumuna geçene kadar aynı /api/v1/jobs/{jobId}'i poll yapın.
Kelime kartları için iyi çalışan iki ses pattern'i:
- Tek bir sesle
mode: "single"— basit kelime + IPA + cümle okuma - İki sesle
mode: "multi"— örnek cümleler konuşmacılar arasında bölünür, fiiller ve deyimler için idealdir
Ses kataloğu /tts_sample_voices/ adresinde yayınlanmıştır. Yaygın seçimler arasında Puck, Aoede, Charon, Kore bulunur. Üretimde belirli bir sese sabitlemeden önce desteği en son API belgeleriyle doğrulayın.
Önemli: bu tek endpoint hem ses metnini hem de ses sesini üretir. Ayrı "voice text" ve "voice audio" endpoint'leri çağırmayın — bu adımlar için bağımsız bir public API yoktur. Seslendirme isteğini bir kez yapılandırın ve API her ikisini de yapar.
Adım 6 — Pages ve voices'ı dışa aktarın (ücretsiz)
Seslendirme tamamlandıktan sonra, tüm varlıkları tek bir ZIP'te alın:
curl -X POST "https://2slides.com/api/v1/slides/download-slides-pages-voices" \
-H "Authorization: Bearer sk-2slides-..." \
-H "Content-Type: application/json" \
-d '{
"jobId": "550e8400-e29b-41d4-a716-446655440000"
}'Yanıt, içeren bir ZIP için bir downloadUrl (1 saat geçerli) içerir:
pages/
page_01.png
page_02.png
...
voices/
page_01.wav
page_02.wav
...
transcript.txtBu dışa aktarma ücretsizdir — kredi tüketilmez. ZIP'i indirin ve varlıkları kendi nesne deponuzda saklayın. Önceden imzalanmış URL 1 saat sonra sona erer.
Adım 7 — (İsteğe bağlı) MP4'ü sunucu tarafında birleştirin
2Slides API şu anda bir MP4 kompozisyon endpoint'i sunmaz — MP4 üretimi tarayıcıda FFmpeg.wasm aracılığıyla Workspace UI'da yaşar. Bir içerik fabrikası için, MP4'ü sunucu tarafında ffmpeg ile birleştirin:
# For each page, build a clip of (image still) + (voice audio).
ffmpeg -loop 1 -i pages/page_01.png -i voices/page_01.wav \
-c:v libx264 -tune stillimage -c:a aac -b:a 192k \
-pix_fmt yuv420p -shortest clips/page_01.mp4
# Concatenate all per-page clips into the final MP4.
ffmpeg -f concat -safe 0 -i clip_list.txt -c copy final.mp4Sayfa başına ses cadence'i seslendirme jeneratörünün ürettiği şeydir — kelime kartları için tipik olarak slayt başına 5-12 saniye. Sonuç, kullanıcının Workspace UI'dan indirdiği aynı MP4'tür, ancak fabrika hattınızda başsız üretilir.
Aynı deck'in dikey (9:16) ve yatay (16:9) varyantlarını istiyorsanız, en temiz yol slayt oluşturma aşamasında farklı en boy oranlarında deck'i iki kez oluşturmaktır (aspectRatio: "9:16" vs "16:9"). Sonradan FFmpeg kırpması genellikle çirkin sonuçlar verir çünkü slaytlar belirli bir en boy oranı için yerleştirilmiştir.
Adım 8 — Orkestratörü inşa edin
Minimal bir orkestratör beş döngüyü işler:
# Pseudocode
while there_is_work():
deck = pull_one_pending_deck_from_source()
if not deck:
sleep(60); continue
# 1. Generate slides via Nano Banana endpoint
job = post("/api/v1/slides/create-pdf-slides", body=build_payload(deck))
deck_artifact = poll_until_complete(job.data.jobId)
# 2. Narrate (async only)
if deck.narration.enabled:
post("/api/v1/slides/generate-narration", body={
"jobId": deck_artifact.id,
"voice": deck.narration.voice,
"mode": deck.narration.mode,
})
poll_until_narration_complete(deck_artifact.id)
# 3. Export pages + voices ZIP (free)
zip_url = post("/api/v1/slides/download-slides-pages-voices",
body={"jobId": deck_artifact.id})
# 4. Download and store assets in your object store
download_to_s3(zip_url, deck.id)
# 5. (Optional) compose MP4 with ffmpeg, then distribute
if deck.distribution.social:
compose_mp4(deck.id)
distribute(deck)Bunu kuyruğu olan bir worker kutusunda çalıştırın. Günde 100 deck için bir worker yeterlidir. 1.000+ için, küçük bir worker havuzuna yayın — ancak havuzun sadece worker sayısına değil, her API endpoint'inin rate limit'lerine de saygı gösterdiğinden emin olun.
Adım 9 — Dağıtım pattern'leri
Dağıtım katmanı, varlıkları iş değerine dönüştürür:
- LMS: birleştirilmiş MP4'ü kendi API'leri aracılığıyla Canvas / Moodle / Blackboard / Google Classroom'a yükleyin
- TikTok / Reels / Shorts: 9:16 MP4'ü bir gönderi aracına (Buffer, Later, yerel zamanlayıcı) sıraya alın, günde bir tane
- Newsletter: PDF derlemesini (orijinal oluşturma işinin
downloadUrl'inden) haftalık sayıda indirme bağlantısı olarak gömün - Satış / lead magnet: PDF'i bir Stan Store / Gumroad sayfasına yükleyin; carousel teaser trafiği yönlendirir
Dağıtımı icat etmeye çalışmayın. Platform-yerel API'leri kullanın ve orkestratörünüzün zamanlayıcınızda bir satır bırakmasına izin verin.
Maliyet matematiği (önce planlanması gereken kısım)
Seslendirilmiş Nano Banana deck'leri için, bazı okuyucuların önceden gördüğü Fast PPT fiyatlandırmasından daha hızlı krediler birikir. 30 kartlık bir deck başına matematik (1K/2K çözünürlük, seslendirmeyle):
- Planlama: 10 kredi
- Slayt oluşturma: 30 × 100 = 3,000 kredi
- Seslendirme (metin + ses): 30 × 210 = 6,300 kredi
- Pages + voices dışa aktarma: 0 kredi (ücretsiz)
- Toplam: 30 kartlık seslendirilmiş deck başına ~9,310 kredi
Seslendirme olmadan, aynı deck ~3.010 kredidir. 4K çözünürlükte, slayt oluşturma kısmını ikiye katlayın: 30 × 200 = 6,000 → seslendirmeyle ~12,310 kredi.
100 deck/aylık fabrika için: 100 × 9,310 = ~931,000 kredi/ay. Bir kademe seçmek için fiyatlandırma sayfasıyla karşılaştırın — ve 4K için yalnızca çıktının ondan yararlanan bir bağlama (büyük ekranlar, premium video) gideceği zaman bütçe ayırın. TikTok / Reels inceleme videoları için, 1K veya 2K yeterlidir.
Yangınları önleyen operasyonel pattern'ler
Idempotency
Her deck gönderimi deck_id üzerinde idempotent olmalıdır. Worker'ınız batch ortasında çökerse, kuyruğu yeniden başlatmak yinelenen deck'ler üretmemelidir. En temiz pattern: bir veritabanı satırında (deck_id, status) saklayın; durumları geçirin (pending → generating → narrating → exporting → composed → distributed).
Kalite kapıları
Otomatik dağıtmayın. TikTok veya Canvas'a göndermeden önce, varlık üzerinde makine tarafından okunabilir bir kalite kontrolü çalıştırın:
- Sayfa sayısı istenen sayıyla eşleşir
- ZIP, beklenen sayıda
pages/page_NN.pngvevoices/page_NN.wavdosyası içerir - Sayfa başına ses süresi 3 ile 15 saniye arasındadır (30 saniyelik bir kart neredeyse her zaman halüsinasyonlu uzun bir script anlamına gelir)
transcript.txtboş değildir ve hedef kelimeleri içerir
İlk 50 batch için, 10 deck'ten 1'inin manuel spot kontrolünü de yapın. İlk 50 batch, sistemik prompt sorunlarının ortaya çıktığı yerdir.
Versioning
Her varlık şunları saklar: prompt şablonu sürümü, görsel modeli sürümü (gemini-3-pro-image-preview vs gemini-3.1-flash-image-preview), seslendirme sesi, oluşturma zaman damgası. Model iyileştiğinde veya bir prompt değiştiğinde, yalnızca etkilenen deck'leri yeniden çalıştırabilirsiniz.
Maliyet telemetrisi
Her deck'in bilinen bir kredi maliyeti vardır (yukarıdaki matematiğe bakın). Deck başına tüketilen kredileri izleyin. Deck başına kredi kullanımı beklenmedik şekilde ikiye katlandığında, bir şey değişmiştir (sayfa sayısı kayması, retry'lar, 4K'ya geçiş). Kredi faturası sizi gafil avlamadan önce bulun.
Hata yönetimi
Başarısız bir iş normaldir — ağ kesintisi, model yükü, nadir 5xx. Bir backoff'tan sonra bir kez yeniden deneyin. İki başarısızlıktan sonra, deck'i bir needs_human kuyruğuna gönderin. Sonsuz döngü yapmayın.
Build vs buy: API'yi ne zaman kullanmalı
API doğru cevaptır:
- Haftada >10 deck üretirsiniz
- Yapısal kaynak verileriniz vardır
- Sunucu tarafında birleştirip dağıtacağınız seslendirilmiş MP4'lere ihtiyacınız vardır
- Bir LMS, zamanlayıcı veya CMS ile entegre olursunuz
- Prompt versioning altında tekrarlanabilirlik istersiniz
API aşırıdır:
- Haftada 1 deck üretirsiniz ve her seferinde görsel olarak ayarlarsınız
- Kişisel çalışma için deck inşa eden bir öğrencisiniz (UI daha hızlıdır — ve Workspace UI sizin için MP4 kompozisyonunu da yapar)
- Ders başına bir deck inşa eden bir öğretmensiniz (Create Slides from File veya Create Slides Like This kullanın ve orkestrasyonu atlayın)
Sıkça Sorulan Sorular
API key'i nereden alırım?
2slides.com/api. Key'ler API yönetim sekmesinde yaşar.
Neden bir /api/v1/slides/generate işine seslendirme ekleyemiyorum?
generate endpoint'i Fast PPT'dir — şablon güdümlü PPTX. Çıktısı tamamlanmış bir .pptx dosyasıdır, seslendirme jeneratörünün okuyabileceği bir slayt-görseli-artı-metin işi değil. Seslendirme jeneratörü açıkça yalnızca yapısal sayfa başına içerikle nano banana slayt işleri üreten create-pdf-slides veya create-like-this işlerini kabul eder.
MP4'ü doğrudan API'den dışa aktarabilir miyim?
Hayır, 2026 itibariyle değil. MP4 dışa aktarma, FFmpeg.wasm ile istemci tarafında uygulanan bir Workspace UI özelliğidir. API eşdeğeri, slayt görselleri, ses dosyaları ve bir transkriptin ZIP'ini döndüren download-slides-pages-voices'dır — bir içerik fabrikası hattında ihtiyaç duyarsanız MP4'ü kendiniz ffmpeg ile birleştirirsiniz. Adım 7'ye bakın.
API üretim için hangi dilleri destekliyor?
İspanyolca, Fransızca, Almanca, Arapça, Japonca, Korece, Hintçe, Vietnamca, Rusça, Lehçe, İtalyanca, Portekizce, Endonezce, Tayca, Türkçe ve Çince (Basitleştirilmiş/Geleneksel) dahil olmak üzere 22+ dil. responseLanguage aracılığıyla geçirin.
Kredi maliyeti nedir?
Nano Banana deck'leri için: Slayt oluşturma için 10 (planlama) + 1K/2K'da slayt başına 100 (veya 4K'da slayt başına 200), artı seslendirme için sayfa başına 210 (10 metin + 200 ses). Pages + voices dışa aktarma ücretsizdir. 2K'da 30 kartlık seslendirilmiş bir deck ~9,310 kredidir. Fiyatlandırma sayfasına ve yukarıdaki maliyet matematiği bölümüne bakın.
429 rate limit'lerini nasıl yönetirim?
Exponential backoff. 1s'de başlayın, 60s'ye kadar ikiye katlayın. Üç ardışık 429'dan sonra, eşzamanlı worker sayınızı yarıya indirin. /api/v1/jobs/{id}'i her 20 saniyeden daha hızlı poll yapmayın — bu 429'ların en yaygın nedenidir.
Zapier / Make / n8n ile entegre edebilir miyim?
Evet — kimlik doğrulamalı HTTP istekleri yapabilen herhangi bir araç 2Slides API'yi yönetebilir. n8n özellikle içerik fabrikaları için popülerdir çünkü polling ve kuyruk pattern'lerini yerel olarak işler.
Üretilen deck'lerin public olarak indekslenmesini nasıl önlerim?
API aracılığıyla üretilen deck'ler varsayılan olarak hesabınıza özeldir. Public paylaşım ayrı bir açık eylemdir.
Aynı deck'in dikey (9:16) ve yatay (16:9) sürümlerini nasıl oluştururum?
Deck'i iki kez oluşturun — bir kez aspectRatio: "9:16" ile, bir kez aspectRatio: "16:9" ile. Slaytlar oluşturma zamanında en boy oranı başına yerleştirilir, bu nedenle sonradan kırpma nadiren iyi görünür. Evet, bu kredi maliyetini ikiye katlamak anlamına gelir; bu temiz görseller için kasıtlı bir tradeoff'tur.
Sonuç
Bir içerik fabrikası yapısal kaynak verileri + kararlı bir orkestratör + doğru API endpoint'leridir. 2Slides API üçüncü parçadır; ilk ikisinden siz sorumlusunuz. En yaygın fabrika başarısızlığı /api/v1/slides/generate (Fast PPT) kullanmak ve sonra onu seslendirmeye çalışmaktır — bu yol kapalıdır. Bunun yerine create-pdf-slides veya create-like-this kullanın, generate-narration ile seslendirin, download-slides-pages-voices ile dışa aktarın ve MP4'ü sunucu tarafında ffmpeg ile birleştirin.
Aynı iş akışının manuel tarafı için, kelime kartları rehberini ve yapımcı iş akışı rehberini inceleyin. Oradaki UI pattern'leri API ile otomatikleştirdiğiniz pattern'lerin aynısıdır; manuel akışı önce anlamak API entegrasyonunu çok daha hızlı hale getirir.
About 2Slides
Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.
Try For Free