Automatización de Palabras Clave Negativas en Google Ads con IA
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.

Entendiendo el Gasto en Palabras Clave No Deseadas
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.
El Papel de las Palabras Clave Negativas
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.
Uso de IA para la Gestión de Palabras Clave
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.
Estrategias para Reducir el Gasto en Palabras Clave No Deseadas
Para reducir el gasto en palabras clave no deseadas, las empresas deben adoptar varias estrategias:
- Actualiza regularmente tu lista de palabras clave para adaptarte a las tendencias del mercado y los intereses de los consumidores.
- Implementa una sólida estrategia de palabras clave negativas investigando y actualizando constantemente la lista de términos que deseas excluir.
- Monitorea y ajusta las campañas en función de los datos de rendimiento.
- Analiza qué palabras clave generan ventas y cuáles no para refinar la segmentación y maximizar el gasto publicitario.
Caso de Estudio: El Enfoque de PostAffiliatePro
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.
Recursos Adicionales
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:
Script de Google Ads para Evaluar Cada Nueva Palabra Clave
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.
Función Principal
- La lógica de control principal se encuentra en la función
main()
. Esta función abre el documento de Google Sheets especificado porspreadsheetURL
, recupera las configuraciones necesarias comoapiKey
,country
,language
y otros. - Inicialmente, el sistema intenta agregar cualquier nueva palabra clave positiva al clúster de FlowHunt. Si tiene éxito, procede a analizar los términos de búsqueda no asignados.
Análisis de Palabras Clave
- Análisis de palabras no asignadas: La función recorre todos los grupos de anuncios dentro de la cuenta de Ads marcados con una etiqueta específica. Recupera los términos de búsqueda de Google Ads que actualmente no están segmentados y han tenido al menos una impresión.
- El sistema utiliza la API de FlowHunt para encontrar palabras clave similares a la palabra actualmente analizada, filtrándolas según un criterio de
minimumMatch
especificado. - Los términos de búsqueda que cumplen con los criterios se agregan como palabras clave positivas o se marcan como negativas si no cumplen el mínimo, actualizando la hoja de Google correspondiente y también tus campañas de Google Ads.
Integración con FlowHunt
- Interacción con la API: El script depende de la función
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. - Agregar palabras clave al clúster: Esta función envía palabras clave positivas de nuevo a FlowHunt para su agrupamiento, asegurando que estén informadas por datos en vivo de consultas de búsqueda de Google Ads.
- Las palabras clave agregadas y negativas se registran en hojas separadas para su seguimiento y revisión continuos.
Uso
Para desplegar este script, los usuarios deben:
- Proporcionar una URL válida de Google Sheets y asegurarse de que las hojas necesarias (“Settings”, “AddedKW”, “NegativeKW”) estén presentes.
- Configurar el Google Sheets con la clave API de FlowHunt, los códigos de país y otros ajustes operativos correctos.
- Asegurarse de que el script se ejecute en un entorno de Script de Google Ads con el acceso API adecuado habilitado.
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).
Script de Google Ads para Gestionar Automáticamente Palabras Clave Negativas
//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;
}
Preguntas frecuentes
- ¿Por qué son importantes las palabras clave negativas en Google Ads?
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.
- ¿Cómo automatiza la IA la gestión de palabras clave negativas?
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.
- ¿Qué resultados puedo esperar al automatizar las palabras clave negativas con IA?
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.
- ¿Cómo configuro la automatización de FlowHunt para mis Google Ads?
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.

Automatiza tus Google Ads con IA
¿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.