MCP ile reklam oluşturma, ChatGPT’ye kampanya hedefini, bütçeyi ve reklam içeriğini yazarak yetkili Meta veya Google Ads hesaplarında reklam hazırlamayı sağlayan bir entegrasyon akışıdır. Bunun için reklam hesabına yetkili bir API bağlantısı, bu bağlantıyı araçlara dönüştüren bir MCP sunucusu ve değişiklikleri insan onayına bağlayan bir uygulama gerekiyor. Kurulum tamamlandığında ChatGPT gerçek hesap bilgilerini okuyabilir, kampanya önizlemesi hazırlayabilir ve ayrı onayınızdan sonra desteklenen reklamları kapalı durumda oluşturabilir.
Marka Veri Merkezi’ni kurarken ilk ihtiyacım, farklı markaların verilerini tek sohbetten sorgulayabilmekti. Ardından kampanya oluşturmak, reklam metinlerini düzenlemek, negatif anahtar kelime eklemek ve büyük raporları eksiksiz incelemek istedim. Süreçte gördüm ki doğru hesap yetkileri, açık araç tanımları ve işlem sonrası doğrulama birlikte tasarlanmalı.
Bu rehberde kendi işletme hesabını kurmaktan gizlilik politikasına, Meta sistem kullanıcısından Google Cloud erişimine, MCP araçlarından ilk kapalı reklam testine kadar izlediğimiz yolu anlatıyorum. Hesap kimlikleri, tokenlar ve müşteriye özel veriler yerine temsili örnekler kullanıyorum.
Teknik güncelleme tarihi: 24 Ekim 2026. Bu rehberdeki örnekler Google Ads API v26 ve Meta Graph API v25.0 yapısını esas alıyor. Meta için belirtilen sürüm, örneğin kapsamıdır; en yeni sürüm iddiası değildir. Kendi kurulumunuzda desteklenen sürümü, ürün erişimini ve hesabınıza sunulan izinleri kontrol ederek ilerleyin.
1. MCP nedir ve reklam yönetiminde ne işe yarar?
MCP, Model Context Protocol ifadesinin kısaltmasıdır. Yapay zekâ istemcilerinin harici sistemlerin araçlarını ve verilerini ortak bir yöntemle kullanmasını sağlar. Reklam yönetiminde MCP sunucusu, Meta Marketing API veya Google Ads API üzerinde geliştirdiğiniz işlemleri ChatGPT’nin çağırabileceği araçlara dönüştürür. Araçların adı, açıklaması ve giriş şeması istemciye hangi işlevin nasıl kullanılacağını anlatır. OpenAI MCP sunucusu açıklaması.
Örneğin şu talep birkaç ayrı işlemi gerektirir:
Evcil hayvan ürünleri markam için günlük 50 TL bütçeli bir satış kampanyası hazırla. Hedef sayfa köpek kıyafetleri koleksiyonu olsun. Önce tüm ayarları göster, onaylarsam kapalı oluştur.
Bu cümle önce yapılandırılmış bir isteğe dönüşür. Sunucu doğru markayı ve hesabı bulur, kullanılabilir varlıkları okur, eksik seçimleri belirler ve platformun kabul edebileceği bir plan hazırlar. Onaylanan planın uygulanmasını da sunucu yürütür.
MCP standardı, kampanya oluşturma iş mantığını kendiliğinden getirmez.
prepare_meta_campaign_creation
veya
prepare_google_ads_campaign_creation
gibi adlar, bizim geliştirdiğimiz araçlardır. Başka bir MCP sunucusunda aynı işlevler farklı isimlerle bulunabilir veya henüz geliştirilmemiş olabilir.
Bu nedenle bir bağlantıyı değerlendirirken “Meta’ya bağlanıyor mu?” sorusunun yanına “Hangi işlemleri, hangi hesaplarda ve hangi onay akışıyla yapıyor?” sorusunu da eklemek gerekir.
2. Kuracağımız sistemin mimarisi
Sistemde birbirinden ayrı iki bağlantı kurulur:
- ChatGPT, sizin kimliğinizle özel MCP sunucusuna bağlanır.
- MCP sunucusu, sunucuda saklanan yetkili kimlik bilgileriyle reklam platformuna bağlanır.
Reklam oluşturma akışı şu sırayı izler:
Kullanıcı talebi
↓
ChatGPT doğru MCP aracını seçer
↓
MCP kimliği, markayı, hesabı ve mevcut varlıkları doğrular
↓
Tam önizleme ve sağlayıcı doğrulaması hazırlanır
↓
İnsan, bu önizlemeye ayrı ve açık onay verir
↓
MCP onaylı işlemi uygular
↓
Gerçek platform sonucu API üzerinden yeniden okunur
↓
Doğrulanan sonuç ve işlem kaydı kullanıcıya sunulur

Bu ayrımın pratik bir sonucu var: ChatGPT’ye bağlanmış olmanız, Meta veya Google Ads hesabına otomatik olarak yetki vermez. Aynı şekilde Meta API tokenınızın çalışması da ChatGPT’nin bütün kampanya işlemlerini yapabileceğini göstermez. Her iki bağlantının da kendi kimlik, izin ve araç kontrolü bulunur.
Bizim yapıda raporlama ve yönetim işlevleri de ayrı ele alındı. GA4, Search Console ve Merchant Center raporları okunurken; reklam hesabında değişiklik yaratacak işlemler ayrıca planlandı ve onaya bağlandı.
3. Başlamadan önce hazırlanması gerekenler
Kuruluma başlamadan önce aşağıdaki envanteri çıkarın. Her satır için sahibi, yetkili kişi ve kullanılacak kimliği yazmak sonraki karışıklıkları azaltır.
| Bileşen | Neden gerekiyor? | İlk kontrolde bakılacak konu |
|---|---|---|
| Kendi Meta Business Portfolio’nuz | Uygulama ve sistem kullanıcısını kendi işletmenizde tutmak | İşletme sahibi ve yönetici erişimi |
| Müşteri reklam hesapları | Raporlama ve reklam işlemleri | Hesap kimliği, para birimi, durum |
| Facebook sayfaları | Sayfa kimliğiyle reklam oluşturmak | İlgili sayfada reklam görevi |
| Instagram hesapları | Instagram yerleşimleri kullanılacaksa | Doğru hesap ve bağlı varlık erişimi |
| Pixel veya veri seti | Web sitesi dönüşüm optimizasyonu | Doğru markanın satın alma ölçümü |
| Google Cloud projesi | Google API ve kimlik yönetimi | Projenin sizin kontrolünüzde olması |
| Google Ads API erişimi | Üretim hesaplarına API çağrısı | Cloud projesinin erişim seviyesi |
| Sunucu ve veri tabanı | MCP araçları, özel planlar ve işlem kayıtları | Özel erişim ve kalıcı saklama |
| Gizlilik politikası adresi | Uygulamanın veri kullanımını açıklamak | Herkese açık, çalışan bir metin sayfası |
Bir markanın reklam hesabı, sayfası ve Pixel’i farklı işletmelerde bulunabilir. Bu nedenle yalnızca reklam hesabını görmek yeterli değildir; reklam oluştururken kullanılacak tüm varlıkların aynı marka ilişkisi içinde doğrulanması gerekir.
Kullanılacak insan hesaplarını da baştan belirleyin. Ajans çalışanının hesabı, işletmenin sahibi ve otomasyonun teknik kimliği farklı roller taşır. Ortak bir tokenı rastgele bütün projelere dağıtmak, bir erişim iptalinin birden fazla müşteriyi etkilemesine yol açabilir.
4. Meta tarafında kendi Business Manager yapınızı kurun
Entegrasyonu tek bir müşterinin işletmesine bağlamak yerine kendi işletmenizde konumlandırmak, ajans yapısını daha kolay yönetmenizi sağlar. Müşteri varlıklarının mülkiyeti müşteride kalır; sizin işletmenize gerekli kullanım erişimleri paylaşılır.
İzlediğimiz kurulum sırası şöyleydi:
- Meta Business Suite veya işletme ayarlarından kendi işletme portföyünü açtık.
- İşletme adı ve iletişim bilgilerinin doğru olduğunu kontrol ettik.
- Yetkili yönetici hesabını ve güvenlik doğrulamalarını tamamladık.
- Entegrasyon uygulamasını bu işletmeyle ilişkilendirdik.
- Otomasyon için teknik bir sistem kullanıcısı oluşturduk.
- Müşteri varlıklarını bu işletmeye ortak erişimiyle paylaştırdık.
Mevcut bir işletmeniz varsa önce onun sahipliğini ve kullanılabilirliğini kontrol edin. Aynı yapı için sürekli yeni portföy açmak yerine, uygulamanın ve teknik kullanıcının hangi işletmede tutulacağını netleştirin.
Menü adları hesap ve arayüz diline göre değişebilir. Kendi kurulumumuzda ana bölümler işletme ayarları altında Kullanıcılar, Hesaplar, Veri Kaynakları ve Uygulamalar şeklindeydi.
Kişisel yöneticilik erişimi neden tek başına yeterli olmayabilir?
Kişisel Facebook profiliniz müşterinin hesabında yönetici olabilir. Otomasyonun kullanacağı sistem kullanıcısı ise ayrı bir teknik kimliktir. Bu kimliğin erişimi, kendi varlık atamaları üzerinden değerlendirilir.
Bu yüzden “Ben hesabı panelde görüyorum” kontrolünü, “MCP’nin kullandığı teknik kimlik aynı hesabı ve sayfayı API’de görebiliyor” kontrolüyle tamamlayın.
5. Müşteri varlıklarını kendi işletmenize ortak olarak ekleyin
Müşteri tarafındaki yetkili kişi, ilgili varlığı işletmenize paylaşmalıdır. Reklam hesabının paylaşılması ile Facebook sayfasının paylaşılması ayrı adımlardır.
Reklam hesabı için tipik akış:
- Müşterinin işletme ayarlarında ilgili reklam hesabını açın.
- Ortak atama veya iş ortağı ekleme alanını bulun.
- Kendi işletmenizin kimliğini girin.
- Yapılacak işe uygun görevleri seçin.
- Gerekirse müşterinin ikinci yönetici onayını tamamlatın.
- Hesabın sizin işletmenizde gerçekten göründüğünü doğrulayın.
Sadece rapor alınacaksa performans görüntüleme yeterli olabilir. Kampanya oluşturma ve yönetme için reklam yönetimine izin veren görevler gerekir. Bunu müşterinin bilerek onayladığı kapsamla sınırlayın.
Sonra Facebook sayfasını, kullanılacak Instagram kimliğini ve Pixel/veri setini kontrol edin. Sayfa tarafında Reklamlar görevi, sayfa adına reklam oluşturma ve yönetmeyle ilgili erişimdir. Sayfa erişimi görev bazında verilebilir; tam kontrol, sayfa ayarları ve erişim yönetimi gibi daha geniş işlemleri de kapsar. Meta sayfa erişimi açıklaması.
Müşteri “Paylaşımı onayladım” dediğinde iki tarafta da sonucu kontrol edin: müşteride talep onaylı görünmeli, sizin işletmenizde de doğru varlık listelenmelidir. Bekleyen onay, tamamlanmış erişim olarak kaydedilmemelidir.
6. Meta Developers uygulamasını oluşturun
Kendi işletmenize ait uygulama, tokenın hangi uygulama üzerinden üretildiğini ve hangi izinlerle kullanılacağını belirler.
Kurulumda şu adımları takip edin:
- Meta for Developers’a yetkili profilinizle giriş yapın.
- Yeni uygulama oluşturma akışını başlatın.
- Kullanım amacınıza uygun reklam yönetimi veya Marketing API seçeneğini değerlendirin.
- Uygulamayı kendi işletme portföyünüzle ilişkilendirin.
- Uygulama adı ve iletişim adresini tamamlayın.
- Uygulama kimliğini sunucu yapılandırmasına kaydedin.
- Gerekli ürün, izin ve erişim seviyesi ekranlarını kontrol edin.
Buradaki uygulama adı, ChatGPT’de gözükecek MCP bağlantısının adıyla aynı olmak zorunda değildir. Ancak anlamlı ve tutarlı isimler, yanlış uygulamadan token üretme riskini azaltır.
Uygulamanın işletme bağlantısını özellikle kontrol edin. Müşteri işletmesine bağlı eski uygulamayla ilerlemek istemiyorsanız, yeni tokenı kendi uygulamanızdan üretmeniz gerekir. Bir tokenın uzun ömürlü olması uygulama sahipliğini değiştirmez.
Uygulama incelemesi, işletme doğrulaması ve gelişmiş erişim gereksinimleri kullanım senaryosuna göre değerlendirilir. Kendi işletmenizin varlıklarıyla çalışan özel entegrasyon ile farklı şirketlere dağıtılan bir ürünün gereksinimleri aynı olmayabilir. Meta’nın uygulama panelindeki gerçek gereksinimleri esas alın.
7. Sistem kullanıcısı oluşturun ve varlık atamalarını yapın
Sistem kullanıcısı, otomasyonun Meta tarafındaki teknik kimliğidir. Kendi kurulumumuzda Employee türündeki bir kullanıcıyla ilerledik; ihtiyaç duyulan reklam görevlerini ilgili varlıklara ayrıca atadık. Meta’nın resmî SDK’sı da sistem kullanıcısı rolleri ile atanmış reklam hesabı sorgularını ayrı tanımlar. Meta SystemUser SDK kaynağı.
Örnek isimlendirme:
Sistem kullanıcısı: Ajans Raporlama ve Reklam İşlemleri
İşletme: Kendi ajans işletmeniz
Rol: İşin gerektirdiği en düşük uygun rol
Varlıklar: Yalnız yetkili müşteri reklam hesapları ve ilgili sayfalar
Adımlar:
- Kendi işletmenizde sistem kullanıcıları bölümünü açın.
- Anlamlı bir kullanıcı adı belirleyin.
- Uygun rolü seçin.
- Meta’nın sunduğu ilkeler veya doğrulama adımları varsa yetkili kişi olarak inceleyip tamamlayın.
- İlgili reklam hesabını kullanıcıya atayın.
- Raporlama ve reklam yönetimi görevlerini gereken kapsamda açın.
- Reklamda kullanılacak Facebook sayfasını da atayın.
- Instagram ve Pixel/veri seti erişimlerini kullanımınıza göre doğrulayın.
Bizim hesap görevlerimizde reklam verme, analiz ve taslak işlemleri yer alıyordu. Tam reklam hesabı yönetimini açmak yerine gerekli görevleri seçtik. Bu isimler API ve arayüzde farklı biçimde gösterilebildiği için sunucuda gerçek görev değerleri de okunmalıdır.
Atama sonrasında bir envanter çağrısı yapın. Beklenen reklam hesabı, sayfa ve Pixel listede görünmüyorsa token üretme adımını tekrar etmekten önce varlık ilişkisini inceleyin.
8. Gizlilik politikasını hazırlayın ve herkese açık adresini oluşturun
Meta uygulamasını kurarken karşılaştığımız adımlardan biri gizlilik politikası adresiydi. Bu nedenle entegrasyonun gerçekte hangi verileri kullandığını açıklayan bir metin hazırladık ve bağımsız bir web sayfasına koyduk.
Metinde en az şu soruların karşılığı bulunmalı:
- Uygulama ve sorumlu işletme kim?
- Hangi reklam veya analitik verileri okunuyor?
- Hangi koşullarda reklam hesabında değişiklik yapılabiliyor?
- Veriler hangi amaçla işleniyor?
- Kimlik bilgileri ve işlem kayıtları nerede, ne kadar süre tutuluyor?
- Kullanıcı bağlantıyı nasıl iptal edebiliyor veya veriyle ilgili talepte bulunabiliyor?
- İletişim için hangi adres kullanılabiliyor?
Metni gerçek işleyişe göre yazın. Örneğin sistem önizleme ve işlem kaydı saklıyorsa “Hiçbir veri saklanmaz” ifadesi kullanmayın. Raporların geçici tutulduğu süreyle işlem kayıtlarının süresini ayrı açıklayın. Hukuki yükümlülükleri de hizmet verdiğiniz ülke ve veri kullanımına göre ayrıca değerlendirin.
WordPress’te gizlilik sayfası nasıl hazırlanır?
- Kendi sitenizde yeni bir Sayfa açın.
- Başlığa uygulamanızı açıkça tanımlayan bir isim yazın.
- Metni ekleyin ve iletişim bilgisini kontrol edin.
- Uygun bir kalıcı bağlantı belirleyin; örneğin
/mcp-gizlilik-politikasi/. - Sayfayı yetkili kişi onayıyla yayımlayın.
- Adresi çıkış yapılmış tarayıcıda açarak erişilebilirliğini kontrol edin.
- Çalışan tam HTTPS adresini Meta uygulamasının ilgili alanına girin.
Sayfanın ana menüde görünmesi, adresin erişilebilir olmasından ayrı bir tercihtir. Politika metninin okunabilmesi için kullanıcıdan işletme hesabına giriş yapması istenmemelidir.
Gizlilik politikası sayfası açık, MCP bağlantısı özel kalabilir. Bizim kurulumumuzda politika yalnızca veri kullanımını anlatan metni içeriyordu. Reklam raporları, tokenlar, hesap listeleri ve MCP araçları aynı sayfada yayımlanmadı.
9. Meta izinlerini ve uzun ömürlü yönetim tokenını ayarlayın
Rapor okumakla reklam oluşturmak farklı yetki gerektirir. Kurduğumuz yönetim bağlantısında şu kapsamlar kullanıldı:
| İzin | Kurulumdaki işlevi |
|---|---|
ads_management
| Desteklenen reklam oluşturma ve yönetim işlemleri |
pages_show_list
| Uygun sayfaların keşfi ve seçimi |
pages_read_engagement
| Sayfayla ilişkili okuma ve kreatif erişim akışlarının tamamlanması |
Bu tablo, her uygulama ve her reklam biçimi için evrensel bir izin listesi değildir. Kullanılan endpoint, sayfa kimliği, ürün ve erişim modelinin gerektirdiği kapsamları doğrulamak gerekir. İzin adının token üzerinde bulunması da varlık atamasının tamamlandığını göstermez.
Token oluştururken sistem kullanıcısını seçin, kendi uygulamanızı belirleyin ve gerekli kapsamları işaretleyin. Meta ek e-posta veya güvenlik doğrulaması istiyorsa bunu kendi oturumunuzda tamamlayın. Doğrulama kodlarını veya tokenı sohbet mesajına yapıştırmayın.
Arayüz uygun koşullarda Asla/Never gibi normal son kullanma tarihi olmayan bir seçenek sunabilir. Bizim kullandığımız yönetim tokenında bu seçenek seçildi. Böyle bir tokenın
expires_at=0
dönmesi, olağan bir son kullanma tarihinin tanımlı olmadığını gösterir; erişimin iptal edilemeyeceği anlamına gelmez. İşletme, uygulama, güvenlik veya varlık izinleri değiştiğinde bağlantı etkilenebilir.
Tokenı kaydetmeden önce şu alanları doğrulayın:
Token geçerli mi?
Token doğru uygulamaya mı ait?
Token beklenen sistem kullanıcısından mı üretildi?
Gerekli kapsamlar bulunuyor mu?
İlgili reklam hesabında gerekli görevler var mı?
Sayfa, Pixel ve Instagram varlıkları görülebiliyor mu?
Normal süre sonu ve veri erişimi bilgileri ne gösteriyor?
Raporlama tokenıyla yönetim tokenını ayrı saklamak, iki kullanımın takibini kolaylaştırır. Yönetim tokenını sunucunun gizli çalışma zamanı alanına koyun. Ön yüz JavaScript’i, herkese açık Git deposu, ekran görüntüsü ve hata mesajı token saklama yeri değildir.
Uygulama paneli canlı moda geçiş istiyorsa gizlilik adresi, iletişim bilgileri ve o kullanım için gösterilen diğer gereksinimleri tamamlayın. Uygulama modu, kapsamların erişim seviyesi ve özel MCP’nin paylaşım ayarı ayrı kontroller olarak kaydedilmelidir.
10. Google Cloud projesini ve Google Ads API erişimini hazırlayın
Google tarafında önce API kimliklerinin sahibi olacak Cloud projesini belirleyin. Bu proje ajansınızın veya entegrasyonu yöneten yetkili işletmenin kontrolünde olmalıdır.
Güncel başlangıç adımı: Google’ın belgelerine göre Developer Token modeli 9 Eylül 2026’da sona erdi. Yeni Google Ads API erişimi Cloud projesinden yönetiliyor. Eski kodlarda
developer-token
başlığı bulunabilse de yeni başvuruyu eski MCC API Center akışı üzerinden tarif etmek güncel kurulumu yanlış yönlendirebilir. Developer Token geçiş açıklaması.
Yeni proje için yol:
- Google Cloud Console’da proje oluşturun veya uygun mevcut projeyi seçin.
- Google Ads API’yi etkinleştirin.
- Google Ads API Overview ekranından proje erişim seviyesini kontrol edin.
- Gerçek reklam hesaplarına erişmek için uygun üretim erişimine başvurun.
- Kullanacağınız OAuth istemcisini veya service account’u bu projede oluşturun.
- Kimliğe reklam hesabı veya uygun yönetici hesap üzerinden erişim verin.
- Önce hesap kimliği, para birimi ve saat dilimini okuyan bir çağrıyla kontrol edin.
API’yi açmak başlangıçta test erişimi sağlar. Üretim hesabına çağrı yapmak için uygun erişim seviyesi gerekir; güncel seviyeler Test, Explorer, Basic ve Standard olarak listeleniyor. Başvuru, kota ve izin verilen kullanım kapsamı Cloud projesi üzerinden değerlendirilir. Google Ads erişim seviyeleri.
MCC, birden fazla müşteriyi yönetmek için yararlı bir hesap yapısıdır. Güncel API erişimi başvurusunun ön koşullarıyla müşterileri yönetme tercihini birbirine karıştırmayın. Yönetici hesap üzerinden çağrı yapıyorsanız doğru
login-customer-id
değerini, hedef müşteri hesabından ayrı tutun.
11. Google için service account veya kullanıcı OAuth akışını seçin
Google kimliklendirmesinde iki yaygın seçenek var. Aynı projede farklı kanallar için farklı kimlik yöntemleri de kullanılabilir.
Service account ile bağlantı
Sunucunun, kendisine açıkça erişim verilen hesaplarda çalışacağı bir yapı için kullanılabilir. Google Ads’in resmî akışı service account oluşturmayı ve e-posta adresini uygun erişim seviyesiyle reklam hesabına eklemeyi anlatır. Service account iş akışı.
Uygulama sırası:
- Cloud projesinde bir service account oluşturun.
- Üretim ortamınızın desteklediği güvenli kimlik yöntemini belirleyin.
- Anahtar dosyası kullanılacaksa bunu yalnız sunucu tarafında, gizli alanda saklayın.
- Service account e-posta adresine gerekli Google Ads erişimini verin.
- Hesap ve yönetici hesap ilişkisini doğrulayın.
- Sunucunun kısa ömürlü erişim tokenını otomatik almasını sağlayın.
Cloud projesindeki bir IAM rolü, tek başına müşterinin Google Ads hesabına erişim sağlamaz. Reklam hesabı erişimi ayrıca verilmelidir.
Kullanıcı OAuth akışı
Kullanıcının Google hesabıyla izin verdiği bir entegrasyonda OAuth istemcisi oluşturulur. Sunucu yetkilendirme kodunu uygun tokenlarla değiştirir ve çevrimdışı erişim verilmişse refresh tokenı güvenli biçimde saklar. Kısa ömürlü erişim tokenı gerektiğinde yenilenir. Refresh tokenın iptali veya geçersizleşmesi için yeniden bağlantı akışı bulunmalıdır. Google web sunucusu OAuth akışı.
Bu yüzden Google bağlantısında tokenın elle yenilenmiyor görünmesi, erişim tokenının hiç değişmediği anlamına gelmez. Yenileme çoğu zaman arka planda gerçekleşir.
Google Ads, GA4, Search Console ve Merchant için gereken izinleri ayrı belirleyin. Bir Google hesabına giriş yapmış olmak bütün ürünleri açmaz. Ölçüm bağlantısı için verilen yetkiyi reklam yönetimi yetkisi olarak değerlendirmeyin.
12. MCP projesinin dosya ve modül yapısını oluşturun
Ben reklam sağlayıcıları, raporlar ve işlem planlarını ayrı modüllere ayırmayı tercih ediyorum. Böylece yeni bir istek geldiğinde onay, sahiplik ve hata yönetimini baştan yazmak gerekmiyor.
Örnek proje yapısı:
reklam-mcp/
src/
mcp/ → araç kayıtları ve giriş şemaları
auth/ → istemci kimliği ve kullanıcı erişimi
brands/ → marka ile hesap eşleştirmeleri
providers/
meta/ → Meta API istemcisi ve varlık keşfi
google-ads/ → Google Ads API istemcisi
operations/
core/ → plan, onay, tek deneme ve geri okuma
meta-create/ → kapalı Meta kampanya oluşturma
google-create/ → Google kampanya tarifleri
negatives/ → negatif anahtar kelime işlemleri
reports/ → rapor sorguları ve sayfalama
db/
migrations/ → plan ve işlem kayıtlarının şeması
tests/
.env.example → yalnız değişken isimleri, gerçek sır yok
.gitignore
Sunucu yapılandırmasında API sürümlerini tek yerde tutun. Marka eşleştirmesini de sunucuda tanımlayın; kullanıcıdan gelen bir hesap kimliğini doğrudan hedef olarak kabul etmeyin.
{
"pet_store": {
"meta_ad_account_id": "META_HESAP_KIMLIGI",
"google_ads_customer_id": "GOOGLE_HESAP_KIMLIGI",
"allowed_domains": ["magaza.example"],
"allowed_operators": ["YETKILI_KULLANICI"]
}
}
Bu temsili yapı, sunucunun hesap envanterinde doğrulanmış değerlerle doldurulur. “Marka A” için gelen bir talebin “Marka B” tokenı veya hesabıyla çalışmaması, yalnızca sohbet talimatına bırakılmamalıdır.
Yapılandırma ve gizli değerleri nerede tutacaksınız?
Aşağıdaki adlar bizim uygulama yaklaşımımızdan örneklerdir. Gerçek değerler sunucunun secret yöneticisine girilir;
.env.example
yalnız beklenen alanları tarif eder.
| Yapılandırma | Kullanım |
|---|---|
META_ACCESS_TOKEN
| Meta rapor okuyucusunun teknik erişimi |
META_MANAGEMENT_ACCESS_TOKEN
| Ayrı onaylı Meta yönetim erişimi |
GOOGLE_SERVICE_ACCOUNT_JSON
| Google için sunucu kimliği; kullanılıyorsa özel JSON anahtarı |
SEARCH_CONSOLE_OAUTH_JSON
| Yetkili Search Console bağlantısının sunucu ayarları |
MERCHANT_OAUTH_JSON
| Yetkili Merchant bağlantısının sunucu ayarları |
| API sürümü ayarları | Sağlayıcı sürümünü tek noktadan seçme |
| Yönetim etkinlik bayrakları | Reklam yönetimini başlangıçta kapalı tutma, kurulum onayından sonra açma |
| Veri tabanı bağı | Özel plan ve işlem kayıtlarını kalıcı tutma |
Yerel geliştirmede gizli dosyaların yanlışlıkla kaynağa eklenmesini önlemek için örnek dışlama:
.env
.env.*
!.env.example
credentials/
*.pem
logs/
private-exports/
Bir değerin
.gitignore
içinde olması onu otomatik şifrelemez. Yerelde dosya erişimini de sınırlayın; üretimde platformun secret saklama alanını kullanın. Dağıtım paketini ayrıca kontrol edin. Ön yüzde kullanılacak halka açık değişkenlerle yönetim tokenlarını aynı katmana koymayın.
Yapay zekâ destekli geliştirme için başlangıç talebi
Kod geliştirmeyi bir yapay zekâ asistanıyla yürütüyorsanız aşağıdaki gibi somut bir kapsam verin:
Kendi işletmemin yetkili reklam hesapları için özel bir MCP geliştir.
Meta ve Google Ads bağlantılarını ayrı sağlayıcı modüllerinde tut.
Önce kimlik, marka hesabı ve mevcut varlıkları doğrula.
Raporlar salt okunur olsun.
Reklam işlemleri için inspect → prepare → insan onayı → apply → read-back
akışını kur. İlk talep tek başına uygulama onayı sayılmasın.
Yeni kampanya, grup/set ve reklamlar PAUSED oluşturulsun.
On dakikalık, sahibine bağlı ve tek kullanımlık plan sakla.
Belirsiz sonuçta otomatik tekrar, onarım veya kopya oluşturma yapma.
Ham API payload'ı, serbest endpoint veya hesap override'ı açma.
Tokenları yalnız sunucu secret alanında tut.
Önce test ve değişikliksiz API doğrulaması yap.
Kaynak yayını ve gerçek reklam işlemi için ayrı önizleme/onay iste.
Bu talep geliştirme hedefini tanımlar. Platform izinlerini, testleri ve gerçek araç keşfini yine ayrıca tamamlamak gerekir.
13. İlk MCP sunucusunu yerelde çalıştırın
Sunucuyu kodla kuracak ekip için ilk adım küçük bir yerel bağlantı testidir. Örnekte Node.js 22 ve üzerinde, TypeScript ile MCP SDK’nın sabitlenmiş bir sürümü kullanılıyor. Bu bölümdeki araç, yalnız bağlantı durumunu gösteren bir yerel örnektir.
mkdir reklam-mcp
cd reklam-mcp
npm init -y
npm install @modelcontextprotocol/sdk@1.27.1 zod@3.25.76 express
npm install --save-dev typescript tsx @types/node @types/express
server.ts
dosyasının çekirdeği:
import express from "express";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StreamableHTTPServerTransport }
from "@modelcontextprotocol/sdk/server/streamableHttp.js";
const app = express();
app.use(express.json({ limit: "16kb" }));
function createServer() {
const server = new McpServer({
name: "Ajans Reklam Bağlantısı",
version: "1.0.0"
});
server.registerTool("get_connections", {
description: "Yerel örneğin bağlantı durumunu gösterir.",
inputSchema: {},
annotations: {
readOnlyHint: true,
destructiveHint: false,
idempotentHint: true,
openWorldHint: false
}
}, async () => {
const result = { status: "local_demo", advertising_changed: false };
return {
content: [{ type: "text", text: JSON.stringify(result) }],
structuredContent: result
};
});
return server;
}
app.post("/mcp", async (req, res) => {
const server = createServer();
const transport = new StreamableHTTPServerTransport({
sessionIdGenerator: undefined
});
res.on("close", () => { void server.close(); });
await server.connect(transport);
await transport.handleRequest(req, res, req.body);
});
app.listen(3000, "127.0.0.1", () => {
console.log("Yerel MCP: http://127.0.0.1:3000/mcp");
});
Çalıştırmak için:
npx tsx server.ts
Bu yerel örneğe gerçek hesapları açmadan önce üretim kimlik doğrulaması, hata yönetimi, alan doğrulamaları ve sağlayıcı adaptörleri eklenir. Reklam oluşturma için sonraki bölümlerdeki iş akışları gerekir. Yerel örnek yalnız loopback adresinde dinler; doğrudan internete yayımlanacak bir yönetim endpoint’i olarak kullanılmamalıdır.
MCP’nin protokol mesajlarını elle yazmak yerine uygun SDK kullanmak, araç keşfi ve taşıma katmanını daha tutarlı kurmayı sağlar. MCP sunucusu geliştirme rehberi.
14. Araçları net isimler ve sınırlı şemalarla tanımlayın
Bir aracın açıklaması, modelin ne zaman o aracı seçeceğini etkiler. “Reklam işlemleri yapar” gibi geniş bir açıklama yerine hangi nesnelerin okunacağını, hangi alanların değişebileceğini ve onayın nerede gerektiğini yazın.
Kullandığımız genel akış:
| Araç | İşlev |
|---|---|
get_connector_manifest
| Sürüm, araç listesi ve destek sınırlarını gösterir |
inspect_ad_resources
| Mevcut hesap ve varlıkları okur |
prepare_ad_operation
| Tam değişiklik önizlemesi ve doğrulama hazırlar |
apply_ad_operation
| Ayrı onaylı, geçerli planı uygular |
get_ad_operation
| İşlem kaydını ve doğrulanan sonucu okur |
run_data_report
| Sayfalı büyük rapor işlerini toplar ve inceler |
Yeni kampanya oluşturma gibi alanlarda sağlayıcıya özel araçlar da kullanıyoruz. Bunların şeması; bütçe, hedef, URL, yerleşim, içerik ve varlık seçimlerini açıkça ister.
Örneğin bir Meta önizleme isteğinin iş katmanındaki sadeleştirilmiş karşılığı şöyledir:
{
"brand": "pet_store",
"campaign_name": "Deneme Satış Kampanyası",
"daily_budget": "50.00",
"currency": "TRY",
"objective": "OUTCOME_SALES",
"conversion_location": "WEBSITE",
"optimization_event": "PURCHASE",
"delivery_status": "PAUSED"
}
Bu JSON, açıklayıcı bir iş isteğidir; doğrudan Meta’ya gönderilen tam API payload’ı değildir. Sunucu sayfa, Pixel, görsel, hedefleme ve diğer gerekli alanları doğrulanmış envanterden tamamlayarak gerçek payload’ı üretir. Yeni oluşturma aracında
PAUSED
değerini sunucu zorunlu tutar; istemci
ACTIVE
yazarak bunu geçersiz kılamaz.
Yönetim aracı için sınırsız
payload
,
endpoint
,
field_mask
veya
account_id
alanları açmak yerine açık işlem türlerini tanımlayın. Yeni bir yetenek, bu izin listesine yeni bir adaptör olarak eklenebilir.
15. Özel erişimi ve iki ayrı kimlik katmanını kurun
Reklam yöneten MCP için sunucuya kimin bağlandığı, tokenın hangi API yetkisine sahip olduğu kadar önemlidir. Sunucu, her çağrıda kullanıcıyı ve kullanıcının ilgili markaya erişimini kontrol etmelidir.
ChatGPT’ye kullanıcı hesabıyla bağlanacak korumalı HTTP MCP için, istemcinin desteklediği OAuth akışını ve MCP yetkilendirme keşfini kurun. Token türüne uygun yöntemle geçerlilik, yayıncı, hedef kaynak, süre ve gerekli kapsamlar doğrulanmalıdır. JWT kullanılıyorsa imza doğrulaması da yapılır. MCP’nin HTTP yetkilendirme çerçevesi bu ayrımı tarif eder. MCP yetkilendirme standardı.
Kendi OAuth katmanını kuran ekip, MCP istemcisinin kaynak ve yetkilendirme sunucusu metadatasını bulabildiğini, doğru dönüş adreslerini ve gereken PKCE akışını da test etmelidir. Yetkisiz istekte uygun 401 yanıtı ve yetkilendirme keşfi dönmeli; erişim tokenı yalnız hedef MCP için kabul edilmelidir. Bir Meta tokenını ChatGPT–MCP oturum tokenı olarak kullanmayın.
Sunucu tarafında uygulanacak kontroller:
- Kimliği doğrulanmış kullanıcıyı belirleyin.
- Kullanıcının uygulamaya erişebildiğini kontrol edin.
- Talep edilen markanın bu kullanıcıya açık olduğunu doğrulayın.
- Markanın sabit hesap eşleştirmesini okuyun.
- Sağlayıcı tokenının aynı hesapta geçerli olduğunu doğrulayın.
- İşlem kaydını aynı kullanıcıya bağlayın.
Kendi barındırdığınız sunucuda istemcinin gönderdiği
email
alanını kimlik kanıtı saymayın. Yönetilen bir barındırma sistemi doğrulanmış kimlik başlıkları sağlıyorsa, bu başlıkların dış isteklerden temizlenip güvenilir katmanda üretildiğini doğrulayın.
MCP endpoint’i için giriş zorunlu olabilir; gizlilik politikası ayrı bir açık sayfada durabilir.
robots.txt
,
noindex
veya tahmin edilmesi zor bir URL, kimlik doğrulamanın yerini tutmaz.
16. Önizleme ve insan onayı mekanizmasını geliştirin
Benim bu sistem için temel kuralım şu: hesapta değişiklik yaratacak işlem önce gösterilir, sonra ayrı bir onayla uygulanır. “Kampanya aç” şeklindeki ilk talep, eksik alanların doldurulduğu son planın onayı yerine kullanılmaz.
Plan kaydında şu bilgiler bulunur:
{
"plan_id": "SUNUCUDA_URETILEN_BENZERSIZ_KIMLIK",
"owner_id": "KIMLIGI_DOGRULANMIS_KULLANICI",
"brand": "pet_store",
"platform": "meta",
"state": "pending",
"expires_at": "KISA_SURELI_GECERLILIK_ZAMANI",
"review_digest": "ONIZLEMENIN_OZET_DEGERI",
"before": {},
"after": {},
"effects": []
}
Biz planları on dakika geçerli, sahibine bağlı ve tek kullanımlık tuttuk. Uygulamadan önce planın süresini, sahibini ve güncel hesap yapılandırmasını tekrar kontrol ediyoruz. Kullanıcı önizlemeyi gördükten sonra “Bu planı onaylıyorum” dediğinde yalnız o plan uygulanabiliyor.
İstemciden gelen
confirmed=true
, insan onayının alındığına ilişkin istemci beyanıdır. Sunucu bu bayrağı görerek bir insanın gerçekten hangi mesajı yazdığını kendi başına kanıtlayamaz. Bu nedenle hem istemci iş akışı hem sunucudaki sahiplik, süre ve değişmezlik kontrolleri birlikte gerekir.
Uygulama sırasında durumlar şu şekilde ilerler:
pending → applying → applied_verified
↘ failed
↘ outcome_unknown
outcome_unknown
, isteğin gönderilmiş olabileceği fakat sonucun doğrulanamadığı durumdur. Böyle bir işlem otomatik tekrarlanmaz. Önce bilinen nesne kimlikleri ve platformun güncel durumu okunur. Özellikle reklam oluştururken zaman aşımından sonra aynı isteği tekrar göndermek, kopya kampanya oluşturabilir.
Kampanya oluşturma, etkinleştirme ve bütçe artırma ayrı işlemler olarak kalmalıdır. Birinin onayı diğerine taşınmaz.
17. MCP üzerinden Meta satış kampanyası oluşturma
İlk Meta oluşturma senaryomuzu dar bir kapsamla kurduk: web sitesi satışları için bir kampanya, bir reklam seti, mevcut hesap görselini kullanan bir kreatif ve bir reklam. Yayın durumlarının tamamı kapalıydı.
Önce gerekli seçimleri toplayın
Önizleme hazırlamadan önce şunlar belirlenmelidir:
| Alan | Örnek seçim |
|---|---|
| Marka ve reklam hesabı | Yetkisi doğrulanmış evcil hayvan mağazası |
| Kampanya amacı | Satışlar /
OUTCOME_SALES
|
| Dönüşüm konumu | Web sitesi |
| Optimizasyon olayı | Purchase |
| Günlük bütçe | 50,00 TRY; reklam seti seviyesinde |
| Ülke ve yaş | Kullanıcının açıkça belirlediği ülke ve yaş aralığı |
| Yerleşim | Bu örnekte Facebook akışı |
| Sayfa ve Pixel | Aynı markanın doğrulanmış varlıkları |
| Görsel | Hesapta mevcut, seçilmiş görsel |
| Metin ve başlık | Tam içerik önizlemede gösterilir |
| Hedef sayfa | Markanın izinli HTTPS alan adı |
| Yayın durumu | Kampanya, set ve reklam
PAUSED
|
50 TL burada işleyişi anlatan bir örnektir. Sağlayıcı hesabın para birimine, optimizasyonuna ve minimum bütçe koşullarına göre isteği reddedebilir. Kampanyanın kapalı oluşturulması bu doğrulamaları ortadan kaldırmaz; sistem bütçeyi kendiliğinden yükseltmemelidir.
“Köpek sahipleri” gibi bir talebi de gerçek hedefleme seçimine dönüştürmek gerekir. Meta ilgi alanı aramasında dönen kimlik ve adı doğrulayın. Bir ilgi alanı sinyali, kullanıcının kesin olarak köpek sahibi olduğunu kanıtlamaz. Otomatik hedefleme ve genişleme davranışları kullanılıyorsa bunlar da önizlemede açıklanmalıdır.
API oluşturma sırası
Meta tarafında bu yapıyı şu bağımlılıklarla oluşturduk:
POST /act_{REKLAM_HESABI}/campaigns
→ campaign_id
POST /act_{REKLAM_HESABI}/adsets
→ campaign_id kullanılır
→ adset_id
POST /act_{REKLAM_HESABI}/adcreatives
→ sayfa, görsel, metin ve URL kullanılır
→ creative_id
POST /act_{REKLAM_HESABI}/ads
→ adset_id ve creative_id kullanılır
→ ad_id
Bu sıralama bizim geliştirdiğimiz tek görselli kampanya tarifinin işleyişidir. Oluşturma isteğinin önemli alanları sunucuda şu şekilde belirleniyordu:
Kampanya:
objective = OUTCOME_SALES
status = PAUSED
Reklam seti:
destination_type = WEBSITE
optimization_goal = OFFSITE_CONVERSIONS
promoted_object.pixel_id = doğrulanmış Pixel
promoted_object.custom_event_type = PURCHASE
daily_budget = onaylanan TRY bütçenin küçük para birimi karşılığı
status = PAUSED
Reklam:
adset_id = bu planda doğrulanmış set
creative = bu planda doğrulanmış kreatif
status = PAUSED
Kreatif bağımsız bir içerik nesnesidir; reklam gibi bir açma/kapama durumu taşıdığı varsayılmaz. Reklam kimliğiyle ilişkilendirilmesi ve ilgili reklamın kapalı olması kontrol edilir. Meta’nın resmî SDK’sı set ve reklam alanlarını ayrı nesneler olarak tanımlar. AdSet alanları, Ad alanları ve durumlar.
Doğrulama ve kısmi sonuç yönetimi
Önizlemede mümkün olan istekleri
execution_options: ["validate_only"]
ile kontrol ettik. Ancak bütün bağımlı set ve reklam akışının, henüz gerçek üst nesneler oluşmadan eksiksiz çalıştırıldığını iddia etmedik. Bizim önizlememiz kampanya ve kreatif için sağlayıcı doğrulaması, diğer alanlar için varlık ve giriş kontrolleri içeriyordu.
İnsan onayından sonra her aşamada oluşan kimlik kaydedildi ve nesne yeniden okundu. Meta’daki bu çok adımlı oluşturmayı tek atomik işlem olarak kabul etmedik. Örneğin kampanya ve set oluşup reklam aşaması başarısız olursa sonuç “kısmi” olarak kalır. Başarılı oluşan üst nesneler kapalı tutulur; otomatik silme veya yeni bir kopya oluşturma yapılmaz.
18. ChatGPT’ye Meta reklamı için nasıl talep verilir?
Başlangıç talebiniz ne kadar açık olursa sonradan varsayım doldurma ihtiyacı o kadar azalır. Ben şu biçimi tercih ediyorum:
Pet Store markası için “Deneme Satış Kampanyası” adında Meta web sitesi satış kampanyası hazırla. Purchase optimizasyonu kullan. Günlük bütçe reklam setinde 50 TL olsun. Türkiye, 18–65+, tüm cinsiyetler ve yalnız Facebook akışı için önizleme çıkar. Köpeklerle ilgili kullanılabilir ilgi alanını gerçek kimliğiyle doğrula. Seçeceğim mevcut görsel, metin ve koleksiyon URL’sini kullan. Önce tüm ayarları göster; ayrı onayımdan sonra kampanya, set ve reklamı kapalı oluştur.
Bu örnekteki ülke, yaş, cinsiyet ve yerleşim seçimleri kullanıcının verdiği seçimlerdir. Başka bir kampanyada aynı varsayılanlar otomatik uygulanmamalıdır. Özel reklam kategorileri veya hassas hedefleme gerektiren işlerde ayrıca uygun tasarım ve platform kuralları gerekir.
Asistan eksik görsel, Pixel, sayfa veya hedef URL varsa bunları istemeli ya da kullanılabilir seçenekleri listelemelidir. Son önizlemede kampanya adı, hesap, bütçe seviyesi, içerik, bağlantı, hedefleme ve tüm yayın durumları görünmelidir.
Ardından verilecek onay somut olmalıdır:
Gösterdiğin bu planı onaylıyorum. Kampanyayı, reklam setini ve reklamı günlük 50 TL set bütçesiyle, hepsi kapalı kalacak şekilde oluştur.
İşlem bittiğinde yalnızca bir başarı cümlesi yerine oluşan kampanya, set ve reklam kimlikleri ile API’den geri okunan durumlar dönmelidir. Sonradan yayına almak isterseniz aynı nesneler için yeni bir durum önizlemesi hazırlanır.
19. Google Ads Search kampanyası oluşturma
Google Ads tarafında önce standart Search kampanyasını ele aldık. Tam bir oluşturma planında bütçe, kampanya, reklam grubu, anahtar kelimeler ve duyarlı arama reklamı bulunur.
Search için karar verilecek alanlar
- Kampanyanın adı ve hedef müşteri hesabı.
- Günlük ortalama bütçe ve hesap para birimi.
- Teklif stratejisi, varsa hedef CPA veya ROAS.
- Kullanılacak dönüşüm hedefleri.
- Coğrafi hedefleme ve arama ağı ortakları seçimi.
- Reklam grubu adı ve anahtar kelimelerin eşleme türleri.
- Başlıklar, açıklamalar, hedef URL ve varsa görünen yollar.
- Gerekli negatifler ve bütün yayın nesnelerinin başlangıç durumu.
Örnek anahtar kelime seçimi
[köpek kıyafeti]
ise bunu API’de
EXACT
olarak göndeririz. Kullanıcı sıralı veya geniş eşleme istiyorsa bunlar
PHRASE
veya
BROAD
olarak ayrı tanımlanır.
RSA için en az üç başlık ve iki açıklama gerekir; üst sınırlar 15 başlık ve dört açıklamadır. Klasik metin sınırları başlıklarda 30, açıklamalarda 90 karakterdir. Platformun gerçek karakter sayımı ve politika doğrulaması son kontrol olarak uygulanmalıdır. RSA oluşturma rehberi.
Dönüşüm hedefini isimden varsaymayın
Kampanyaya “Satış” adı vermek, teklif stratejisinin yalnız satın alma olayına optimize olduğu anlamına gelmez. Sunucu etkin dönüşüm eylemlerini, primary durumlarını, kategori/kaynak hedeflerini ve hesabın varsayılanlarını okumalıdır.
Bizim yeni kampanya aracımız önce hesap varsayılanlarını tam gösteriyordu. Mevcut kapalı kampanyada Purchase kategori/kaynak hedefi seçimi ise ayrı bir işlem olarak geliştirildi. Böylece bir kampanyanın hedefini düzeltirken hesabın genel dönüşüm ayarları sessizce değiştirilmedi.
Search dil hedeflemesindeki güncel değişiklik
Güncel Google belgeleri manuel Search dil kriterlerinin kullanımdan kaldırıldığını; Search dil eşlemesinin reklam, hedef sayfa ve kullanıcı sinyalleriyle otomatik yapılacağını açıklıyor. PMax dil kriterlerinin Search dışı kanallardaki kapsamı ayrıdır. Google hedefleme ve dil kriterleri.
Bu nedenle kendi aracımıza yeni Search kurulumu için açık bir otomatik dil seçimi ekledik.
automatic_search_language_acknowledged
bizim aracımızın alanıdır; Google Ads API’nin standart alanı değildir. Sunucu bu seçimde manuel kampanya dil kriteri üretmez. Eski örnekleri kopyalarken API değişikliklerini kontrol etmek bu yüzden önemli.
Tek atomik oluşturma grafiği
Bağımlı Google kaynaklarını tek
GoogleAdsService.Mutate
isteğinde oluşturduk. Yeni kaynaklar arasında geçici kimliklerle ilişki kuruldu. Önce aynı grafik
validateOnly=true
ile test edildi; ayrı insan onayı sonrasında gerçek oluşturma çalıştırıldı.
{
"partialFailure": false,
"validateOnly": true,
"mutateOperations": [
{ "campaignBudgetOperation": { "create": {} } },
{ "campaignOperation": { "create": {} } },
{ "adGroupOperation": { "create": {} } },
{ "adGroupCriterionOperation": { "create": {} } },
{ "adGroupAdOperation": { "create": {} } }
]
}
Bu kısaltılmış grafik, işlem sırasını gösterir; boş
create
nesneleri çalıştırılacak payload değildir. Gerçek içerik onaylanan plandan üretilir.
partialFailure=false
seçimiyle desteklenen tek isteğin bütünlüğü korunur. İstekten sonra bağlantı koparsa “hiçbir şey oluşmadı” varsayımı yapılmaz; gönderilen işlemin sonucu ayrıca araştırılır. Google kaynak değiştirme işlemleri, kısmi hata davranışı.
20. Search ve Performance Max bütçelerini açık ayırın
“Günlük 50 TL ile Search ve PMax aç” talebinde toplam bütçe belirsizdir. Her kampanyaya 50 TL verilirse toplam 100 TL olur. Toplam bütçe 50 TL ise örneğin 25’er TL dağıtılması ayrıca seçilmelidir.
Örnek açık talep:
Pet Store için iki kampanya hazırla: Search ve PMax. Toplam günlük ortalama bütçe 50 TL olsun; her birine 25 TL ayır. Search’te [köpek kıyafeti] tam eşleme kullan. PMax için köpek kıyafeti görsellerini ve metinlerini seç. Hedef koleksiyon URL’sini, dönüşüm hedeflerini ve otomatik içerik seçeneklerini önce göster. Bütün yayın nesneleri onayımdan sonra kapalı oluşturulsun.
Bu örnek, bütçeyi iki ayrı kampanya planı olarak netleştirir. Planların ayrı uygulanması durumunda birinin başarılı, diğerinin başarısız kalabileceği de önizlemede belirtilmelidir. İki ayrı isteğin tek atomik işlem olduğu varsayılmamalıdır.
Para birimi dönüşümünü sunucuda doğru yapın
| Onaylanan tutar | Meta TRY küçük para birimi | Google Ads micros |
|---|---|---|
| 25,00 TL |
2500
|
25000000
|
| 50,00 TL |
5000
|
50000000
|
| 50,25 TL |
5025
|
50250000
|
Meta sütunu bu örnekte TRY içindir; tüm para birimlerine aynı ondalık varsayımı taşınmamalıdır. Google Ads’te bir para birimi birimi bir milyon micros karşılığıdır.
Tutarı metin olarak alıp doğrulanmış tam sayı dönüşümü yapın.
50
yazısını yanlışlıkla
50 micros
göndermek veya kuruş değerini TL gibi göstermek ciddi yapılandırma hatasıdır. Para birimini API’den okuyun ve insanın onayladığı birimle birlikte gösterin.
Günlük bütçenin platformdaki ortalama harcama davranışıyla gerçek bir ödeme tavanının aynı kavram olmadığını da belirtin. Kapalı oluşturulan yeni nesneler harcama başlatmaz; sonraki etkinleştirme ayrı bir işlem olmalıdır.
21. MCP üzerinden Performance Max kampanyası oluşturma
Performance Max’te Search’teki RSA yapısı yerine kampanya, öğe grubu ve ilgili varlık ilişkileri üzerinden ilerlenir. Google, uygun varlıkları kullanarak reklam bileşimleri oluşturur. Bu nedenle PMax isteğini yalnız “anahtar kelime ekle” biçiminde tasarlamak yeterli değildir. Performance Max kampanya oluşturma.
Bizim PMax önizlememiz şu seçimleri açık gösteriyordu:
- İşletme adı ve onaylı hedef URL.
- Başlıklar, uzun başlıklar ve açıklamalar.
- Hesaptaki mevcut yatay ve kare görseller.
- Logo ve gerekiyorsa diğer marka varlıkları.
- Seçilen mevcut video veya açık otomatik video kararı.
- Konum, uygun dil kapsamı, bütçe ve teklif stratejisi.
- Merchant bağlantısının kullanılıp kullanılmayacağı.
- Kullanılıyorsa Merchant hesabı, feed label ve ürün kapsamı.
Görselin yalnız ID’sinin bulunması yeterli değildir. Aynı hesaba ait olduğu, türü ve gerekli oran/boyut koşulları doğrulanmalıdır. Marka yönergeleri etkin bir hesapta işletme adı ve logo ilişkilerinin hangi seviyede kurulacağı da doğru ele alınmalıdır.
Katalogsuz ve Merchant bağlantılı kurulum
Katalogsuz PMax’te seçilen metin, görsel ve diğer varlıklarla ilerlenebilir. Merchant bağlantısı kullanılacaksa mevcut bağlantı ve seçilen ürün kapsamı ayrıca doğrulanır. “Köpek kıyafeti” talebi geldi diye bütün mağaza kataloğu kendiliğinden bağlanmamalıdır.
Bizim başlangıç tarifimiz Merchant kullanıldığında seçilen feed label içindeki tüm ürünler için açık onay istiyordu. Ayrıntılı ürün grubu ağacı ayrı bir geliştirme konusudur. İstenen kapsamı daraltan bir özellik henüz yoksa bunu önizlemede söylemek gerekir.
PMax hedef kitle sinyalleri veya arama temaları da Search anahtar kelimelerinin eş değeri değildir. Kullanılan MCP bunları desteklemiyorsa varmış gibi bir seçim yapılmamalıdır.
Oluşturma sonunda kampanya ve öğe grubu kapalı okunmalıdır. Bütçe nesnesi veya ham görsel varlığı için reklamın
PAUSED
durumunu aramak doğru bir kontrol değildir; kapanış denetimi yayın yapan nesne seviyelerinde uygulanır.
22. DSA, Shopping ve Demand Gen tariflerini ayrı geliştirin
Farklı Google Ads kampanya türlerinin ortak parçaları olsa da her biri kendi oluşturma kurallarına sahiptir. Aynı JSON’u yalnız kampanya türünü değiştirerek kullanmak güvenilir bir yöntem değildir.
DSA
Dinamik Arama Ağı Reklamları için alan adı, dinamik reklam dili, uygun dinamik reklam grubu ve açık web sayfası hedefleme kuralı gerekir. Başlık ve hedef sayfa seçiminde dinamik yapı kullanılır. Pozitif Search anahtar kelimesi veya kelime düzeyinde hedef URL, dinamik reklam grubuna aynı biçimde uygulanmaz. DSA oluşturma rehberi.
Biz DSA tarifinde alan adı ve
URL contains
benzeri açık kuralı önizledik. DSA negatifleri ise ayrı yönetim aracıyla kontrol edildi. Hangi sayfaların kapsandığı, hangi sorguların dışlanacağı ve kampanyanın kapalı kalacağı birlikte gösterildi.
Standard Shopping
Shopping kurulumu doğrulanmış Merchant bağlantısı, uygun ürün akışı ve geçerli ürün grubu yapısı ister. Ürün grubu kökü, teklif seçimi ve kampanya önceliği doğru kurulmalıdır. Kendi başlangıç tarifimiz tüm ürünleri içeren tek kök yapı kullandı; bu kapsam insan tarafından açıkça onaylandı. Standard Shopping rehberi.
Shopping’de ürün akışının dili önemlidir. Bizim API doğrulamamız kampanya dil kriterini kabul etmediği için bu alanı tarife eklemedik. Merchant ürünlerinin kendisi, ürün fiyatları veya mağaza ayarları reklam oluşturma işleminin parçası olarak değiştirilmedi.
Demand Gen
Demand Gen için varlık gereksinimleri, izleyici ilişkisi, hedefleme seviyesi ve minimum bütçe kontrolleri ayrı ele alındı. Tarifimiz mevcut hesaba ait izleyici ve mevcut uygun görselleri kullanıyordu. Optimize hedefleme seçimi ve varsayılan kanal kapsamı kullanıcıya gösterildi. Demand Gen oluşturma rehberi.
Bu üç tarifte ortak onay motorunu kullandık; sağlayıcı grafikleri farklı adaptörler üretti. Böylece genel güvenlik akışı korunurken her kampanya türü kendi gerçek API kurallarıyla doğrulandı.
23. Mevcut kampanyaları düzenleme araçlarını tamamlayın
Yeni kampanya oluşturmak, günlük kullanımın yalnız bir bölümüdür. Reklam hesabı açıldıktan sonra grupları yönetmek, reklam metnini değiştirmek veya kelimeye özel URL eklemek de gerekir.
Marka Veri Merkezi’nde zamanla şu alanları ekledik:
| İşlem grubu | Örnek yetenek |
|---|---|
| Kampanya | Durum, bütçe, uygun teklif ve hedefleme değişiklikleri |
| Reklam grubu | Yeni kapalı grup, ad/durum ve uygun teklif alanları |
| RSA | Başlık/açıklama, sabitleme, URL, durum ve reklam ilişkisi kaldırma |
| Pozitif kelime | Ekleme, açık ID ile durum/URL/izleme ayarları ve çıkarma |
| Negatifler | Kampanya, grup, paylaşılan liste ve hesap kapsamı |
| Öğeler | Desteklenen metin/bağlantı varlıkları ve mevcut öğe ilişkileri |
| Meta | Mevcut kampanya, set veya reklam için desteklenen durum/bütçe işlemleri |
Özellikle Search’te üst kampanyanın etkin olması yeterli değildir. Reklam grupları, reklamlar ve pozitif kelimeler kendi durumları nedeniyle kapalı kalabilir. Kullanıcı “Yayını başlat” dediğinde hangi seviyelerin değişeceği açıkça belirlenmelidir.
Açık bir üst kampanya altında grup etkinleştirmek, zaten etkin olan alt reklamları da yayın koşullarına yaklaştırabilir. Bu etki önizlemede gösterilmelidir. Google’ın politika onayı ve diğer uygunluk koşulları ise yapılandırma durumundan ayrı değerlendirilir.
Anahtar kelimeye nihai URL ekleme
Kelimeye özel URL verilecekse önce mevcut kelime, reklam grubu ve varsa mevcut URL override’ı okunur. Sonra hangi kelimenin hangi sayfaya gideceği insan tarafından açıkça seçilir.
Örneğin genel ürün kelimesi koleksiyona, kadın ürün kelimesi ilgili alt koleksiyona yönlendirilebilir. Sunucu izinli marka alan adını doğrular; mobil URL ve izleme ayarlarını gereksiz yere silmez. URL değiştirme talebine otomatik etkinleştirme eklenmez.
Başarılı bir bağlantı kontrolü sırasında kullanılan örnek URL, sonradan bütün kelimelere uygulanacak onaylı hedef olarak kabul edilmemelidir.
24. Negatif anahtar kelime yönetimini dört seviyede kurun
Negatifler farklı kapsamlar taşır: reklam grubu, kampanya, paylaşılan liste ve hesap. Bir kelimenin nerede bulunduğunu bilmeden aynı metni her yere eklemek, gereksiz tekrar veya beklenmeyen trafik kaybı yaratabilir.
Örnek giriş:
{
"operation": "google_negative_keywords",
"brand": "pet_store",
"level": "campaign",
"action": "add",
"campaign_id": "ONCEDEN_DOGRULANMIS_KAMPANYA",
"keywords": [
{ "text": "ücretsiz", "match_type": "BROAD" },
{ "text": "ikinci el", "match_type": "PHRASE" },
{ "text": "köpek kıyafeti yapımı", "match_type": "EXACT" }
]
}
Bu, bizim genel yönetim aracımızın temsili iş isteğidir. Gerçek şemada kampanya kimliği doğrulanmış sayısal değer olmalıdır. Eşleme türü açıkça saklanır; metindeki köşeli parantez veya tırnak görünümüne güvenerek belirsiz bir çıkarım yapılmaz.
Önizleme hazırlarken sunucu:
- Hedef kampanyanın mevcut negatiflerini okur.
- Reklam grubu negatiflerini ayrı kapsamda listeler.
- Kampanyaya bağlı paylaşılan listeleri okur.
- Hesap düzeyindeki etkin negatif listesini kontrol eder.
- İstek içindeki ve mevcut kapsam içindeki tekrarları bulur.
- Pozitif kelimelerle olası metin örtüşmelerini uyarı olarak gösterir.
- Eklenecek, atlanacak veya kaldırılacak her öğeyi eşleme türüyle sunar.
Hesap negatiflerinde doğru liste türünü ve
CustomerNegativeCriterion
ilişkisini kullanmak gerekir. Normal kampanya paylaşılan listesiyle hesap listesini aynı yapı saymayın. Paylaşılan listeye yapılacak değişikliğin bağlı diğer kampanyaları da etkileyebileceği tam gösterilmelidir. Google paylaşılan set ve negatif listeleri.
Örneğin 20 kelimelik bir DSA denemesinde kampanya, grup, paylaşılan liste ve hesap kapsamını birlikte kontrol edebilirsiniz. Önce sağlayıcının değişikliksiz doğrulamasını çalıştırın; gerçek ekleme için ayrıca insan onayı alın. Pozitif kelimelerle olası örtüşmeleri de sessizce elemek yerine kullanıcıya uyarı olarak gösterin.
25. GA4, Search Console ve Merchant Center’ı ekleyin
MCP’nin reklam yönetiminin yanında analiz yapabilmesi için diğer kanalları da ayrı okuyucular olarak bağlayabilirsiniz. Her kanal için hesap, kapsam ve metrik tanımlarını koruyun.
GA4
- Google Analytics Data API’yi uygun projede etkinleştirin.
- Kullanılacak kimliği belirleyin.
- Doğru GA4 mülküne gerekli görüntüleme erişimini verin.
- Mülk kimliğini markayla eşleştirin.
- Para birimi ve saat dilimini okuyun.
- Küçük bir trafik ve satın alma raporuyla doğrulayın. GA4 Data API başlangıç rehberi.
Yeni ve geri gelen kullanıcı satışlarını ayırırken tanımı açık tutun. Biz kaynak/aracı kırılımında
newVsReturning=new/returning
ve
eventName=purchase
koşullarını birlikte kullandık. Bu, önceki oturum geçmişine göre bir ziyaretçi sınıflamasıdır; ilk kez alışveriş yapan müşteri ile tekrar sipariş veren müşteri ayrımının kendiliğinden karşılığı değildir.
İki dönem için aynı filtreleri uygulayın. Satın alma olaylarına filtreli gelirle genel net gelir raporunun aynı sonucu vermesi beklenmemelidir; iadelerin filtre kapsamı ayrıca düşünülmelidir.
API’den gelen ölçüm verisini yorumlarken GA4 ile e-ticaret paneli arasındaki ciro farkını da aynı kapsamda karşılaştırmak gerekiyor. Olay ve parametre tutarlılığı için feed ve dataLayer fiyat kontrolündeki yaklaşımı kullanabilirsiniz.
Search Console
- İzin verilen Google hesabının doğru mülke eriştiğini kontrol edin.
- Alan adı mülkü ile URL-prefix mülkünü ayırt edin.
- Tam mülk değerini markaya kaydedin.
- Raporlama için uygun salt okunur OAuth kapsamını kullanın.
- Toplam, tarih, sorgu, sayfa, ülke ve cihaz raporlarını ayrı deneyin.
- Son tarihlerdeki eksik veri ve anonim sorgu kapsamını rapora ekleyin. Search Console yetkilendirme rehberi.
Search Console ekranında erişim almak ile MCP’de doğru OAuth kimliğiyle o mülke erişmek iki ayrı kontroldür. Yetki yeni verildiyse bağlantının kullandığı hesabı doğrulayın.
Merchant Center
- Merchant API’yi uygun Cloud projesinde etkinleştirin.
- İlgili Merchant hesabını ve kullanıcının rolünü kontrol edin.
- Gerekli OAuth iznini açıkça değerlendirin.
- Cloud projesi için gerekli bir defalık geliştirici kaydını yetkili kişiyle tamamlayın. Çoklu müşteri yapısında aynı projeyi her alt hesaba tekrar kaydetmeye çalışmayın; uygun ana hesap ilişkisini kontrol edin. Merchant geliştirici kaydı.
- Hesap, ürün, sorun ve performans okuyucularını ayrı uygulayın.
- Ürün verisini değiştiren yöntemleri raporlama MCP’sine açmayın.
Bizim Merchant bağlantımızda kullanılan kapsam ayrı bir salt okunur OAuth seçeneği sunmadığı için izin ekranı daha genişti. Kullanıcı bu kapsamı ayrıca onayladı; uygulamanın sunduğu araçlar ise raporlama yöntemleriyle sınırlandı. OAuth ekranındaki kapsam ile MCP’nin gerçekten sunduğu işlemleri birlikte incelemek gerekir.
Meta, Google Ads, GA4 ve Merchant’ın ilişkilendirdiği gelirleri doğrudan toplayıp “toplam satış” diye sunmayın. Her kanal farklı ölçüm ve ilişkilendirme mantığı kullanabilir.
26. Büyük raporları bütün sayfalarıyla toplayın
Bir aracın ilk 100 veya 500 satırı döndürmesi normal bir sayfa boyutu olabilir. Analiz ilk sayfayla bitiriliyorsa veri eksik kalır. Sunucu ve istemci, sayfalamanın ne zaman tamamlandığını açıkça bilmelidir.
Google Ads sorgularında sağlayıcının
nextPageToken
değeri takip edilir; sonraki sayfaya geçerken sorgu değiştirilmez. Büyük sonuçlar için sayfalama, istemci kitaplığı desteği veya uygun akış yaklaşımı kullanılabilir. Google Ads sayfalama rehberi.
Biz büyük raporlar için bir iş modeli geliştirdik:
start → marka, rapor ve tarih kapsamını belirle
continue → sonraki sağlayıcı sayfalarını topla
status → eksik/tam durumunu göster
rows → saklanan ham parçaları getir
aggregate → tamamlanmış bütün veri üzerinden toplam/sıralama yap
Raporlar örtüşmeyen aylık dilimlere ayrıldı. Arama terimlerinde klasik Search ve PMax’in uygun farklı görünümleri birleştirildi; PMax verisi Search kelime veya grup segmentlerine zorlanmadı. Toplamlar yalnız ekranda gösterilen ilk parçadan hesaplanmadı.
“Tüm zamanlar” isteğinde önce erişilebilir tarihsel etkinlik kapsamı bulundu. Google’ın eski tarihler için ayrıntı ve saklama sınırları dikkate alındı; eski kısmi ay sorguları uygun biçimde ele alındı. Platformun saklamadığı veya gizlediği sorguların geri getirildiği iddia edilmedi. Google tarih aralıkları ve tarihsel sorgu kuralları.
Örneğin 41 aylık bir raporun API’de görünen kısmı 177 binden fazla satıra ulaşıyorsa, bu hacmi tek seferde sohbet bağlamına taşımak yerine sunucuda toplulaştırabilirsiniz. Kullanıcı böylece toplanan tüm veri üzerinden sıralama isteyebilir; gerektiğinde ham parçalar da ayrıca incelenebilir.
Eksik metrik ile gerçek sıfır ayrımı korunmalıdır. API satın alma değerini döndürmüyorsa bunu
0
kabul ederek ROAS üretmeyin. Arama terimi toplamıyla kampanya toplamı arasındaki fark da bütünüyle gizli sorgulara bağlanmamalıdır; referans toplamında arama dışı trafik bulunabilir.
27. MCP sunucusunu barındırın ve ChatGPT’ye bağlayın
Yerel geliştirme tamamlandıktan sonra ChatGPT’nin erişebileceği bağlantı yöntemi seçilir. Güncel OpenAI belgelerinde HTTPS üzerinden uzak sunucu veya özel sunucular için Secure MCP Tunnel seçenekleri bulunuyor. Araç adları, açıklamaları, şemaları ve gereken kimlik doğrulama keşfi çalışmalıdır. ChatGPT bağlantı ve test rehberi.
Biz kendi bağlantımızı Sites üzerinde, aynı özel uygulama ve eklenti kimliğiyle barındırdık. Bu yöntemde kaynak, çalışma zamanı sırları, veri tabanı ve kullanıcı erişimi ayrı yönetildi.
Sites üzerinden ilerleyen ekip için yayın sırası
- Mevcut projeyi güncelliyorsanız aynı Site kaynağını ve kimliğini açın.
- MCP endpoint’ini ve gerekli depolama bağlarını tanımlayın.
- Gerçek tokenları kaynak dosyalara eklemeden runtime secret alanına kaydedin.
- Plan ve rapor tabloları için sınırlı migration hazırlayın.
- Birim testleri, tip kontrolü ve üretim derlemesini tamamlayın.
- Kaynak ve dağıtım paketinin aynı sürümden geldiğini doğrulayın.
- Yetkili kişinin yayın onayıyla özel sürümü yayımlayın.
- Dağıtımın gerçekten başarılı olduğunu kontrol edin.
- Paylaşımın hâlâ yalnız hedef kullanıcı veya ekibe açık olduğunu doğrulayın.
Başka bir barındırma ortamında aynı ihtiyaçları o ortamın araçlarıyla karşılayabilirsiniz: HTTPS veya uygun tünel, güvenilir kimlik doğrulaması, secret yönetimi, veri tabanı, kayıt ve izleme.
ChatGPT’ye ekleme
Hesabınızın desteklediği özel MCP bağlantı akışında sunucu adresini veya tüneli tanımlayın. Sunucu adı, açıklama ve kimlik doğrulama bilgilerini tamamlayın; keşfedilen araçları inceleyin. Uygulamayı kurup bağladıktan sonra yeni bir sohbette
@
ile seçerek küçük bir okuma isteği deneyin. OpenAI eklenti başlangıç akışı.
Ben ilk denemede “Bağlantıları ve kullanabildiğin işlemleri göster” gibi düşük etkili bir istek kullanıyorum. Ardından doğru markanın kampanya envanterini okuyorum. Bu kontroller geçtikten sonra önizleme testine geçiyorum.
ChatGPT hesabı, çalışma alanı politikaları ve ürün erişimi hangi bağlantı seçeneklerinin sunulduğunu etkileyebilir. Ekranınızda bulunmayan bir menüyü varsaymak yerine hesabınızdaki desteklenen akışı kontrol edin.
28. Yeni araçların ChatGPT’de görünmesini doğrulayın
Kurulum sırasında en çok zaman kaybettiren konulardan biri, kaynakta bulunan yeni işlevin mevcut sohbette henüz görünmemesiydi. Bu yüzden araç keşfini ayrı bir kabul adımı haline getirdik.
Her yeni sürümde şu üç katmanı kontrol ediyoruz:
| Katman | Kontrol |
|---|---|
| Kaynak | Araç gerçekten kayıtlı mı, şeması doğru mu? |
| Üretim sunucusu | Doğru sürüm ve
tools/list
yayımlanıyor mu? |
| ChatGPT istemcisi | Aynı araçlar içe aktarılmış ve çağrılabilir mi? |
Sunucudaki
get_connector_manifest
benzeri bir araç sürüm, isimler ve şema parmak izi döndürebilir. Bu bilgi sunucunun durumunu gösterir. İstemcinin mevcut sohbetine hangi araçların yüklendiği ayrıca kontrol edilmelidir.
Güncelleme sonrası akış:
- Yeni sunucu sürümünü yayımlayın.
- ChatGPT’de bağlantı ayarlarını açın.
- Araçları yenile / Refresh işlemini çalıştırın.
- Uygulama ayrıntılarında yeni araçların adlarını ve sayısını görün.
- Yeni bir sohbette etkilenen okuma aracını gerçekten çağırın.
- Sonucu, hata davranışını ve hesap kimliğini doğrulayın.
OpenAI’nin bağlantı rehberi de metadata değişikliklerinden sonra yenileme ve yeni sohbette test adımlarını tarif ediyor. Aynı rehberdeki bu akışı kullanıyoruz; sunucunun başarılı dağıtılmasını tek başına istemci testi olarak kaydetmiyoruz.
29. Test, hata yönetimi ve kabul listesi
İlk testin gerçek reklam harcamasını başlatması gerekmez. Sıra; okuma, değişikliksiz doğrulama, kapalı oluşturma ve sonuç geri okuma şeklinde kurulabilir.
| Test | Beklenen davranış |
|---|---|
| Yanlış marka veya hesap | Sağlayıcı değişikliği öncesinde reddedilir |
| Eksik sayfa/Pixel erişimi | Gerçek izin eksiği açıklanır |
| Eksik veya geçersiz metin | Önizleme aşamasında durur |
| Düşük bütçe reddi | Bütçe otomatik yükseltilmez |
| Geçmiş plan | Yeni önizleme istenir |
| Başka kullanıcıya ait plan | Uygulanmaz veya okunmaz |
| Aynı planı iki kez uygulama | İkinci oluşturma gönderilmez |
| Zaman aşımı | Sonuç belirsiz kaydedilir, otomatik tekrar yapılmaz |
| Geri okumada farklı ayar | Başarı iddiası üretilmez |
| Eksik rapor sayfası | Veri tam diye sunulmaz |
| Araç güncellemesi | Gerçek istemci listesi ve çağrı test edilir |
Google Ads’te
validateOnly
, değişiklikleri uygulamadan isteğin kontrol edilmesini sağlar. Bu sonuç politika onayı, reklamın yayınlanacağı veya gelecekteki bir isteğin aynı koşullarda kabul edileceği garantisi olarak sunulmamalıdır.
Meta’da çok adımlı oluşturma sırasında kalan nesneleri ve Google’da sonucu belirsiz bir atomik isteği doğru kaydetmek gerekir. Uygulama yanıtında platformun özel hata metinlerini kontrolsüz aktarmak yerine güvenli hata sınıfı ve işlem kimliği dönün. Token veya kimlik anahtarının loglara sızmasını ayrıca kontrol edin.
Genişletilmiş bir sürümde yerel testleri, tip kontrolünü ve üretim derlemesini birlikte çalıştırın. Gerçek API’de okuma ve değişikliksiz doğrulama senaryolarını da test kaydına ekleyin. Gerçek nesne oluşturma ile yalnız doğrulama yapılan testleri ayrı gösterin; test sayısını ve sonuçlarını gerçekten çalıştırılan kontrollerin kaydına dayandırın.
30. En sık görülen sorunlar ve çözüm sırası
Hesap panelde var, API’de görünmüyor
Önce kullanılan teknik kimliği kontrol edin. Meta’da kişisel profil, işletme ortağı ve sistem kullanıcısı farklı erişimlere sahip olabilir. Google’da OAuth kullanıcısı veya service account, reklam hesabı erişimi ve yönetici hesap bağlamı birlikte incelenmelidir.
Kampanyalar okunuyor, yeni reklam oluşturulamıyor
Raporlama erişimini, yönetim kapsamını ve araç iş mantığını ayrı kontrol edin. Meta’da sayfa, Pixel ve kreatif erişimi eksik olabilir. Google tarafında yalnız okuma rolü, yanlış proje erişim seviyesi veya eksik oluşturma adaptörü bulunabilir.
Kampanya etkin, reklamlar hâlâ kapalı
Grup/set, reklam ve uygun yerlerde kelime durumlarını okuyun. Hangi nesnelerin açılacağı için yeni önizleme hazırlayın. Bütçeyi veya diğer kampanyaları bu talebe eklemeyin.
Google üretim hesabında yetki hatası
Cloud projesinin üretim erişimini, API kimliğinin hedef hesaptaki yetkisini ve varsa
login-customer-id
bağlamını kontrol edin. Güncel API belgelerinde test erişimli projenin üretim çağrısı için özel hata sınıfı tanımlanıyor. Google Ads yaygın hatalar.
Reklam hesabı aktif durumda değil
Ödeme, kısıtlama veya tamamlanmamış hesap kurulumu sağlayıcı işlemini engelleyebilir. Bunu token sorununa indirgemeyin. Sunucu güncel hesap durumunu göstermeli; ödeme veya hesap açma işlemini reklam oluşturma talebinin içine kendiliğinden katmamalıdır.
API nesne oluşturdu, geri okuma adı beklenenden farklı
Biz kreatif veya bütçe adının sağlayıcı tarafından türetilmesi gibi durumlarla karşılaştık. Çözüm, her farklı adı kabul etmek değildi. Gerçek nesne kimliği, ilişkiler, tutar ve durum doğruysa yalnız belgelenen, dar bir ad normalizasyonu kabul edildi. Yanlış bütçe veya farklı nesne ilişkisi aynı kontrolle gizlenmedi.
Yeni özellik sunucuda var, sohbet kullanamıyor
Önce gerçek araç kataloğunu kontrol edin. Metadata yenileme ve yeni sohbet testi yapın. İşlevin MCP’de eksik olmasıyla sağlayıcı API’sinin o işlemi desteklememesi farklı nedenlerdir; çözüm bunlardan hangisinin geçerli olduğuna göre seçilmelidir.
31. Tokenlar, maliyetler ve bakım
MCP kurulumunda “token” kelimesi iki farklı anlamda kullanılır. Meta veya Google erişim tokenı, API kimlik doğrulamasında kullanılır. Dil modelindeki token ise metin işleme birimidir. Birinin süresini veya maliyetini diğeri üzerinden yorumlamayın.
Maliyetleri ayrı izlemek daha anlaşılırdır:
- ChatGPT hesabı ve bu hesapta sunulan özellikler.
- MCP sunucusu, veri tabanı, kayıt ve depolama kullanımı.
- Sunucu ayrıca bir model API’si çağırıyorsa o API kullanımı.
- Reklamların etkinleşmesinden sonra oluşan platform harcaması.
- Kullanılan hizmetlerin kota ve erişim sınırları.
Bizim Meta token üretim adımımızda uzun süre seçimi için ücretli bir paket satın alınmadı. Bu, sunucu veya reklam harcamasının ücretsiz olduğu anlamına gelmez. Aynı şekilde deterministik API işlemleri yapan MCP sunucusunda ayrıca OpenAI API çağrısı yoksa sunucu tarafında bir model çağrısı zorunlu değildir.
Bakımda token geçerliliği, kaldırılan varlık erişimleri, API sürümleri, araç şemaları ve sağlayıcı hata oranları izlenmelidir. Bu izleme ayrı bir okuma akışı olabilir; hata görüldüğünde reklamı veya bütçeyi otomatik değiştirmesi gerekmez.
Yeni çalışan eklenmesi, müşterinin ajans değiştirmesi veya iş ilişkisinin bitmesi durumlarında insan hesabı erişimi, sistem kullanıcısı ataması ve uygulama erişimleri birlikte gözden geçirilmelidir. Ajansın başka bir kurulum yapması gerekiyorsa kendi uygulamasını, Cloud projesini ve gizli kimliklerini üretmelidir; sizin tokenlarınızı kopyalayarak başlamamalıdır.
32. Sık sorulan sorular
ChatGPT üzerinden doğrudan Meta reklamı oluşturabilir miyim?
Uygun Meta yetkileri ve reklam oluşturma araçları geliştirilmiş bir MCP bağlantısı varsa desteklenen kampanyaları hazırlatabilirsiniz. Sunucu hesap ve varlıkları doğrulamalı, tam önizleme üretmeli ve ayrı onaydan sonra gerçek oluşturma yapmalıdır. İlk kurulumda bütün yayın nesnelerini kapalı oluşturmak sonucu harcama başlatmadan incelemeyi kolaylaştırır.
ChatGPT’nin reklam hesabıma giriş yapması gerekiyor mu?
API tabanlı kullanımda reklam platformuna sunucu tarafındaki yetkili teknik kimlik bağlanır. ChatGPT kullanıcısı da MCP’ye erişmek için ayrı doğrulanır. İlk yetki ve uygulama kurulumunda platform ekranları kullanılabilir; günlük araç çağrıları API üzerinden yürür.
Kendi Business Manager’ımı açarak müşterilerden bağımsız ilerleyebilir miyim?
Uygulamanızı ve sistem kullanıcınızı kendi işletmenizde tutabilirsiniz. Müşteriler yine kendi varlıklarının sahibidir ve işletmenize gerekli erişimi paylaşır. Bağımsız işletme yapısı, müşteri onayını veya varlık erişimini ortadan kaldırmaz.
Süresiz Meta tokenı gerçekten hiç yenilenmez mi?
Normal son kullanma tarihi olmayan token, her gün elle yenileme ihtiyacını azaltabilir. Erişim iptali, güvenlik değişikliği veya uygulama/varlık durumu nedeniyle yeniden bağlantı gerekebilir. Tokenın geçerliliğiyle erişebildiği varlıklar düzenli olarak kontrol edilmelidir.
Gizlilik politikası açık olursa MCP de herkese açılır mı?
Politika sayfası ile yönetim endpoint’i ayrı kaynaklardır. Politika metni herkese açık dururken MCP kullanıcı doğrulaması ve izin listesiyle özel tutulabilir. Açık politika sayfasına token, hesap raporu veya yönetim aracı yerleştirilmemelidir.
Google Ads için hâlâ Developer Token almam gerekiyor mu?
Bu rehberin 24 Ekim 2026 güncellemesinde Google Ads API erişimi Cloud projesinden yönetiliyor. Yeni başvuruda güncel Google Ads API Overview akışını izleyin. Eski kod veya rehberlerdeki Developer Token alanı, bugünkü yeni başvuru adımlarıyla aynı değildir.
PMax’e Search anahtar kelimelerini aynen ekleyebilir miyim?
PMax’in varlık, sinyal ve kampanya yapısı Search reklam grubundan farklıdır. Kullanılan MCP’nin desteklediği sinyal veya arama teması işlevlerini ayrıca kontrol edin. Search kelimesinin eklendiğini söyleyerek PMax’te olmayan bir hedefleme sonucu vaat edilmemelidir.
“Reklamları kapalı oluştur” demek harcamayı engeller mi?
Yeni yayın nesnelerinin gerçekten
PAUSED
oluştuğu API’den doğrulanırsa bu nesnelerden yayın başlamaz. Kapalı durum plan metninde yazdığı için varsayılmamalıdır. Mevcut başka kampanyaların harcaması ve sonraki etkinleştirme işlemleri ayrı konulardır.
Reklam oluşturma aracı olmayan bir MCP’ye sadece yazarak reklam açtırabilir miyim?
Model yalnız erişebildiği araçları kullanabilir. Yeni reklam oluşturma işlemi sunucuda geliştirilmiş ve istemciye sunulmuş olmalıdır. Eksik araç, yetki ve gerçek API sınırlaması ayrı ayrı teşhis edilir.
Bu bağlantı sınırsız API erişimi sağlar mı?
Her platformun izin, kota, saklama ve ürün sınırları vardır. MCP bu sınırları kaldırmaz. İşe uygun araçları bir araya getirir, yetkili işlemleri çalıştırır ve erişilemeyen veriyi veya desteklenmeyen alanı açıkça raporlar.
Kodsuz araçlarla aynı sistemi kurabilir miyim?
Yönetilen barındırma ve yapay zekâ destekli geliştirme araçları bazı adımları kolaylaştırabilir. Hesap sahipliği, gerekli API izinleri, marka izolasyonu, insan onayı, hata yönetimi ve gerçek testler yine kurulmalıdır. Bağlantıda “kuruldu” yazması, reklam yönetimi kabul testlerinin tamamlandığı anlamına gelmez.
33. Kendi ajansınızda uygulama sırası
Başlangıç için tek bir izinli marka ve dar bir kampanya tarifi seçin. Önce mevcut hesap ve varlıkları okuyun. Ardından eksiksiz bir önizleme hazırlayın, sağlayıcı doğrulamasını çalıştırın ve insan onayından sonra kapalı oluşturma yapın. Sonucu gerçek kimlikler ve API geri okumalarıyla kontrol edin.
Bu akış oturduğunda aynı plan ve onay motorunu yeni araçlara taşıyabilirsiniz: negatif yönetimi, mevcut kampanya ayarları, reklam metni, rapor toplama ve diğer yetkili kanallar. Her yeni araçla birlikte gerçek kapsamı, istemci keşfini ve hata davranışını test edin.
Marka Veri Merkezi’ni geliştirirken en yararlı yaklaşım bu oldu. İstekleri tek bir sohbetten verebildim; hesap, varlık, onay ve işlem sonucu ise sunucuda açık kontrollerle takip edildi. MCP üzerinden reklam oluşturmayı günlük iş akışında kullanılabilir hale getiren yapı bu kontrollerin birlikte çalışmasıdır.








