
Agente de IA para PPC con automatización de consultas negativas
Automatiza las palabras clave negativas en Google Ads con el Agente de IA para PPC de FlowHunt. Excluye consultas irrelevantes, reduce el gasto desperdiciado y ...
FlowHunt automatiza la gestión de palabras clave negativas en Google Ads con IA, ayudando a las empresas a reducir costos, optimizar el gasto publicitario y mejorar los resultados de las campañas sin esfuerzo.
El gasto en palabras clave no deseadas ocurre cuando tus anuncios aparecen en resultados de búsqueda que no coinciden con lo que vendes. Esto puede agotar rápidamente tu presupuesto, ya que cada clic irrelevante cuesta dinero sin generar una venta. Por ejemplo, si una empresa que vende zapatos de cuero de alta gama utiliza palabras clave amplias como “comprar zapatos”, podría atraer clics de personas interesadas en zapatillas deportivas o sandalias, que no son lo que ofrece. Esta discordancia en la segmentación de palabras clave puede llevar a un gasto publicitario desperdiciado y a un ROI más bajo. Las empresas deben comprender este concepto para evitar pérdidas financieras innecesarias y enfocar su presupuesto en las palabras clave correctas.
Las palabras clave negativas son una herramienta esencial en cualquier campaña de Google Ads. Permiten a los anunciantes excluir términos de búsqueda específicos para que no activen sus anuncios, asegurando que solo las búsquedas relevantes generen visualizaciones del anuncio. Por ejemplo, usando palabras clave negativas como “barato” o “descuento”, la empresa de zapatos de cuero puede evitar clics de personas que no buscan productos premium. Al elaborar cuidadosamente una lista de palabras clave negativas, las empresas pueden optimizar su gasto publicitario, reducir clics no deseados y aumentar la efectividad general de su campaña.
La Inteligencia Artificial (IA) está cambiando la forma en que los anunciantes gestionan las campañas de Google Ads. Herramientas de IA como FlowHunt están diseñadas para el agrupamiento de palabras clave, ayudando a las empresas a identificar y organizar palabras clave relacionadas de manera más eficaz. Esta automatización simplifica el proceso de encontrar tanto palabras clave positivas como negativas, reduciendo el trabajo manual involucrado en la gestión de campañas. La gestión de palabras clave impulsada por IA permite realizar cambios en tiempo real basados en datos de rendimiento, asegurando que el gasto publicitario se optimice continuamente para lograr el mejor ROI.
Para reducir el gasto en palabras clave no deseadas, las empresas deben adoptar varias estrategias:
PostAffiliatePro enfrentaba problemas con su gasto mensual en anuncios, luchando por obtener el ROI deseado de sus campañas de Google Ads. Decidieron utilizar IA para abordar este problema. Al incorporar herramientas impulsadas por IA, automatizaron su proceso de gestión de palabras clave, identificando tanto palabras positivas como negativas con mayor precisión. Este cambio les permitió optimizar el gasto publicitario, reducir significativamente los costos y mejorar la eficiencia de la campaña. Su experiencia destaca los beneficios de utilizar tecnología de IA para gestionar eficazmente el gasto en palabras clave. El análisis de cada nueva palabra clave se realiza dentro de la primera hora desde la primera impresión de la palabra clave. La rapidez ayuda a detectar palabras clave negativas antes de que los visitantes puedan hacer clic en el anuncio de Google.
Para quienes estén interesados en aprender más sobre la gestión eficaz de palabras clave y la optimización con IA, considera explorar estos recursos:
Aquí tienes nuestro script, que ejecutamos cada hora para evaluar los grupos de palabras clave.
Este script tiene como objetivo automatizar varias tareas relacionadas con la gestión de campañas de Google Ads. Interactúa con Google Sheets para la configuración y los ajustes, y realiza operaciones en las cuentas de Google Ads, como analizar términos de búsqueda, añadir o excluir palabras clave, e interactuar con la API de FlowHunt para un agrupamiento avanzado de palabras clave mediante IA.
main()
. Esta función abre el documento de Google Sheets especificado por spreadsheetURL
, recupera las configuraciones necesarias como apiKey
, country
, language
y otros.minimumMatch
especificado.callFlowHuntApi()
para interactuar con la API de FlowHunt para varias tareas, incluyendo la recuperación de IDs de espacio de trabajo y el agrupamiento de palabras clave.Para desplegar este script, los usuarios deben:
No olvides poner el enlace real a tu documento de Google Sheet. El resto es nuestra magia. Identificamos las palabras clave que pertenecen a la campaña y automatizamos la gestión de palabras clave (tanto negativas como positivas).
//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;
}
Las palabras clave negativas evitan que tus anuncios aparezcan en búsquedas irrelevantes, reduciendo el gasto innecesario y mejorando el ROI de la campaña al enfocarse solo en las consultas más relevantes.
Herramientas de IA como FlowHunt analizan datos de búsqueda en tiempo real, identifican palabras clave irrelevantes y actualizan automáticamente tus campañas con palabras clave negativas, ahorrando tiempo y aumentando la eficiencia.
Puedes esperar mayores tasas de conversión, reducción del gasto publicitario en clics irrelevantes y campañas más eficientes, ya que la IA optimiza continuamente tus listas de palabras clave y la segmentación.
Necesitarás conectar tu cuenta de Google Ads, configurar los ajustes en una hoja de Google Sheet y desplegar el script proporcionado para habilitar la gestión automatizada de palabras clave impulsada por la IA de FlowHunt.
Viktor Zeman es copropietario de QualityUnit. Incluso después de 20 años liderando la empresa, sigue siendo principalmente un ingeniero de software, especializado en IA, SEO programático y desarrollo backend. Ha contribuido a numerosos proyectos, incluidos LiveAgent, PostAffiliatePro, FlowHunt, UrlsLab y muchos otros.
¿Listo para maximizar el ROI de tus Google Ads? Descubre cómo la automatización impulsada por IA gestiona tus palabras clave negativas y optimiza el gasto publicitario.
Automatiza las palabras clave negativas en Google Ads con el Agente de IA para PPC de FlowHunt. Excluye consultas irrelevantes, reduce el gasto desperdiciado y ...
Descubre por qué el aislamiento de términos de búsqueda es vital para optimizar los anuncios PPC. Aprende cómo dirigirte a los términos de búsqueda de alto rend...
Descubre cómo la automatización en la gestión de PPC y las estrategias avanzadas de optimización de palabras clave pueden duplicar tus tasas de conversión, redu...