본문 바로가기
카테고리 없음

컴퓨터와 구글계정으로 블로그 스팟에 자동포스팅하는 방법 (2편: 프로그램 설정 및 파일 작성법)

by 혁솔아빠 2026. 1. 3.

 

바쁘신 분들을 위해 결론부터 말씀드립니다!

  1. 핵심 설정: 내 블로그 ID 입력, 폴더 경로 복사, 포스팅 간격(초) 설정.
  2. 글 작성: 메모장 첫 줄은 '제목', 두 번째 줄부터는 '본문'입니다.
  3. 주의 사항: 저장할 때 반드시 인코딩을 'UTF-8'로 해야 한글이 깨지지 않습니다.

0. "어려운 코딩은 제가 다 해두었습니다!"

1편에서 구글 API 설정을 마치셨나요? 이제 배달부 역할을 할 blogger_bot.py 프로그램에 "우리 집(블로그) 주소는 여기고, 글은 이 폴더에 있어"라고 알려줄 차례입니다. 메모장만 다룰 줄 안다면 누구나 할 수 있으니 걱정 마세요!

 

아래의 프로그램을 다운로드 받으셔서 JSON파일과 함께 자동화 포스팅을 하기 위한 폴더에 넣어두시기 바랍니다.

 

blogger_bot.py
0.00MB

 

파일의 내용은 아래와 같습니다.

import os
import pickle
import time
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from googleapiclient.discovery import build

# ==========================================
# [사용자 설정 영역: 여기만 수정하세요]
# ==========================================

# 1. 내 블로그 ID (블로그 관리 주소창의 숫자)
BLOG_ID = "1457224213360648910"

# 2. 파일들이 들어있는 폴더 경로 (r을 꼭 붙여주세요)
INPUT_FOLDER = r'C:\Users\탑라이트 1층\Desktop\blogger_auto_system\post_ready'
COMPLETED_FOLDER = r'C:\Users\탑라이트 1층\Desktop\blogger_auto_system\post_end'

# 3. 포스팅 간격 설정 (3600초 = 1시간)
WAIT_SECONDS = 3600

# ==========================================

# 구글 블로그 접근 권한 설정
SCOPES = ['https://www.googleapis.com/auth/blogger']

def get_blogger_service():
    """구글 로그인 인증을 처리하는 함수"""
    creds = None
    # 이전에 로그인한 기록이 있다면 가져옴
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
            
    # 로그인 기록이 없으면 새로 로그인 진행
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'client_secret.json', SCOPES)
            creds = flow.run_local_server(port=0)
        # 로그인 정보 저장 (다음 실행 시 자동 로그인용)
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)

    return build('blogger', 'v3', credentials=creds)

def post_to_blogger(service, title, content):
    """블로그에 실제 글을 올리는 함수"""
    body = {
        "kind": "blogger#post",
        "title": title,
        "content": content
    }
    try:
        posts = service.posts()
        result = posts.insert(blogId=BLOG_ID, body=body, isDraft=False).execute()
        print(f"✅ 발행 성공: {title}")
        return True
    except Exception as e:
        print(f"❌ 발행 실패: {e}")
        return False

def main():
    """전체 시스템을 가동하는 메인 함수"""
    # 필요한 폴더가 없으면 자동으로 만듦
    if not os.path.exists(INPUT_FOLDER): os.makedirs(INPUT_FOLDER)
    if not os.path.exists(COMPLETED_FOLDER): os.makedirs(COMPLETED_FOLDER)

    print("🤖 블로그스팟 자동 배달부 작동 시작...")
    
    try:
        service = get_blogger_service()
    except Exception as e:
        print(f"❌ 인증 에러: {e}\n'client_secret.json' 파일이 있는지 확인하세요.")
        return

    # 반복해서 파일 확인 및 포스팅
    while True:
        # post_ready 폴더에서 .txt 파일 목록 가져오기
        files = [f for f in os.listdir(INPUT_FOLDER) if f.endswith('.txt')]
        
        if not files:
            print("📂 [알림] 준비된 TXT 파일이 없습니다. 새로운 파일을 기다립니다...")
            # 파일이 없으면 10분마다 다시 확인
            time.sleep(600)
            continue

        # 가장 오래된 파일 하나 선택
        file_name = files[0]
        file_path = os.path.join(INPUT_FOLDER, file_name)
        
        try:
            with open(file_path, 'r', encoding='utf-8') as f:
                lines = f.readlines()
                if not lines: continue
                
                title = lines[0].strip() # 첫 줄은 제목
                content_text = "".join(lines[1:]) # 나머지는 내용
                # 텍스트의 엔터를 블로그용 줄바꿈(HTML)으로 변환
                content_html = content_text.replace('\n', '<br>')

            # 블로그에 올리기
            if post_to_blogger(service, title, content_html):
                # 성공하면 완료 폴더로 이동
                dest_path = os.path.join(COMPLETED_FOLDER, file_name)
                if os.path.exists(dest_path): os.remove(dest_path)
                os.rename(file_path, dest_path)
                
                print(f"💤 다음 배달까지 {WAIT_SECONDS}초(1시간) 동안 휴식합니다...")
                time.sleep(WAIT_SECONDS)
                
        except Exception as e:
            print(f"⚠️ 오류 발생 ({file_name}): {e}")
            time.sleep(60) # 오류 시 잠시 대기 후 다시 시도

if __name__ == '__main__':
    main()

 


1. [주소 찾기] 내 블로그 ID 가져오기

블로그 ID는 구글이 내 블로그에 붙여준 '고유 번호'입니다. 주소창에서 쉽게 찾을 수 있습니다.

  • 방법:
    1. 구글 블로그 관리자 페이지에 접속합니다.
    2. 주소창의 숫자를 확인하세요. 예: https://www.blogger.com/blog/posts/1457224213360648910
    3. 맨 뒤에 있는 숫자 전체를 복사합니다.
  • 입력 위치: blogger_bot.py를 메모장으로 열고 아래 부분의 숫자만 갈아 끼우세요.
      # 1. 내 블로그 ID (따옴표 안에 숫자만 입력)
      BLOG_ID = "1457224213360648910" 

[📸 이미지 삽입 가이드]

  • 장면: 블로그 관리자 주소창에서 숫자가 강조된 화면
  • 캡션: [그림 1: 주소창 맨 끝에 있는 숫자가 내 블로그 ID입니다]
  • 파일명 제안: blogger-id-check.jpg

2. [위치 안내] 폴더 경로 설정 (내 컴퓨터 주소)

프로그램이 어디에서 글을 가져오고, 다 쓴 글은 어디로 치울지 알려줘야 합니다.

  1. 경로 복사: 만들어둔 post_ready 폴더를 열고, 상단 주소창을 클릭하면 파란색으로 선택됩니다. 그대로 복사(Ctrl + C)하세요.
  2. 입력 위치: 코드 안에 아래와 같이 붙여 넣으세요. (경로 앞의 소문자 r은 절대 지우지 마세요!)
    # 경로 앞에 r을 붙여야 윈도우 경로 에러가 나지 않습니다.
    INPUT_FOLDER = r'C:\Users\Desktop\blogger_auto\post_ready'
    COMPLETED_FOLDER = r'C:\Users\Desktop\blogger_auto\post_end'

📌 에디터의 팁: 경로 앞에 붙는 r은 '이 주소를 있는 그대로 읽어줘'라는 뜻입니다. 이게 없으면 윈도우 특유의 역슬래시(\) 때문에 프로그램이 고장 날 수 있어요!


3. [시간 조절] 포스팅 시간 간격 설정

배달부가 다음 글을 올릴 때까지 얼마나 쉴지 정합니다. 단위는 초(Seconds)입니다.

목표 시간 설정값 (초) 추천 용도
10분 600 빠른 테스트용
30분 1800 집중 포스팅 시
1시간 3600 일반적인 자동 포스팅 권장
  • 설정 위치:
      # 1시간 간격으로 설정하고 싶다면 3600 입력
      WAIT_SECONDS = 3600

4. [글쓰기] 자동 포스팅용 TXT 파일 만들기

프로그램과의 약속입니다. 메모장을 열어 아래 형식으로 글을 쓰고 post_ready 폴더에 넣어주세요.

  • 작성 약속: "첫 번째 줄은 제목, 두 번째 줄부터는 본문"
  • 파일 예시:
      매일 아침 사과 한 알이 몸에 좋은 이유 5가지
      안녕하세요! 오늘은 '아침 사과'의 효능에 대해 알아보겠습니다.
      사과는 식이섬유가 풍부하여 장 건강에 매우 좋습니다.
      (이하 본문 내용...)
  • ⚠️ 필수 주의사항 (매우 중요!):
    파일을 저장할 때 하단의 [인코딩] 메뉴를 클릭하여 반드시 [UTF-8]로 선택하고 저장하세요. 그렇지 않으면 블로그에 글이 올라갔을 때 한글이 외계어처럼 깨져 보입니다.


💡 최종 확인: 설정이 완료된 코드의 모습

모든 설정을 마쳤다면 프로그램의 상단은 대략 이런 모습이 됩니다.

```python

[사용자 설정 영역]

BLOG_ID = "1234567890123456789" # 내 블로그 숫자 ID
INPUT_FOLDER = r'C:\Users\User\Desktop\blogger_auto\post_ready'
COMPLETED_FOLDER = r'C:\Users\User\Desktop\blogger_auto\post_end'
WAIT_SECONDS = 3600 # 1시간 대기

 

이제 post_ready 폴더에 예시처럼 작성한 TXT 파일들을 여러 개 넣어두고 프로그램을 실행하면, 1시간마다 하나씩 제목과 본문을 구분해서 멋지게 포스팅할 것입니다.

🔗 함께 보면 좋은 글