@kuranikerim_tr için otomatik, ayet + meal videoları üretir. Videolar videos/ klasöründe tutulur. Metricool bu dosyaları raw GitHub linkinden çeker.
Overview
@kuranikerim_tr için otomatik, ayet + meal videoları üretir. Videolar videos/ klasöründe tutulur. Metricool bu dosyaları raw GitHub linkinden çeker. - data/ara-quransimple.json: Arapça metin (Tanzil "Quran Simple", fawazahmed0/quran-api) - data/tur-diyanetisleri.json: Diyanet İşleri meali (Tanzil, fawazahmed0/quran-api) - surahs.json: sure numarası → Türkçe sure adı - topics.json: konu listesi. Alanlar: id, tema, sure, ayet [başlangıç, bitiş], hook, kapanis, sahne, seslendirme {giris, yorum}, bg, aciklama, etiketler, kurgu {kamera, gecis} (bkz. "Kurgu"), seo {yt_baslik, ilk_satir, aciklama, anahtar} (bkz. "SEO"), sır videolarında tur: "sir" ve sir_kaynak (bkz. "Kur'an'ın sırları") - render.py : videoyu üretir → videos/ .mp4 (1080x1920, 30 fps, seslendirmeli) - cine.py: sinematik sahne motoru (v3): katmanlı derinlik/paralaks, hareketli sis, hacimsel ışık hüzmeleri, toz/kıvılcım, yıldız/samanyolu, dağ sırtları, yağmur/şimşek, deniz, orman, şehir, kapı, kum saati, fener…
README
kuranikerim_tr — TikTok / YouTube Shorts ayet videoları (v3 — karanlık belgesel)
@kuranikerim_tr için otomatik, karanlık belgesel tonunda Türkçe seslendirmeli, ilahi fonlu ve sinematik animasyonlu ayet + meal videoları üretir.
Videolar videos/ klasöründe tutulur. Metricool bu dosyaları raw GitHub linkinden çeker.
Dosyalar
data/ara-quransimple.json: Arapça metin (Tanzil “Quran Simple”, fawazahmed0/quran-api)data/tur-diyanetisleri.json: Diyanet İşleri meali (Tanzil, fawazahmed0/quran-api)surahs.json: sure numarası → Türkçe sure adıtopics.json: konu listesi. Alanlar:id, tema, sure, ayet [başlangıç, bitiş], hook, kapanis, sahne, seslendirme {giris, yorum}, bg, aciklama, etiketler,kurgu {kamera, gecis}(bkz. “Kurgu”),seo {yt_baslik, ilk_satir, aciklama, anahtar}(bkz. “SEO”), sır videolarındatur: "sir"vesir_kaynak(bkz. “Kur’an’ın sırları”)render.py: videoyu üretir →videos/.mp4(1080x1920, 30 fps, seslendirmeli)cine.py: sinematik sahne motoru (v3): katmanlı derinlik/paralaks, hareketli sis, hacimsel ışık hüzmeleri, toz/kıvılcım, yıldız/samanyolu, dağ sırtları, yağmur/şimşek, deniz, orman, şehir, kapı, kum saati, fener… Her sahne 3 çekim: sorun → dönüşüm → sonuçfigure.py: gerçek insan oranlarında (≈7.5 baş boyu) profil siluet karakter; arkadan ışık (rim light), ceket; pozlar: yürüme, ayakta nefes, başı önde, yukarı bakma, kollar açık, diz üstü dua, diz üstü oturuşscenes.py,vg.py: eski (v2) çizgi film tarzı sahneler — artık kullanılmıyormcp_voice.py: ElevenLabs seslendirmesini Claude’un ElevenLabs bağlayıcısıyla (MCP) üretme akışı —planparçaları listeler, Claude her parçayıcreative_generate_speechile üretip (eleven_v4, Seçkin YiğitnA7C14u2DhGhE4ZLOyGF, generations_count 1)voiceovers/.jsonmanifestine yazar; bu dosyanın push’u GitHub Actions’ta videoyu kendiliğinden üretir (fetchmp3’leri indirir; imzalı adresler 2 saat geçerli)voice.py: Türkçe TTS. Varsayılan MCP (KT_VOICE=mcp, yukarıdaki akış; kelime zamanları sessizlik analiziyle). Alternatif: ElevenLabs API (KT_VOICE=eleven, ses “Seçkin Yiğit”, modeleleven_v4, karanlık belgesel tonu;ELEVENLABS_API_KEYgerekir). Kelime zamanları API’nin karakter hizalamasından gelir. Üretilen parçalarmodels/el_cachealtında önbelleklenir. Yedekler: EMA Lightning (ema), Piper “dfki” (dfki)ilahi.py: telifsiz, yerel üretilen ilahi tarzı fon: ney (makam dizileriyle doğaçlama seyir: Hicaz, Uşşak, Hüseyni, Segâh, Rast), dem/ison koro mırıltısı, alçak sesli bendir (Sofyan), cami akustiği yankısı.github/workflows/render.yml: videoları GitHub Actions’ta EMA sesiyle üretir vevideos/altına commit eder (girdi:ids, ör.v015 v016 v017). Bulut oturumundan Hugging Face’e erişilemediği için videolar burada üretilirmusic.py: fon müziği seçici:KT_MUSIC_STYLE=ilahi(varsayılan, ilahi.py),dark,soft; her videoda farklı makam/toncaption.py: gönderi açıklamasını basar;--baslikYouTube başlığı,--etiketYouTube etiketleri (konudaseovarsa onu kullanır)sir.py: “Kur’an’ın sırları” videoları için doğrulanabilir sayılar (ozet,sure,kelime); tüm rakamlardata/metninden hesaplanırstate.json: hangi videonun ne zaman planlandığının kaydı
Kurulum
pip install --break-system-packages skia-python pillow numpy scipy # + sherpa-onnx (dfki sesi için)
# ffmpeg gerekir.
export KT_VOICE=eleven ELEVENLABS_API_KEY=... # ya da KT_VOICE=dfki (yerel önizleme)
python3 render.py v015
GitHub Actions’ta: Settings → Secrets and variables → Actions → ELEVENLABS_API_KEY secret’ı eklenmeli (ElevenLabs ücretli plan gerekir; ücretsiz katman bu hesapta kapalı).
Video yapısı (render.py, v3)
- Hook (0–3 sn): izleyiciyi doğrudan sorgulayan kısa soru (“Yalnız mısın?”, “Borcun mu var?”); büyük serif yazı, ses ile aynı anda kelime kelime bulanıktan nete belirir. Kamera açılışta yavaşça geri çekilir.
- Giriş:
seslendirme.giris— merak boşluğu açan 1–2 cümle. - Ayet: " Suresi’nde Rabbimiz şöyle buyuruyor:" + Diyanet mealinin tamamı. Arapça metin kartsız, gökyüzünde hafif parıltıyla; altında ince çizgili sure/ayet etiketi. Meal serif (Cormorant) altyazı, okunan kelime aksan renginde. Sahne karanlıktan ışığa döner (kapı açılır, şafak söker, fırtına diner, ağaç büyür…).
- Yorum:
seslendirme.yorum— mealin söylediğini aşmayan 1–2 cümle. - Kapanış:
kapanis+ “Kaydet ve ihtiyacı olana gönder.” + sure/ayet ve @kuranikerim_tr.
- Görsel dil: düşük anahtarlı ışık, arkadan aydınlatılmış insan silueti, paralaks, sis, ışık hüzmeleri, film greni, vinyet, film siyahı. Zıplayan/çizgi film hareket yok; kamera yavaş iter ve süzülür; çekim geçişleri karanlığa yakın çapraz geçiş.
- Yazılar gökyüzü bölgesinde (üst yarı), karakter zeminde; alt kısım TikTok arayüzü için boş bırakılır.
- Ses: seslendirme + altında ilahi tarzı fon; konuşma sırasında müzik otomatik kısılır (sidechain). Toplam -14 LUFS.
KT_MUSIC=0ile müziksiz. - Bir video ~1 sn/kare hızında üretilir (2 çekirdek); 40 sn’lik video ≈ 10–20 dk.
Sahneler (sahne alanı)
| sahne | anlatım | uygun temalar |
|---|---|---|
kapi |
karanlık boşlukta kenarlarından ışık sızan kapıya yürüyen insan; kapı açılır, ışık dolar, ışığa yürür | tövbe, rahmet, Allah’a dönüş, ölüm, cennet |
yol |
sisli dağ yolunda yürüyen yolcu; dağların ardından şafak söker, ışık hüzmeleri | gayret, tevekkül, yön, hayatın amacı |
deniz |
fırtınalı gece denizine bakan insan; bulutlar dağılır, ay yolu, deniz feneri, dua | sabır, korku, öfke, imtihan, güven |
fener |
karanlık ormanda fenerle yürüyen yolcu; diz çöküp dua eder, gökyüzüne fenerler yükselir | dua, yöneliş, namaz, zikir |
firtina |
yağmurda rüzgâra karşı yürüyen insan; bulutlar yarılır, ışık sütunları iner | zorluk, umut, musibet, zikir |
tohum |
çorak toprağa diz çöküp fidan diken insan; fidan şafakla büyük ağaca dönüşür | emek, sabır, rızık, iyilik, güzel hayat |
kalp |
yağmurlu gece şehrinde sokak lambası altında başı önde duran insan; yağmur diner, başını kaldırır, yürür | yalnızlık, huzur, aile, af, anne-baba |
kum |
çölde dev kum saati, rüzgârda yürüyen küçük insan; kum altına döner, gece yıldızları açılır | zaman, dünya hayatı, amel, hesap |
yildiz |
tepede diz üstü oturup gökyüzüne bakan insan; yıldızlar zaman atlamalı döner, samanyolu parlar | yaratılış, tevhid, nimet, tefekkür |
Yaratıcı ekip (skill’ler)
Günlük görev her konuyu yazarken iki skill setini kullanır:
- huashu-art-motion (github.com/alchaincyf/huashu-art-motion, MIT) — yönetmen/kurgucu olarak:
SKILL.md(“导演的要求:镜头怎么用”, “最常见的六种做坏方式”),references/镜头语言.md(1–4. bölümler) vereferences/镜头表模板.md. Bu repo 9:16 vecine.pyile render eder; huashu’nun kendi motoru (render.py --spec,deliver.py, Playwright) kullanılmaz — skill’den kamera dili, çekim planı ve “kötü yapım” kontrol listesi alınır vekurgualanına çevrilir. - Social Media Skills eklentisi —
hook-writer(hook),short-form-video-script/tiktok-script(tempo, döngü),social-seo+youtube-shorts+tiktok-growth(arama ve başlık),hashtag-strategy(3–5 niş etiket),caption-writer(açıklama). Skill aracı yoksa aşağıdaki kurallar yeterlidir.
Kurgu (kurgu alanı — huashu-art-motion kamera dili)
"kurgu": {"kamera": ["kay", "vurgu", "cek"], "gecis": ["kesme", "kararma"]}
- 3 çekim (sorun → dönüşüm → sonuç; dönüşüm = ayetin okunduğu bölüm).
kameraher çekimin hareketi:sabit(dur; izleyici okurken),it(yavaş itme — gözü bir ayrıntıya götürür),cek(geri çekilme — genel plan, bölüm kapanışı),kay(yanal kayma, paralaksla),vurgu(0.55 sn’de hızlı itme — sadece bir an: ayetin geldiği an ya da hook cevabı). gecis: çekim A→B ve B→C geçişi.kararma(karanlığa yakın çapraz geçiş) ya dakesme(sert kesme — vurgu).- Kurallar (huashu “镜头语言”): komşu iki çekim aynı hareketi kullanmaz;
vurguen fazla bir kez (render kontrol eder); “her çekimde aynı yavaş itme” = slayt gösterisi, yapılmaz; yazı okunurken kamera sakin. Son çekim bir yazı kartıyla değil karakterin hareketiyle biter (sahneler zaten öyle). - Art arda iki videoda aynı
kameradizisi kullanılmaz. Örnek diziler:["cek","vurgu","kay"],["kay","it","cek"],["sabit","vurgu","cek"],["it","kay","cek"]. - Alan yoksa eski (v3) hareket kullanılır.
SEO (seo alanı)
"seo": {"yt_baslik": "Yalnız mısın? Bakara 186 · Dua ayeti",
"ilk_satir": "Yalnız mısın? Kur'an'da duaya cevap ayeti",
"aciklama": "Bakara Suresi 186. ayette Allah, kullarına yakın olduğunu ve dua edenin duasına cevap verdiğini bildiriyor. ...",
"anahtar": ["dua ayeti", "kuranda dua", "bakara 186"]}
- Platformlar arama motorudur: anahtar kelime > hashtag. Bir videonun tek bir arama niyeti olur (ör. “sabır ayeti”, “dua ayeti”, “anne baba ayeti”).
- Üçlü tekrar: aranan ifade (doğal dille) hem seslendirmede (
girisya dayorum), hem ekranda (temaetiketi), hem açıklamanın ilk satırında geçer. Doldurma yok. yt_baslik: hook + sure/ayet + aranan ifade, ≤70 karakter (caption.py --basliksonuna#Shortsekler). Hook’u bozma; anahtar kelimeyi hook’tan sonra koy.ilk_satir: hook + aranan ifade (~125 karakterin altında, "…devamı"ndan önce okunur).aciklama: 2–3 cümle, mealin söylediğini aşmadan ayetin konusunu aranan kelimelerle anlatır. Uydurma bilgi yok.anahtar: 3–5 gerçek arama ifadesi (Türkçe, küçük harf). Arama hacmi uydurulmaz; varsa vidIQvidiq_keyword_research(dil tr, bölge TR) ya da Kervlyget_youtube_insightssonucuna dayanır.- Hashtag: 3–5 niş etiket (
caption.pykonunun etiketlerinden + #kuran #ayet #kuranikerim üretir).
Kur’an’ın sırları (tur: "sir")
Arada bir (yaklaşık her 4–5 videoda bir, günde en fazla bir) video, Kur’an’ın yapısındaki ilgi çekici, doğrulanabilir bir gerçeği anlatır; yine bir ayet ve Diyanet meali içerir. tema: “Kur’an’ın Sırları” (ekranda etiket olarak görünür).
- Konu örnekleri: hurûf-ı mukattaa (Elif Lâm Mîm gibi harflerle başlayan sureler — anlamları kesin bilinmez, “en doğrusunu Allah bilir” diye söylenir), besmelesiz tek sure, en uzun/en kısa ayet ve sure, ilk inen ayetler, bir kelimenin tam yazımıyla kaç kez geçtiği.
- Her sayı
python3 sir.py ...çıktısından gelir ve konuya"sir_kaynak": " → "olarak yazılır. Kelime sayımlarında yöntem söylenir (“bu yazımıyla”, “Tanzil metninde”). - Yasak: 19 kodu / ebced hesapları ve sayı mistisizmi, “bilimsel mucize” iddiaları, hafızadan hadis/rivayet, “şifreyi çözdük” gibi iddialar, internetteki doğrulanmamış sayılar (“gün kelimesi 365 kez” vb.). Hook merak uyandırabilir (“Kur’an’ın şifresi gibi duran harfler”, “Bu sure neden besmelesiz?”), ama içerik sadece doğrulanmış bilgiyi söyler; bilinmeyen bilinmiyor diye söylenir.
- Rakamlar seslendirmede yazıyla yazılır (yirmi dokuz).
Kurallar
- Ayet metni asla elle ya da hafızadan yazılmaz. Arapça ve meal sadece
data/altındaki dosyalardan okunur.topics.json’a yalnızca sure ve ayet numarası girilir.girisveyorumalanlarına meal metni kopyalanmaz. - Yeni konu eklerken mealin ilgili ayetin anlamını taşıdığını
data/tur-diyanetisleri.json’dan okuyarak kontrol et. Diyanet mealinde birleştirilmiş ayetler (aynı meal metni ardışık ayetlerde tekrar ediyorsa) ve çok uzun mealler (300 karakterden uzun) kullanılmaz. Daha önce kullanılan sure:ayet çiftleri tekrar edilmez. - Hook ve içerik çekme kuralları (Reels/Shorts/TikTok):
- Hook ilk saniyede görünür ve okunur, en fazla ~10 kelime ve izleyiciyi doğrudan sorgulayan bir sorudur (“Yalnız mısın?”, “Borcun mu var?”, “Anneni en son ne zaman aradın?”). Soru, ayetin konusuyla doğrudan ilgili olmalı.
- Merak uyandırabilir ama yanıltıcı olamaz: hook, giriş ve yorum mealin söylemediği bir şeyi vaat etmez, uydurma rakam/hadis/olay içermez.
giris: 1–2 kısa cümle, merak boşluğu açar (“Bu ayet tam olarak bunu anlatıyor.”, “Kur’an başka bir yol gösteriyor.”); hook’u tekrar etmez.yorum: 1–2 kısa cümle, mealin özünü sade dille tekrarlar, kişisel bir çağrıyla bitebilir (“Bugün ona bir telefon aç.”).- Cümleler kısa ve konuşma dilinde olmalı (seslendirilecek). Rakam yerine yazıyla yaz, kısaltma kullanma (“Hz.” yerine “Hazreti”).
kapaniskısa bir sonuç cümlesidir; render sonuna “Kaydet ve ihtiyacı olana gönder.” ekler.- Video 20–40 saniye civarı olur (meal uzunluğuna göre).
- Her videoda büyük, hareket eden bir karakter olur (v012 tarzı): karakter sahnenin altında, hikâye boyunca poz değiştirir (yürür, üzülür, dua eder, sevinir) ve ortam onunla birlikte karanlıktan aydınlığa döner. Yeni sahne yazılırsa bu kurala uyulur. Her konuya anlamına uyan bir
sahneseç; art arda üç video aynı sahneyi kullanmasın. - Paylaşım saatleri (Asia/Dubai): 10:00, 15:00, 18:00. Günde 3 video.
- Her video aynı saatte hem TikTok’ta hem YouTube Shorts’ta yayınlanır (iki ayrı Metricool gönderisi).
- TikTok ayarları:
titlezorunludur (hook metni kullanılır),PUBLIC_TO_EVERYONE,autoAddMusic: false,isAigc: false(kullanıcı AI etiketini kapattı). - YouTube ayarları:
providers: [{network: youtube}],youtubeData:title= hook,type: short,privacy: public,madeForKids: false,isAiGeneratedContent: false,category: EDUCATION,tags= konunun etiketleri + kuran, ayet, kuranikerim, islam.text= TikTok ile aynı açıklama. - Kalite kontrolü: her yeni videodan 3 kare al (ffmpeg
-ss 1, mealin ortası, son 2 sn) ve bak: Arapça kart taşmıyor, altyazı okunuyor, sahne görünüyor.ffmpeg -af ebur128ile ses ~-14 LUFS olmalı.
Metricool
- blogId:
7319798, zaman dilimiAsia/Dubai - Medya URL’si:
https://raw.githubusercontent.com/FurkiFor/kuranikerim_tr/main/videos/.mp4 - Metricool medyayı planlama anında kendi sunucusuna kopyalar. Planlanmış bir gönderinin videosu değişirse
updateScheduledPostile medya yeniden verilmelidir.
Günlük akış (zamanlanmış görev)
Her gün 08:44 (Dubai) çalışan “kuranikerim ayet videoları (ElevenLabs MCP) - günlük” görevi:
- Kervly
get_youtube_insightsile neyin iyi gittiğine bakar (varsa vidIQ ile günde bir anahtar kelime araştırması). state.json’da planlanmamış ilk 3 konuyu seçer; son 4 videoda sır videosu yoksa 3. video yeni bir “Kur’an’ın sırları” konusu olur.- Her konu için hook (hook-writer), seslendirme metni, sahne,
kurgu(huashu-art-motion) veseo(social-seo, youtube-shorts, tiktok-growth, hashtag-strategy) yazar. - Sesleri ElevenLabs MCP ile üretir,
voiceovers/.jsonpush’u GitHub Actions’ta videoyu üretir; kareleri kontrol eder. - Kervly ile 10:00, 15:00, 18:00’e YouTube + TikTok planlar (
caption.py,--baslik,--etiket),state.json’a yazar. - Planlanmamış konu 9’un altına düşerse en az 15 yeni konu ekler (her ~5 konudan biri sır videosu).
Recommended Tools
Try a different keyword or remove a filter.
Install
npx skillfish add furkifor/kuranikerim_tr