
PPC AI Agent s automatizací negativních dotazů
Automatizujte negativní klíčová slova v Google Ads pomocí PPC AI Agenta od FlowHunt. Vylučte nerelevantní dotazy, snižte zbytečné výdaje a zlepšete konverze dík...
FlowHunt automatizuje správu negativních klíčových slov v Google Ads pomocí AI, což firmám pomáhá snižovat náklady, optimalizovat reklamní rozpočty a zlepšovat výsledky kampaní bez námahy.
Výdaje za nežádoucí klíčová slova vznikají, když se vaše reklamy zobrazují ve vyhledáváních, která neodpovídají tomu, co nabízíte. Takové prokliky mohou rychle vyčerpat rozpočet, protože za každý nerelevantní klik platíte, aniž by vedl k prodeji. Například firma prodávající luxusní kožené boty může při cílení na široká klíčová slova typu „koupit boty“ přilákat návštěvy od lidí hledajících tenisky nebo sandály, což není to, co nabízí. Takový nesoulad v cílení znamená plýtvání rozpočtem a nižší návratnost. Firmy by tomuto konceptu měly rozumět, aby se vyhnuly zbytečným finančním ztrátám a zaměřily rozpočet na správná klíčová slova.
Negativní klíčová slova jsou zásadním nástrojem každé kampaně v Google Ads. Umožňují inzerentům vyloučit konkrétní hledané výrazy, které by jinak spustily jejich reklamu, a zajistit tak, že reklamy se zobrazí pouze při relevantních dotazech. Například použitím negativních klíčových slov jako „levné“ nebo „sleva“ se firma s koženými botami vyhne klikům od lidí, kteří nehledají prémiové produkty. Pečlivým sestavením seznamu negativních klíčových slov mohou firmy optimalizovat reklamní rozpočet, snížit počet zbytečných kliknutí a zvýšit celkovou účinnost kampaně.
Umělá inteligence (AI) mění způsob, jakým inzerenti spravují kampaně Google Ads. Nástroje jako FlowHunt jsou určeny pro seskupování klíčových slov, což firmám pomáhá lépe identifikovat a organizovat příbuzná klíčová slova. Tato automatizace zjednodušuje proces hledání pozitivních i negativních klíčových slov, čímž snižuje manuální práci při správě kampaní. Správa klíčových slov řízená AI umožňuje provádět změny v reálném čase na základě dat o výkonu, což zajišťuje, že reklamní rozpočet je vždy optimalizován pro nejlepší návratnost.
Pro omezení zbytečných výdajů za klíčová slova by firmy měly využít několik strategií:
PostAffiliatePro čelil problémům s měsíčními výdaji na reklamu a nedařilo se mu z Google Ads získat požadovanou návratnost. Rozhodli se využít AI k řešení tohoto problému. Začleněním nástrojů řízených AI automatizovali proces správy klíčových slov a lépe identifikovali pozitivní i negativní klíčová slova. Díky této změně optimalizovali reklamní rozpočet, výrazně snížili náklady a zvýšili efektivitu kampaní. Jejich zkušenost ukazuje přínosy využití AI při řízení výdajů za klíčová slova. Analýzy každého nového klíčového slova probíhají do hodiny od jeho prvního zobrazení, což pomáhá včas zachytit negativní klíčová slova dříve, než na ně uživatelé kliknou v Google Ads.
Pokud se chcete dozvědět více o efektivní správě klíčových slov a optimalizaci s využitím AI, doporučujeme tyto zdroje:
Zde je náš skript, který spouštíme každou hodinu pro vyhodnocení klastrů klíčových slov.
Tento skript má za cíl automatizovat několik úloh spojených se správou kampaní Google Ads. Pracuje s Google Sheets pro konfiguraci a nastavení a provádí operace v Google Ads účtech, jako je analýza vyhledávacích dotazů, přidávání či vylučování klíčových slov a komunikace s API FlowHunt pro pokročilé seskupování klíčových slov pomocí AI.
main()
. Tato funkce otevře Google Sheet zadaný v spreadsheetURL
, načte potřebná konfigurační nastavení jako apiKey
, country
, language
a další.minimumMatch
.callFlowHuntApi()
pro komunikaci s FlowHunt API při různých úlohách včetně získávání workspace ID a seskupování klíčových slov.Pro nasazení tohoto skriptu je potřeba:
Nezapomeňte nastavit skutečný odkaz na svůj Google Sheet dokument. O zbytek se postará naše magie. Identifikujeme klíčová slova, která patří do vaší kampaně, a zautomatizujeme správu klíčových slov (jak negativních, tak pozitivních).
//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;
}
Negativní klíčová slova zabraňují zobrazování reklam při nerelevantních vyhledáváních, čímž snižují zbytečné výdaje a zvyšují návratnost investic kampaně zaměřením pouze na nejrelevantnější dotazy.
Nástroje s AI jako FlowHunt analyzují data z vyhledávání v reálném čase, identifikují nerelevantní klíčová slova a automaticky aktualizují vaše kampaně o negativní klíčová slova, čímž šetří čas a zvyšují efektivitu.
Očekávejte vyšší konverzní poměr, snížení výdajů za nerelevantní prokliky a efektivnější kampaně, protože AI průběžně optimalizuje vaše seznamy klíčových slov i cílení.
Je třeba propojit svůj Google Ads účet, nakonfigurovat nastavení v Google Sheet a nasadit poskytnutý skript pro automatizovanou správu klíčových slov poháněnou AI od FlowHunt.
Viktor Zeman je spolumajitelem QualityUnit. I po více než 20 letech vedení firmy zůstává především softwarovým inženýrem, specializuje se na AI, programatické SEO a backendový vývoj. Přispěl k řadě projektů, včetně LiveAgent, PostAffiliatePro, FlowHunt, UrlsLab a mnoha dalších.
Připraveni maximalizovat ROI z Google Ads? Objevte, jak automatizace s podporou AI spravuje vaše negativní klíčová slova a optimalizuje reklamní výdaje.
Automatizujte negativní klíčová slova v Google Ads pomocí PPC AI Agenta od FlowHunt. Vylučte nerelevantní dotazy, snižte zbytečné výdaje a zlepšete konverze dík...
Zjistěte, jak automatizace správy PPC a pokročilé strategie optimalizace klíčových slov mohou zdvojnásobit vaše konverzní poměry, snížit náklady na reklamu a ze...
Objevte komponentu Google klíčová slova pro web – automatizujte průzkum klíčových slov pro jakýkoli web či stránku. Snadno získejte relevantní klíčová slova vče...