아이디어는 뭐 당연히 간단합니다..
작성된 글의 HTML code를 확인해서 <title>, <h1>, <Alt>,<meta discription > 등등의 개수와 내용이 잘 반영 되었는지를 확인하면 되는 것이지요.
이러한 단순한 아이디어를 Gemini에게 요청해서 파이썬으로 코드를 작성해 달라고 해봅니다.
Gemini에게 요청
Python 코드로 티스토리 블로그의 SEO 분석하는 프로그램을 만들고 싶어요' 라고 하고 아래 링크 글의 내용을 함께 붙여줍니다.
[티스토리] SEO 최적화 및 기본 가이드 ( HTML 내 ) - 검색엔진 최적화
HTML 에서 SEO(검색엔진 최적화) 에 도움이 되는 내용을 정리해 봤습니다. SEO (검색엔진 최적화) 기본 가이드 웹사이트 사용자에게 도움되는 방향으로 사이트와 사용자 환경 개선을 목표로 최적화
space1001.com
Gemini 답변
티스토리 블로그의 SEO를 분석하고 개선하는 Python 프로그램을 만들기 위한 좋은 아이디어입니다. 사용자 경험 개선과 네이버 검색 로봇 최적화를 목표로 하시는군요. 제시해주신 분석 항목들을 바탕으로 Python 코드를 통해 웹 페이지의 HTML을 파싱하고 SEO 요소를 검사하는 프로그램을 만들어볼 수 있습니다.
아래는 Python의 requests와 BeautifulSoup 라이브러리를 활용하여 티스토리 블로그의 SEO를 분석하는 프로그램의 기본 구조와 주요 기능에 대한 설명입니다.
티스토리 블로그 SEO 분석 프로그램 (Python)
이 프로그램은 입력된 티스토리 블로그 URL의 HTML을 가져와서 제목($\), 설명($\$), 헤딩($\), 이미지 대체 텍스트() 등 SEO 관련 요소를 분석하고, 문제점을 파악하여 개선 방향을 제시합니다.
1. 필요한 라이브러리 설치
이 프로그램을 실행하기 위해서는 requests와 BeautifulSoup 라이브러리가 필요합니다. 아직 설치되어 있지 않다면 아래 명령어로 설치해주세요.
pip install requests beautifulsoup4
2. Python 코드 예시
import requests
from bs4 import BeautifulSoup
from urllib.parse import urlparse
def analyze_seo(url):
"""
주어진 URL의 웹 페이지를 분석하여 SEO 관련 문제점을 보고합니다.
"""
try:
response = requests.get(url)
response.raise_for_status() # HTTP 오류가 발생하면 예외 발생
except requests.exceptions.RequestException as e:
print(f"오류: 웹 페이지를 가져오는 데 실패했습니다. ({e})")
return
soup = BeautifulSoup(response.text, 'html.parser')
report = []
# 1. <title> 요소 분석
titles = soup.find_all('title')
if not titles:
report.append("❌ <title> 요소 찾을 수 없음: 콘텐츠 주제를 나타낼 정확하고 고유한 제목을 만들어야 합니다.")
elif len(titles) > 1:
report.append(f"⚠️ <title> 요소가 {len(titles)}개 이상 발견: HTML 문서에 <title> 요소가 2개 이상 작성된 경우, 네이버 검색로봇이 어떤 <title>이 페이지 콘텐츠 주제에 부합하는지 분석해야 합니다. 좋지 못한 페이지로 분류될 수 있습니다.")
else:
title_text = titles[0].get_text(strip=True)
if not title_text:
report.append("❌ <title> 요소 텍스트 없음: <title> 요소 안에 제목 텍스트가 비어 있습니다.")
elif len(title_text) > 70: # 일반적인 권장 길이 (픽셀 기준이 아닌 문자 길이 기준)
report.append(f"⚠️ <title> 요소 텍스트 길이 확인 필요 ({len(title_text)}자): 제목을 매우 긴 텍스트로 작성하는 것은 옳지 않습니다. 50-70자 이내로 간결하게 작성하는 것이 좋습니다.")
else:
report.append(f"✅ <title> 요소 발견: '{title_text}'")
# 2. <meta name="description"> 분석
meta_description = soup.find('meta', attrs={'name': 'description'})
if not meta_description:
report.append("❌ <meta name='description'> 설명 누락: 페이지 내용을 요약하여 제공하는 meta description 태그가 없습니다. 검색 결과의 스니펫으로도 사용되니 각 페이지마다 요약 내용을 입력해주는 것이 좋습니다.")
else:
description_content = meta_description.get('content', '').strip()
if not description_content:
report.append("❌ <meta name='description'> 설명 내용 없음: meta description 태그가 있지만 내용이 비어 있습니다.")
else:
report.append(f"✅ <meta name='description'> 설명 발견: '{description_content}'")
# 3. <H1> 요소 분석
h1_tags = soup.find_all('h1')
if not h1_tags:
report.append("⚠️ <H1> 요소 찾을 수 없음: 페이지의 주요 제목을 나타내는 H1 태그가 없는 경우 검색 엔진이 페이지의 주제를 파악하기 어려울 수 있습니다.")
elif len(h1_tags) > 1:
report.append(f"❌ <H1> 요소가 {len(h1_tags)}개 이상 발견: <H1> 요소는 페이지 콘텐츠를 나타내는 소제목으로 사용되기에, HTML 문서에서 2개 이상 발견된다면 네이버 검색로봇이 이해하기 어려운 구조가 됩니다.")
else:
report.append(f"✅ <H1> 요소 발견: '{h1_tags[0].get_text(strip=True)}'")
# 4. Alt 속성 누락 분석
images = soup.find_all('img')
img_without_alt = []
for img in images:
if not img.get('alt'):
img_without_alt.append(img.get('src', 'Alt 속성 없는 이미지'))
if img_without_alt:
report.append(f"❌ Alt 속성 누락 ({len(img_without_alt)}개): 콘텐츠 이미지에 설명(Alt) 속성이 없는 이미지가 발견되었습니다. 네이버 검색로봇이 이미지에 대한 주제를 잘 해석할 수 있도록 Alt 속성을 추가해주세요.")
for img_src in img_without_alt[:5]: # 최대 5개까지 예시로 보여주기
report.append(f" - {img_src}")
if len(img_without_alt) > 5:
report.append(f" ...외 {len(img_without_alt) - 5}개")
else:
report.append("✅ 모든 이미지에 Alt 속성이 잘 적용되어 있습니다.")
# 5. 동일한 <title> 요소 및 <meta name="description"> 요소 (다수 페이지 분석 시 필요)
# 이 부분은 단일 페이지 분석 시에는 직접 확인하기 어렵습니다.
# 여러 페이지를 크롤링하여 데이터를 쌓고 비교해야 합니다.
# 예를 들어, 데이터베이스나 파일에 URL과 <title>, <meta description>을 저장하여 중복을 검사할 수 있습니다.
# 현재는 단일 페이지 분석이므로, 이 항목에 대한 직접적인 검사는 생략합니다.
# 대신, 각 페이지마다 고유하게 작성해야 한다는 가이드를 제공합니다.
report.append("\n--- 다수 페이지 분석 시 고려 사항 ---")
report.append("ℹ️ <title> 요소에 동일한 제목인 웹문서 다수 발견: 사이트 내 여러 페이지들이 동일한 <title>을 가진 경우, 검색 로봇은 어떤 페이지가 <title>에 가장 적합한지 분석해야 합니다. 각 페이지마다 고유한 <title> 요소를 작성하는 것을 지향해주세요.")
report.append("ℹ️ <meta name='description'> 태그에 동일 설명문 발견: 여러 페이지에 동일한 meta description이 있다면 네이버 검색 로봇이 유의미하지 않은 내용으로 판단하거나 중복된 문서로 분류하여 노출에 영향을 받을 수 있습니다. 각 페이지마다 고유한 요약 내용을 작성해야 합니다.")
print(f"\n--- SEO 분석 보고서: {url} ---")
for item in report:
print(item)
# 분석할 티스토리 블로그 URL 입력
blog_url = input("분석할 티스토리 블로그 URL을 입력하세요: ")
analyze_seo(blog_url)
3. 프로그램 사용 방법
- 위 코드를 seo_analyzer.py와 같은 이름으로 저장합니다.
- 터미널 또는 명령 프롬프트에서 해당 파일을 실행합니다: python seo_analyzer.py
- 프롬프트에 분석하고자 하는 티스토리 블로그 게시글의 정확한 URL을 입력합니다. (예: https://your-tistory-blog.tistory.com/123)
4. 코드 설명 및 개선 방향
주요 기능
- 웹 페이지 가져오기: requests 라이브러리를 사용하여 지정된 URL의 HTML 내용을 가져옵니다.
- HTML 파싱: BeautifulSoup을 이용하여 가져온 HTML을 파싱하고, 필요한 요소(title, meta description, h1, img)를 쉽게 찾을 수 있도록 객체로 변환합니다.
- SEO 요소 검사:
- $\: 태그 존재 여부, 개수(단일 권장), 텍스트 존재 여부, 길이(50~70자 권장)를 확인합니다.
- $\$: 태그 존재 여부, 내용 존재 여부를 확인합니다.
- $\: 태그 존재 여부, 개수(단일 권장)를 확인합니다.
- Alt 속성: 모든 <img> 태그에 alt 속성이 있는지 확인하고, 없는 경우 해당 이미지의 src를 보고합니다.
- 보고서 생성: 분석 결과를 바탕으로 발견된 문제점들을 리스트 형태로 사용자에게 보기 쉽게 출력합니다.
현재 코드의 한계 및 추가 개선 방향
- 단일 페이지 분석: 현재 코드는 한 번에 하나의 URL만 분석합니다. 티스토리 블로그 전체를 분석하려면 블로그 내의 모든 게시글 URL을 수집하여 반복적으로 분석하는 기능이 필요합니다. (예: 블로그의 사이트맵을 파싱하거나, 블로그 내 링크를 따라가며 크롤링)
- 동일 제목/설명 중복 검사: 여러 페이지에서 동일한 $
Gemini 가 만들어준 코드 실행
'AI를 이용한 프로그램 만들기 > SEO 분석 프로그램 개발하기' 카테고리의 다른 글
SEO 검색 최적화 하기 (응용편), 그리고 흥미로운 사실 (73) | 2025.07.11 |
---|---|
SEO 최적화 분석기 (무료 웹버전) (152) | 2025.07.07 |
SEO 최적화 분석 프로그램 (파이썬)_수정 버전 (27) | 2025.07.06 |
SEO 최적화 분석 프로그램 개발하기 (서막) (16) | 2025.07.06 |