# Script Ekleme

Yeni script tanımlama
Kaynak: https://selwise.com/docs/custom-scripts/adding

Yeni bir script tanımlamak ve bir kanalda çalışır hale getirmek iki ayrı adımdır: önce script **yazılıp kaydedilir**, sonra **kanala eklenir** (yol kuralıyla). Kaydedilmiş ama hiçbir kanala eklenmemiş script hiçbir sayfada çalışmaz.

## Panelde nerede

Sol menüde **Kanallar → Özel Scriptler** (Channels → Custom Scripts). Sayfada iki bölüm vardır:

- **Active Scripts** (Etkin Scriptler): bu kanala eklenmiş scriptler. Her satırda yol kuralı, eşleşme tipi, **Active / Inactive** düğmesi ve **Remove from channel** (Kanaldan kaldır) vardır. Hiç script eklenmediyse bölüm görünmez.
- **Available Scripts** (Kullanılabilir Scriptler): hesabınızın scriptleri ve Selwise'in paylaştığı galeri scriptleri, kartlar halinde. Üstte bir arama kutusu (ad ya da açıklamada) ve **Create Script** (Script Oluştur) düğmesi vardır.

## 1. Script oluşturma

**Create Script**'e basın; script kendi sayfasında açılır (**New custom script**). Mevcut bir scripti düzenlemek için kartında **Edit Script**'i kullanın.

| Alan | Açıklama |
|---|---|
| **Script Name** (Script Adı) | Listede görünen ad; zorunlu, en fazla 100 karakter. |
| **Description** (Açıklama) | Bu script'in ne yaptığı. Yazın — altı ay sonra kendinize teşekkür edersiniz. |
| **Preview Image URL** (Önizleme Görsel URL'si) | İsteğe bağlı; listedeki script kartında gösterilir. |
| **JavaScript Code** (JavaScript Kodu) | Zorunlu. Sayfanın sonuna eklenir; **global kapsamda** çalışır. |
| **CSS Styles** (CSS Stilleri) | İsteğe bağlı. Kod çalışmadan önce `<head>` içine `<style>` olarak eklenir. |

Altta yapışık çubukta yeni script için **Create Script**, mevcut script için **Save Changes** ile kaydedin. Kaydedilmemiş değişiklik varken "Unsaved changes" uyarısı çıkar; değişiklik yoksa düğme kapalıdır. Yeni script kaydedilince "Script created. Add it to your channel from the list to make it run." mesajı çıkar.

> **Kaydetmek yayına almak değildir**
>
> Script'i kaydetmek yalnızca kodu saklar. Çalışması için bir sonraki adımdaki **Add to Site** ile bir yol kuralıyla bir kanala eklenmesi ve **Active** olması gerekir.

Galeri (Selwise'in paylaştığı) scriptlerini okuyabilir ve kanalınıza ekleyebilirsiniz ama **değiştiremezsiniz** ("This is a shared gallery script…"). Kendi scriptinizi silmek geri alınamaz; yalnızca **kendi** scriptlerinizi silebilirsiniz.

Script sayınız sözleşmedeki limite dayandığında **Create Script** kapanır ve sayfada limit uyarısı çıkar — bkz. [Abonelik](/docs/settings/subscription#limitler).

## 2. Kanala ekleme

Bir script kartında **Add to Site** (Siteye Ekle)'ye basın (kartın **Preview** penceresinden de ulaşılır). Açılan **Add Script to Site** penceresinde:

| Alan | Açıklama |
|---|---|
| **Path Pattern** (Yol Deseni) | Script'in çalışacağı URL yolu; örneğin `/products` ya da `/`. En fazla 255 karakter. |
| **Match Type** (Eşleşme Tipi) | **Exact Match**, **Prefix Match (starts with)** ya da **Regular Expression**. Varsayılan prefix, desen `/`. |

Geçersiz bir düzenli ifade (`regex`) kaydedilmez ("This is not a valid regular expression, so the script would never run on any page"). Aynı script **aynı kanalda farklı desenlerle birden fazla kez** eklenebilir; aynı deseni yeniden eklemek eşleşme tipini günceller ve satırı yeniden etkinleştirir. Kuralların ayrıntısı: [Sayfa Hedefleme](/docs/custom-scripts/targeting).

Pencereyi **Add Script** düğmesiyle onaylarsınız. Eklenen script **Active** başlar. Kodu silmeden kapatmak için satırdaki **Active** düğmesine basın (**Inactive** olur); tekrar basınca açılır. **Remove from channel** yalnızca bu kanaldaki kuralı kaldırır, script'in kendisini silmez.

## Önizleme

Kartın **Preview** (göz) düğmesi, script'i **örnek bir sayfada** ("Preview Mode") çalıştırır. Bu sizin sitenizin sayfası değildir: seçiciler (`.product-price` gibi) orada bulunmaz. Gerçek davranışı sitenizde, tarayıcı konsolunda doğrulayın.

## Yapay zekâyla yazma

Script sayfasındaki **Write with AI** (Yapay zekâyla yaz) bölümünün iki modu vardır:

- **Generate with AI** (Yapay zekâyla oluştur): script'in ne yapacağını anlatırsınız (en fazla 2000 karakter), yapay zekâ sıfırdan yazar.
- **Edit with AI** (Yapay zekâyla düzenle): düzenleyicideki mevcut JavaScript ve CSS talimatınızla birlikte gönderilir (ikisi toplam en fazla 12.000 karakter); yapay zekâ yalnızca istediğinizi değiştirir.

Öneri doğrudan düzenleyiciye girmez. **Proposed change** ekranında mevcut (**current**) ve önerilen (**proposed**) kod yan yana gösterilir; kısa bir açıklama ve **Check before accepting — this change adds:** altında dikkat edilecek noktalar sıralanır: ağ isteği, çerez erişimi, metinden değerlendirilen kod (`eval`) ya da başka bir adresten yüklenen script. **Accept and replace** deyince düzenleyici dolar; kalıcı olması için yine kaydetme düğmesine basarsınız. Siz kaydedene kadar hiçbir şey yazılmaz.

Yapay zekâ kanalın platformunu (Akinon, Shopify vb.), yayınlanmış markanızı (marka kılavuzu çipinden kapatılabilir) ve Selwise'in sayfadaki JavaScript arayüzünü bilir; kodu IIFE içinde, `try/catch` ile ve seçicileri doğrulayarak yazmaya yönlendirilmiştir. Söz dizimi hatalı bir öneri size gösterilmez; hatanın bölümü, satırı ve sütunu bildirilir. Her istek **50 kredi** harcar (söz dizimi onarımı ikinci bir çağrıdır, ikinci kez sayılır), **AI Studio** modülü ve AI üretme yetkisi gerekir; kredi bittiğinde üretim durur ama elle yazmaya devam edersiniz — bkz. [Abonelik](/docs/settings/subscription#ai-kredisi).

> **Yapay zekâ seçicinizi göremez**
>
> Model sizin temanızı görmez; hangi CSS seçicisinin sitenizde var olduğunu bilemez. Açıklamada yazdığı seçicileri sitenizde kontrol edin.

## Yazarken

### Kodu sarın ve hataya dayanıklı olun

Script bir fonksiyona sarılmaz ve üst düzey `return` kullanılamaz; kendiniz sarın:

```js
(function () {
  try {
    var el = document.querySelector('.fiyat');
    if (!el) return;
    // ...
  } catch (e) {
    console.warn('[benim script]', e);
  }
})();
```

Özellikle element seçicilerini kontrol edin: sitenizin teması güncellendiğinde seçici bulunamaz hale gelir.

### İki kez çalışmaya karşı korunun

Tek sayfa uygulamalarında sayfa değiştikçe kodunuzun işi birikebilir ve tema bölümleri yeniden çizebilir. İşaret koyun:

```js
(function () {
  if (window.__benimScriptim) return;
  window.__benimScriptim = true;
  // ...
})();
```

## Marka değişkenleri

CSS yazıyorsanız marka temasının değişkenlerini kullanabilirsiniz:

```css
.benim-kutum {
  background: var(--selwise-surface, #fff);
  border-radius: var(--selwise-radius, 8px);
}
```

Liste: [Marka Teması](/docs/brand/theme).

## Sırada ne var

- [Sayfa Hedefleme](/docs/custom-scripts/targeting)
- [Örnekler](/docs/custom-scripts/examples)
