제퍼넷 로고

Python 기반 경쟁사 분석: Serpstat API를 사용한 키워드 통찰력 — Serpstat 블로그

시간

Python과 API를 사용한 경쟁사 키워드 인사이트 | SERPSTAT

607 8

SEO - 13 분 읽음 - 2024 년 1 월 2 일
Python 기반 경쟁사 분석: Serpstat API를 사용한 키워드 통찰력
안드레아스 보니아티스
안드레아스 보니아티스

Serpstat API에는 키워드 연구부터 백링크 분석까지 SEO 워크플로의 거의 모든 측면을 포괄하는 많은 엔드포인트가 있습니다. 도메인 키워드 엔드포인트는 고객과 경쟁사에 대한 원시 데이터를 추출하는 것뿐만 아니라 데이터 과학 기술을 사용하여 통찰력을 생성하는 데에도 사용할 수 있습니다. 아래에서는 Python을 사용하여 이를 수행하는 방법을 보여 드리겠습니다. 

통찰력은 클라우드 컴퓨팅 데이터 파이프라인의 일부로 사용되어 Looker, Power BI 등과 같은 SEO 대시보드 보고서를 강화할 수 있습니다. 

API 토큰 받기

다음과 같은 문서 페이지에 표시되는 SERPSTAT API를 쿼리하려면 먼저 API 토큰이 필요합니다. 메인 API 페이지, 아래 그림과 같이:

SERPSTAT API

API 토큰을 복사한 후에는 Jupyter iPython 노트북을 시작할 때 이를 사용할 수 있습니다.

Jupyter iPython 노트북 시작

모든 Python 코드는 Jupyter iPython 노트북 환경에서 실행됩니다. 마찬가지로 원하는 경우 COLAB 노트북에서 코드가 실행됩니다. 일단 실행하고 나면 라이브러리에 포함된 함수를 가져옵니다.

수입 요청
팬더를 pd로 가져 오기
numpy를 np로 가져 오기
수입 json
플롯나인 가져오기에서 *

API를 호출하려면 요청 라이브러리가 필요합니다. 

Python의 Excel과 유사하게 데이터 프레임을 처리하기 위해 Python을 사용하고 'pd'를 약식 별칭으로 할당하여 pandas 함수 사용을 단순화합니다. 또한 데이터 프레임의 데이터를 조작하기 위해 'np'로 축약되는 Numpy를 사용할 것입니다.

API의 데이터는 사전 형식인 경우가 많으므로 JSON은 결과를 데이터 프레임에 푸시할 수 있는 데이터 구조로 압축 해제하는 데 도움이 됩니다.

api_token = '귀하의 API 키'

이는 이전에 획득되었습니다(위 참조).

api_url_pattern = 'https://api.serpstat.com/v{version}?token={token}'

Serpstat API의 다양한 엔드포인트를 쿼리할 수 있는 URL 패턴을 설정하겠습니다. 현재 버전은 APIv4입니다. 애플리케이션 프로그래밍 인터페이스를 몇 번 호출하게 되므로 반복적인 코드를 입력하지 않아도 됩니다.

api_url = api_url_pattern.format(버전=4, 토큰=api_token)

API 버전과 API 토큰을 통합하도록 API URL을 설정하세요. 

API URL

도메인 키워드 가져오기

흥미로운 부분. 이제 다음 쿼리를 통해 표시되는 모든 도메인에 대한 키워드를 추출할 수 있습니다. 도메인 키워드 끝점. 그러면 특정 검색 엔진에 대해 도메인이 상위 100위 안에 드는 모든 키워드가 표시됩니다.

API에 필요한 입력 매개변수를 설정하는 것부터 시작합니다.

domain_keyword_params = {
    "id": "1",
    "method": "SerpstatDomainProcedure.getDomainKeywords",
    "params": {
        "domain": "deel.com",
        "se": "g_uk",
        "withSubdomains": False,
        "sort": {
            "region_queries_count": "desc"
        },
        "minusKeywords": [
            "deel", "deels"
        ],
        "size": "1000",
        "filters": {
            "right_spelling": False
        }
    }
}

참고 사항: 도메인 키워드 엔드포인트는 메소드를 다음으로 설정하여 액세스됩니다. "SerpstatDomainProcedure.getDomainKeywords"

도메인 이름을 설정해야 합니다. "도메인" 아래 및 검색 엔진 아래 “그_크”.

우리의 경우 Google UK에서 deel.com의 키워드를 살펴보겠습니다. 검색 엔진의 전체 목록을 사용할 수 있습니다. 여기에서 지금 확인해 보세요. Google의 전 세계 지역과 Bing US를 다룹니다.

추가 옵션에는 마이너스 키워드(부정 일치)가 포함됩니다. 우리의 경우 자연 트래픽이 어디서 오는지 이해하기 위해 비브랜드 키워드에만 관심이 있습니다.

우리는 또한 "크기" 매개변수를 가능한 최대 행 출력인 1,000으로 설정합니다. 

특정 키워드를 포함하도록 API를 제한하는 것과 같은 다른 흥미로운 매개변수가 있습니다("키워드") 또는 도메인 내의 사이트 URL("URL").

매개변수 세트를 사용하면 아래 코드를 사용하여 요청할 수 있습니다.

domain_keyword_resp = requests.post(api_url, json=domain_keyword_params)

if domain_keyword_resp.status_code == 200:
    domain_keyword_result = domain_keyword_resp.json()
    print(domain_keyword_result)
else:
    print(domain_keyword_resp.text)

API 호출 결과는 다음 위치에 저장됩니다. domain_keyword_resp. json 함수를 사용하여 응답을 읽고 데이터를 저장합니다. 도메인_키워드_결과.

도메인 키워드 결과

if else 구조는 API 호출이 예상대로 작동하지 않는 경우 정보를 제공하는 데 사용되며, 호출 시 데이터가 없거나 오류가 있는 경우 API 응답이 무엇인지 보여줍니다.

호출 인쇄 실행 도메인_키워드_결과 이것은 다음과 같습니다:

{'id': '1', 
'result': 
{'data': [
{'domain': 'deel.com', 'subdomain': 'www.deel.com', 'keyword': 
'support for dell', 'keyword_length': 3, 'url': 'https://www.deel.com/',
 'position': 73, 'types': ['pic', 'kn_graph_card', 'related_search',
 'a_box_some', 'snip_breadcrumbs'], 'found_results': 830000000, 
'cost': 0.31, 'concurrency': 3, 'region_queries_count': 33100,
 'region_queries_count_wide': 0, 'geo_names': [], 'traff': 0,
 'difficulty': 44.02206115387234, 'dynamic': None}, 
{'domain': 'deel.com', 'subdomain': 'www.deel.com',
'keyword': 'hr and go',
 'keyword_length': 3, 'url': 'https://www.deel.com/',
 'position': 67, 'types': ['related_search', 'snip_breadcrumbs'],
 'found_results': 6120000000, 'cost': 0.18, 'concurrency': 4,
 'region_queries_count': 12100, 'region_queries_count_wide': 0,
 'geo_names': [], 'traff': 0, 'difficulty': 15.465889053157944,
 'dynamic': 3}, 

API로 작업할 때 데이터 구조를 인쇄하여 데이터를 사용 가능한 형식으로 구문 분석하는 방법을 아는 것이 중요합니다. 우리가 원하는 데이터가 결과 데이터 키 아래에 포함되어 있는 여러 키가 있는 사전을 생성하는 것은 아닙니다. 데이터 값은 각 사전이 키워드를 나타내는 사전 목록에 있습니다.

우리는 데이터를 추출하기 위해 아래 코드를 생성했습니다. 도메인_키워드_결과 그리고 그것을 밀어 넣습니다. domain_keyword_df 데이터프레임:

domain_keyword_df = pd.DataFrame(domain_keyword_result['결과']['데이터'])

데이터프레임을 표시해 보겠습니다.

디스플레이(domain_keyword_df)

다음과 같습니다.

데이터 프레임

데이터프레임에는 도메인의 모든 키워드가 최대 1,000개 행까지 표시됩니다. 여기에는 다음과 같은 열 필드가 포함됩니다.

  • 지역_쿼리_개수: 타겟 지역 내 검색량
  • URL: 키워드의 순위 URL
  • 위치: SERP 순위
  • 유형: SERP 기능
  • 동시성: 거래 및/또는 상업적 의도의 수준을 나타낼 수 있는 유료 검색 광고의 양입니다.

더 큰 사이트에서 작업하고 있기 때문에 더 많은 것을 원한다면 다음을 수행할 수 있습니다. 

2.URL을 입력 매개변수로 지정하는 for 루프의 일부로 해당 사이트 URL에 대해 위의 코드를 사용하여 여러 도메인 키워드 호출을 실행합니다. 'URL'.

데이터 기능 생성

통찰력을 얻기 위해 원시 데이터를 요약하는 데 도움이 되는 몇 가지 기능을 만들고 싶습니다. 모범 사례에 따라 데이터프레임의 복사본을 생성하고 이를 다음과 같은 새 데이터프레임에 저장합니다. dk_enhanced_df.

dk_enhanced_df = domain_keyword_df.copy()

라는 새 열 설정 '세다' 나중에 보게 되겠지만 문자 그대로 숫자를 셀 수 있게 해줄 것입니다.

dk_enhanced_df['count'] = 1

또한 SERP에 의한 사이트 위치 분포를 확인하고 대시보드 보고서에 푸시하는 데 유용할 수 있는 SERP 페이지 카테고리를 나타내는 'serp'라는 사용자 정의 열을 만들고 싶습니다.

<code data-code="dk_enhanced_df['serp'] = np.where(dk_enhanced_df['position'] dk_enhanced_df['세르프'] = NP.어디(dk_enhanced_df['위치'] < 11, '1', '아무데도') dk_enhanced_df['세르프'] = NP.어디(dk_enhanced_df['위치'].사이(11, 20), '2', dk_enhanced_df['세르프']) dk_enhanced_df['세르프'] = NP.어디(dk_enhanced_df['위치'].사이(21, 30), '3', dk_enhanced_df['세르프']) dk_enhanced_df['세르프'] = NP.어디(dk_enhanced_df['위치'].사이(31, 99), '4+', dk_enhanced_df['세르프'])

SERP는 다음을 사용하여 위에 코딩되었습니다. numpy.where 이는 더 친숙한 Excel if 문의 Python 버전과 같습니다.

유형 열을 참고하면 해당 값에는 해당 키워드에 대해 검색 엔진에 표시되는 범용 검색 결과 유형 목록이 포함됩니다. 

유형 열

우리는 이것을 풀고 다음을 사용하여 더 쉽게 분석할 수 있습니다. 원 핫 인코딩 (OHE) 기술. OHE는 모든 결과 유형 값에 대한 열을 생성하고 키워드에 대한 결과가 있는 위치에 1을 배치합니다.

type_dummies = pd.get_dummies(dk_enhanced_df['types'].apply(pd.Series).stack()).
합(레벨=0)

원-핫 인코딩된 결과 유형 열을 dk_enhanced_df 데이터 프레임

dk_enhanced_df = pd.concat([dk_enhanced_df.drop(columns=['types']), 유형_dummies], 축=1)

디스플레이(dk_enhanced_df)

디스플레이(dk_enhanced_df)

OHE 및 기타 개선 사항 덕분에 이제 더 쉽게 분석하고 통찰력을 생성할 수 있는 열이 포함된 확장된 데이터 프레임을 갖게 되었습니다.

자신있게 SEO 여정을 시작해보세요! 

7일 평가판에 등록하고 API를 사용하여 고급 SEO 분석의 세계를 경험해 보세요. 약속은 없고 순수한 탐색만 있을 뿐입니다. 

7 일 무료 평가판

도메인 키워드 데이터 탐색

먼저 도메인 키워드 데이터의 통계적 속성을 살펴보겠습니다. 설명하다() 기능:

dk_enhanced_df.describe()

dk_enhanced_df.describe()

이 함수는 데이터 프레임의 모든 숫자 열을 사용하여 평균(평균), 평균의 분산 비율을 측정하는 표준 편차(std), 데이터 포인트 수(개수) 및 위에 표시된 대로 25번째(25%)와 같은 백분위수입니다.

이 함수는 요약으로 유용하지만 비즈니스 관점에서는 데이터를 집계하는 데 유용한 경우가 많습니다. 예를 들어 다음의 조합을 사용하면 Groupby아그 함수를 사용하면 아래 코드를 사용하여 SERP 1에 몇 개의 키워드가 있는지 등을 계산할 수 있습니다.

serp_agg = dk_enhanced_df.groupby('serp').agg({'count': 'sum'}).reset_index()

groupby 함수는 Excel 피벗 테이블과 유사하게 데이터프레임을 열별로 그룹화한 다음 다른 열을 집계합니다. 사용 사례에서는 아래와 같이 SERP별로 그룹화하여 각 SERP에 몇 개의 키워드가 있는지 계산합니다.

디스플레이(serp_agg)

디스플레이(serp_agg)

SERP 3+의 861 카운트 값에서 볼 수 있듯이 대부분의 키워드는 4페이지를 넘습니다.

SEO 전문가가 아닌 청중을 위해 데이터를 시각화하려면 Plotnine의 ggplot 기능을 사용할 수 있습니다.

serp_dist_plt = (ggplot(serp_agg, 
                        aes(x = 'serp', y = 'count')) + 
                    geom_bar(stat = 'identity', alpha = 0.8, fill = 'blue') +
                    labs(y = 'SERP', x = '') + 
                    theme_classic() +            
                    theme(legend_position = 'none')
                   )

ggplot 데이터프레임과 미학(aes)이라는 두 가지 주요 주장을 취합니다. aes는 그래프에 매핑될 데이터프레임 부분을 지정합니다. 차트 유형, 축 레이블 등을 결정하기 위해 추가 레이어가 코드에 추가됩니다. 우리의 경우에는 막대 차트인 geom_bar를 사용하고 있습니다.

코드는 차트 개체에 저장됩니다. serp_dist_plt 실행하면 차트가 표시됩니다.

serp_dist_plt

serp_dist_plt

생성된 차트는 시각화된 버전을 생성합니다. serp_agg 데이터 프레임을 사용하면 SERP 간의 키워드 위치 수를 훨씬 쉽게 비교할 수 있습니다.

도메인 키워드를 통한 경쟁사 인사이트

이는 훌륭하지만 단일 웹사이트 도메인의 수치는 동일한 검색 공간에서 경쟁하는 다른 사이트와 비교할 때만큼 통찰력이 없습니다. 위의 예에서 deel.com의 SERP 14에는 1개의 키워드가 있습니다. 좋은가요? 나쁜? 평균? 어떻게 알 수 있나요?

경쟁 도메인 데이터는 해당 API 크레딧을 소비하는 데 좋은 사용 사례인 컨텍스트와 의미를 추가합니다. 위의 코드를 적용하면 여러 도메인에서 데이터를 가져와 더 의미 있는 것을 얻을 수 있습니다.

예를 들어, 동일한 공간에서 운영되는 경쟁사 사이트에서 동일한 API 엔드포인트를 사용하면 이제 각 도메인에 대한 SERP별 키워드 수를 보여주는 테이블이 있습니다.

API 엔드 포인트

보다 시각화된 형식으로 다음을 얻습니다.

더욱 시각화된 형식

추가된 컨텍스트를 통해 deel이 다른 경쟁사에 비해 SERP 1에서 성능이 저조할 수 있음을 알 수 있습니다. 또한 Bamboo HR이 선두를 달리고 있고 그 뒤를 Remote.com이 따르고 있음을 알 수 있습니다. 실제로 Bamboo는 SERP 1보다 SERP 2이 더 많은 유일한 사이트입니다.

API를 사용하면 데이터에서 추세를 추출할 수 있을 뿐만 아니라 어떤 SERP 키워드가 Bamboo의 가시성을 강화하는지 확인할 수 있는 실제 데이터가 있습니다. Python에서는 다음과 같습니다.

Bamboo_serp_1s = mdk_enhanced_df.loc[mdk_enhanced_df['도메인'] == 'bamboohr.com'].copy()

위는 도메인에 대한 결합된 API 데이터와 도메인(bamboohr.com)에 대한 필터가 포함된 데이터프레임을 사용합니다. 

디스플레이(bamboo_serp_1s)

디스플레이(bamboo_serp_1s)

그런 다음 콘텐츠 계획 목적으로 Excel로 내보낼 수 있습니다.

기타 도메인 키워드 통찰력

지금까지의 코드는 도메인 키워드 API에서 데이터를 추출하는 데 집중했으며 단 하나의 열만으로 단일 도메인과 여러 도메인에 대한 통찰력을 생성할 수 있는 방법을 보여주었습니다.

다른 열을 탐색하고 도메인 키워드 엔드포인트 내의 경쟁사 도메인을 비교하면 얼마나 더 많은 통찰력을 얻을 수 있습니까? 그것은 SERPSTAT API에서 제공되는 다른 엔드포인트를 사용하기 전입니다.

예를 들어 어떤 결과 유형이 가장 많이 나타나는가? Google의 추세를 이해하는 데 도움이 될 수 있는 특정 결과 유형이 시간이 지남에 따라 증가하고 있나요? 결과 유형 열의 압축을 푼 위의 코드는 시작하는 데 도움이 될 것입니다.

게스트 포스트 작성자의 의견은 Serpstat 편집진 및 전문가의 의견과 일치하지 않을 수 있습니다.

오류를 찾았습니까? 그것을 선택하고 Ctrl + Enter를 눌러 알려주십시오.

더 많은 SEO 도구 살펴보기

백링크 체커

백링크 확인 모든 사이트에 대해. 백링크 프로필의 힘을 높이세요

SEO용 API

빅 데이터를 검색하고 다음을 사용하여 결과를 얻습니다. SEO API

추천 게시물

서비스 및 기타 도구

커뮤니티 및 학습 허브

팀과 개인을 위한 올인원 SEO 플랫폼
2013년 SEO 및 PPC 대행사 Netpeak에서 탄생하고 개발했습니다. 2015년부터 Netpeak Group의 일부로 독립했습니다.

2013년 SEO 및 PPC 대행사 Netpeak에서 탄생하고 개발했습니다. 2015년부터 Netpeak Group의 일부로 독립했습니다.
뉴스 레터 구독하기

이 기사를 친구들과 공유하세요

확실합니까?

감사합니다. 새 메일링 설정을 저장했습니다.

버그 신고

로딩 중, 잠시 기다려주십시오 ...

우편 포켓 Flipboard는 전령 전보
spot_img

최신 인텔리전스

spot_img