본문 바로가기

뉴스

구글 서치 콘솔과 빙 웹마스터 도구에 티스토리 제출 자동화

 티스토리 블로그를 운영하다 보면 구글 서치콘솔, 빙 웹 마스터 도구, 네이버 웹마스터 도구에 포스팅 주소를 제출하는 일이 번거롭게 느껴진다. 물론 사이트맵을 주기적으로 읽고 가져가기는 하지만, 그 주기가 직접 확인해 보면 정말 텀이 길 때가 있다. 내가 포스팅을 게을리해서 그런 것 같은 느낌도 들지만 말이다. 어차피 이제 사람들은 점점 검색을 유튜브, 틱톡, 인스타그램 등 다양한 플랫폼에서 하고 있어서 우리에게는 시간이 조금 더 필요하다. 그래서 티스토리 게시물들을 자동 제출하는 파이썬 코드를 작성했다. (pyCharm 활용)

 

blogger image

구글 서치 콘솔의 경우

Google Indexing API with Python - JC Chouinard

1. 먼저 위 게시물을 온전히 참고하여, 구글 서치 콘솔에서 API키 혹은 JSON 인증파일을 만들기를 해보았다.

2. 일단 구글 클라우드 플랫폼(https://console.cloud.google.com/)에서 WEB SEARCH INDEXING API를 사용하기를 진행했다.

3. [사용자 인증 정보] -> [+사용자 인증 정보 만들기] 를 통해 JSON형태의 인증파일을 만든다.

4. 혹시 모를 에러를 방지하기 위해, 구글 서치콘솔에서 내 사이트의 소유자에 새로 만든 사용자 정보를 추가했다.

 

빙의 경우

1. 빙의 웹 마스터 도구에서 우측 상단의 [톱니바퀴 모양의 버튼]을 누른다.

2. [API 엑세스 권한] 을 누르고 API키를 발급 받는다.

 

하나의 코드로 두 곳 제출하기

from oauth2client.service_account import ServiceAccountCredentials
from googleapiclient.discovery import build
from googleapiclient.http import BatchHttpRequest
import httplib2
import json
import requests
import time


# 제출할 URL을 자동으로 생성하는 함수
def generate_urls(base_url, start, end):
    return [f'{base_url}/{i}' for i in range(start, end + 1)]


# Google Search Console 요청
def submit_to_google(urls, credentials):
    service = build('indexing', 'v3', credentials=credentials)

    def insert_event(request_id, response, exception):
        if exception is not None:
            print(f"Google - Failed to submit {request_id}: {exception}")
        else:
            print(f"Google - Successfully submitted {request_id}: {response}")

    batch = service.new_batch_http_request(callback=insert_event)

    for url in urls:
        batch.add(service.urlNotifications().publish(
            body={"url": url, "type": "URL_UPDATED"}))
        time.sleep(2)  # 구글 API 호출 간격 조정

    batch.execute()


# Bing Webmaster API 요청
def submit_to_bing(urls, api_key, site_url):
    endpoint = f'https://ssl.bing.com/webmaster/api.svc/json/SubmitUrlbatch?apikey={api_key}'
    headers = {'Content-Type': 'application/json'}
    data = {
        'siteUrl': site_url,
        'urlList': urls
    }

    response = requests.post(endpoint, json=data, headers=headers)

    if response.status_code == 200:
        print(f"Bing - Successfully submitted URLs: {urls}")
    else:
        print(f"Bing - Failed to submit URLs: {response.text}")


# Google API 설정
JSON_KEY_FILE = "구글인증받은사용자로그인정보.json"
SCOPES = ["https://www.googleapis.com/auth/indexing"]
credentials = ServiceAccountCredentials.from_json_keyfile_name(JSON_KEY_FILE, scopes=SCOPES)

# Bing API 설정
BING_API_KEY = "빙에서인증받은API키"
BING_SITE_URL = "https://example.tistory.com" # 1. 첫번째 : 블로그 주소 입력, 마지막에 슬래시(/) 없이

# 제출할 URL 생성
base_url = BING_SITE_URL
urls_to_submit = generate_urls(base_url, 1, 10) # 2. 두 번째 : 글 번호 시작과 끝 입력

# Google에 제출
submit_to_google(urls_to_submit, credentials)

# Bing에 제출
submit_to_bing(urls_to_submit, BING_API_KEY, BING_SITE_URL)

 

 

 주석에 써있다 싶이, 티스토리 전용으로 만들었다. 워드프레스는 별도의 플러그인으로 쉽게 할 수 있기 때문이다. 그리고 별도의 문자열로 주소를 관리하지 않고, 숫자로 포스팅을 관리하는 경우를 가정하였다.

 

1. BING_SITE_URL 변수에 블로그 주소를 입력한다. 예를 들어, https://example.tistory.com 처럼 뒤에 슬래시를 적지 않아야 한다.

2. generate_urls에 내가 작성한 포스팅의 처음 숫자와 마지막 숫자를 적는다. 예를 들어, 1이 시작이고 10이 끝이면 generate_urls(base_url, 1, 10) 이라고 작성한다. 만약 한 개의 포스팅만 작성했고, 해당 포스팅의 숫자가 8이라면, generate_urls(base_url, 8, 8) 처럼 작성하면 된다.

3. 파이썬 파일을 구동한다.

 

 

 네이버 웹 마스터 도구의 경우에는 API를 따로 제공하지 않기 때문에 셀레니움을 사용해야 한다. 그런데 여간 귀찮은 것이 아니다. 그래서 AI를 통해 코드를 따로 작성할 예정이며, 일단 구글과 빙에 집중하기로 했다. 많은 사람들에게 도움이 되었으면 한다.