매번 손으로 키워드 찾고 계십니까? 이제 파이썬이 대신합니다
파이썬 네이버 블로그 키워드 추출 자동화는 코딩을 전혀 모르는 블로거도 충분히 따라할 수 있는 실용 기술입니다. 네이버 블로그로 수익을 내거나 유입을 늘리려면 검색량이 있으면서 경쟁이 낮은 키워드를 꾸준히 발굴해야 합니다. 하지만 매번 네이버 검색창에 키워드를 하나씩 입력하고, 연관 검색어를 메모장에 옮기는 작업을 반복하다 보면 키워드 리서치에만 하루 몇 시간이 사라집니다.
이 글에서는 파이썬을 이용해 네이버 블로그 키워드를 자동으로 수집하고 분석하는 도구를 처음부터 만드는 방법을 설명합니다. 파이썬을 한 번도 써본 적 없어도 괜찮습니다. 설치부터 실행까지 전 과정을 스크린샷 없이도 따라할 수 있도록 단계별로 안내합니다.
왜 네이버 키워드 리서치가 블로그 성패를 가르는가
네이버 검색 알고리즘은 구글과 다르게 작동합니다. 네이버는 검색어와 콘텐츠의 키워드 매칭을 매우 중요하게 봅니다. 아무리 좋은 글을 써도 사람들이 실제로 검색하는 단어가 본문에 자연스럽게 포함되지 않으면 검색 결과 상위에 노출되기 어렵습니다. 반대로 월 검색량 500~3,000회 수준의 '중간 경쟁 키워드'를 정확히 타겟해서 글을 쓰면, 블로그 개설 초기에도 상위 노출을 노릴 수 있습니다.
문제는 이런 키워드를 찾는 과정이 너무 수작업에 의존한다는 것입니다. 파이썬 자동화 도구를 사용하면 한 번에 수십 개의 연관 키워드를 수집하고, 검색량과 경쟁도를 비교해 최적 키워드를 골라낼 수 있습니다.
수동 키워드 리서치 vs 파이썬 자동화 비교
| 항목 | 수동 리서치 | 파이썬 자동화 |
|---|---|---|
| 키워드 10개 수집 시간 | 30~60분 | 1~3분 |
| 연관 키워드 발굴 | 제한적 (눈으로 확인) | 수십~수백 개 자동 수집 |
| 검색량 확인 | 네이버 광고 API 수동 접속 | 자동 수집 및 정렬 |
| 경쟁 문서 수 확인 | 일일이 검색 후 확인 | 자동 크롤링 후 비교 |
| 데이터 저장 | 복붙 → 엑셀 수동 정리 | CSV 자동 저장 |
| 반복 작업 | 매번 처음부터 | 키워드만 바꿔서 재실행 |
파이썬 설치부터 시작하는 완전 초보 가이드
파이썬이 설치되어 있지 않다면 지금 바로 설치합니다. 공식 파이썬 다운로드 페이지에서 최신 버전을 내려받아 설치하면 됩니다. 설치 시 반드시 'Add Python to PATH' 옵션에 체크해야 이후 명령어가 정상 작동합니다.
파이썬 설치 후 필수 라이브러리 설치
윈도우 기준으로 명령 프롬프트(cmd)를 열고 아래 명령어를 순서대로 입력합니다.
pip install requests beautifulsoup4 pandas openpyxl selenium webdriver-manager
- requests — 웹 페이지 데이터를 가져오는 라이브러리
- beautifulsoup4 — HTML에서 원하는 데이터를 추출하는 파싱 라이브러리
- pandas — 수집한 데이터를 표 형태로 정리하고 저장
- openpyxl — 엑셀 파일 저장을 위한 라이브러리
- selenium — 자바스크립트로 동적 로딩되는 페이지 처리
- webdriver-manager — 크롬 드라이버 자동 관리
이건 꼭 확인하세요: 설치 중 오류가 발생하면 명령 프롬프트를 '관리자 권한으로 실행'한 후 다시 시도하세요. 또는 pip 대신 pip3 명령어를 사용해보세요. 이 두 가지로 대부분의 설치 오류가 해결됩니다.
네이버 연관 검색어 자동 수집 코드
첫 번째 도구는 네이버 검색창에 키워드를 입력했을 때 나오는 '연관 검색어'를 자동으로 수집하는 스크립트입니다. 연관 검색어는 실제 사용자들이 함께 검색하는 단어들로, 블로그 콘텐츠 아이디어와 LSI 키워드를 발굴하는 데 매우 유용합니다.
import requests
import json
import pandas as pd
from datetime import datetime
def get_naver_related_keywords(keyword):
"""네이버 자동완성 API로 연관 키워드 수집"""
url = "https://ac.search.naver.com/nx/ac"
params = {
'q': keyword,
'con': '1',
'frm': 'nv',
'ans': '2',
'r_format': 'json',
'r_enc': 'UTF-8',
'q_enc': 'UTF-8',
'st': '1',
'r_lt': '10',
'r_unicode': '0'
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
try:
response = requests.get(url, params=params, headers=headers, timeout=5)
data = response.json()
keywords = []
if 'items' in data and len(data['items']) > 0:
for item in data['items'][0]:
keywords.append(item[0])
return keywords
except Exception as e:
print(f"오류 발생: {e}")
return []
def collect_extended_keywords(seed_keywords):
"""시드 키워드로 확장 키워드 대량 수집"""
all_keywords = set()
results = []
for seed in seed_keywords:
print(f"수집 중: {seed}")
related = get_naver_related_keywords(seed)
for kw in related:
if kw not in all_keywords:
all_keywords.add(kw)
results.append({
'seed_keyword': seed,
'related_keyword': kw,
'collected_at': datetime.now().strftime('%Y-%m-%d %H:%M')
})
# 서버 부하 방지를 위한 딜레이
import time
time.sleep(0.5)
return pd.DataFrame(results)
# 실행 예시
seed_keywords = ['재테크', '주식 투자', '부동산 투자', '적금 금리', 'ETF 추천']
df = collect_extended_keywords(seed_keywords)
print(f"\n총 수집 키워드 수: {len(df)}개")
print(df.head(10))
# CSV 저장
df.to_csv('naver_keywords.csv', index=False, encoding='utf-8-sig')
print("naver_keywords.csv 저장 완료")
네이버 광고 API로 검색량 데이터 수집하기
연관 키워드를 수집했다면 다음 단계는 각 키워드의 실제 월간 검색량을 확인하는 것입니다. 네이버 검색광고 API를 활용하면 PC와 모바일 검색량을 무료로 조회할 수 있습니다. API 사용을 위해서는 네이버 검색광고 계정과 API 키가 필요합니다.
네이버 검색광고 API 키 발급 방법
- ① 네이버 검색광고(searchad.naver.com) 접속 및 회원가입
- ② 광고 시스템 → 도구 → API 사용 관리 메뉴 접속
- ③ API 이용 신청 후 고객 ID, Access License, Secret Key 발급
- ④ 발급받은 키를 아래 코드의 해당 위치에 입력
import requests
import hashlib
import hmac
import base64
import time
import pandas as pd
class NaverSearchAdAPI:
def __init__(self, customer_id, access_license, secret_key):
self.customer_id = customer_id
self.access_license = access_license
self.secret_key = secret_key
self.base_url = "https://api.naver.com"
def get_signature(self, timestamp, method, path):
message = f"{timestamp}.{method}.{path}"
signature = hmac.new(
self.secret_key.encode('utf-8'),
message.encode('utf-8'),
hashlib.sha256
).digest()
return base64.b64encode(signature).decode('utf-8')
def get_keyword_stats(self, keywords):
"""키워드 검색량 조회"""
path = "/keywordstool"
timestamp = str(int(time.time() * 1000))
signature = self.get_signature(timestamp, "GET", path)
headers = {
'Content-Type': 'application/json; charset=UTF-8',
'X-Timestamp': timestamp,
'X-API-KEY': self.access_license,
'X-Customer': self.customer_id,
'X-Signature': signature
}
params = {
'hintKeywords': ','.join(keywords),
'showDetail': '1'
}
response = requests.get(
self.base_url + path,
headers=headers,
params=params
)
if response.status_code == 200:
data = response.json()
results = []
for item in data.get('keywordList', []):
results.append({
'keyword': item.get('relKeyword', ''),
'pc_monthly': item.get('monthlyPcQcCnt', 0),
'mobile_monthly': item.get('monthlyMobileQcCnt', 0),
'total_monthly': (
int(str(item.get('monthlyPcQcCnt', 0)).replace('< 10', '5')) +
int(str(item.get('monthlyMobileQcCnt', 0)).replace('< 10', '5'))
),
'pc_competition': item.get('compIdx', ''),
})
return pd.DataFrame(results)
else:
print(f"API 오류: {response.status_code}")
return pd.DataFrame()
# 사용 예시
api = NaverSearchAdAPI(
customer_id='YOUR_CUSTOMER_ID',
access_license='YOUR_ACCESS_LICENSE',
secret_key='YOUR_SECRET_KEY'
)
keywords_to_check = ['재테크 방법', '주식 투자 초보', 'ETF 추천 2026', '적금 금리 비교']
stats_df = api.get_keyword_stats(keywords_to_check)
if not stats_df.empty:
stats_df = stats_df.sort_values('total_monthly', ascending=False)
print(stats_df.to_string(index=False))
stats_df.to_csv('keyword_stats.csv', index=False, encoding='utf-8-sig')
print("\nkeyword_stats.csv 저장 완료")
이 부분은 주의가 필요합니다: 네이버 검색광고 API는 하루 요청 횟수 제한이 있습니다. 한 번에 최대 100개 키워드까지 조회할 수 있으며, 일일 한도를 초과하면 다음 날까지 기다려야 합니다. 키워드를 배치로 나눠서 조회하는 방식을 권장합니다.
네이버 블로그 경쟁 문서 수 자동 확인
검색량만큼 중요한 것이 경쟁 강도입니다. 같은 키워드라도 이미 수만 개의 블로그 글이 있다면 신규 블로그가 상위 노출되기 매우 어렵습니다. 아래 코드는 특정 키워드로 네이버 블로그 검색 시 나오는 결과 수를 자동으로 수집합니다.
import requests
from bs4 import BeautifulSoup
import pandas as pd
import time
def get_blog_competition(keyword):
"""네이버 블로그 검색 결과 수 수집"""
url = "https://search.naver.com/search.naver"
params = {
'where': 'blog',
'query': keyword,
'sm': 'tab_hty.top'
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}
try:
response = requests.get(url, params=params, headers=headers, timeout=10)
soup = BeautifulSoup(response.text, 'html.parser')
# 검색 결과 수 추출
total_elem = soup.select_one('.title_num')
if total_elem:
total_text = total_elem.get_text(strip=True)
total_num = int(''.join(filter(str.isdigit, total_text)))
else:
total_num = 0
return total_num
except Exception as e:
print(f"오류: {keyword} - {e}")
return -1
def analyze_keyword_competition(keywords):
"""키워드별 경쟁도 분석"""
results = []
for i, kw in enumerate(keywords):
competition = get_blog_competition(kw)
results.append({
'keyword': kw,
'blog_competition': competition,
'competition_level': (
'낮음' if competition < 50000 else
'중간' if competition < 200000 else
'높음'
)
})
print(f"[{i+1}/{len(keywords)}] {kw}: {competition:,}개")
time.sleep(1) # 서버 부하 방지
df = pd.DataFrame(results)
df = df.sort_values('blog_competition', ascending=True)
return df
# 실행
keywords = ['재테크 방법 2026', '주식 투자 초보', 'ETF 추천', '적금 금리 높은 곳', '부동산 투자 소액']
competition_df = analyze_keyword_competition(keywords)
print("\n=== 경쟁도 분석 결과 ===")
print(competition_df.to_string(index=False))
competition_df.to_csv('competition_analysis.csv', index=False, encoding='utf-8-sig')
통합 키워드 분석 도구: 검색량 + 경쟁도 한 번에
지금까지 만든 세 가지 기능(연관 키워드 수집, 검색량 조회, 경쟁도 분석)을 하나로 합쳐서 통합 키워드 분석 도구를 완성합니다. 시드 키워드 하나를 입력하면 연관 키워드 수집부터 최종 추천 키워드 목록까지 자동으로 만들어줍니다.
통합 분석 결과 예시
| 키워드 | 월 검색량 | 블로그 경쟁 수 | 경쟁도 | 추천 여부 |
|---|---|---|---|---|
| ETF 추천 2026 | 12,400 | 43,200 | 낮음 | ✅ 강력 추천 |
| 적금 금리 높은 곳 | 8,900 | 67,800 | 낮음 | ✅ 추천 |
| 재테크 방법 | 45,000 | 890,000 | 높음 | ❌ 비추천 |
| 주식 투자 초보 | 23,000 | 450,000 | 높음 | ❌ 비추천 |
| 소액 부동산 투자 | 3,200 | 28,500 | 낮음 | ✅ 추천 |
황금 키워드 자동 선별 코드
def find_golden_keywords(df_stats, df_competition):
"""검색량 높고 경쟁 낮은 황금 키워드 자동 선별"""
# 두 데이터프레임 병합
merged = pd.merge(df_stats, df_competition, on='keyword', how='inner')
# 황금 키워드 조건: 월 검색량 1000 이상 + 경쟁 문서 10만 미만
golden = merged[
(merged['total_monthly'] >= 1000) &
(merged['blog_competition'] < 100000) &
(merged['blog_competition'] > 0)
].copy()
# 황금도 점수 계산 (검색량/경쟁도 비율)
golden['golden_score'] = (
golden['total_monthly'] / (golden['blog_competition'] / 1000)
).round(2)
golden = golden.sort_values('golden_score', ascending=False)
print("\n=== 황금 키워드 TOP 10 ===")
print(golden[['keyword', 'total_monthly', 'blog_competition', 'golden_score']].head(10).to_string(index=False))
golden.to_excel('golden_keywords.xlsx', index=False)
print("\ngolden_keywords.xlsx 저장 완료")
return golden
# 통합 실행
golden_df = find_golden_keywords(stats_df, competition_df)
자동화 스케줄 설정: 매주 월요일 자동 실행
- ① 전체 스크립트를
keyword_automation.py로 저장 - ② 윈도우 작업 스케줄러에서 매주 월요일 오전 8시 자동 실행 설정
- ③ 실행 결과 golden_keywords.xlsx 파일 자동 업데이트 확인
- ④ 엑셀 파일 열어서 이번 주 타겟 키워드 선정 후 콘텐츠 제작 시작
네이버 검색광고 공식 API 문서(naver.github.io/searchad-apidoc)에서 키워드 조회 API의 상세 파라미터와 응답 형식을 확인할 수 있습니다. 검색량 데이터의 정확한 해석 방법도 함께 안내되어 있습니다.
마무리: 키워드 리서치를 자동화하면 콘텐츠 전략이 보입니다
파이썬 네이버 블로그 키워드 추출 자동화는 단순히 시간을 아끼는 도구가 아닙니다. 데이터 기반으로 콘텐츠 전략을 세울 수 있는 기반을 만드는 작업입니다. 황금 키워드를 매주 자동으로 발굴하고, 그 키워드를 중심으로 글을 쌓아나가면 네이버 블로그 유입은 자연스럽게 증가합니다. 오늘 이 글의 코드를 그대로 복사해서 첫 번째 키워드 수집을 실행해보세요. 화면에 키워드 목록이 쭉 나열되는 순간부터 블로그 운영의 접근 방식이 완전히 달라집니다.
0 댓글