
Agente PPC AI con automazione delle query negative
Automatizza le parole chiave negative in Google Ads con l'Agente PPC AI di FlowHunt. Escludi query irrilevanti, riduci gli sprechi di budget e migliora le conve...
FlowHunt automatizza la gestione delle parole chiave negative su Google Ads con l’AI, aiutando le aziende a ridurre i costi, ottimizzare il budget pubblicitario e migliorare i risultati delle campagne in modo semplice.
La spesa per parole chiave indesiderate si verifica quando i tuoi annunci compaiono nei risultati di ricerca che non corrispondono a ciò che vendi. Questo può esaurire rapidamente il budget, poiché ogni clic irrilevante costa denaro senza generare vendite. Ad esempio, se un’azienda che vende scarpe in pelle di alta gamma punta su keyword generiche come “comprare scarpe”, potrebbe ricevere clic da persone interessate a sneakers o sandali, prodotti che non offre. Questo disallineamento nel targeting può portare a sprechi pubblicitari e a un ROI più basso. Le aziende devono comprendere questo concetto per evitare perdite finanziarie inutili e concentrare il budget sulle keyword giuste.
Le parole chiave negative sono uno strumento essenziale in ogni campagna Google Ads. Permettono agli inserzionisti di escludere termini di ricerca specifici dal far scattare i loro annunci, assicurando che solo le ricerche pertinenti portino alla visualizzazione degli annunci. Ad esempio, usare parole chiave negative come “economico” o “sconto” può aiutare l’azienda di scarpe in pelle a evitare i clic di persone non interessate a prodotti di fascia alta. Definendo accuratamente una lista di parole chiave negative, le aziende possono ottimizzare la spesa pubblicitaria, ridurre i clic indesiderati e migliorare l’efficacia complessiva della campagna.
L’Intelligenza Artificiale (AI) sta rivoluzionando la gestione delle campagne Google Ads. Strumenti AI come FlowHunt sono progettati per raggruppare keyword, aiutando le aziende a identificare e organizzare parole chiave correlate in modo più efficace. Questa automazione semplifica il processo di individuazione sia delle keyword positive che negative, riducendo il lavoro manuale nella gestione delle campagne. La gestione delle keyword guidata dall’AI consente modifiche in tempo reale basate sui dati di performance, assicurando che la spesa pubblicitaria sia sempre ottimizzata per il massimo ROI.
Per ridurre la spesa su keyword indesiderate, le aziende dovrebbero adottare diverse strategie:
PostAffiliatePro affrontava problemi con la spesa pubblicitaria mensile, faticando a ottenere il ROI desiderato dalle campagne Google Ads. Ha deciso di utilizzare l’AI per risolvere il problema. Integrando strumenti AI, ha automatizzato il processo di gestione delle keyword, identificando con maggiore precisione sia quelle positive che quelle negative. Questo cambiamento ha permesso di ottimizzare la spesa pubblicitaria, ridurre notevolmente i costi e migliorare l’efficienza delle campagne. La loro esperienza evidenzia i vantaggi della tecnologia AI nella gestione efficace della spesa per keyword. Le analisi di ogni nuova parola chiave vengono eseguite entro un’ora dalla prima impression della keyword. Questa rapidità aiuta ad intercettare le parole chiave negative prima che i visitatori possano cliccare sull’annuncio Google.
Per chi desidera approfondire la gestione efficace delle keyword e l’ottimizzazione tramite AI, consigliamo queste risorse:
Ecco lo script che eseguiamo ogni ora per valutare i cluster di keyword.
Questo script mira ad automatizzare diversi compiti legati alla gestione delle campagne Google Ads. Interagisce con Google Sheets per la configurazione e le impostazioni, e svolge operazioni sugli account Google Ads come analisi dei termini di ricerca, aggiunta o esclusione di keyword e interfacciamento con l’API FlowHunt per il clustering AI avanzato delle parole chiave.
main()
. Questa apre il documento Google Sheets specificato da spreadsheetURL
, recupera le impostazioni di configurazione come apiKey
, country
, language
e altri parametri.minimumMatch
specificato.callFlowHuntApi()
per interagire con l’API FlowHunt per varie attività, tra cui il recupero degli ID workspace e il clustering delle keyword.Per implementare questo script, gli utenti devono:
Non dimenticare di inserire il link reale al tuo documento Google Sheet. Al resto pensiamo noi. Identifichiamo le keyword che appartengono alla campagna e automatizziamo la gestione delle parole chiave (sia negative che positive).
//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;
}
Le parole chiave negative impediscono che i tuoi annunci vengano mostrati per ricerche irrilevanti, riducendo gli sprechi di budget e migliorando il ROI delle campagne grazie al focus sulle query più pertinenti.
Strumenti AI come FlowHunt analizzano i dati di ricerca in tempo reale, individuano keyword irrilevanti e aggiornano automaticamente le tue campagne con parole chiave negative, facendo risparmiare tempo e aumentando l’efficienza.
Aspettati un aumento dei tassi di conversione, una riduzione della spesa pubblicitaria su clic irrilevanti e campagne più efficienti, perché l’AI ottimizza continuamente le tue liste di keyword e il targeting.
Dovrai collegare il tuo account Google Ads, configurare le impostazioni in un foglio Google Sheet e implementare lo script fornito per abilitare la gestione automatica delle keyword tramite l’AI di FlowHunt.
Viktor Zeman è co-proprietario di QualityUnit. Anche dopo 20 anni alla guida dell'azienda, rimane principalmente un ingegnere del software, specializzato in IA, SEO programmatica e sviluppo backend. Ha contribuito a numerosi progetti, tra cui LiveAgent, PostAffiliatePro, FlowHunt, UrlsLab e molti altri.
Pronto a massimizzare il ROI delle tue campagne Google Ads? Scopri come l’automazione AI gestisce le tue parole chiave negative e ottimizza la spesa pubblicitaria.
Automatizza le parole chiave negative in Google Ads con l'Agente PPC AI di FlowHunt. Escludi query irrilevanti, riduci gli sprechi di budget e migliora le conve...
Scopri perché l'isolamento dei termini di ricerca è vitale per ottimizzare gli annunci PPC. Scopri come indirizzare i termini di ricerca ad alte prestazioni, au...
Genera istantaneamente titoli ad alto tasso di conversione e conformi alle norme di Google Ads con il nostro strumento potenziato dall'AI. Perfetto per marketer...