
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...
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ı, 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 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.
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ı azaltmak için işletmeler şu stratejileri benimsemelidir:
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.
Etkili anahtar kelime yönetimi ve YZ optimizasyonu hakkında daha fazla bilgi edinmek isteyenler için bu kaynakları inceleyebilirsiniz:
İş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.
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.minimumMatch
kriterine göre filtreler.callFlowHuntApi()
fonksiyonuna dayanır; workspace ID’lerini almak ve anahtar kelimeleri kümelemek dahil.Bu scripti dağıtmak için kullanıcılar şunları yapmalıdır:
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).
//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;
}
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.
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â, 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 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.
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.
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...
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...
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...