Uygulamayı aç
Moonborn — Developers

Marka varyantlarını fork'la

Kanonik bir marka karakterinden resmi, günlük ve yerelleştirilmiş varyantlar türet — Soul kilitli, Mask refine, Surface çeviri.

Bir markanın altı farklı kanalı — satış e-postası, topluluk Slack'i, Almanca destek, sosyal medya, uygulama-içi sohbet, dokümantasyon — her biri markaya ait hissetmeli, ama biraz farklı konuşmalı. Bunu elle yönetmeye çalışırsan altı tane istemi (prompt) eşzamanlı tutmaya çalışmış olursun. Fork'lama aynı şeyi farklı yapar: tek bir kanonik karakter, ondan türeyen varyantlar, hepsi bir lineage tree (soy ağacı)'de izlenir.

Bu rehber bir markanın sesinden başlayıp üç varyant türetir — resmi satış varyantı, günlük topluluk varyantı, Türkçe destek varyantı — sonra hepsini doğru kanala bağlar.

Bu rehberi bitirdiğinde

  • Kanonik bir marka persona'sı kurabilecek ve denetimden geçirebileceksin.
  • Soul + Self'i kilitleyerek sadece Mask'i refine eden resmi / günlük varyantlar türetebileceksin.
  • Mask kilitli, Surface çevirili ile bir yerel (locale) varyant türetebileceksin.
  • Bir varyantın ebeveynden çok uzaklaştığını distinctiveness karşılaştırmasıyla yakalayabileceksin.
  • Her varyantı OpenAI uyumlu uç nokta üzerinden doğru kanala yönlendirebileceksin.

Ön koşul: API anahtarı + çalışma alanı kimliği. Persona üretme akışını henüz bilmiyorsan önce İlk persona'yı baştan sona üret rehberini tamamla.

1. Kanonik marka persona'sını kur

Varyantların hepsi bu persona'dan türeyecek — onu marka DNA'sı olarak düşün. Soul (markanın temel motivasyonu) ve Self (kişilik, değerler) tüm varyantlarda kilitli kalacak.

const brand = await client.personas.create({
  intent:
    'Moonborn marka sesi — Karakter Tutarlılığı Motoru (Character Consistency Engine). Akademik ama erişilebilir, karakter-odaklı, teknik olarak hassas. Editöryal kısıtlama. Somut detayla başlar; satış lafı yok.',
  workspaceId: 'ws_...',
});
 
console.log(brand.id, brand.audit.score);

2. Resmi varyant — Mask'i otoriteye doğru refine et

POST /v1/personas/{id}/fork persona'yı kopyalar, ebeveyn kenarını yazar ve refine adımı ekler.

const formal = await client.personas.fork({
  id: brand.id,
  refine: {
    mode: 'refine',
    layer: 'mask',
    axis: 'more-authoritative',
    amount: 0.4,
  },
  note: 'Sales materials variant',
});

Bu çağrı Soul + Self'i değiştirmez — sadece Mask yeniden yazılır. Denetim yeni Mask'a karşı tekrar koşar.

3. Günlük varyant — Mask'i sıcaklığa doğru refine et

const casual = await client.personas.fork({
  id: brand.id,
  refine: {
    mode: 'refine',
    layer: 'mask',
    axis: 'warmer',
    amount: 0.45,
  },
  note: 'Community + social media variant',
});

amount parametresi 0 ile 1 arasındadır: küçük değer hafif kayma, büyük değer belirgin kayma. Refine ekseni kataloğuna ve değer rehberine Varyant yönetişimi kılavuzu'nda bak.

4. Türkçe yerel (locale) varyantı — Mask kilitli, Surface çevirili

Yerel varyantlarında Surface değişir (dil, lokasyon, kültürel detaylar), ama Mask ve diğer katmanlar sabit kalır. lock (kilitle) modu hangi katmanların değişmeyeceğini söyler.

const tr = await client.personas.fork({
  id: brand.id,
  refine: {
    mode: 'lock',
    lockLayers: ['soul', 'self', 'mask'],
    edits: {
      'surface.language': 'tr',
      'surface.location': 'İstanbul, Türkiye',
    },
  },
  note: 'TR locale variant',
});

5. Varyant kümesinin soy ağacını gör ve karşılaştır

getLineage ebeveynden gelen tüm varyantları döner:

const lineage = await client.personas.getLineage({ id: brand.id });
console.log(lineage.children.map((c) => ({ id: c.id, note: c.note })));

Beklenen yanıt:

{
  "parentId": "per_brand...",
  "children": [
    { "id": "per_formal...", "note": "Sales materials variant", "depth": 1 },
    { "id": "per_casual...", "note": "Community + social media variant", "depth": 1 },
    { "id": "per_tr...", "note": "TR locale variant", "depth": 1 }
  ]
}

Varyantlar birbirine çok mu yakın?

compareWithOrgPersonas voice fingerprint uzaklığına göre en yakın persona'ları döner. Varyantlar arasındaki ayırt ediciliği (distinctiveness) kontrol etmek için kullan:

const compare = await client.consistency.compareWithOrgPersonas({
  personaId: formal.id,
  threshold: 0.30,
});
 
console.log(compare.closest);

6. Varyantları doğru kanala bağla

Her varyant kendi persona kimliğini alır. OpenAI uyumlu uç nokta üzerinden model alanı olarak geç:

import OpenAI from 'openai';
 
const oai = new OpenAI({
  apiKey: process.env.MOONBORN_API_KEY,
  baseURL: 'https://api.moonborn.co/v1/openai',
});
 
// Satış otomasyonu — resmi varyant
const salesReply = await oai.chat.completions.create({
  model: `persona://${formal.id}`,
  messages: [{ role: 'user', content: 'Moonborn hakkında anlat.' }],
});
 
// Topluluk Slack botu — günlük varyant
const communityReply = await oai.chat.completions.create({
  model: `persona://${casual.id}`,
  messages: [{ role: 'user', content: 'Selam, Moonborn ne yapıyor?' }],
});
 
// Türkçe destek — TR yerel varyantı
const supportReply = await oai.chat.completions.create({
  model: `persona://${tr.id}`,
  messages: [{ role: 'user', content: 'API anahtarı nasıl alıyorum?' }],
});

Başardın

Elinde bir kanonik marka persona'sı + üç varyant (formal, casual, tr) + soy ağacı + her varyant için bir kanal yönlendirmesi varsa rehber bitti.

Sonraki adım

Marka varyantlarıyla anlatım

Marka ekibinin Moonborn'u nasıl kullandığına dair kullanım senaryosu anlatımı.

Open →
Varyant yönetişimi kılavuzu

Refine ekseni kataloğu, distinctiveness eşikleri, yönetişim desenleri.

Open →
Lineage fork tree kavramı

Fork ağacının teknik anatomisi: kenarlar, derinlik, ayna sorgular.

Open →
Distinctiveness kavramı

Voice fingerprint uzaklığı nasıl ölçülür, neye göre kalibre edilir.

Open →