Tự Động Hóa Từ Khóa Phủ Định Google Ads Bằng AI

Tự Động Hóa Từ Khóa Phủ Định Google Ads Bằng AI

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.

Hiểu về Chi Tiêu Từ Khóa Không Mong Muốn

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.

Vai Trò Của Từ Khóa Phủ Định

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.

Ứng Dụng AI Trong Quản Lý Từ Khóa

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.

Chiến Lược Giảm Chi Tiêu Từ Khóa Không Mong Muốn

Để 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:

  • Cập nhật danh sách từ khóa thường xuyên để phù hợp với xu hướng thị trường và sở thích người tiêu dùng.
  • Xây dựng chiến lược từ khóa phủ định mạnh mẽ bằng cách nghiên cứu và cập nhật liên tục các cụm từ cần loại trừ.
  • Giám sát và điều chỉnh chiến dịch dựa trên dữ liệu hiệu suất.
  • Phân tích từ khóa mang lại doanh số và những từ không hiệu quả để tinh chỉnh nhắm mục tiêu và tối đa hóa chi tiêu quảng cáo.

Case Study: Cách Tiếp Cận Của PostAffiliatePro

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.

improved conversion rate Tăng tỷ lệ chuyển đổi (chỉ những tìm kiếm phù hợp mới mang lại doanh số nhiều hơn)

Tài Nguyên Tham Khảo

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:

Script Google Ads Đánh Giá Mỗi Từ Khóa Mới

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.

Google Sheet to manage script settings Google Sheet để quản lý cài đặt script

Negative keywords automatically applied to Ad groups Từ khóa phủ định được tự động áp dụng cho các nhóm quảng cáo

Chức Năng Chính

  • Logic điều khiển cốt lõi nằm ở hàm 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.
  • Hệ thống sẽ cố gắng thêm bất kỳ từ khóa tích cực mới nào vào cụm FlowHunt trước. Nếu thành công, nó sẽ tiếp tục phân tích các truy vấn tìm kiếm chưa được gán.

Phân Tích Từ Khóa

  • Phân tích các từ chưa được gán: Hàm sẽ lặp qua tất cả nhóm quảng cáo trong tài khoản Ads được gắn nhãn cụ thể. Nó lấy các truy vấn tìm kiếm từ Google Ads chưa được nhắm mục tiêu và đã có ít nhất một lần hiển thị.
  • Hệ thống sử dụng API FlowHunt để tìm các từ khóa tương tự với từ đang được phân tích, lọc chúng dựa trên tiêu chí minimumMatch đã đặt.
  • Các truy vấn đáp ứng tiêu chí sẽ được thêm làm từ khóa tích cực hoặc đánh dấu là phủ định nếu không đủ điều kiện, đồng thời cập nhật Google Sheet tương ứng và chiến dịch Google Ads.

Tích Hợp FlowHunt

  • Tương tác API: Script sử dụng hàm 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.
  • Thêm từ khóa vào cụm: Hàm này gửi các từ khóa tích cực về FlowHunt để phân cụm, đảm bảo chúng được cập nhật từ dữ liệu truy vấn tìm kiếm thực tế từ Google Ads.
  • Các từ khóa đã thêm và phủ định sẽ được ghi lại vào các sheet riêng biệt để tiện theo dõi và rà soát liên tục.

Hướng Dẫn Sử Dụng

Để triển khai script này, người dùng cần:

  • Cung cấp đường dẫn Google Sheet hợp lệ và đảm bảo có các sheet cần thiết (“Settings”, “AddedKW”, “NegativeKW”).
  • Cấu hình Google Sheet với đúng API key FlowHunt, mã quốc gia và các thông số vận hành khác.
  • Đảm bảo script được chạy trong môi trường Google Ads Script với quyền truy cập API đầy đủ.

Add script to your Google Ads in menu Tools -> Bulk Actions -> Scripts Thêm script vào Google Ads trong menu Công cụ -> Tác vụ hàng loạt -> Scripts.

Đừ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).

Script Google Ads Tự Động Quản Lý Từ Khóa Phủ Định

//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;
}

Câu hỏi thường gặp

Tại sao từ khóa phủ định lại quan trọng trong Google Ads?

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.

AI tự động hóa quản lý từ khóa phủ định như thế nào?

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ả.

Tôi có thể mong đợi kết quả gì khi tự động hóa từ khóa phủ định bằng AI?

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.

Làm thế nào để thiết lập tự động hóa của FlowHunt cho Google Ads của tôi?

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.

Viktor Zeman
Viktor Zeman
CEO, Kỹ sư AI

Tự động hóa Google Ads của bạn với AI

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ìm hiểu thêm

Tác nhân AI PPC với tự động hóa truy vấn phủ định
Tác nhân AI PPC với tự động hóa truy vấn phủ định

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ờ ...

3 phút đọc
PPC AI +3
Trình Tạo Quảng Cáo Google Từ Bất Kỳ URL Nào
Trình Tạo Quảng Cáo Google Từ Bất Kỳ URL Nào

Trình Tạo Quảng Cáo Google Từ Bất Kỳ URL Nào

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. ...

3 phút đọc
AI Google Ads +4