
وكيل PPC الذكي مع أتمتة العبارات السلبية
قم بأتمتة العبارات السلبية في إعلانات Google باستخدام وكيل PPC الذكي من FlowHunt. استبعد العبارات غير الملائمة، قلل من الإنفاق المهدور، وحسّن التحويلات من خلال ...
يقوم FlowHunt بأتمتة إدارة الكلمات السلبية في إعلانات Google باستخدام الذكاء الاصطناعي، مما يساعد الشركات على تقليل التكاليف وتحسين الإنفاق الإعلاني وتحقيق نتائج أفضل للحملة بسهولة.
يحدث الإنفاق على الكلمات غير المرغوبة عندما تظهر إعلاناتك في نتائج بحث لا تتوافق مع ما تبيعه. يمكن أن يؤدي ذلك بسرعة إلى استنزاف ميزانيتك، حيث يكلف كل نقرة غير ملائمة مالاً دون أن تؤدي إلى عملية بيع. على سبيل المثال، إذا استهدفت شركة تبيع أحذية جلدية فاخرة كلمات رئيسية عامة مثل “شراء أحذية”، فقد تجذب نقرات من أشخاص مهتمين بالأحذية الرياضية أو الصنادل، وهي ليست ما تقدمه الشركة. يمكن أن يؤدي هذا الخلل في استهداف الكلمات الرئيسية إلى إنفاق إعلاني ضائع وانخفاض في العائد على الاستثمار. يجب على الشركات فهم هذا المفهوم لتجنب الخسائر المالية غير الضرورية وتركيز ميزانيتها على الكلمات الصحيحة.
الكلمات السلبية هي أداة أساسية في أي حملة إعلانات Google. فهي تتيح للمعلنين استبعاد مصطلحات بحث محددة من تفعيل إعلاناتهم، مما يضمن أن عمليات البحث ذات الصلة فقط هي التي تؤدي إلى ظهور الإعلان. على سبيل المثال، يمكن أن تساعد الكلمات السلبية مثل “رخيص” أو “تخفيض” شركة الأحذية الجلدية على تجنب النقرات من أشخاص غير مهتمين بالمنتجات الفاخرة. من خلال إعداد قائمة دقيقة بالكلمات السلبية، يمكن للشركات تحسين إنفاقها الإعلاني، وتقليل النقرات غير المرغوبة، وزيادة فعالية حملاتها بشكل عام.
يغيّر الذكاء الاصطناعي طريقة إدارة المعلنين لحملات إعلانات Google. تم تصميم أدوات الذكاء الاصطناعي مثل FlowHunt لتجميع الكلمات الرئيسية، مما يساعد الشركات على تحديد الكلمات المرتبطة وتنظيمها بشكل أكثر فعالية. تعمل هذه الأتمتة على تبسيط عملية العثور على الكلمات الإيجابية والسلبية، مما يقلل من العمل اليدوي المطلوب في إدارة الحملات. تُمكّن إدارة الكلمات الرئيسية المدفوعة بالذكاء الاصطناعي من إجراء تغييرات في الوقت الفعلي استنادًا إلى بيانات الأداء، مما يضمن تحسين الإنفاق الإعلاني باستمرار لتحقيق أفضل عائد استثمار.
لتقليل الإنفاق على الكلمات غير المرغوبة، يجب على الشركات اعتماد عدة استراتيجيات:
كانت PostAffiliatePro تواجه مشكلات في إنفاقها الإعلاني الشهري، تكافح لتحقيق العائد المرغوب من حملات إعلانات Google الخاصة بها. قررت الشركة استخدام الذكاء الاصطناعي لمعالجة هذه المشكلة. من خلال دمج الأدوات المدفوعة بالذكاء الاصطناعي، قامت الشركة بأتمتة عملية إدارة الكلمات الرئيسية، وحددت الكلمات الإيجابية والسلبية بدقة أكبر. سمح لهم هذا التغيير بتحسين الإنفاق الإعلاني، مما أدى إلى تقليل التكاليف بشكل كبير وتحسين كفاءة الحملة. تبرز تجربتهم فوائد استخدام تقنية الذكاء الاصطناعي لإدارة الإنفاق على الكلمات الرئيسية بفعالية. يتم تحليل كل كلمة جديدة خلال ساعة من ظهورها الأول. تساعد هذه السرعة على التقاط الكلمات السلبية قبل أن يتمكن الزوار من النقر على الإعلان في Google.
للمهتمين بمعرفة المزيد حول إدارة الكلمات الرئيسية الفعالة وتحسين الحملات باستخدام الذكاء الاصطناعي، يمكنكم استكشاف هذه المصادر:
إليكم البرنامج النصي الذي نقوم بتشغيله كل ساعة لتقييم مجموعات الكلمات الرئيسية.
يهدف هذا البرنامج النصي إلى أتمتة العديد من المهام المتعلقة بإدارة حملات إعلانات Google. يتفاعل مع Google Sheets للحصول على الإعدادات والتهيئة، ويقوم بعمليات على حسابات إعلانات Google، مثل تحليل مصطلحات البحث، وإضافة أو استبعاد الكلمات الرئيسية، والتكامل مع واجهة FlowHunt API لتجميع الكلمات الرئيسية باستخدام الذكاء الاصطناعي المتقدم.
main()
. تفتح هذه الدالة مستند Google Sheets المحدد بواسطة spreadsheetURL
، وتسترجع الإعدادات اللازمة مثل apiKey
وcountry
وlanguage
وغيرها.minimumMatch
المحدد.callFlowHuntApi()
للتفاعل مع واجهة FlowHunt API لمهام متعددة، منها استرجاع معرّفات مساحة العمل وتجميع الكلمات الرئيسية.لنشر هذا البرنامج النصي، يحتاج المستخدمون إلى:
لا تنس وضع الرابط الحقيقي لوثيقة Google Sheet الخاصة بك. الباقي هو عملنا السحري. نحن نحدد الكلمات الرئيسية التي تنتمي إلى الحملة ونقوم بأتمتة إدارتها (سواء كانت سلبية أو إيجابية).
//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;
}
تمنع الكلمات السلبية ظهور إعلاناتك لعمليات البحث غير الملائمة، مما يقلل من الإنفاق الضائع ويحسن عائد الاستثمار للحملة من خلال التركيز فقط على الاستفسارات الأكثر صلة.
تحلل أدوات الذكاء الاصطناعي مثل FlowHunt بيانات البحث في الوقت الفعلي، وتحدد الكلمات غير الملائمة، وتقوم تلقائيًا بتحديث حملاتك بالكلمات السلبية، مما يوفر الوقت ويزيد من الكفاءة.
توقع زيادة معدلات التحويل وتقليل الإنفاق على النقرات غير الملائمة وحملات أكثر كفاءة حيث يقوم الذكاء الاصطناعي بتحسين قوائم الكلمات الرئيسية والاستهداف بشكل مستمر.
ستحتاج إلى ربط حسابك في إعلانات Google، وتكوين الإعدادات في Google Sheet، ونشر البرنامج النصي المقدم لتمكين إدارة الكلمات الرئيسية المؤتمتة والمدعومة بالذكاء الاصطناعي من FlowHunt.
فيكتور زيمان هو شريك مالك في QualityUnit. حتى بعد 20 عامًا من قيادة الشركة، لا يزال في الأساس مهندس برمجيات، متخصص في الذكاء الاصطناعي، وتحسين محركات البحث البرمجية، وتطوير الخلفيات. لقد ساهم في العديد من المشاريع، بما في ذلك LiveAgent و PostAffiliatePro و FlowHunt و UrlsLab والعديد غيرها.
هل أنت مستعد لتعظيم عائد الاستثمار في إعلانات Google؟ اكتشف كيف تدير الأتمتة المدعومة بالذكاء الاصطناعي كلماتك السلبية وتحسن إنفاقك الإعلاني.
قم بأتمتة العبارات السلبية في إعلانات Google باستخدام وكيل PPC الذكي من FlowHunt. استبعد العبارات غير الملائمة، قلل من الإنفاق المهدور، وحسّن التحويلات من خلال ...
تعرف على سبب أهمية عزل مصطلحات البحث في تحسين إعلانات الدفع لكل نقرة. اكتشف كيفية استهداف المصطلحات عالية الأداء، وزيادة العائد على الاستثمار، وخفض التكاليف، وت...
اكتشف كيف يمكن أن تضاعف أتمتة إدارة PPC واستراتيجيات تحسين الكلمات المفتاحية المتقدمة معدلات التحويل لديك، وتقلل من الإنفاق الإعلاني، وتبسط حملاتك. تعرف على كيف...