Communitygithub.com

gurevinmelih5-lang/reels-video

Müşterinin fotoğraf ve videolarından markaya uygun, dinamik Instagram Reels videosu (1080x1920 MP4) üretir. Görselleri inceler, sahne planını (plan.json) yazar, storyboard'u gösterir, Remotion ile yerelde render eder ve kalite kontrolünden geçirir. Gerekirse Google Flow (Veo) için canlandırma promptları hazırlar. "Reels videosu yap", "bu fotoğraflardan video", "klasördeki görsellerle reels", "videoyu kurgula", "tanıtım videosu", "etkinlik videosu", "videoyu daha dinamik yap" dendiğinde veya kullanıcı bir müşteri klasörü verip video istediğinde kullan.

reels-video란 무엇인가요?

reels-video is a Claude Code agent skill that müşterinin fotoğraf ve videolarından markaya uygun, dinamik Instagram Reels videosu (1080x1920 MP4) üretir. Görselleri inceler, sahne planını (plan.json) yazar, storyboard'u gösterir, Remotion ile yerelde render eder ve kalite kontrolünden geçirir. Gerekirse Google Flow (Veo) için canlandırma promptları hazırlar. "Reels videosu yap", "bu fotoğraflardan video", "klasördeki görsellerle reels", "videoyu kurgula", "tanıtım videosu", "etkinlik videosu", "videoyu daha dinamik yap" dendiğinde veya kullanıcı bir müşteri klasörü verip video istediğinde kullan.

지원 대상✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add gurevinmelih5-lang/reels-video

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Reels Video

Kullanıcı (ajans sahibi) bir müşteri klasörü ve kısa bir talimat verir. Sen o klasörden paylaşıma hazır bir Reels MP4'ü teslim edersin. Planı sen yazarsın, render'ı kod yapar. Kalite şablondan gelir; senin işin doğru kareyi, doğru sırayı ve doğru metni seçmek.

  • Proje (render motoru): C:\Users\LENOVO\Desktop\reels-video-ajani\ (aşağıda <proje>). Remotion 4, Node 24, yerel git deposu; GitHub'a gönderilmez.
  • Skill klasörü: ~/.claude/skills/reels-video/ (aşağıda <skill>). Kendi git deposu; GitHub'daki reels-video reposu sadece bu klasörü içerir. Skill'i değiştirince burada commit edip push et.
  • Planın kuralları: <proje>/src/schema.ts. Plan yazmadan önce oku; alanlar ve sınırlar orada.
  • Örnek plan (dinamik stil, onaylanmış): <skill>/references/ornek-plan.json

1. Girdileri incele

  1. Kullanıcının klasörüne dokunma, sadece oku. Önce dosyaları listele.
  2. Kontak sayfası çıkar ve gözle bak (Read):
    python -I <skill>/scripts/kontak.py "<müşteri klasörü>" <scratchpad>/kontak.jpg
    
    Script her dosyanın boyutunu, EXIF yönünü ve video süresini de yazdırır.
  3. Videolar için saniye saniye kare şeridi al: ffmpeg -i <video> -vf "fps=1,scale=-2:300,tile=8x2" -frames:v 1 <scratchpad>/x.jpg. Kullanılabilir aralıkları not et.
  4. Her kare için şunları not et:
    • Ne gösteriyor?
    • İçinde yazı veya pankart var mı?
    • Yüz ya da özne nerede? (kırpma focus değeri için)
    • Dikey mi, yatay mı?
    • Başka bir firmanın logosu veya sponsor ekranı var mı?
  5. Klasörde bizim daha önce ürettiğimiz bir çıktı varsa (1080×1920, 15 sn civarı, rastgele adlı MP4), onu kaynak olarak kullanma ve kullanıcıya söyle.

2. İşi ve markayı kur

  • İş klasörü: <proje>/jobs/<slug>/. Dosyaları buraya kopyala. Adında boşluk dışında özel karakter, örneğin (1), olan dosyaları anlamlı adlarla yeniden adlandır (masa-cicek.jpeg, fuaye-yuruyus.mp4). Şema parantezi reddeder.
  • Marka: <proje>/brands/<slug>/brand.json (ad, renkler, fontlar, logo, iletişim). marka.md varsa oradan al (bkz. marka-kimligi skill'i).
  • Marka bilgisi uydurma. Kullanıcının vermediği telefon, Instagram, adres ya da logo yoksa o alan boş kalır. Instagram profilleri giriş istiyor; giriş yapma, kullanıcıdan iste.
  • Logo: Beyaz veya açık zeminliyse (yapay zekâyla üretilen logolar genelde böyle) önce şeffaflaştır, sonra koyu zeminde gözle kontrol et:
    python -I <skill>/scripts/logo-seffaf.py "<logo>" <proje>/brands/<slug>/logo.png
    
    Script altın veya renkli logolar için yazıldı. İçinde beyaz öğe olan logolarda beyaz kısımlar da silinir; o durumda kullanıcıdan şeffaf PNG iste. Marka accent rengini logodaki ana renkten al.
  • Müşteri işleri ve markaları git'e girmez; .gitignore demo dışında jobs/* ve brands/*'ı dışarıda tutar.

3. Planı yaz

Varsayılanlar: "style": "dynamic", 13–15 sn, ses yok (müziği kullanıcı Instagram'da ekler).

Kullanıcının kalıcı tercihleri:

  • Bölüm başlığı (chapter, "01 Sahne" gibi) kullanma. Sadece alt yazı tarzı metin (text).
  • "Sıradan slayt gösterisi" istemiyor. Fade'li, 2–3 saniyelik, yavaş sahneler yok.

Dinamik kurgu kuralları:

  • Hook (ilk 2 sn): montage sahnesi, 6–8 kare × 0.25 sn, punch hareketi ve ortada kısa, vurgulu bir metin. İkinci sahne hook'un cümlesini tamamlar (zoom_punch geçişiyle).
  • Sahneler 1.5–2.25 sn sürer. Süreleri 0.25 sn ızgarasına oturt (120 BPM müziğe denk gelsin). Geçişler whip, açılış ve kapanış zoom_punch.
  • Metin en fazla 4–5 kelime. Bir veya iki kelimeyi *yıldız* ile vurgula; altın kutuda çıkar. Her sahnede vurgu yapma.
  • Metinler sadece görünen gerçeklere dayanır: pankarttaki tarih, şehir, etkinlik adı; karede görünen yemek veya müzik. "Bütün organizasyonu biz yaptık" gibi doğrulanmamış iddia yok.
  • Hook bir sayı vaat ediyorsa ("15 saniyede") toplam süre ona uysun.
  • Kapanış (cta, 2.75 sn civarı):
    • background: markanın en iyi karesi (bulanıklaşır).
    • Logo varsa showLogo: true. Logo işletme adını zaten gösteriyorsa headline yazma.
    • Marka sloganı varsa tagline olarak ekle. Slogan İngilizceyse "taglineLang": "en" yaz; yoksa Türkçe büyük harf kuralı "DİSTİNCTİON" üretir.
    • Slogan için marka dosyasında fonts.accent olarak logoya uyan bir serif seç (ör. Playfair Display).
    • Kısa bir CTA ve var olan iletişim bilgileri.
  • Türkçe metinleri teslimden önce stop-slop-tr gözüyle kontrol et: klişe, "-mektedir", ünlem yok.

Kare seçimi:

  • Hook ve metinli sahnelerde içinde yazı/pankart olan kareleri kullanma; yazılar birbirine biner.
  • Sponsor ve başka marka logolarını kadraja alma. Videoda o saniyeleri atla (videoStart).
  • Yatay fotoğraf 9:16'ya kırpılınca genişliğin yaklaşık üçte biri kalır. Özne kenarda kalıyorsa focus.x ile kaydır (örnek: üçlüden kemancı için x: 0.82).
  • İnsanların yatayda yayıldığı kareler (masa etrafında 3+ kişi, toplu fotoğraf): kırpma yapma, "fit": "contain" kullan. Fotoğraf tam genişlikte üstte durur, arkayı bulanık hali doldurur, metin altta boş alana düşer. Kullanıcının özellikle istediği kareye kendi sahnesini ve en az 2 sn ver.
  • Neredeyse aynı iki kare varsa (aynı masa, aynı kişiler) birini kullan ve kullanıcıya söyle.
  • Düşük çözünürlüklü videoları (720 px altı) kısa tut; render uyarı verir.

4. Storyboard → onay → render

cd <proje>
npm run storyboard -- jobs/<slug>     # out/<id>/storyboard.jpg
npm run render -- jobs/<slug>         # out/<id>/<id>.mp4 + report.json
  1. Storyboard'a gözle bak: yazı taşması, yüz kırpılması, okunabilirlik, metin-kare çakışması. Sorun varsa planı düzelt ve tekrarla.
  2. Render sonrası MP4'ten kareler çek ve bak. Kalite kontrol raporunu geçmek yetmez:
    ffmpeg -i out/<id>/<id>.mp4 -vf "select='eq(n\,30)+eq(n\,120)+...',scale=270:480,tile=8x1" -frames:v 1 -update 1 out/<id>/kareler.jpg
    
  3. Kalite kontrol hatası (✖) varsa teslim etme; nedenini bul.
  4. MP4'ü SendUserFile ile gönder. Kısa bir özet ver: ne değişti, nelere bakmalı, hangi bilgiler eksik. Planı ve değişiklikleri git'e commit et.

Revizyonlarda sadece plan.json'u değiştir ve yeniden render et. Kod değişikliği gerekiyorsa (yeni efekt, yeni sahne tipi) önce src/'yi oku, npx tsc --noEmit ile kontrol et, demo işiyle (jobs/demo-kuafor) bozulmadığını doğrula.

5. Canlandırma (Google Flow / Veo)

Kullanıcının Google AI Pro üyeliği var. Flow kredisi ve Gemini uygulamasında günde yaklaşık 3 video hakkı içeriyor; API dahil değil. Klipleri kullanıcı elle üretir, sen seçer ve prompt yazarsın:

  • Sadece insansız detay kareleri seç: yemek tabağı, çiçekli masa, kurulmuş masa, boş salon. İnsanlı karelerde yüz, el ve çalgı bozulur; gerçek kişileri reklamda canlandırmak izin sorunu da yaratır.
  • Video başına 2–4 klip. Promptları İngilizce yaz: yavaş kamera hareketi + hafif doğal hareket + "keep ... exactly as they are" + "No people, no hands, no text" + "4 seconds, vertical 9:16". Kredi için Veo 3.1 Fast yeterli.
  • Kullanıcıdan klipleri canli-1.mp4, canli-2.mp4… adıyla müşteri klasörüne atmasını iste. Gelince bozulma (eriyen çiçek, değişen yemek, kadraja giren el) ve köşe filigranı için kontrol et. Planda ilgili karenin yerine koy, hareketi static yap (klip zaten hareketli).

Makine kısıtları

  • 5.9 GB RAM. Render 40–80 sn sürer. İki render'ı aynı anda çalıştırma. Script paralel sekmeyi RAM'e göre 2'de tutar; çökerse tek sekmeyle kendisi yeniden dener.
  • Büyük fotoğraf makinesi JPG'leri ve telefon videoları render öncesi otomatik olarak küçültülür, EXIF yönü düzeltilir, H.264/30fps'e çevrilir (.cache/). Bunları elle yapma.
  • Geçici çalışma klasörlerinde (AppData altındaki sanal alan) .exe çalışmaz. Projeyi daima <proje> içinde çalıştır.

관련 스킬