Automatisation des mots-clés négatifs Google Ads avec l'IA

FlowHunt automatise la gestion des mots-clés négatifs Google Ads grâce à l’IA, aidant les entreprises à réduire les coûts, optimiser les dépenses publicitaires et améliorer les résultats des campagnes sans effort.

Automatisation des mots-clés négatifs Google Ads avec l'IA

Comprendre les dépenses liées aux mots-clés non désirés

Les dépenses liées aux mots-clés non désirés surviennent lorsque vos annonces apparaissent dans des résultats de recherche qui ne correspondent pas à ce que vous vendez. Cela peut rapidement épuiser votre budget, car chaque clic non pertinent coûte de l’argent sans générer de vente. Par exemple, si une entreprise vendant des chaussures en cuir haut de gamme cible des mots-clés larges comme « acheter des chaussures », elle risque d’attirer des clics de personnes intéressées par des baskets ou des sandales, ce qui n’est pas son offre. Ce décalage dans le ciblage des mots-clés peut entraîner des dépenses publicitaires gaspillées et un ROI plus faible. Les entreprises doivent comprendre ce concept pour éviter des pertes financières inutiles et concentrer leur budget sur les bons mots-clés.

Le rôle des mots-clés négatifs

Les mots-clés négatifs sont un outil essentiel dans toute campagne Google Ads. Ils permettent aux annonceurs d’exclure certains termes de recherche qui déclencheraient leurs annonces, garantissant ainsi que seuls les résultats pertinents affichent les annonces. Par exemple, utiliser des mots-clés négatifs comme « pas cher » ou « discount » peut aider l’entreprise de chaussures en cuir à éviter les clics de personnes non intéressées par des produits haut de gamme. En élaborant soigneusement une liste de mots-clés négatifs, les entreprises peuvent optimiser leurs dépenses publicitaires, réduire les clics indésirables et améliorer l’efficacité globale de leur campagne.

Utiliser l’IA pour la gestion des mots-clés

L’intelligence artificielle (IA) transforme la façon dont les annonceurs gèrent les campagnes Google Ads. Des outils IA comme FlowHunt sont conçus pour le regroupement de mots-clés, aidant les entreprises à identifier et organiser plus efficacement les mots-clés connexes. Cette automatisation simplifie la recherche de mots-clés positifs et négatifs, réduisant la charge de travail manuelle liée à la gestion des campagnes. La gestion des mots-clés pilotée par l’IA permet d’effectuer des ajustements en temps réel selon les données de performance, garantissant une optimisation continue des dépenses publicitaires pour un ROI maximal.

Stratégies pour réduire les dépenses liées aux mots-clés non désirés

Pour réduire les dépenses inutiles sur les mots-clés, les entreprises devraient adopter plusieurs stratégies :

  • Mettez régulièrement à jour votre liste de mots-clés pour coller aux tendances du marché et aux intérêts des consommateurs.
  • Mettez en place une vraie stratégie de mots-clés négatifs en recherchant et actualisant continuellement la liste des termes à exclure.
  • Surveillez et ajustez vos campagnes en fonction des données de performance.
  • Analysez quels mots-clés génèrent des ventes ou non afin d’affiner le ciblage et maximiser vos dépenses publicitaires.

Étude de cas : l’approche de PostAffiliatePro

PostAffiliatePro rencontrait des difficultés avec ses dépenses publicitaires mensuelles et peinait à obtenir le ROI souhaité de ses campagnes Google Ads. Ils ont décidé d’utiliser l’IA pour résoudre ce problème. En intégrant des outils pilotés par l’IA, ils ont automatisé le processus de gestion des mots-clés, identifiant plus précisément les mots-clés positifs et négatifs. Ce changement leur a permis d’optimiser les dépenses publicitaires, de réduire considérablement les coûts et d’améliorer l’efficacité des campagnes. Leur expérience met en avant les avantages de la technologie IA pour une gestion efficace des dépenses sur les mots-clés. L’analyse de chaque nouveau mot-clé s’effectue dans l’heure suivant la première impression du mot-clé. Cette rapidité permet d’identifier les mots-clés négatifs avant que les visiteurs ne cliquent sur l’annonce Google.

improved conversion rate Taux de conversion amélioré (seules les recherches pertinentes génèrent des ventes)

Ressources complémentaires

Pour approfondir la gestion efficace des mots-clés et l’optimisation par l’IA, explorez ces ressources :

Script Google Ads pour évaluer chaque nouveau mot-clé

Voici notre script, que nous exécutons chaque heure afin d’évaluer les clusters de mots-clés.

Ce script vise à automatiser plusieurs tâches liées à la gestion des campagnes Google Ads. Il interagit avec Google Sheets pour la configuration et les paramètres, et effectue des opérations sur les comptes Google Ads, telles que l’analyse des termes de recherche, l’ajout ou l’exclusion de mots-clés, et l’interface avec l’API FlowHunt pour un regroupement avancé des mots-clés par IA.

Google Sheet to manage script settings Google Sheet pour gérer les paramètres du script

Negative keywords automatically applied to Ad groups Mots-clés négatifs appliqués automatiquement aux groupes d’annonces

Fonction principale

  • La logique de contrôle principale est hébergée dans la fonction main(). Cette fonction ouvre le document Google Sheets spécifié par spreadsheetURL, récupère les paramètres de configuration nécessaires comme apiKey, country, language, etc.
  • Le système tente d’abord d’ajouter les nouveaux mots-clés positifs au cluster FlowHunt. Si c’est un succès, il passe à l’analyse des termes de recherche non assignés.

Analyse des mots-clés

  • Analyse des mots non assignés : La fonction parcourt tous les groupes d’annonces du compte Ads marqués avec un libellé spécifique. Elle récupère les termes de recherche de Google Ads qui ne sont pas encore ciblés et qui ont eu au moins une impression.
  • Le système utilise l’API FlowHunt pour trouver des mots-clés similaires à celui analysé, filtrés selon un critère minimumMatch défini.
  • Les termes de recherche correspondant aux critères sont ajoutés comme mots-clés positifs ou marqués comme négatifs si les critères minimaux ne sont pas atteints, ce qui met à jour la feuille Google Sheet correspondante et vos campagnes Google Ads.

Intégration FlowHunt

  • Interaction API : Le script s’appuie sur la fonction callFlowHuntApi() pour interagir avec l’API FlowHunt pour diverses tâches, notamment récupérer les IDs d’espace de travail et regrouper les mots-clés.
  • Ajout de mots-clés au cluster : Cette fonction renvoie les mots-clés positifs à FlowHunt pour le clustering, garantissant qu’ils sont informés par les données de requêtes de recherche en direct de Google Ads.
  • Les mots-clés ajoutés et négatifs sont consignés dans des feuilles distinctes pour le suivi et la revue.

Utilisation

Pour déployer ce script, les utilisateurs doivent :

  • Fournir une URL Google Sheets valide et s’assurer que les feuilles nécessaires (“Settings”, “AddedKW”, “NegativeKW”) sont présentes.
  • Configurer le Google Sheets avec la clé API FlowHunt, les codes pays et autres paramètres opérationnels.
  • S’assurer que le script est exécuté dans l’environnement Google Ads Script avec l’accès API approprié.

Add script to your Google Ads in menu Tools -> Bulk Actions -> Scripts Ajoutez le script à vos Google Ads dans le menu Outils -> Actions groupées -> Scripts.

N’oubliez pas de renseigner le vrai lien vers votre document Google Sheet. Le reste, c’est notre magie. Nous identifions les mots-clés qui appartiennent à la campagne et automatisons la gestion des mots-clés (négatifs ou positifs).

Script Google Ads pour gérer automatiquement les mots-clés négatifs

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

Questions fréquemment posées

Pourquoi les mots-clés négatifs sont-ils importants dans Google Ads ?

Les mots-clés négatifs empêchent vos annonces d'apparaître sur des recherches non pertinentes, réduisant ainsi les dépenses inutiles et améliorant le ROI des campagnes en se concentrant uniquement sur les requêtes les plus pertinentes.

Comment l'IA automatise-t-elle la gestion des mots-clés négatifs ?

Des outils IA comme FlowHunt analysent les données de recherche en temps réel, identifient les mots-clés non pertinents et mettent automatiquement à jour vos campagnes avec des mots-clés négatifs, vous faisant gagner du temps et améliorant l'efficacité.

Quels résultats puis-je attendre de l'automatisation des mots-clés négatifs avec l'IA ?

Attendez-vous à une augmentation du taux de conversion, une réduction des dépenses sur des clics non pertinents et des campagnes plus efficaces, car l'IA optimise en continu vos listes de mots-clés et votre ciblage.

Comment configurer l'automatisation FlowHunt pour mes Google Ads ?

Vous devrez connecter votre compte Google Ads, configurer les paramètres dans une feuille Google Sheet et déployer le script fourni pour activer la gestion automatisée des mots-clés grâce à l'IA de FlowHunt.

Viktor Zeman est co-propriétaire de QualityUnit. Même après 20 ans à la tête de l'entreprise, il reste avant tout un ingénieur logiciel, spécialisé en IA, SEO programmatique et développement back-end. Il a contribué à de nombreux projets, dont LiveAgent, PostAffiliatePro, FlowHunt, UrlsLab et bien d'autres.

Viktor Zeman
Viktor Zeman
CEO, Ingénieur IA

Automatisez vos Google Ads avec l'IA

Prêt à maximiser le ROI de vos campagnes Google Ads ? Découvrez comment l'automatisation pilotée par l'IA gère vos mots-clés négatifs et optimise vos dépenses publicitaires.

En savoir plus