Automatizarea cu AI a Cuvintelor Cheie Negative în Google Ads

Automatizarea cu AI a Cuvintelor Cheie Negative în Google Ads

FlowHunt automatizează gestionarea cuvintelor cheie negative în Google Ads cu ajutorul AI, ajutând companiile să reducă costurile, să optimizeze bugetul de publicitate și să îmbunătățească rezultatele campaniilor fără efort.

Înțelegerea Cheltuielilor Nedorizate pe Cuvinte Cheie

Cheltuielile nedorite pe cuvinte cheie apar atunci când anunțurile tale sunt afișate în rezultate de căutare care nu se potrivesc cu ceea ce vinzi. Acest lucru îți poate epuiza rapid bugetul, deoarece fiecare click irelevant costă bani fără a genera o vânzare. De exemplu, dacă o companie care vinde pantofi din piele de lux țintește cuvinte cheie largi precum „cumpără pantofi”, poate atrage clickuri de la persoane interesate de adidași sau sandale, care nu sunt ceea ce oferă. Această nepotrivire în țintirea cuvintelor cheie poate duce la cheltuieli irosite și la un ROI mai scăzut. Companiile trebuie să înțeleagă acest concept pentru a evita pierderile financiare inutile și pentru a-și concentra bugetul pe cuvintele cheie potrivite.

Rolul Cuvintelor Cheie Negative

Cuvintele cheie negative sunt un instrument esențial în orice campanie Google Ads. Ele permit advertiserilor să excludă anumite termeni de căutare din declanșarea anunțurilor, asigurându-se că doar căutările relevante duc la afișarea anunțurilor. De exemplu, folosirea cuvintelor cheie negative precum „ieftin” sau „reducere” poate ajuta compania de pantofi din piele să evite clickurile de la persoane care nu sunt interesate de produse premium. Prin crearea atentă a unei liste de cuvinte cheie negative, companiile își pot optimiza cheltuielile de publicitate, reducând clickurile nedorite și sporind eficiența generală a campaniei.

Utilizarea AI pentru Managementul Cuvintelor Cheie

Inteligența Artificială (AI) schimbă modul în care advertiserii gestionează campaniile Google Ads. Instrumentele AI precum FlowHunt sunt create pentru gruparea cuvintelor cheie, ajutând companiile să identifice și să organizeze mai eficient cuvintele cheie înrudite. Această automatizare simplifică procesul de identificare a cuvintelor cheie pozitive și negative, reducând munca manuală implicată în gestionarea campaniilor. Managementul cuvintelor cheie bazat pe AI permite modificări în timp real, pe baza datelor de performanță, asigurând optimizarea continuă a cheltuielilor pentru cel mai bun ROI.

Strategii pentru Reducerea Cheltuielilor Nedorite pe Cuvinte Cheie

Pentru a reduce cheltuielile nedorite pe cuvinte cheie, companiile ar trebui să adopte mai multe strategii:

  • Actualizează regulat lista de cuvinte cheie pentru a se potrivi cu tendințele pieței și interesele consumatorilor.
  • Implementează o strategie solidă de cuvinte cheie negative prin cercetarea și actualizarea constantă a termenilor pe care dorești să-i excluzi.
  • Monitorizează și ajustează campaniile pe baza datelor de performanță.
  • Analizează care cuvinte cheie duc la vânzări și care nu pentru a rafina țintirea și a maximiza bugetul de publicitate.

Studiu de Caz: Abordarea PostAffiliatePro

PostAffiliatePro se confrunta cu probleme legate de cheltuielile lunare de publicitate, nereușind să obțină ROI-ul dorit din campaniile Google Ads. Au decis să folosească AI pentru a aborda această problemă. Prin integrarea unor instrumente bazate pe AI, au automatizat procesul de management al cuvintelor cheie, identificând atât cuvintele pozitive, cât și pe cele negative, mult mai precis. Această schimbare le-a permis să își optimizeze cheltuielile, reducând semnificativ costurile și îmbunătățind eficiența campaniilor. Experiența lor evidențiază beneficiile utilizării tehnologiei AI pentru gestionarea eficientă a bugetului de cuvinte cheie. Analizele fiecărui cuvânt cheie nou sunt realizate în decurs de o oră de la prima impresie. Rapiditatea permite identificarea cuvintelor negative înainte ca vizitatorii să poată da click pe anunțul Google.

improved conversion rate Rată de conversie îmbunătățită (doar căutările relevante aduc mai multe vânzări)

Resurse Suplimentare

Pentru cei interesați să afle mai multe despre gestionarea eficientă a cuvintelor cheie și optimizarea cu AI, iată câteva resurse utile:

Script Google Ads pentru Evaluarea Fiecărui Cuvânt Cheie Nou

Acesta este scriptul nostru, pe care îl rulăm în fiecare oră pentru a evalua grupurile de cuvinte cheie.

Scriptul automatizează mai multe sarcini legate de gestionarea campaniilor Google Ads. Interacționează cu Google Sheets pentru configurare și setări, și efectuează operațiuni pe conturile Google Ads, precum analiza termenilor de căutare, adăugarea sau excluderea cuvintelor cheie, și interfațarea cu API-ul FlowHunt pentru gruparea avansată cu AI a cuvintelor cheie.

Google Sheet to manage script settings Google Sheet pentru gestionarea setărilor scriptului

Negative keywords automatically applied to Ad groups Cuvintele cheie negative sunt aplicate automat grupurilor de anunțuri

Funcția Principală

  • Logica de control principală se află în funcția main(). Aceasta deschide documentul Google Sheets specificat de spreadsheetURL, preia setările necesare precum apiKey, country, language și altele.
  • Inițial, sistemul încearcă să adauge orice cuvinte cheie pozitive noi în clusterul FlowHunt. Dacă reușește, continuă cu analiza termenilor de căutare nealocați.

Analiza Cuvintelor Cheie

  • Analiza cuvintelor nealocate: Funcția parcurge toate grupurile de anunțuri din contul marcat cu o etichetă specifică. Preia termenii de căutare din Google Ads care nu sunt vizați în prezent și care au avut cel puțin o impresie.
  • Sistemul folosește API-ul FlowHunt pentru a găsi cuvinte cheie similare cu cel analizat, filtrându-le pe baza unui criteriu minimumMatch specificat.
  • Termenii de căutare care se potrivesc criteriilor sunt adăugați ca pozitivi sau marcați ca negativi dacă nu se îndeplinesc criteriile minime, actualizând Google Sheet-ul relevant și campaniile Google Ads.

Integrare FlowHunt

  • Interacțiunea cu API-ul: Scriptul se bazează pe funcția callFlowHuntApi() pentru a interacționa cu API-ul FlowHunt pentru diverse sarcini, inclusiv preluarea ID-urilor de workspace și gruparea cuvintelor cheie.
  • Adăugarea cuvintelor în cluster: Această funcție trimite cuvintele cheie pozitive către FlowHunt pentru grupare, asigurându-se că acestea sunt informate de datele actuale din căutările Google Ads.
  • Cuvintele cheie adăugate și cele negative sunt înregistrate în foi separate pentru monitorizare și revizuire continuă.

Utilizare

Pentru a implementa acest script, utilizatorii trebuie să:

  • Furnizeze un URL valid de Google Sheets și să se asigure că foile necesare (“Settings”, “AddedKW”, “NegativeKW”) sunt prezente.
  • Configureze Google Sheets cu cheia API FlowHunt, coduri de țară și alte setări operaționale corecte.
  • Se asigure că scriptul este executat într-un mediu Google Ads Script cu acces API corespunzător activat.

Add script to your Google Ads in menu Tools -> Bulk Actions -> Scripts Adaugă scriptul în Google Ads din meniul Tools -> Bulk Actions -> Scripts.

Nu uita să setezi link-ul real către documentul tău Google Sheet. Restul este magia noastră. Identificăm cuvintele cheie care aparțin campaniei și automatizăm gestionarea acestora (atât negative, cât și pozitive).

Script Google Ads pentru Gestionarea Automată a Cuvintelor Cheie Negative

//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;
}

Întrebări frecvente

De ce sunt importante cuvintele cheie negative în Google Ads?

Cuvintele cheie negative împiedică afișarea anunțurilor tale pentru căutări irelevante, reducând cheltuielile irosite și îmbunătățind ROI-ul campaniei prin concentrarea doar pe cele mai relevante interogări.

Cum automatizează AI gestionarea cuvintelor cheie negative?

Instrumentele AI precum FlowHunt analizează datele de căutare în timp real, identifică cuvintele cheie irelevante și actualizează automat campaniile tale cu cuvinte cheie negative, economisind timp și crescând eficiența.

Ce rezultate pot aștepta de la automatizarea cu AI a cuvintelor cheie negative?

Te poți aștepta la rate de conversie crescute, reducerea cheltuielilor pentru clickuri irelevante și campanii mai eficiente, deoarece AI optimizează continuu listele de cuvinte cheie și țintirea.

Cum configurez automatizarea FlowHunt pentru Google Ads?

Va trebui să conectezi contul tău Google Ads, să configurezi setările într-un Google Sheet și să implementezi scriptul furnizat pentru a activa gestionarea automată a cuvintelor cheie cu ajutorul AI-ului FlowHunt.

Viktor Zeman este co-proprietar al QualityUnit. Chiar și după 20 de ani de conducere a companiei, rămâne în primul rând un inginer software, specializat în AI, SEO programatic și dezvoltare backend. A contribuit la numeroase proiecte, inclusiv LiveAgent, PostAffiliatePro, FlowHunt, UrlsLab și multe altele.

Viktor Zeman
Viktor Zeman
CEO, Inginer AI

Automatizează-ți Google Ads cu AI

Ești gata să maximizezi ROI-ul Google Ads? Descoperă cum automatizarea alimentată de AI gestionează cuvintele cheie negative și optimizează cheltuielile de publicitate.

Află mai multe

Agent PPC AI cu automatizare a interogărilor negative
Agent PPC AI cu automatizare a interogărilor negative

Agent PPC AI cu automatizare a interogărilor negative

Automatizează cuvintele cheie negative în Google Ads cu Agentul PPC AI de la FlowHunt. Exclude interogările irelevante, reduce cheltuielile irosite și îmbunătăț...

2 min citire
PPC AI +3
Înțelegerea optimizării PPC și a grupării de cuvinte cheie
Înțelegerea optimizării PPC și a grupării de cuvinte cheie

Înțelegerea optimizării PPC și a grupării de cuvinte cheie

Află cum să optimizezi campaniile PPC și să stăpânești gruparea cuvintelor cheie pentru o relevanță mai mare, scoruri de calitate îmbunătățite, ROI mai bun și m...

11 min citire
PPC Keyword Grouping +4