
Tác nhân AI PPC với tự động hóa truy vấn phủ định
Tự động hóa từ khóa phủ định trong Google Ads với Tác nhân AI PPC của FlowHunt. Loại bỏ truy vấn không liên quan, giảm chi tiêu lãng phí và tăng chuyển đổi nhờ ...
FlowHunt tự động hóa quản lý từ khóa phủ định Google Ads bằng AI, giúp doanh nghiệp cắt giảm chi phí, tối ưu chi tiêu quảng cáo và cải thiện kết quả chiến dịch một cách dễ dàng.
Chi tiêu từ khóa không mong muốn xảy ra khi quảng cáo của bạn xuất hiện trên các kết quả tìm kiếm không khớp với sản phẩm/dịch vụ bạn cung cấp. Điều này có thể nhanh chóng làm cạn ngân sách, vì mỗi lần nhấp không liên quan đều tiêu tốn tiền mà không mang lại doanh số. Ví dụ, một công ty bán giày da cao cấp nhắm tới các từ khóa rộng như “mua giày” có thể thu hút lượt nhấp từ những người quan tâm đến giày thể thao hoặc dép xỏ ngón, những sản phẩm họ không cung cấp. Việc nhắm sai từ khóa như vậy dẫn đến chi tiêu quảng cáo lãng phí và ROI thấp. Doanh nghiệp cần nắm rõ khái niệm này để tránh mất tiền không cần thiết và tập trung ngân sách vào từ khóa phù hợp.
Từ khóa phủ định là công cụ không thể thiếu trong mọi chiến dịch Google Ads. Chúng giúp nhà quảng cáo loại trừ các cụm từ tìm kiếm không mong muốn, đảm bảo chỉ những tìm kiếm phù hợp mới dẫn đến hiển thị quảng cáo. Ví dụ, sử dụng từ khóa phủ định như “giá rẻ” hoặc “giảm giá” sẽ giúp công ty giày da tránh được lượt nhấp từ những người không quan tâm đến sản phẩm cao cấp. Bằng cách xây dựng danh sách từ khóa phủ định hợp lý, doanh nghiệp có thể tối ưu chi tiêu quảng cáo, giảm lượt nhấp không mong muốn và tăng hiệu quả tổng thể cho chiến dịch.
Trí tuệ nhân tạo (AI) đang thay đổi cách các nhà quảng cáo quản lý chiến dịch Google Ads. Các công cụ AI như FlowHunt được thiết kế để nhóm từ khóa, giúp doanh nghiệp xác định và tổ chức các từ khóa liên quan một cách hiệu quả. Tự động hóa này đơn giản hóa quá trình tìm kiếm cả từ khóa tích cực lẫn phủ định, giảm bớt công việc thủ công khi quản lý chiến dịch. Quản lý từ khóa bằng AI cho phép thay đổi theo thời gian thực dựa trên dữ liệu hiệu suất, đảm bảo chi tiêu quảng cáo luôn được tối ưu để đạt ROI tốt nhất.
Để cắt giảm chi tiêu cho từ khóa không mong muốn, doanh nghiệp nên áp dụng các chiến lược sau:
PostAffiliatePro gặp khó khăn với chi tiêu quảng cáo hàng tháng, chưa đạt được ROI mong muốn từ các chiến dịch Google Ads. Họ đã quyết định sử dụng AI để giải quyết vấn đề này. Bằng việc tích hợp các công cụ AI, họ đã tự động hóa quy trình quản lý từ khóa, xác định chính xác cả từ khóa tích cực lẫn phủ định. Sự thay đổi này giúp tối ưu hóa chi tiêu quảng cáo, giảm đáng kể chi phí và nâng cao hiệu quả chiến dịch. Trải nghiệm của họ cho thấy lợi ích khi ứng dụng công nghệ AI để quản lý từ khóa hiệu quả. Phân tích từng từ khóa mới được thực hiện trong vòng một giờ kể từ lần hiển thị đầu tiên. Tốc độ này giúp phát hiện từ khóa phủ định trước khi khách truy cập kịp nhấp vào quảng cáo Google.
Nếu bạn muốn tìm hiểu thêm về quản lý từ khóa hiệu quả và tối ưu hóa bằng AI, hãy tham khảo các nguồn sau:
Dưới đây là script mà chúng tôi chạy mỗi giờ để đánh giá các cụm từ khóa.
Script này nhằm tự động hóa nhiều tác vụ liên quan đến quản lý chiến dịch Google Ads. Nó kết nối với Google Sheet để cấu hình và cài đặt, thực hiện các thao tác trên tài khoản Google Ads như phân tích truy vấn tìm kiếm, thêm hoặc loại trừ từ khóa, đồng thời tương tác với API FlowHunt để phân cụm từ khóa bằng AI nâng cao.
main()
. Hàm này mở tài liệu Google Sheet được chỉ định bởi spreadsheetURL
, lấy các cài đặt cần thiết như apiKey
, country
, language
và các thông số khác.minimumMatch
đã đặt.callFlowHuntApi()
để kết nối với API FlowHunt cho các tác vụ như lấy workspace ID và phân cụm từ khóa.Để triển khai script này, người dùng cần:
Đừng quên đặt đúng đường dẫn Google Sheet của bạn. Phần còn lại là phép màu của chúng tôi. Chúng tôi xác định các từ khóa thuộc về chiến dịch và tự động hóa quản lý từ khóa (cả phủ định và tích cực).
//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;
}
Từ khóa phủ định ngăn quảng cáo của bạn xuất hiện khi tìm kiếm không liên quan, giúp giảm chi tiêu lãng phí và cải thiện ROI chiến dịch bằng cách tập trung vào các truy vấn phù hợp nhất.
Các công cụ AI như FlowHunt phân tích dữ liệu tìm kiếm theo thời gian thực, xác định từ khóa không phù hợp và tự động cập nhật từ khóa phủ định cho chiến dịch của bạn, tiết kiệm thời gian và tăng hiệu quả.
Bạn sẽ thấy tỷ lệ chuyển đổi tăng, giảm chi tiêu quảng cáo cho các nhấp chuột không liên quan và chiến dịch hiệu quả hơn nhờ AI liên tục tối ưu danh sách từ khóa và nhắm mục tiêu.
Bạn cần kết nối tài khoản Google Ads, cấu hình cài đặt trong Google Sheet và triển khai script được cung cấp để bật quản lý từ khóa tự động nhờ AI của FlowHunt.
Viktor Zeman là đồng sở hữu của QualityUnit. Sau 20 năm lãnh đạo công ty, anh vẫn chủ yếu là một kỹ sư phần mềm, chuyên về AI, SEO theo lập trình và phát triển backend. Anh đã đóng góp cho nhiều dự án, bao gồm LiveAgent, PostAffiliatePro, FlowHunt, UrlsLab và nhiều dự án khác.
Sẵn sàng tối đa hóa ROI Google Ads? Khám phá cách tự động hóa bằng AI quản lý từ khóa phủ định và tối ưu chi tiêu quảng cáo.
Tự động hóa từ khóa phủ định trong Google Ads với Tác nhân AI PPC của FlowHunt. Loại bỏ truy vấn không liên quan, giảm chi tiêu lãng phí và tăng chuyển đổi nhờ ...
Tìm hiểu lý do vì sao cô lập cụm từ tìm kiếm lại quan trọng trong tối ưu hóa quảng cáo PPC. Khám phá cách nhắm mục tiêu các cụm từ hiệu quả, tăng ROI, giảm chi ...
Khám phá Trình Tạo Quảng Cáo Google từ bất kỳ URL nào, một công cụ AI giúp tạo quảng cáo Google chất lượng cao, tối ưu từ khóa một cách nhanh chóng và dễ dàng. ...