Yapay Zekâ ile Google Ads Negatif Anahtar Kelime Otomasyonu

Yapay Zekâ ile Google Ads Negatif Anahtar Kelime Otomasyonu

FlowHunt, Google Ads negatif anahtar kelime yönetimini yapay zekâ ile otomatikleştirerek işletmelerin maliyetlerini azaltmasına, reklam harcamasını optimize etmesine ve kampanya sonuçlarını zahmetsizce iyileştirmesine yardımcı olur.

İstenmeyen Anahtar Kelime Harcamasını Anlamak

İstenmeyen anahtar kelime harcaması, reklamlarınız sattığınız şeyle eşleşmeyen arama sonuçlarında göründüğünde gerçekleşir. Bu durum, her alakasız tıklamanın satışa yol açmadan para harcamanıza neden olmasıyla bütçenizi hızla tüketebilir. Örneğin, lüks deri ayakkabı satan bir şirket, “ayakkabı satın al” gibi geniş anahtar kelimeleri hedeflerse, sandalet veya spor ayakkabı ile ilgilenen kişilerin tıklamalarını çekebilir ki bunlar sundukları ürünler değildir. Anahtar kelime hedeflemesindeki bu uyumsuzluk, gereksiz reklam harcamasına ve daha düşük YG’ye yol açabilir. İşletmelerin bu kavramı kavraması, gereksiz mali kayıplardan kaçınmak ve bütçelerini doğru anahtar kelimelere odaklamak için gereklidir.

Negatif Anahtar Kelimelerin Rolü

Negatif anahtar kelimeler, her Google Ads kampanyasında temel bir araçtır. Reklamverenlerin, belirli arama terimlerinin reklamlarını tetiklemesini engellemesine olanak tanır ve böylece yalnızca ilgili aramaların reklam görüntülemeye yol açmasını sağlar. Örneğin, “ucuz” veya “indirimli” gibi negatif anahtar kelimeler kullanmak, deri ayakkabı şirketinin premium ürünlerle ilgilenmeyen kişilerden gelen tıklamaları engellemesine yardımcı olabilir. Negatif anahtar kelimelerden dikkatlice oluşturulmuş bir listeyle, işletmeler reklam harcamalarını optimize edebilir, istenmeyen tıklamaları azaltabilir ve kampanyalarının genel etkinliğini artırabilir.

Anahtar Kelime Yönetiminde Yapay Zekâ Kullanımı

Yapay Zekâ (YZ), reklamverenlerin Google Ads kampanyalarını yönetme şeklini değiştiriyor. FlowHunt gibi YZ araçları, anahtar kelime gruplandırması için tasarlanmıştır ve işletmelerin ilgili anahtar kelimeleri daha etkili bir şekilde belirlemesine ve organize etmesine yardımcı olur. Bu otomasyon, hem olumlu hem de negatif anahtar kelimeleri bulma sürecini basitleştirir ve kampanya yönetiminde manuel işi azaltır. YZ destekli anahtar kelime yönetimi, performans verilerine göre gerçek zamanlı değişikliklere imkân tanıyarak reklam harcamasının sürekli olarak en iyi YG için optimize edilmesini sağlar.

İstenmeyen Anahtar Kelime Harcamasını Azaltma Stratejileri

İstenmeyen anahtar kelime harcamasını azaltmak için işletmeler şu stratejileri benimsemelidir:

  • Anahtar kelime listenizi düzenli olarak güncelleyin, piyasa trendlerine ve tüketici ilgisine göre.
  • Güçlü bir negatif anahtar kelime stratejisi uygulayın; hariç tutmak istediğiniz terimleri sürekli araştırıp güncelleyin.
  • Kampanyaları performans verilerine göre izleyin ve ayarlayın.
  • Satışa yol açan ve açmayan anahtar kelimeleri analiz edin; hedeflemeyi netleştirip reklam harcamasını maksimize edin.

Vaka Analizi: PostAffiliatePro’nun Yaklaşımı

PostAffiliatePro, aylık reklam harcamalarında sorunlar yaşıyor ve Google Ads kampanyalarından istedikleri YG’yi elde etmekte zorlanıyordu. Bu sorunu çözmek için yapay zekâ kullanmaya karar verdiler. YZ destekli araçları entegre ederek, anahtar kelime yönetimi süreçlerini otomatikleştirdiler ve hem olumlu hem de negatif anahtar kelimeleri daha doğru bir şekilde belirlediler. Bu değişiklik, reklam harcamalarını optimize etmelerine, maliyetleri önemli ölçüde düşürmelerine ve kampanya verimliliğini artırmalarına olanak tanıdı. Deneyimleri, anahtar kelime harcamasını etkin bir şekilde yönetmek için YZ teknolojisini kullanmanın faydalarını gösteriyor. Her yeni anahtar kelimenin analizi, anahtar kelimenin ilk gösteriminden itibaren bir saat içinde gerçekleştiriliyor. Hız, negatif anahtar kelimeleri, ziyaretçiler Google Reklamına tıklamadan önce yakalamaya yardımcı oluyor.

improved conversion rate Gelişmiş dönüşüm oranı (sadece ilgili aramalar daha fazla satış getirir)

Ek Kaynaklar

Etkili anahtar kelime yönetimi ve YZ optimizasyonu hakkında daha fazla bilgi edinmek isteyenler için bu kaynakları inceleyebilirsiniz:

Her Yeni Anahtar Kelimeyi Değerlendirmek için Google Ads Script’i

İşte anahtar kelime kümelerini değerlendirmek için her saat başı çalıştırdığımız script.

Bu script, Google Ads kampanyalarını yönetmeye yönelik çeşitli görevleri otomatikleştirmeyi amaçlar. Yapılandırma ve ayarlar için Google Sheets ile etkileşime girer ve Google Ads hesaplarında arama terimlerini analiz etme, anahtar kelime ekleme veya hariç tutma ve gelişmiş YZ anahtar kelime kümeleme için FlowHunt API ile arayüz oluşturma gibi işlemler gerçekleştirir.

Google Sheet to manage script settings Script ayarlarını yönetmek için Google Sheet

Negative keywords automatically applied to Ad groups Negatif anahtar kelimeler Ad gruplarına otomatik olarak uygulanır

Ana Fonksiyon

  • Temel kontrol mantığı main() fonksiyonunda bulunur. Bu fonksiyon, spreadsheetURL ile belirtilen Google Sheets dokümanını açar, apiKey, country, language ve diğer gerekli yapılandırma ayarlarını alır.
  • Sistem, öncelikle yeni olumlu anahtar kelimeleri FlowHunt kümesine eklemeye çalışır. Başarılı olursa, atanmış olmayan arama terimlerini analiz etmeye devam eder.

Anahtar Kelime Analizi

  • Atanmamış Kelimeleri Analiz Etme: Fonksiyon, reklam hesabında belirli bir etiketle işaretlenmiş tüm reklam gruplarında döngüye girer. Google Ads’den şu anda hedeflenmeyen ve en az bir gösterim almış arama terimlerini alır.
  • Sistem, şu anda analiz edilen anahtar kelimeye benzer anahtar kelimeleri bulmak için FlowHunt API’yı kullanır ve bunları belirtilen minimumMatch kriterine göre filtreler.
  • Kriterleri karşılayan arama terimleri olumlu anahtar kelime olarak eklenir veya minimum kriterler karşılanmazsa negatif olarak işaretlenir; ilgili Google Sheet ve Google Ads kampanyalarınız da bu bilgilerle güncellenir.

FlowHunt Entegrasyonu

  • API Etkileşimi: Script, FlowHunt API ile çeşitli görevler için callFlowHuntApi() fonksiyonuna dayanır; workspace ID’lerini almak ve anahtar kelimeleri kümelemek dahil.
  • Anahtar Kelimeleri Kümeye Ekle: Bu fonksiyon, olumlu anahtar kelimeleri FlowHunt’a geri gönderir ve bunların Google Ads’den gelen canlı arama sorgusu verileriyle bilgilendirilmesini sağlar.
  • Eklenen ve negatif anahtar kelimeler, sürekli takip ve inceleme için ayrı sayfalara kaydedilir.

Kullanım

Bu scripti dağıtmak için kullanıcılar şunları yapmalıdır:

  • Geçerli bir Google Sheets URL’si sağlamalı ve gerekli sayfaların (“Settings”, “AddedKW”, “NegativeKW”) mevcut olduğundan emin olmalıdır.
  • Google Sheet’i doğru FlowHunt API anahtarı, ülke kodları ve diğer operasyonel ayarlarla yapılandırmalıdır.
  • Scriptin, uygun API erişimi etkinleştirilmiş bir Google Ads Script ortamında çalıştırıldığından emin olunmalıdır.

Add script to your Google Ads in menu Tools -> Bulk Actions -> Scripts Scripti Google Ads’inize Menü > Araçlar > Toplu İşlemler > Scriptler bölümünden ekleyin.

Gerçek Google Sheet dokümanınızın bağlantısını eklemeyi unutmayın. Gerisi bizim sihrimiz. Kampanyaya ait anahtar kelimeleri tanımlar ve anahtar kelime yönetimini otomatikleştiririz (hem negatif hem de olumlu).

Negatif Anahtar Kelimeleri Otomatik Yönetmek için Google Ads Script’i

//Global variables
var spreadsheetURL;
var spreadsheet;
var sheetSettings; 
var sheetAddedKW;
var sheetNegativeKW;
var apiKey;
var labelName;
var country;
var language;
var location;
var urlsCount;
var minimumMatch;
var workspaceId;

function main() {
    // Provide the Google Sheets URL here
  spreadsheetURL = "https://docs.google.com/spreadsheets/d/....... FULL URL TO GOOGLE SHEET";
  spreadsheet = SpreadsheetApp.openByUrl(spreadsheetURL);
  sheetSettings = spreadsheet.getSheetByName("Settings"); 
  sheetAddedKW = spreadsheet.getSheetByName("AddedKW");
  sheetNegativeKW = spreadsheet.getSheetByName("NegativeKW");
  apiKey = getSettingValue("FlowHuntAPIkey")
  labelName = getSettingValue("LabelName")
  country = getSettingValue("CountryCode")
  language = getSettingValue("LanguageCode")
  location = getSettingValue("Location")

  urlsCount = getSettingValue("TopUrlsCount")
  minimumMatch = getSettingValue("MinimumMatch")
  workspaceId = getWorkspaceId()
  
  if (workspaceId.length < 10) {
    Logger.log("Failed to load workspace id from FlowHunt, check API key");
    return;
  }
  
  Logger.log("FlowHunt WorkspaceId: " + workspaceId);
  
  if (addPositiveKWsToCluster() == 0) {
    // Analyze new keywords just if all positive keywords added already
    analyzeNotAssignedWords();
  }
}

function analyzeNotAssignedWords() {
  Logger.log("*** START Checking not assigned keywords");
  
  // Iterate through all ad groups in the account
  var adGroupsIterator = AdsApp.adGroups().get();
  
  while (adGroupsIterator.hasNext()) {
    var adGroup = adGroupsIterator.next();
    var groupName = adGroup.getId() + " - " + adGroup.getName();
    if (hasLabel(adGroup, labelName)) {
      // Get the search terms for the current ad group ordered by clicks in the last X days
      var searchTermsQuery = "SELECT Query FROM SEARCH_QUERY_PERFORMANCE_REPORT " +
        "WHERE AdGroupId = " + adGroup.getId() +
        " AND QueryTargetingStatus = \"NONE\" " +
        "DURING TODAY";

      var searchTermsIterator = AdsApp.report(searchTermsQuery).rows();
      var adGroupKeywords = [];
      while (searchTermsIterator.hasNext()) {
        var searchTerm = searchTermsIterator.next();
        var searchTermText = searchTerm["Query"].trim();
        var similarQueries = getSimilarQueries(groupName, searchTermText)
        var filteredSimilarQueries = getFilteredSimilarQueries(similarQueries);
        if (filteredSimilarQueries.length > 0) {
          var keywordOperation = adGroup.newKeywordBuilder().withText("[" + searchTermText + "]").build();
          if (keywordOperation.isSuccessful()) {
            adGroupKeywords.push(searchTermText);
            var rowData = [groupName, searchTermText, new Date(), "ADDING AS POSITIVE, REVIEW!", JSON.stringify(filteredSimilarQueries)];
            sheetAddedKW.appendRow(rowData);
          } else {
            Logger.log("Failed to add keyword as positive:" + searchTermText)
          }
        } else {
          // add to negative
           adGroup.createNegativeKeyword("[" + searchTermText + "]");
          Logger.log("Excluded search term in ad group '" + groupName + "': " + searchTermText);
          var rowData = [groupName, "[" + searchTermText + "]", new Date(), JSON.stringify(similarQueries)];
          sheetNegativeKW.appendRow(rowData);
        }
      }
      if (adGroupKeywords.length > 0) {
        //Add all keywords in the list to FlowHunt Cluster
        addKeywordsToFlowHunt(groupName, adGroupKeywords);
      }
    }
  }
  Logger.log("*** FINISHED Checking not assigned keywords");
}

function getSimilarQueries(groupName, query) {
  result = callFlowHuntApi("/serp/serp/cluster/query_intersections?workspace_id="+workspaceId, "POST", {
    "query": query,
    "country": country,
    "language": language,
    "location": location,
    "group_name": groupName,
    "live_mode": true,
    "max_position": urlsCount
  });
  Logger.log(result)
  if (result.status=="SUCCESS") {
    return JSON.parse(result.result);
  }
  return []
}

function getFilteredSimilarQueries(similarQueries) {
  filtered = [];
  for (var i=1; i<similarQueries.length; i++){
    if (similarQueries[i].count>=minimumMatch) {
      filtered.push(similarQueries[i]);
    }
  }
  return filtered;
}

function addPositiveKWsToCluster() {
  Logger.log("*** START Checking new campaign keywords");
  // Iterate through all ad groups in the account
  var adGroupsIterator = AdsApp.adGroups().get();
  var processedKWs = sheetAddedKW.getDataRange().getValues();
  var processedKWsMap = {};
  var rowsAdded = 0;
  
  for (var i = 1; i < processedKWs.length; i++) { // Start at 1 to skip header row if exists
    var groupName = processedKWs[i][0];
    var keyword = processedKWs[i][1];
    processedKWsMap[groupName + '|' + keyword] = true;
  }
  
  while (adGroupsIterator.hasNext()) {
    var adGroup = adGroupsIterator.next();
    var groupName = adGroup.getId() + " - " + adGroup.getName();
    if (hasLabel(adGroup, labelName)) {
      var keywordsIterator = adGroup.keywords().get();
      var adGroupKeywords = [];
      while (keywordsIterator.hasNext()) {
        var keyword = keywordsIterator.next();
        if (keyword.isEnabled()) {
          var key = groupName + '|' + keyword.getText();
          if (!processedKWsMap[key]) {
            adGroupKeywords.push(keyword.getText());
            var rowData = [groupName, keyword.getText(), new Date(), "Already present in campaign"];
            sheetAddedKW.appendRow(rowData);
            processedKWsMap[key] = true; 
          }
        }
      }
      if (adGroupKeywords.length > 0) {
        //Add all keywords in the list to FlowHunt Cluster
        addKeywordsToFlowHunt(groupName, adGroupKeywords);
      } else {
        Logger.log("No new keywords in Group: " + groupName);
      }
      rowsAdded = rowsAdded + adGroupKeywords.length
    }
  }
  Logger.log("*** FINISHED Checking new campaign keywords");
  return rowsAdded;
}

function addKeywordsToFlowHunt(GroupName, adGroupKeywords) {
  requests = []
  adGroupKeywords.forEach(function(keyword) {
    requests.push(
        {
          "query": keyword,
          "country": country,
          "language": language,
          "location": location,
          "group_name": GroupName,
          "count_urls": 30
        }
      );
    });
  callFlowHuntApi("/serp/serp/cluster/add_queries?workspace_id="+workspaceId, "POST", {"requests":requests});
}

function getSettingValue(settingName) {
    var data = sheetSettings.getDataRange().getValues();
    for (var i = 0; i < data.length; i++) {
        if (data[i][0] === settingName) {
            return data[i][1];
        }
    }
    return null;
}
  
function getWorkspaceId() {
  result = callFlowHuntApi("/auth/me", "GET")
  if (result !== null) {
    return result.api_key_workspace_id;
  }
}

function callFlowHuntApi(endpoint, method, requestBody) {
    var url = "https://api.flowhunt.io/v2" + endpoint;
    var headers = {
        "Api-Key": apiKey,
        "Content-Type": "application/json"
    };
    var options = {
        "method" : method,  // or "post", "put", etc.
        "headers" : headers,
        "payload": JSON.stringify(requestBody)
    };
    
    try {
        var response = UrlFetchApp.fetch(url, options);
        var responseData = JSON.parse(response.getContentText());
        Logger.log(responseData);
        return responseData;
    } catch (e) {
        Logger.log("An error occurred: " + e.message);
    }
    return null;
}

function hasLabel(adGroup, labelName) {
  var labels = adGroup.labels().get();
  while (labels.hasNext()) {
    var label = labels.next();
    if (label.getName() === labelName) {
      Logger.log("Processing Adgroup " + adGroup.getName());
      return true;
    }
  }
  return false;
}

Sıkça sorulan sorular

Google Ads'de negatif anahtar kelimeler neden önemlidir?

Negatif anahtar kelimeler, reklamlarınızın alakasız aramalarda görünmesini engelleyerek boşa harcamayı azaltır ve yalnızca en alakalı sorgulara odaklanarak kampanya YG'nizi artırır.

Yapay zekâ negatif anahtar kelime yönetimini nasıl otomatikleştirir?

FlowHunt gibi yapay zekâ araçları, gerçek zamanlı arama verilerini analiz eder, alakasız anahtar kelimeleri tespit eder ve negatif anahtar kelimelerle kampanyalarınızı otomatik olarak güncelleyerek zaman kazandırır ve verimliliği artırır.

Yapay zekâ ile negatif anahtar kelime otomasyonundan hangi sonuçları bekleyebilirim?

Yapay zekâ, anahtar kelime listelerinizi ve hedeflemenizi sürekli optimize ettiği için daha yüksek dönüşüm oranları, alakasız tıklamalar için harcanan reklam maliyetinde azalma ve daha verimli kampanyalar bekleyebilirsiniz.

Google Ads için FlowHunt otomasyonunu nasıl kurarım?

Google Ads hesabınızı bağlamanız, bir Google Sheet'te ayarları yapılandırmanız ve FlowHunt'ın yapay zekâsı ile otomatik anahtar kelime yönetimini etkinleştirmek için verilen scripti dağıtmanız gerekir.

Viktor Zeman, QualityUnit'in ortaklarından biridir. Şirketi 20 yıl boyunca yönettikten sonra bile, öncelikli olarak bir yazılım mühendisi olarak kalmaya devam etmektedir; yapay zeka, programatik SEO ve arka uç geliştirme konularında uzmanlaşmıştır. LiveAgent, PostAffiliatePro, FlowHunt, UrlsLab ve daha birçok projeye katkıda bulunmuştur.

Viktor Zeman
Viktor Zeman
CEO, Yapay Zeka Mühendisi

Google Ads'inizi Yapay Zekâ ile Otomatikleştirin

Google Ads YG'nizi maksimize etmeye hazır mısınız? Yapay zekâ destekli otomasyonun negatif anahtar kelimelerinizi nasıl yönettiğini ve reklam harcamanızı nasıl optimize ettiğini keşfedin.

Daha fazla bilgi

Negatif Sorgu Otomasyonu ile PPC AI Aracısı
Negatif Sorgu Otomasyonu ile PPC AI Aracısı

Negatif Sorgu Otomasyonu ile PPC AI Aracısı

FlowHunt'ın PPC AI Aracısı ile Google Ads'te negatif anahtar kelimeleri otomatikleştirin. Alakasız sorguları hariç tutun, boşa harcanan harcamaları azaltın ve A...

2 dakika okuma
PPC AI +3
Google Anahtar Kelime Bulucu
Google Anahtar Kelime Bulucu

Google Anahtar Kelime Bulucu

Google Anahtar Kelime Bulucu bileşeni ile değerli anahtar kelime içgörülerinin kilidini açın—ilgili anahtar kelimeleri, arama hacmi trendlerini, rekabeti ve tık...

3 dakika okuma
SEO Data +5
Site için Google Anahtar Kelimeleri
Site için Google Anahtar Kelimeleri

Site için Google Anahtar Kelimeleri

Site için Google Anahtar Kelimeleri bileşenini keşfedin—herhangi bir web sitesi veya sayfa için anahtar kelime araştırmasını otomatikleştirin. Arama hacmi, reka...

3 dakika okuma
SEO Automation +3