2Slides Logosu
Python ile Sunum Oluşturmayı Otomatikleştirin: 2Slides API Eğitimi
2Slides Team
4 min read

Python ile Sunum Oluşturmayı Otomatikleştirin: 2Slides API Eğitimi

Python, otomasyon, veri hatları ve AI iş akışları için tercih edilen dildir. Bu eğitim, sunumları otomatik olarak oluşturmak için 2Slides REST API'sini Python'dan nasıl kullanacağınızı gösterir — basit tek seferlik slaytlardan karmaşık otomatik hatlara kadar.

Ön Gereksinimler

pip install requests python-dotenv

Bir .env dosyası oluşturun:

TWOSLIDES_API_KEY=sk-2slides-your-api-key

Hızlı Başlangıç: İlk Slaytlarınızı Oluşturun

import os import time import requests from dotenv import load_dotenv load_dotenv() API_KEY = os.getenv('TWOSLIDES_API_KEY') BASE_URL = 'https://2slides.com/api/v1' HEADERS = { 'Authorization': f'Bearer {API_KEY}', 'Content-Type': 'application/json' } def generate_slides(topic, theme_id=None, mode='async'): """Metin konusundan bir sunum oluştur.""" payload = { 'userInput': topic, 'mode': mode, 'responseLanguage': 'en', 'resolution': '2K', } if theme_id: payload['themeId'] = theme_id response = requests.post( f'{BASE_URL}/slides/generate', headers=HEADERS, json=payload ) response.raise_for_status() return response.json() def wait_for_job(job_id, timeout=300, interval=3): """Bir iş tamamlanana kadar yokla.""" start = time.time() while time.time() - start < timeout: response = requests.get( f'{BASE_URL}/jobs/{job_id}', headers=HEADERS ) data = response.json() status = data.get('status') print(f' İş {job_id}: {status}') if status == 'success': return data if status == 'failed': raise Exception(f'İş başarısız: {data}') time.sleep(interval) raise TimeoutError(f'İş {job_id} {timeout} saniye sonra zaman aşımına uğradı') # Bir sunum oluştur job = generate_slides('2026 için En İyi 10 AI Trendi') print(f'İş ID: {job["jobId"]}') result = wait_for_job(job['jobId']) print(f'İndir: {result["downloadUrl"]}')

Belgeleri Slaytlara Dönüştürün

def convert_file_to_slides(file_url, prompt='', theme_id=None): """PDF, DOCX, XLSX veya diğer dosyaları slaytlara dönüştür.""" payload = { 'fileUrl': file_url, 'userInput': prompt, 'mode': 'async' } if theme_id: payload['themeId'] = theme_id response = requests.post( f'{BASE_URL}/slides/create-pdf-slides', headers=HEADERS, json=payload ) response.raise_for_status() job = response.json() return wait_for_job(job['jobId']) # Bir çeyrek dönem raporu PDF'ini dönüştür result = convert_file_to_slides( file_url='https://your-storage.com/q1-report.pdf', prompt='Yönetim kurulu için yönetici özeti, maksimum 10 slayt' ) print(f'İndir: {result["downloadUrl"]}')

Tasarım-Eşleşmeli Slaylar (Buna Benzer Oluştur)

def create_like_this(topic, reference_image_url, resolution='2K'): """Referans tasarımla eşleşen slaytlar oluşturur.""" payload = { 'userInput': topic, 'designStyle': { 'global': { 'referenceImageUrl': reference_image_url } }, 'resolution': resolution, 'mode': 'async' } response = requests.post( f'{BASE_URL}/slides/create-like-this', headers=HEADERS, json=payload ) response.raise_for_status() job = response.json() return wait_for_job(job['jobId']) # Marka şablonunuzu eşleştirin result = create_like_this( topic='Aylık Ekip Güncellemesi — Mart 2026', reference_image_url='https://your-brand.com/slide-template.png' )

Sesli Anlatım Ekle

def add_narration(job_id, mode='single', voice='Charon', content_mode='concise'): """Mevcut slaytlara AI sesli anlatım ekler.""" payload = { 'jobId': job_id, 'mode': mode, 'voice': voice, 'contentMode': content_mode } response = requests.post( f'{BASE_URL}/slides/generate-narration', headers=HEADERS, json=payload ) response.raise_for_status() return response.json() def download_with_audio(job_id): """Slaytları sesli ses dosyalarıyla indirir.""" response = requests.post( f'{BASE_URL}/slides/download-slides-pages-voices', headers=HEADERS, json={'jobId': job_id} ) response.raise_for_status() return response.json()

Temaları Gözat

def search_themes(query=''): """Mevcut slayt temalarını arar.""" params = {'query': query} if query else {} response = requests.get( f'{BASE_URL}/themes', headers=HEADERS, params=params ) response.raise_for_status() return response.json() themes = search_themes('kurumsal') for theme in themes.get('themes', []): print(f"{theme['id']}: {theme['name']}")

Production Pipeline Örneği

""" Otomatik haftalık rapor pipeline'ı. Cron ile çalıştırın: 0 9 * * MON python weekly_report.py """ import json from datetime import datetime def weekly_report_pipeline(): print(f'Haftalık rapor oluşturuluyor: {datetime.now().isoformat()}') # 1. Slaytları oluştur job = generate_slides( topic='''Haftalık Mühendislik Güncellemesi — 23 Mart 2026 Haftası: - v2.4 production'a deploy edildi (%99.9 uptime) - 3 yeni API endpoint yayınlandı - Performans: p99 latency %40 düştü - Sprint velocity: 42 story point (hedef: 40) - Gelecek hafta: veritabanı taşıma, yeni auth sistemi''', theme_id='corporate-standard-id' ) result = wait_for_job(job['jobId']) print(f'Slaytlar hazır: {result["downloadUrl"]}') # 2. Anlatım ekle add_narration(job['jobId'], mode='single', voice='Kore') print('Anlatım eklendi') # 3. Paketi indir package = download_with_audio(job['jobId']) print(f'Tam paket: {json.dumps(package, indent=2)}') return result['downloadUrl'] if __name__ == '__main__': url = weekly_report_pipeline() print(f'\nRapor URL: {url}')

Hata Yönetimi En İyi Uygulamaları

from requests.exceptions import HTTPError, Timeout, ConnectionError def safe_generate(topic, retries=3): """Yeniden deneme mantığı ile slayt oluştur.""" for attempt in range(retries): try: job = generate_slides(topic) return wait_for_job(job['jobId']) except HTTPError as e: if e.response.status_code == 429: wait = 2 ** attempt * 5 # Üstel geri çekilme print(f'Rate limit aşıldı. {wait} saniye bekleniyor...') time.sleep(wait) elif e.response.status_code == 402: raise Exception('Yetersiz kredi') else: raise except (Timeout, ConnectionError) as e: print(f'Ağ hatası (deneme {attempt + 1}): {e}') time.sleep(5) raise Exception(f'{retries} denemeden sonra başarısız oldu')

Sıkça Sorulan Sorular

Hangi Python sürümü gereklidir?

f-string'ler ve requests uyumluluğu için Python 3.7+.

Async Python (asyncio/aiohttp) kullanabilir miyim?

Evet — async HTTP çağrıları için requests yerine aiohttp kullanın. Polling deseni aynı şekilde çalışır.

Büyük toplu işleri nasıl yönetirim?

Rate limiti (60 req/dk) göz önünde bulundurarak birden fazla oluşturmayı eşzamanlı olarak çalıştırmak için asyncio kullanın.


Otomasyona başlayın — 2Slides API anahtarınızı alın ve Python'dan sunumlar oluşturun.

About 2Slides

Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.

Try For Free
2Slides logo

Slaytlar için AI Ajanınız. Akıllı sunum oluşturma ile zaman kazanın, daha hızlı parlayın.

AI ile Özetle

ChatGPTClaudeGrokPerplexity
Tüm hizmetler çevrimiçi

© 2026 2slides. Tüm hakları saklıdır.