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 ekibinin Moonborn'u nasıl kullandığına dair kullanım senaryosu anlatımı.
Refine ekseni kataloğu, distinctiveness eşikleri, yönetişim desenleri.
Fork ağacının teknik anatomisi: kenarlar, derinlik, ayna sorgular.
Voice fingerprint uzaklığı nasıl ölçülür, neye göre kalibre edilir.