Communitygithub.com

xbear-motion-kurgu

XBEAR MEDIA'nın krem kanvas + editoryal kart stilinde (Seçkin Ayazlar Reels/YouTube) Remotion ile animasyonlu video kurgusu. Konuşan kafa videosuna motion graphics, altyazı, sayaç, kart, geçiş ve ses efekti eklerken; sahne planlarken; tasarım sayfası hazırlarken kullan.

xbear-motion-kurgu란 무엇인가요?

Bu beceri, Seçkin Ayazlar'ın Reels/YouTube videolarında kullanılan, XBEAR MEDIA'ya özgü krem kanvas ve editoryal kart stilinde animasyonlu video kurgusu yapar. Koyu arka planlı A-roll (konuşan kafa + altyazı) ile krem renkli kanvas (açıklama, kanıt, sayılar) arasında gidip gelen bir yapı kullanır. Remotion ile çalışır ve her sahne için önce tasarım sayfası (PNG) gösterilerek kullanıcı onayı alınır, onaydan sonra render işlemi yapılır. Stil kuralları; tipografi, renk paleti, animasyon hareketleri, ritim ve ses efektleri gibi detayları kapsar. İş akışı; transkript alma, sahne listesi oluşturma, referans seçimi, tasarım sayfası hazırlama, onay ve render aşamalarından oluşur.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/bgaranli2-afk/edit-skill/tree/main

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

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

문서

xbear-motion-kurgu은(는) 무엇을 하나요?

Konuşan kafa videosunu, iki dünya arasında gidip gelen editoryal motion kurgusuna çevirir: koyu A-roll (yüz + altyazı) ↔ krem kanvas (açıklama, kanıt, sayılar). Kurgu Remotion'la yapılır.

Altın kural: Hiçbir sahne onay alınmadan video olarak render edilmez. Önce tasarım sayfası (PNG) gösterilir.

0. Dosyalar (kök: ~/Desktop/seckin_ayazlar/)

NeNerede
Bu skill + indeks06_skill/xbear-motion-kurgu/SKILL.md, REFERANS_INDEKSI.md
Stil özeti (ölçümler)05_stil_calismasi/STIL_OZETI.md (yalnızca kural belirsizse oku)
Animasyon kartları05_stil_calismasi/animasyonlar/<tür>/<id>/kart.md + in/peak/out.png
Marka (her şeyden önce gelir)02_marka/marka_notu.md, fontlar/, logolar/
Remotion projesiremotion-studio/ → bileşenler src/xbear/
Transkript aracıremotion-studio/scripts/transcribe.sh <video> <çıktı> tr → <ad>.words.json
Proje çıktıları07_projeler/<proje>/ (tasarım sayfaları, final MP4, sahne listesi)
Bileşen testleri05_stil_calismasi/bilesen_testleri/
Ses efektleri03_sfx/<tür>/ (kaynak) → scripts/sfx_esitle.py → public/sfx/ + src/xbear/ses/kutuphane.ts. Ölçüm: 05_stil_calismasi/SES_ANALIZI.md

Çakışmada sıra şöyledir: marka_notu.md > bu dosya > STIL_OZETI.md.

1. Stil kuralları

Dünyalar

  • A-roll (~%30): koyu stüdyo, yüz, altyazı. Neredeyse hiç altyazısız kalmaz.
  • Kanvas (~%70): #F5F2EF zemin, hafif ızgara, yumuşak çapraz pencere ışığı (<KremZemin>).
  • A-roll ↔ kanvas geçişi her zaman sert kesmedir. Kayma, silme ve çapraz geçiş yoktur.

Renk (tema.ts → RENK)

RolHEX
Kanvas / ızgara#F5F2EF / #ECE9E6
Kart#FFFFFF
Ana metin / ikincil#111111 / #8A8A8A
Vurgu mavi (UI / italik metin)#2782F5 / #1E90E8
Para yeşili#16A06B
Uyarı kırmızısı (el çizimi, son tarih, olumsuz)#E35B63
Ürün ışıması#864EC6 → #3C296B
A-roll siyahı / altyazı#030303 / #FFFFFF

Cümle başına en fazla bir vurgu rengi kullanılır: mavi = ana fikir, yeşil = para, kırmızı = son tarih veya kayıp.

Tipografi (tema.ts → FONT, BOYUT; 1080×1920 için)

  • Cümle / altyazı: neo-grotesk sans (Instrument Sans 500). Kanvasta 84px, A-roll altyazısında 64px.
  • Vurgu ifadesi: mavi italik serif (Instrument Serif Italic), sans boyutunun 1.3 katı. Cümlede 1 ifade, 2–4 kelime olur; asla kalın veya altı çizili değildir.
  • Sayılar: ağır italik grotesk (Inter Black Italic), tabular rakamlar. Asla serif kullanılmaz. Para ise yeşildir.
  • Etiket: gri, aralıklı büyük harf (letter-spacing .16em).
  • En fazla 2 satır yazılır. Metin ortalanır veya boş üçlüğe yaslanır, tam genişlik kullanılmaz. Türkçe karakterler doğru yazılır (ğ, ş, ı, İ).
  • Marka fontu gelince yalnızca src/xbear/fontlar.ts değişir.

Hareket (tema.ts → KARE, EASE)

ÖğeHareketSüre
Kelimeopaklık 0→1 + bulanıklık 8→0, yerinde (satır kaymaz)5 kare, kelimenin söylendiği anda
Kart / obje girişi~60px yükselir + fade + bulanıklık 10→0 + ölçek .95→1, ease-out14 kare
İkon / rozetölçek .6→1, hafif aşma (spring)8 kare
Metin çıkışı40px yukarı süzülür + bulanıklaşır, ease-in10 kare
Kanvas bölüm değişimiodak kaybı9 kare
Kart yana çıkışıyatay hareket bulanıklığı8 kare
Kamerakanvasta sürekli yavaş sürüklenme; A-roll'da anında yeniden kadraj (1.15–1.3×)
Sayaçease-out sayma; para son değerde yeşile döner20–90 kare

Her hareket ≤15 karede yerine oturur. Tek izin verilen fazlalık hafif aşmadır.

Ritim

  • Ortalama ~6–8 saniyede yeni bir görsel fikir gelir (v01'de medyan 6,4 sn).
  • Bir sahnenin içinde her 1–2 saniyede bir şey değişir: kelime, kart veya sayaç tiki.
  • Dakikada ~5 sert kesme olur. A-roll bölümleri medyan ~8–9 saniye sürer.
  • Kanca (ilk 3–5 sn): A-roll + altyazı + işaretli kritik sayı + bir ikon.

Cümle → animasyon

Cümle tipiNe gelir
Tarih / son tarihTakvim ikonu + kırmızı tarih
Liste ("X, Y ve Z")Her madde kendi kelimesinde bir kart + artan sayaç hapı
Para / gelirYeşil ağır italik sayı, çoğu zaman sayarak gelir
Sonuç / "insanlar dedi ki"Kanıt kartları (~1 sn'de bir)
Fiyat hesabıSatır satır kurulur, sonra çubuk karşılaştırma
Saklanan bilgiMozaik + "sonda açıklanacak" hapı
Ürün / araç adıÜrün kartı veya uygulama ikonu
Seçim sorusuA-roll üstünde iki buton
Duygusal / kişisel cümleSadece A-roll + altyazı
Harekete geçirici çağrı (CTA)"Linke tıkla" + alttan mavi ışıma + buton tıklama

Yasaklar

  • Neon, glitch, RGB kayması, film yanığı, ışık sızması, emoji, sticker
  • Metinde gölge, konturlu metin, degrade metin, BÜYÜK HARF altyazı, kutulu/plakalı altyazı
  • Dönme, 3D takla, lastik gibi esneyen easing
  • Tam ekran renkli zemin: zemin ya krem kanvas ya da koyu A-roll'dur
  • 2 satırdan fazla metin, cümlede birden fazla vurgu
  • A-roll ↔ kanvas arasında kayma veya çapraz geçiş
  • Güvenli alanın dışına taşmak: üst %8, alt %15, sağ %12 boş kalır. Altyazı yüzü kapatmaz.

Ses (ölçüm: SES_ANALIZI.md)

OlaySesNot
A-roll ↔ kanvas kesmesiwhooshSahne.dunya değişince SahneDizisi otomatik koyar (kesmelerin ~%60'ı)
Kart, sayı, hap girişiswishKartGiris, UIKart, SayiSayaci kendiliğinden çalar
Kartın yana çıkışı, odak kaybıwhooshSonraki kesme whoosh'una 0,5 saniyeden yakınsa kapat (cikisSesi={false})
Kanca reframe'i, payoff/açıklama, CTAboomDakikada ~1. ZoomIn ses="boom" ya da <SesEfekti tur="boom">
Rozet / el çizimi / butonpop / kalem / klik
Gizli bilgi açılmadan önceriserTepesi açıklama anına oturur
Sayaç—Tik yok (tikSesi varsayılan kapalı)
Para sayacı yeşile döndüğü anpara (ka-ching)SayiSayaci para otomatik çalar (paraSesi={false} kapatır). Referansta yok, XBEAR tercihi
  • Sesin tepesi görsel olaydan 2–3 kare sonra gelir (TEPE_GECIKME_KARE). Bileşenler bunu otomatik hizalar.
  • SFX tepesi konuşmanın ~10 dB altında durur (SEVIYE_DB: swish -17, whoosh -14, boom -12 dBFS). Genel ayar için <SesAyari kaydirmaDb={-3}> kullanılır.
  • Yasak: whoosh seli, her kelimeye pop, sayaç tiki, aynı dosyanın art arda çalması.
  • Ham Epidemic dosyası doğrudan 03_sfx/<tür>/ klasörüne atılır. sfx_esitle.py içindeki varyantları ayırır (_v1, _v2…), sessizliği ve kuyruğu kırpar, normalize eder.

Seçkin kanal kuralları (02_marka/marka_notu.md)

  • Küfür kesilir. Sessiz bekleme ve senaryoya bakıp ezberleme anları kesilir. Kurgu çekim sırasını takip eder.
  • Müzik yalnızca Epidemic Sound'dan seçilir, -15 dB (gürse -20 dB), yalnızca intro'da ve sessiz yerlerin altında.
  • Renk düzeltme yapılmaz.

2. İş akışı

Adım 1 — Plan

  1. Transkript al: remotion-studio/scripts/transcribe.sh <ham.mp4> 07_projeler/<proje> tr.
  2. Kesilecek yerleri işaretle: sessizlik, ezber, küfür.
  3. Sahne listesini tablo olarak yaz ve kullanıcıya göster: S01 | 00:00.0–00:04.8 | A-roll / kanvas | ne söyleniyor | ne gelir (cümle tipi) | bileşen(ler) | ses.
  4. Ritim kontrolü: ~6–8 saniyede bir yeni fikir olmalı, art arda üç A-roll sahnesi olmamalı.

Adım 2 — Referans seçimi

  • Yalnızca REFERANS_INDEKSI.md okunur. Her sahne için "ne zaman" ve anahtar kelimelere bakılıp 2–3 satır seçilir.
  • Sadece o satırların kart.md ve gerekirse peak.png dosyası açılır. clip.mp4 açılmaz, klasör toplu yüklenmez.
  • Sahne listesine ref v01-17 gibi not düşülür.

Adım 3 — Tasarım sayfası

  1. Proje klasörü oluşturulur: remotion-studio/src/projeler/<proje>/.
    • sahneler.tsx → Sahne[] listesi (id, ad, sure, kareler, not, dunya, Bilesen).
    • Her sahnenin kareler dizisine 2–3 kritik kare girilir: giriş bitti, tepe, çıkıştan hemen önce.
    • Kayit.tsx iki kompozisyon kaydeder: <Proje>-Video (SahneDizisi) ve <Proje>-Tasarim (TasarimSayfasi). Ikisi de Root.tsx'e eklenir.
    • Tasarım kompozisyonu <Composition> olmalıdır (<Still> değil), {...tasarimSayfasiBoyutu(sahneler)} ile. Yoksa kareler 0'a sıkışır.
  2. 03_sfx değiştiyse önce sesleri eşitle: python3 -I remotion-studio/scripts/sfx_esitle.py. Betik, sentetik yer tutucu kullanan türleri listeler; bunu kullanıcıya söyle.
  3. Ham video remotion-studio/public/ham/<proje>/ içine konur, <ARoll kaynak="ham/<proje>/x.mp4" baslangicSn={…} /> ile çağrılır.
  4. Render: npx remotion still <Proje>-Tasarim ../07_projeler/<proje>/tasarim_v1.png --frame=0
  5. PNG'ye kendin bak. Güvenli alan, taşma, 2 satır sınırı ve Türkçe karakterleri kontrol et. Sonra kullanıcıya göster.

Adım 4 — Onay (zorunlu)

  • Kullanıcı açıkça onay verene kadar remotion render çalıştırılmaz. Tek sahnelik deneme render da yapılmaz.
  • Düzeltme istenirse tasarım sayfasının yeni sürümü (tasarim_v2.png) çıkarılır.

Adım 5 — Render

  • npx remotion render <Proje>-Video ../07_projeler/<proje>/final_v1.mp4 --port=3199
  • Çıktıyı ffprobe ile doğrula: 1080×1920, 30 fps, beklenen süre, ses akışı var.
  • ffmpeg -i final.mp4 -af volumedetect -f null - → max_volume ≤ -1 dB olmalı (kırpma olmamalı).
  • Final videoyla birlikte sahne listesi teslim edilir: zaman | tip | ekrandaki yazı | geçiş | referans.

Adım 6 — Revizyon

  • Yalnızca istenen sahne değiştirilir. Önce o sahnenin tasarım sayfası (sadece değişen sahneler) gösterilir, onaydan sonra video yeniden render edilir.
  • Dosyalar sürüm numarasıyla tutulur (final_v2.mp4). Eski sürümler silinmez.

3. Remotion yapısı ve bileşenler

remotion-studio/
  public/fonts/            Instrument Sans/Serif, Inter (OFL) → marka fontu gelince public/fonts/marka/
  public/ornek/            aroll_yer_tutucu.mp4 (yalnızca testler için)
  public/sfx/<tür>/        sfx_esitle.py'nin normalize ettiği sesler (elle dokunma)
  public/ham/<proje>/      ham A-roll (her proje için)
  src/Root.tsx             fontlariYukle() + tüm kompozisyonlar
  src/xbear/               ← yeniden kullanılan kütüphane, "./xbear"tan içe aktar
    tema.ts zamanlama.ts fontlar.ts TasarimSayfasi.tsx index.ts
    bilesenler/*.tsx
    ses/                   sesler.ts (seviye/hizalama kuralları), SesEfekti.tsx, kutuphane.ts (otomatik)
    ornekler/              her bileşenin örnek kullanımı (XB-* kompozisyonları)
  src/projeler/<proje>/    sahneler.tsx, Kayit.tsx, kelimeler.json
BileşenNe içinÖrnek kullanım
KremZeminKanvas zemini + sürüklenme<KremZemin>…</KremZemin>
VurguMetniKanvas cümlesi, kelime kelime; [ ] = vurgu, \n = satır`<VurguMetni metin={"Şarj sadece 30 dakika,\
[rakiplerinden hızlı]"} isaret={{ifade:"30 dakika", tip:"altcizgi"}} cikisKaresi={108}/>`
ElCizimiKırmızı el çizimi elips/altçizgi (tek kritik ifade)VurguMetni.isaret ile ya da <ElCizimi tip="elips" baslangic={20}/>
SayiSayaciBüyük sayı sayma; para → yeşil<SayiSayaci etiket="BAŞLANGIÇ FİYATI" bas={39999} son={42999} sonEk=" ₺" para baslangic={12}/>
UIKartBeyaz yüzen kart veya varyant="urun" hero kart; rozet, etiket, ikon<UIKart varyant="urun" baslik="Nova X1 Pro" altBaslik="İNCELEME · 2026" rozet="+ YENİ"/>
HapEtiket, sayaç (+3), son tarih, CTA<Hap metin="Kutudan çıkanlar" sayi="+3"/>
KartGirisHer objeye ortak giriş/çıkış (yukari / yana)<KartGiris baslangic={14} cikisKaresi={128} cikisTipi="yana">…</KartGiris>
AltYaziBandiA-roll altyazısı, words.json'dan, en fazla 2 satır<AltYaziBandi kelimeler={sahneKelimeleri(words, 12.4, 18)} vurgular={["30","gün"]}/>
ZoomInatlama (anında reframe) · punch · itme · suruklenme<ZoomIn mod="atlama" kare={66} olcek={1.25} odak={{x:.5,y:.3}} ses="boom">…</ZoomIn>
ARollHam videoyu 9:16 kırpar, baslangicSn ile keser<ARoll kaynak="ham/p/x.mp4" baslangicSn={12.4}/>
Geciskesme · bulanikYukari · odakKaybi · yanaKayma · karartma; içeriği sarar (zemini değil)<KremZemin><Gecis tip="odakKaybi" sure={120} giris={false}>…</Gecis></KremZemin>
SesEfekti / SesAyariTek SFX (tür + kare; tepe hizalı, dosya döndürmeli) / genel aç-kapa, dB kaydırma<SesEfekti tur="boom" kare={66}/>
TasarimSayfasi / SahneDizisiOnay PNG'si / final dizilim + kesme sesleribkz. Adım 3

Zamanlama yardımcıları (zamanlama.ts): kare(sn), sahneKelimeleri(words, bas, son), kelimeKaresi(kelimeler, "otuz"). Animasyonu kelimeye bağla: başlangıç karesi words.json'dan alınır, elle tahmin edilmez.

Bileşenler useVideoConfig()'dan yalnızca fps okur, ölçüler 1080×1920 sabittir. Böylece tasarım sayfasında da doğru görünürler. Bir sahneye sure ve cikisKaresi açıkça verilir.

16:9 / hibrit (Hibrit.tsx): KoyuCamZemin, CamKart, TakipEtiketi (takipli nokta+çizgi+hap), BolumEtiketi, UygulamaKarosu (gorsel = gerçek logo), TelefonCerceve, KilitKatmani, RotoKatmani. Liste kartı: projeler/duo/Parti2.tsx → ListeKarti + OzellikSatiri (var/yok/bilgi). Henüz yazılmadı: TarayiciCerceve, Stepper, Mozaik. İndekste karşılığı olan referanslar: v01-10/14/47 (telefon), v01-08/13/43 (tarayıcı), v01-26/55 (ikon), v01-51 (stepper), v01-04/58 (mozaik), v01-46 (buton), v01-56 (liste).

4. Ortam ve komutlar

  • Mac (Apple M1 Pro): Node 24, ffmpeg 9, whisper.cpp + large-v3-turbo. Kurulum ve sürümler KURULUM.md'de, doğrulama için kurulum_dogrula.command.
  • Oturumun kabuğu Mac değil de Linux VM ise:
    • remotion-studio/node_modules Mac'e özgüdür, VM'de npm i çalıştırılmaz.
    • Render için projeyi bulut çalışma alanına kopyala, oraya aynı sürümlerle npm i yap ([email protected]) ve Chromium ile render et (--browser-executable=…/chrome-headless-shell). Sonuçları klasöre geri yaz.
    • Whisper'ı ise kullanıcı Mac'te çalıştırır, ya da .command betiği hazırlanır.
    • sfx_esitle.py VM'de de çalışır (python3 + ffmpeg).

관련 스킬