
PPC AI Agent met automatisering van negatieve zoekwoorden
Automatiseer negatieve zoekwoorden in Google Ads met de PPC AI Agent van FlowHunt. Sluit irrelevante zoekopdrachten uit, verminder verspild budget en verbeter c...
FlowHunt automatiseert het beheer van negatieve zoekwoorden in Google Ads met AI, waardoor bedrijven kosten besparen, advertentie-uitgaven optimaliseren en moeiteloos betere campagneresultaten behalen.
Ongewenste zoekwoorduitgaven ontstaan wanneer je advertenties verschijnen bij zoekopdrachten die niet aansluiten bij wat je aanbiedt. Dit kan je budget snel uitputten, omdat elke irrelevante klik geld kost zonder tot een verkoop te leiden. Stel bijvoorbeeld dat een bedrijf dat luxe leren schoenen verkoopt brede zoekwoorden als “schoenen kopen” target; het kan dan klikken krijgen van mensen die op zoek zijn naar sneakers of sandalen, terwijl zij deze niet aanbieden. Dit verkeerde zoekwoordtargeting leidt tot verspilde advertentie-uitgaven en een lagere ROI. Bedrijven moeten dit concept begrijpen om onnodige financiële verliezen te voorkomen en hun budget te richten op de juiste zoekwoorden.
Negatieve zoekwoorden zijn een essentieel hulpmiddel in elke Google Ads-campagne. Ze stellen adverteerders in staat om specifieke zoektermen uit te sluiten, zodat alleen relevante zoekopdrachten tot advertentieweergaven leiden. Bijvoorbeeld, door negatieve zoekwoorden zoals “goedkoop” of “korting” te gebruiken, kan het schoenenbedrijf klikken voorkomen van mensen die niet geïnteresseerd zijn in premium producten. Door zorgvuldig een lijst met negatieve zoekwoorden samen te stellen, kunnen bedrijven hun advertentiebudget optimaliseren, ongewenste klikken verminderen en de effectiviteit van hun campagne verhogen.
Kunstmatige intelligentie (AI) verandert de manier waarop adverteerders hun Google Ads-campagnes beheren. AI-tools zoals FlowHunt zijn ontworpen voor zoekwoordgroepering en helpen bedrijven om gerelateerde zoekwoorden effectiever te identificeren en organiseren. Deze automatisering vereenvoudigt het proces van het vinden van zowel positieve als negatieve zoekwoorden en vermindert het handmatige werk dat komt kijken bij campagnebeheer. AI-gestuurd zoekwoordenbeheer maakt realtime aanpassingen mogelijk op basis van prestatiegegevens, waardoor advertentie-uitgaven continu worden geoptimaliseerd voor het beste rendement op investering.
Om ongewenste zoekwoorduitgaven te beperken, kunnen bedrijven verschillende strategieën toepassen:
PostAffiliatePro kampte met problemen in hun maandelijkse advertentie-uitgaven en slaagde er niet in het gewenste rendement uit hun Google Ads-campagnes te halen. Ze besloten AI in te zetten om dit probleem aan te pakken. Door AI-gestuurde tools te integreren, automatiseerden ze hun zoekwoordenbeheer en identificeerden ze zowel positieve als negatieve zoekwoorden nauwkeuriger. Deze verandering stelde hen in staat hun advertentie-uitgaven te optimaliseren, de kosten aanzienlijk te verlagen en de efficiëntie van hun campagnes te verbeteren. Hun ervaring benadrukt de voordelen van AI-technologie voor effectief zoekwoordbeheer. Analyses van elk nieuw zoekwoord worden binnen een uur na de eerste vertoning uitgevoerd. De snelheid helpt om negatieve zoekwoorden te onderscheppen voordat bezoekers op de Google-advertentie klikken.
Voor wie meer wil leren over effectief zoekwoordenbeheer en AI-optimalisatie, bekijk deze bronnen:
Hier is ons script, dat we elk uur uitvoeren om zoekwoordclusters te evalueren.
Dit script is bedoeld om verschillende taken met betrekking tot het beheer van Google Ads-campagnes te automatiseren. Het werkt samen met Google Sheets voor configuratie en instellingen en voert bewerkingen uit op Google Ads-accounts, zoals het analyseren van zoektermen, het toevoegen of uitsluiten van zoekwoorden en het koppelen met de FlowHunt API voor geavanceerde AI-zoekwoordclustering.
main()
functie. Deze functie opent het Google Sheets-document zoals gespecificeerd in spreadsheetURL
en haalt de benodigde configuratie-instellingen op, zoals apiKey
, country
, language
en andere.minimumMatch
-criterium.callFlowHuntApi()
om met de FlowHunt API te communiceren voor verschillende taken, waaronder het ophalen van workspace-ID’s en het clusteren van zoekwoorden.Om dit script te implementeren, moeten gebruikers:
Vergeet niet de echte link naar je Google Sheet-document in te stellen. De rest is onze magie. Wij identificeren zoekwoorden die bij de campagne horen en automatiseren het beheer van zoekwoorden (zowel negatief als positief).
//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;
}
Negatieve zoekwoorden voorkomen dat je advertenties verschijnen bij irrelevante zoekopdrachten, waardoor je verspilde uitgaven vermindert en de ROI van je campagne verbetert door je alleen te richten op de meest relevante zoekopdrachten.
AI-tools zoals FlowHunt analyseren realtime zoekgegevens, identificeren irrelevante zoekwoorden en werken je campagnes automatisch bij met negatieve zoekwoorden. Dit bespaart tijd en verhoogt de efficiëntie.
Je kunt hogere conversieratio's, minder advertentie-uitgaven aan irrelevante klikken en efficiëntere campagnes verwachten, omdat AI je zoekwoordenlijsten en targeting continu optimaliseert.
Je moet je Google Ads-account koppelen, instellingen configureren in een Google Sheet en het bijgeleverde script implementeren om geautomatiseerd zoekwoordenbeheer mogelijk te maken met de AI van FlowHunt.
Viktor Zeman is mede-eigenaar van QualityUnit. Zelfs na 20 jaar leiding te hebben gegeven aan het bedrijf, blijft hij in de eerste plaats een software engineer, gespecialiseerd in AI, programmatische SEO en backend-ontwikkeling. Hij heeft bijgedragen aan tal van projecten, waaronder LiveAgent, PostAffiliatePro, FlowHunt, UrlsLab en vele anderen.
Klaar om het maximale uit je Google Ads te halen? Ontdek hoe AI-gestuurde automatisering je negatieve zoekwoorden beheert en advertentie-uitgaven optimaliseert.
Automatiseer negatieve zoekwoorden in Google Ads met de PPC AI Agent van FlowHunt. Sluit irrelevante zoekopdrachten uit, verminder verspild budget en verbeter c...
Een negatieve prompt in AI is een instructie die modellen vertelt wat ze niet moeten opnemen in hun gegenereerde output. In tegenstelling tot traditionele promp...
Ontdek hoe FlowHunt's Google Antwoordgenerator AI en real-time Google Zoeken inzet om nauwkeurige, actuele antwoorden te bieden op elke vraag. Verken de functie...