KeywordPlanIdeaService를 사용하면 Google 검색 캠페인과 관련된 추천 키워드를 찾거나 기존 키워드 목록의 과거 측정항목을 가져올 수 있습니다.
아이디어 떠올리기
캠페인의 키워드 아이디어를 생성합니다.
KeywordPlanIdeaService.GenerateKeywordIdeas
키워드 및 URL 시드를 제공하여 아이디어를 생성할 수 있습니다. 위치, 언어, 네트워크 설정과 같은 타겟팅 매개변수를 설정하여 검색 범위를 좁힙니다. 이 서비스는 검색량 데이터와 같은 과거 통계를 반환하여 캠페인에서 키워드를 사용할지 결정하는 데 도움을 줍니다. Google Ads UI에 익숙한 사용자에게는 키워드 플래너와 유사합니다.
키워드 아이디어를 생성하기 위한 시드를 만드는 방법에는 여러 가지가 있습니다.
광고하는 내용을 설명하는 단어 또는 구문의 경우
KeywordSeed를 사용합니다 (키워드를 1개 이상 20개 이하로 입력해야 함). 배관공과 같이 타겟팅하는 일반적인 비즈니스 유형이거나 배수관 청소와 같이 제공하는 제품 또는 서비스일 수 있습니다.비즈니스와 관련된 웹페이지 또는 전체 웹사이트의 URL에는
UrlSeed를 사용합니다. URL 시드는 특정 URL만 타겟팅합니다. 일치하는 항목이 없으면 검색이 자동으로 동일한 도메인의 페이지로 확장됩니다.URL 시드의 경우 서비스는 하이퍼링크의 콘텐츠를 사용하여 키워드 아이디어를 생성하지 않습니다.
키워드 시드와 URL 시드 모두
KeywordAndUrlSeed를 사용합니다 (URL과 함께 키워드를 1개 이상 20개 이하로 입력해야 함).KeywordAndUrlSeed를 사용하면UrlSeed만 사용하는 것에 비해 더 많은 키워드 아이디어를 얻을 수 있습니다.전체 사이트의 경우
SiteSeed를 사용합니다.www.example.com과 같은 최상위 도메인 이름이 지정되면 사이트 시드는 공개적으로 제공되는 정보에서 최대 250,000개의 키워드 아이디어를 생성합니다.
타겟팅 범위를 좁히려면 language,
위치 (geo_target_constants 최대 10개),
keyword_plan_network, include_adult_keywords,
keyword_annotation (키워드
범위 축소), 및
historical_metrics_options를 구성할 수 있습니다.
응답은 페이지 나누기를 지원합니다 (페이지당 최대 10,000
개의 결과, 최종 페이지 이전의 페이지에서 page_size 결과
보다 적은 결과를 반환할 수 있으므로 추가
페이지가 있는지 확인하려면 항상 next_page_token를 확인하세요). 각 GenerateKeywordIdeaResult는 표준 text (close_variants 포함), 예측 측정항목을 생성하기 전에 필터링할 과거 keyword_idea_metrics, 선택적 keyword_annotations를 반환합니다.
요청 및 응답 필드 참조
다음 엔드포인트에서 KeywordPlanIdeaService.GenerateKeywordIdeas를 호출합니다.
POST https://googleads.googleapis.com/v26/customers/{customer_id}:generateKeywordIdeas
다음 표에는 필드와 제약 조건이 요약되어 있습니다.
GenerateKeywordIdeasRequest
| 요청 필드 | 요구사항 | 형식 및 제약 조건 |
|---|---|---|
customer_id |
필수 | 하이픈이 없는 10자리 고객 ID (string). |
seed (oneof) |
필수 | 다음 중 하나를 지정합니다. • keyword_seed: keywords[] (문자열 1개 이상 20개 이하).• url_seed: url (특정 페이지 URL).• keyword_and_url_seed: url + keywords[] 1개 이상 20개 이하.• site_seed: site (도메인 이름, 예: www.example.com, 최대 250,000개의 아이디어 반환). |
language |
선택사항 | 언어 기준 리소스 이름 (languageConstants/{criterion_id}, 예: 영어의 경우 languageConstants/1000). 언어 상수를 참고하세요. 생략하면 모든 언어의 키워드가 포함됩니다. |
geo_target_constants[] |
선택사항 | 최대 10개의 위치 리소스 이름 (geoTargetConstants/{criterion_id}, 예: 미국의 경우 geoTargetConstants/2840). 지역 타겟을 참고하세요. 목록이 비어 있으면 모든 지역을 타겟팅합니다. |
keyword_plan_network |
선택사항 | KeywordPlanNetwork (GOOGLE_SEARCH 또는 GOOGLE_SEARCH_AND_PARTNERS). 기본값은 GOOGLE_SEARCH_AND_PARTNERS입니다. |
include_adult_keywords |
선택사항 | 성인 키워드가 반환되는지 여부를 제어하는 bool입니다. 기본값은 false입니다. |
keyword_annotation[] |
선택사항 | 각 결과의 keyword_annotations를 채울 KeywordPlanKeywordAnnotation 값 목록 (예: KEYWORD_CONCEPT). |
aggregate_metrics |
선택사항 | KeywordPlanAggregateMetrics에서 aggregate_metric_types를 DEVICE로 설정하여 aggregate_metric_results에서 기기별로 분류된 검색 수를 반환합니다. |
historical_metrics_options |
선택사항 | HistoricalMetricsOptions 선택적 year_month_range (지난 4년간 사용 가능, 기본값은 지난 12개월) 및 include_average_cpc를 지정합니다. |
page_size 및 page_token |
선택사항 | 페이지당 최대 결과 수 (int32, 최대 10,000) 및 next_page_token의 연속 토큰입니다. 페이지로 나누어진 요청에서 다른 모든 요청 필드를 동일하게 유지합니다. |
GenerateKeywordIdeaResponse 메시지는 다음 필드를 반환합니다.
| 응답 필드 | 유형 | 설명 |
|---|---|---|
results[].text |
string |
추천 및 결합된 close_variants[]를 나타내는 표준 키워드 아이디어 텍스트입니다. |
results[].close_variants[] |
string[] |
이 GenerateKeywordIdeaResult로 결합된 유사 검색어입니다. |
results[].keyword_idea_metrics |
KeywordPlanHistoricalMetrics |
검색량: avg_monthly_searches (12개월 평균) 및 monthly_search_volumes[] (year, month, monthly_searches).경쟁: competition (LOW, MEDIUM, HIGH) 및 competition_index (0~100).입찰가 및 CPC: low_top_of_page_bid_micros (20번째 백분위수), high_top_of_page_bid_micros (80번째 백분위수), average_cpc_micros (include_average_cpc = true인 경우 채워짐). |
results[].keyword_annotations |
KeywordAnnotations |
keyword_annotation에서 KEYWORD_CONCEPT가 요청되면 채워집니다. concepts[] (name, concept_group.name, concept_group.type)를 포함합니다. |
aggregate_metric_results |
KeywordPlanAggregateMetricResults |
aggregate_metrics에서 DEVICE가 요청되면 채워집니다. device_searches[] (MOBILE, TABLET, DESKTOP)를 포함합니다. |
next_page_token 및 total_size |
string, int64 |
다음 페이지의 연속 토큰 (마지막 페이지에서는 생략됨) 및 사용 가능한 키워드 아이디어의 총 개수입니다. |
코드 예
자바
private void runExample( GoogleAdsClient googleAdsClient, long customerId, long languageId, List<Long> locationIds, List<String> keywords, @Nullable String pageUrl) { try (KeywordPlanIdeaServiceClient keywordPlanServiceClient = googleAdsClient.getLatestVersion().createKeywordPlanIdeaServiceClient()) { GenerateKeywordIdeasRequest.Builder requestBuilder = GenerateKeywordIdeasRequest.newBuilder() .setCustomerId(Long.toString(customerId)) // Sets the language resource using the provided language ID. .setLanguage(ResourceNames.languageConstant(languageId)) // Sets the network. To restrict to only Google Search, change the parameter below to // KeywordPlanNetwork.GOOGLE_SEARCH. .setKeywordPlanNetwork(KeywordPlanNetwork.GOOGLE_SEARCH_AND_PARTNERS); // Adds the resource name of each location ID to the request. for (Long locationId : locationIds) { requestBuilder.addGeoTargetConstants(ResourceNames.geoTargetConstant(locationId)); } // Makes sure that keywords and/or page URL were specified. The request must have exactly one // of urlSeed, keywordSeed, or keywordAndUrlSeed set. if (keywords.isEmpty() && pageUrl == null) { throw new IllegalArgumentException( "At least one of keywords or page URL is required, but neither was specified."); } if (keywords.isEmpty()) { // Only page URL was specified, so use a UrlSeed. requestBuilder.getUrlSeedBuilder().setUrl(pageUrl); } else if (pageUrl == null) { // Only keywords were specified, so use a KeywordSeed. requestBuilder.getKeywordSeedBuilder().addAllKeywords(keywords); } else { // Both page URL and keywords were specified, so use a KeywordAndUrlSeed. requestBuilder.getKeywordAndUrlSeedBuilder().setUrl(pageUrl).addAllKeywords(keywords); } // Sends the keyword ideas request. GenerateKeywordIdeasPagedResponse response = keywordPlanServiceClient.generateKeywordIdeas(requestBuilder.build()); // Prints each result in the response. for (GenerateKeywordIdeaResult result : response.iterateAll()) { System.out.printf( "Keyword idea text '%s' has %d average monthly searches and '%s' competition.%n", result.getText(), result.getKeywordIdeaMetrics().getAvgMonthlySearches(), result.getKeywordIdeaMetrics().getCompetition()); } } }
C#
public void Run(GoogleAdsClient client, long customerId, long[] locationIds, long languageId, string[] keywordTexts, string pageUrl) { KeywordPlanIdeaServiceClient keywordPlanIdeaService = client.GetService(Services.V26.KeywordPlanIdeaService); // Make sure that keywords and/or page URL were specified. The request must have // exactly one of urlSeed, keywordSeed, or keywordAndUrlSeed set. if (keywordTexts.Length == 0 && string.IsNullOrEmpty(pageUrl)) { throw new ArgumentException("At least one of keywords or page URL is required, " + "but neither was specified."); } // Specify the optional arguments of the request as a keywordSeed, UrlSeed, // or KeywordAndUrlSeed. GenerateKeywordIdeasRequest request = new GenerateKeywordIdeasRequest() { CustomerId = customerId.ToString(), }; if (keywordTexts.Length == 0) { // Only page URL was specified, so use a UrlSeed. request.UrlSeed = new UrlSeed() { Url = pageUrl }; } else if (string.IsNullOrEmpty(pageUrl)) { // Only keywords were specified, so use a KeywordSeed. request.KeywordSeed = new KeywordSeed(); request.KeywordSeed.Keywords.AddRange(keywordTexts); } else { // Both page URL and keywords were specified, so use a KeywordAndUrlSeed. request.KeywordAndUrlSeed = new KeywordAndUrlSeed(); request.KeywordAndUrlSeed.Url = pageUrl; request.KeywordAndUrlSeed.Keywords.AddRange(keywordTexts); } // Create a list of geo target constants based on the resource name of specified // location IDs. foreach (long locationId in locationIds) { request.GeoTargetConstants.Add(ResourceNames.GeoTargetConstant(locationId)); } request.Language = ResourceNames.LanguageConstant(languageId); // Set the network. To restrict to only Google Search, change the parameter below to // KeywordPlanNetwork.GoogleSearch. request.KeywordPlanNetwork = KeywordPlanNetwork.GoogleSearchAndPartners; try { // Generate keyword ideas based on the specified parameters. var response = keywordPlanIdeaService.GenerateKeywordIdeas(request); // Iterate over the results and print its detail. foreach (GenerateKeywordIdeaResult result in response) { KeywordPlanHistoricalMetrics metrics = result.KeywordIdeaMetrics; Console.WriteLine($"Keyword idea text '{result.Text}' has " + $"{metrics.AvgMonthlySearches} average monthly searches and competition " + $"is {metrics.Competition}."); } } catch (GoogleAdsException e) { Console.WriteLine("Failure:"); Console.WriteLine($"Message: {e.Message}"); Console.WriteLine($"Failure: {e.Failure}"); Console.WriteLine($"Request ID: {e.RequestId}"); throw; } }
PHP
public static function runExample( GoogleAdsClient $googleAdsClient, int $customerId, array $locationIds, int $languageId, array $keywords, ?string $pageUrl ) { $keywordPlanIdeaServiceClient = $googleAdsClient->getKeywordPlanIdeaServiceClient(); // Make sure that keywords and/or page URL were specified. The request must have exactly one // of urlSeed, keywordSeed, or keywordAndUrlSeed set. if (empty($keywords) && is_null($pageUrl)) { throw new \InvalidArgumentException( 'At least one of keywords or page URL is required, but neither was specified.' ); } // Specify the optional arguments of the request as a keywordSeed, urlSeed, // or keywordAndUrlSeed. $requestOptionalArgs = []; if (empty($keywords)) { // Only page URL was specified, so use a UrlSeed. $requestOptionalArgs['url_seed'] = new UrlSeed(['url' => $pageUrl]); } elseif (is_null($pageUrl)) { // Only keywords were specified, so use a KeywordSeed. $requestOptionalArgs['keyword_seed'] = new KeywordSeed(['keywords' => $keywords]); } else { // Both page URL and keywords were specified, so use a KeywordAndUrlSeed. $requestOptionalArgs['keyword_and_url_seed'] = new KeywordAndUrlSeed(['url' => $pageUrl, 'keywords' => $keywords]); } // Create a list of geo target constants based on the resource name of specified location // IDs. $geoTargetConstants = array_map(function ($locationId) { return ResourceNames::forGeoTargetConstant($locationId); }, $locationIds); // Generate keyword ideas based on the specified parameters. $response = $keywordPlanIdeaServiceClient->generateKeywordIdeas( new GenerateKeywordIdeasRequest([ // Set the language resource using the provided language ID. 'language' => ResourceNames::forLanguageConstant($languageId), 'customer_id' => $customerId, // Add the resource name of each location ID to the request. 'geo_target_constants' => $geoTargetConstants, // Set the network. To restrict to only Google Search, change the parameter below to // KeywordPlanNetwork::GOOGLE_SEARCH. 'keyword_plan_network' => KeywordPlanNetwork::GOOGLE_SEARCH_AND_PARTNERS ] + $requestOptionalArgs) ); // Iterate over the results and print its detail. foreach ($response->iterateAllElements() as $result) { /** @var GenerateKeywordIdeaResult $result */ // Note that the competition printed below is enum value. // For example, a value of 2 will be returned when the competition is 'LOW'. // A mapping of enum names to values can be found at KeywordPlanCompetitionLevel.php. printf( "Keyword idea text '%s' has %d average monthly searches and competition as %d.%s", $result->getText(), is_null($result->getKeywordIdeaMetrics()) ? 0 : $result->getKeywordIdeaMetrics()->getAvgMonthlySearches(), is_null($result->getKeywordIdeaMetrics()) ? 0 : $result->getKeywordIdeaMetrics()->getCompetition(), PHP_EOL ); } }
Python
def main( client: GoogleAdsClient, customer_id: str, location_ids: list[str], language_id: str, keyword_texts: list[str], page_url: str, ): keyword_plan_idea_service: KeywordPlanIdeaServiceClient = ( client.get_service("KeywordPlanIdeaService") ) keyword_competition_level_enum: KeywordPlanCompetitionLevelEnum = ( client.enums.KeywordPlanCompetitionLevelEnum ) keyword_plan_network: KeywordPlanNetworkEnum = ( client.enums.KeywordPlanNetworkEnum.GOOGLE_SEARCH_AND_PARTNERS ) location_rns: list[str] = map_locations_ids_to_resource_names( client, location_ids ) google_ads_service: GoogleAdsServiceClient = client.get_service( "GoogleAdsService" ) language_rn: str = google_ads_service.language_constant_path(language_id) # Either keywords or a page_url are required to generate keyword ideas # so this raises an error if neither are provided. if not (keyword_texts or page_url): raise ValueError( "At least one of keywords or page URL is required, " "but neither was specified." ) # Only one of the fields "url_seed", "keyword_seed", or # "keyword_and_url_seed" can be set on the request, depending on whether # keywords, a page_url or both were passed to this function. request: GenerateKeywordIdeasRequest = client.get_type( "GenerateKeywordIdeasRequest" ) request.customer_id = customer_id request.language = language_rn request.geo_target_constants = location_rns request.include_adult_keywords = False request.keyword_plan_network = keyword_plan_network # To generate keyword ideas with only a page_url and no keywords we need # to initialize a UrlSeed object with the page_url as the "url" field. if not keyword_texts and page_url: request.url_seed.url = page_url # To generate keyword ideas with only a list of keywords and no page_url # we need to initialize a KeywordSeed object and set the "keywords" field # to be a list of StringValue objects. if keyword_texts and not page_url: request.keyword_seed.keywords.extend(keyword_texts) # To generate keyword ideas using both a list of keywords and a page_url we # need to initialize a KeywordAndUrlSeed object, setting both the "url" and # "keywords" fields. if keyword_texts and page_url: request.keyword_and_url_seed.url = page_url request.keyword_and_url_seed.keywords.extend(keyword_texts) keyword_ideas = keyword_plan_idea_service.generate_keyword_ideas( request=request ) idea: GenerateKeywordIdeaResult for idea in keyword_ideas: competition_value = idea.keyword_idea_metrics.competition.name print( f'Keyword idea text "{idea.text}" has ' f'"{idea.keyword_idea_metrics.avg_monthly_searches}" ' f'average monthly searches and "{competition_value}" ' "competition.\n" )
Ruby
def generate_keyword_ideas(customer_id, location_ids, language_id, keywords, page_url) # GoogleAdsClient will read a config file from # ENV['HOME']/google_ads_config.rb when called without parameters client = Google::Ads::GoogleAds::GoogleAdsClient.new # Make sure that keywords and/or page URL were specified. The request must # have exactly one of urlSeed, keywordSeed, or keywordAndUrlSeed set. if keywords.reject {|k| k.nil?}.empty? && page_url.nil? raise "At least one of keywords or page URL is required." end kp_idea_service = client.service.keyword_plan_idea options_hash = if keywords.empty? seed = client.resource.url_seed do |seed| seed.url = page_url end {url_seed: seed} elsif page_url.nil? seed = client.resource.keyword_seed do |seed| keywords.each do |keyword| seed.keywords << keyword end end {keyword_seed: seed} else seed = client.resource.keyword_and_url_seed do |seed| seed.url = page_url keywords.each do |keyword| seed.keywords << keyword end end {keyword_and_url_seed: seed} end geo_target_constants = location_ids.map do |location_id| client.path.geo_target_constant(location_id) end include_adult_keywords = true response = kp_idea_service.generate_keyword_ideas( customer_id: customer_id, language: client.path.language_constant(language_id), geo_target_constants: geo_target_constants, include_adult_keywords: include_adult_keywords, # To restrict to only Google Search, change the parameter below to # :GOOGLE_SEARCH keyword_plan_network: :GOOGLE_SEARCH_AND_PARTNERS, **options_hash ) response.each do |result| monthly_searches = if result.keyword_idea_metrics.nil? 0 else result.keyword_idea_metrics.avg_monthly_searches end competition = if result.keyword_idea_metrics.nil? :UNSPECIFIED else result.keyword_idea_metrics.competition end puts "Keyword idea text #{result.text} has #{monthly_searches} average " + "monthly searches and competition as #{competition}." end end
Perl
sub generate_keyword_ideas { my ( $api_client, $customer_id, $location_ids, $language_id, $keyword_texts, $page_url ) = @_; # Make sure that keywords and/or page URL were specified. The request must have # exactly one of urlSeed, keywordSeed, or keywordAndUrlSeed set. if (not scalar @$keyword_texts and not $page_url) { die "At least one of keywords or page URL is required, " . "but neither was specified."; } # Specify the optional arguments of the request as a keywordSeed, urlSeed, # or keywordAndUrlSeed. my $request_option_args = {}; if (!scalar @$keyword_texts) { # Only page URL was specified, so use a UrlSeed. $request_option_args->{urlSeed} = Google::Ads::GoogleAds::V26::Services::KeywordPlanIdeaService::UrlSeed-> new({ url => $page_url }); } elsif (not $page_url) { # Only keywords were specified, so use a KeywordSeed. $request_option_args->{keywordSeed} = Google::Ads::GoogleAds::V26::Services::KeywordPlanIdeaService::KeywordSeed ->new({ keywords => $keyword_texts }); } else { # Both page URL and keywords were specified, so use a KeywordAndUrlSeed. $request_option_args->{keywordAndUrlSeed} = Google::Ads::GoogleAds::V26::Services::KeywordPlanIdeaService::KeywordAndUrlSeed ->new({ url => $page_url, keywords => $keyword_texts }); } # Create a list of geo target constants based on the resource name of specified # location IDs. my $geo_target_constants = [ map ( Google::Ads::GoogleAds::V26::Utils::ResourceNames::geo_target_constant( $_), @$location_ids)]; # Generate keyword ideas based on the specified parameters. my $keyword_ideas_response = $api_client->KeywordPlanIdeaService()->generate_keyword_ideas({ customerId => $customer_id, # Set the language resource using the provided language ID. language => Google::Ads::GoogleAds::V26::Utils::ResourceNames::language_constant( $language_id), # Add the resource name of each location ID to the request. geoTargetConstants => $geo_target_constants, # Set the network. To restrict to only Google Search, change the parameter below # to GOOGLE_SEARCH. keywordPlanNetwork => GOOGLE_SEARCH_AND_PARTNERS, %$request_option_args }); # Iterate over the results and print its detail. foreach my $result (@{$keyword_ideas_response->{results}}) { printf "Keyword idea text '%s' has %d average monthly searches " . "and '%s' competition.\n", $result->{text}, $result->{keywordIdeaMetrics}{avgMonthlySearches} ? $result->{keywordIdeaMetrics}{avgMonthlySearches} : 0, $result->{keywordIdeaMetrics}{competition} ? $result->{keywordIdeaMetrics}{competition} : "undef"; } return 1; }
curl
# This code example generates keyword ideas. # # Variables: # API_VERSION, # CUSTOMER_ID, # MANAGER_CUSTOMER_ID, # OAUTH2_ACCESS_TOKEN: # See https://developers.google.com/google-ads/api/rest/auth#request_headers # for details. # # LANGUAGE: The resource name of the language to target. This is in the format # of "languageConstants/{criterion_id}". See # https://developers.google.com/google-ads/api/data/codes-formats#languages # for the available criterion_id values. # GEO_TARGET_CONSTANT: The resource name of the geo target constant to # generate keyword ideas for. This is in the format of # "geoTargetConstants/{criterion_id}". See # https://developers.google.com/google-ads/api/data/geotargets for the # available criterion_id values. # KEYWORD: The keyword to generate keyword ideas for. # URL: The URL of the website to generate keyword ideas for. curl -f --request POST \ "https://googleads.googleapis.com/v${API_VERSION}/customers/${CUSTOMER_ID}:generateKeywordIdeas" \ --header "Content-Type: application/json" \ --header "login-customer-id: ${MANAGER_CUSTOMER_ID}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \ --data @- <<EOF { "language": "${LANGUAGE}", "geoTargetConstants": [ "${GEO_TARGET_CONSTANT}" ], "includeAdultKeywords": false, "keywordPlanNetwork": "GOOGLE_SEARCH", "keywordAndUrlSeed": { "keywords": [ "${KEYWORD}" ], "url": "${URL}" } } EOF
REST 요청 및 응답 구조
다음 예에서는 POST 요청을
KeywordPlanIdeaService.GenerateKeywordIdeas 사용하여
keywordAndUrlSeed, 영어 (languageConstants/1000), 미국
(geoTargetConstants/2840)에 보냅니다.
POST https://googleads.googleapis.com/v26/customers/{customer_id}:generateKeywordIdeas
{
"language": "languageConstants/1000",
"geoTargetConstants": [
"geoTargetConstants/2840"
],
"includeAdultKeywords": false,
"keywordPlanNetwork": "GOOGLE_SEARCH",
"keywordAnnotation": [
"KEYWORD_CONCEPT"
],
"keywordAndUrlSeed": {
"url": "https://www.example.com/mars-cruises",
"keywords": [
"mars cruise",
"space vacation"
]
}
}
응답에 성공하면 GenerateKeywordIdeaResult에 과거 검색량 및 입찰가 범위와 함께
results[] 행이 반환됩니다.
{
"results": [
{
"text": "mars cruise",
"keywordIdeaMetrics": {
"avgMonthlySearches": "12100",
"competition": "MEDIUM",
"competitionIndex": "54",
"lowTopOfPageBidMicros": "1450000",
"highTopOfPageBidMicros": "4800000",
"monthlySearchVolumes": [
{
"year": "2026",
"month": "MAY",
"monthlySearches": "14800"
}
]
},
"keywordAnnotations": {
"concepts": [
{
"name": "Space Travel",
"conceptGroup": {
"name": "Travel",
"type": "OTHERS"
}
}
]
}
}
],
"totalSize": "1"
}
UI에 매핑
다음 표에서는
KeywordPlanIdeaService.GenerateKeywordIdeas 매개변수를
Google Ads UI의 키워드 플래너에 매핑합니다.
| UI의 키워드 플래너 | Google Ads API |
|---|---|
| 키워드 및 URL 입력 | |
| 위치 | GenerateKeywordIdeasRequest.geo_target_constants |
| 성인 키워드 | GenerateKeywordIdeasRequest.include_adult_keywords |
| 언어 | GenerateKeywordIdeasRequest.language |
| 검색 네트워크 | GenerateKeywordIdeasRequest.keyword_plan_network |
| 키워드 범위 축소 | GenerateKeywordIdeasRequest.keyword_annotation |
| 기간 | GenerateKeywordIdeasRequest.historical_metrics_options |
| 결과: 키워드 | GenerateKeywordIdeaResult.text |
| 결과: 측정항목 | GenerateKeywordIdeaResult.keyword_idea_metrics |