엑셀 피벗 테이블 클릭 노가다 끝! 파이썬으로 자동 생성하기

이미지
엑셀 피벗 테이블 클릭 노가다 끝! 파이썬으로 자동 생성하기 (완성 코드 공개) "지역별·월별 매출 합계를 피벗으로 보고 싶은데 매번 엑셀에서 직접 만들어야 한다", "데이터가 바뀔 때마다 피벗 테이블을 새로 만들어야 해서 번거롭다", "여러 집계(합계, 평균, 개수)를 한 번에 보고 싶다"… 엑셀 피벗 테이블은 강력하지만 데이터가 바뀔 때마다 설정을 다시 해야 하는 번거로움이 있습니다. 파이썬의 pandas 를 사용하면 행·열·값·집계 방식을 코드로 정의해두고, 데이터가 바뀌어도 실행 한 번으로 피벗 테이블을 자동으로 생성하고 엑셀로 저장할 수 있습니다. 1단계: 준비물 설치 파이썬이 설치되어 있어야 합니다. 없다면 python.org 에서 최신 버전을 받아 설치하세요. 설치 시 반드시 "Add Python to PATH" 에 체크해야 합니다. 터미널(윈도우: CMD 또는 파워셸)을 열고 아래 명령어를 실행하세요: pip install pandas openpyxl pandas 의 pivot_table() 함수는 엑셀 피벗 테이블과 동일한 기능을 코드로 구현합니다. 행 그룹, 열 그룹, 집계 값, 집계 방식(합계·평균·개수 등)을 자유롭게 설정할 수 있습니다. 💡 이 코드로 할 수 있는 것: 행(Row)·열(Column)·값(Value)·집계 방식을 지정해 피벗 테이블 자동 생성, 합계·평균·최대·최소·개수 다중 집계 동시 처리, 소계(행·열 합계) 자동 추가, 결과를 서식이 적용된 엑셀로 저장합니다. 2단계: 엑셀 파일 준비 처리할 엑셀 파일은 아래처럼 1행이 헤더이고 2행부터 데이터가 입력된 형태이면 됩니다. 날짜 지역 담당자 상품분류 매출금액 수량 2026-01-05 서울 홍길동 전자제품 5,200,000 12 2026-01-12 부산 김철수 의류 980,...

블로그 포스팅 자동화! 파이썬으로 워드프레스에 글 자동 발행하기

블로그 포스팅 자동화! 파이썬으로 워드프레스에 글 자동 발행하기 (완성 코드 공개)

파이썬으로 워드프레스 블로그에 글을 자동으로 발행하는 모습


"매일 수집한 환율·날씨 데이터를 자동으로 블로그에 발행하고 싶다", "엑셀에 정리된 상품 정보를 쇼핑몰 블로그에 자동으로 올리고 싶다", "예약 발행 글을 코드로 일괄 등록하고 싶다"…

워드프레스는 REST API를 기본으로 지원합니다. 파이썬으로 이 API를 호출하면 글 작성, 카테고리·태그 설정, 이미지 업로드, 예약 발행까지 모두 자동화할 수 있습니다. 별도 플러그인 없이 워드프레스 기본 기능만으로 구현됩니다.


1단계: 워드프레스 앱 비밀번호 발급 (최초 1회만)

파이썬에서 워드프레스 API를 사용하려면 일반 로그인 비밀번호가 아닌 앱 비밀번호를 발급받아야 합니다.

  1. 워드프레스 관리자 페이지(내사이트.com/wp-admin)에 로그인합니다.
  2. 왼쪽 메뉴 "사용자""프로필"을 클릭합니다.
  3. 페이지 하단 "애플리케이션 비밀번호" 섹션에서 이름(예: "파이썬자동화")을 입력하고 "새 애플리케이션 비밀번호 추가"를 클릭합니다.
  4. 생성된 비밀번호를 복사해 둡니다. 창을 닫으면 다시 볼 수 없습니다.
⚠️ 주의: 앱 비밀번호 기능은 워드프레스 5.6 이상에서 기본 지원됩니다. "애플리케이션 비밀번호" 섹션이 보이지 않는다면 사이트가 HTTPS를 사용하는지 확인하세요. HTTP 사이트에서는 보안상 이유로 비활성화됩니다.

2단계: 준비물 설치

터미널(윈도우: CMD 또는 파워셸)을 열고 아래 명령어를 실행하세요:

pip install requests

워드프레스 REST API는 HTTP 요청 방식으로 동작하기 때문에 requests 라이브러리만 있으면 됩니다. 이미 설치되어 있다면 넘어가도 됩니다.


3단계: 완성 코드

아래 코드를 그대로 복사해서 메모장에 붙여넣고, wp_post.py로 저장하세요. 저장 시 파일 형식은 "모든 파일", 인코딩은 UTF-8로 설정합니다.

import requests
from requests.auth import HTTPBasicAuth
from datetime import datetime, timedelta
import json

# ① 설정
WP_URL    = "https://내사이트.com"          # ← 워드프레스 사이트 주소
WP_USER   = "관리자아이디"                   # ← 워드프레스 로그인 아이디
WP_PASS   = "xxxx xxxx xxxx xxxx xxxx xxxx" # ← 1단계에서 발급받은 앱 비밀번호

AUTH      = HTTPBasicAuth(WP_USER, WP_PASS)
API_BASE  = f"{WP_URL}/wp-json/wp/v2"

# ② 카테고리 ID 조회 함수
def get_category_id(category_name):
    res = requests.get(f"{API_BASE}/categories",
                       params={"search": category_name}, auth=AUTH)
    cats = res.json()
    if cats:
        return cats[0]["id"]
    # 없으면 새로 생성
    res = requests.post(f"{API_BASE}/categories",
                        json={"name": category_name}, auth=AUTH)
    return res.json().get("id")

# ③ 태그 ID 조회 함수
def get_tag_ids(tag_names):
    tag_ids = []
    for tag in tag_names:
        res = requests.get(f"{API_BASE}/tags",
                           params={"search": tag}, auth=AUTH)
        tags = res.json()
        if tags:
            tag_ids.append(tags[0]["id"])
        else:
            res = requests.post(f"{API_BASE}/tags",
                                json={"name": tag}, auth=AUTH)
            tag_ids.append(res.json().get("id"))
    return tag_ids

# ④ 글 발행 함수
def publish_post(title, content, category=None, tags=None,
                 status="publish", schedule_date=None):
    """
    title         : 글 제목
    content       : 글 본문 (HTML 형식 가능)
    category      : 카테고리 이름 (없으면 기본 카테고리)
    tags          : 태그 이름 리스트 (예: ["파이썬", "자동화"])
    status        : "publish"(즉시) / "draft"(임시저장) / "future"(예약)
    schedule_date : 예약 발행 시 날짜 (예: "2026-07-01T09:00:00")
    """
    post_data = {
        "title":   title,
        "content": content,
        "status":  status,
    }

    if category:
        cat_id = get_category_id(category)
        if cat_id:
            post_data["categories"] = [cat_id]

    if tags:
        tag_ids = get_tag_ids(tags)
        post_data["tags"] = tag_ids

    if status == "future" and schedule_date:
        post_data["date"] = schedule_date

    res = requests.post(f"{API_BASE}/posts",
                        json=post_data, auth=AUTH)

    if res.status_code in (200, 201):
        post = res.json()
        print(f"  ✔ 발행 완료: {post['title']['rendered']}")
        print(f"  ✔ URL: {post['link']}")
        return post
    else:
        print(f"  ✘ 발행 실패: {res.status_code} / {res.text[:200]}")
        return None

# ⑤ 실행: 글 발행 예시
now = datetime.now().strftime("%Y년 %m월 %d일")

# 즉시 발행
result = publish_post(
    title    = f"오늘의 업무 자동화 일지 ({now})",
    content  = """

오늘 자동화 완료 목록

  • 주식·환율 데이터 수집 완료
  • 보고서 차트 자동 생성 완료
  • 거래처 이메일 자동 발송 완료

파이썬 자동화로 오늘도 업무를 효율적으로 처리했습니다.

""", category = "업무자동화", tags = ["파이썬", "자동화", "IT꿀팁"], status = "publish", ) print(f"\n✅ 완료!")

4단계: 실행 방법

  1. 코드 ① 설정의 WP_URL에 워드프레스 사이트 주소를, WP_USER에 관리자 아이디를, WP_PASS에 앱 비밀번호를 입력합니다.
  2. 코드 ⑤ 실행 부분의 title, content, category, tags를 원하는 내용으로 수정합니다.
  3. 터미널에서 아래 명령어로 실행합니다:
python wp_post.py

정상 실행 시 터미널에 이렇게 출력됩니다:

  ✔ 발행 완료: 오늘의 업무 자동화 일지 (2026년 06월 15일)
  ✔ URL: https://내사이트.com/오늘의-업무-자동화-일지

✅ 완료!

5단계: 자주 발생하는 오류와 해결법

오류 1: 401 Unauthorized

앱 비밀번호가 잘못되었거나 REST API가 비활성화된 경우입니다. 앱 비밀번호에 공백이 포함되어 있는지 확인하세요. 워드프레스가 발급하는 앱 비밀번호는 "xxxx xxxx xxxx xxxx xxxx xxxx" 형태로 공백 포함이 정상입니다. 코드에 그대로 입력하면 됩니다.

오류 2: 404 Not Found (REST API 경로 오류)

워드프레스 REST API가 비활성화된 경우입니다. 관리자 페이지 → "설정""고유주소"에서 "글 이름"으로 설정하면 REST API가 활성화됩니다. 기본(Plain) 설정에서는 REST API가 작동하지 않습니다.

오류 3: 본문에 HTML이 적용되지 않고 태그가 그대로 출력됨

워드프레스 테마나 플러그인이 HTML을 필터링하는 경우입니다. 관리자 계정으로 발행하면 대부분 HTML이 그대로 적용됩니다. 에디터 설정에서 "비주얼 편집기 비활성화"가 체크되어 있는지도 확인하세요.


응용: 예약 발행하고 싶다면

코드 ⑤ 실행 부분의 status"future"로 바꾸고 schedule_date를 지정하면 예약 발행이 됩니다.

# 내일 오전 9시 예약 발행
tomorrow = (datetime.now() + timedelta(days=1)).strftime("%Y-%m-%dT09:00:00")

publish_post(
    title         = "내일 발행될 자동화 포스팅",
    content       = "

예약 발행 테스트입니다.

", category = "업무자동화", tags = ["파이썬", "자동화"], status = "future", schedule_date = tomorrow, )
💡 이전 게시글과 결합하면: 날씨 데이터 수집 편이나 주식·환율 수집 편으로 데이터를 모은 뒤 이 코드로 블로그에 자동 발행하면, 데이터 수집부터 포스팅까지 완전 무인 자동화가 완성됩니다. 스케줄러 편과 결합하면 매일 정해진 시간에 자동으로 포스팅까지 됩니다.

핵심 요약

  • 준비물: 워드프레스 앱 비밀번호 발급(최초 1회) + pip install requests
  • 설정: WP_URL, WP_USER, WP_PASS 입력 후 제목·본문·카테고리·태그 수정
  • 실행: 터미널에서 python wp_post.py 입력
  • 결과: 워드프레스에 글 즉시 발행 또는 예약 발행, 카테고리·태그 자동 생성 및 설정

이 코드를 응용하면 썸네일 이미지를 자동으로 업로드해 대표 이미지로 설정하거나, 엑셀 목록에서 여러 글을 한꺼번에 예약 발행하는 것도 가능합니다.

이 블로그의 인기 게시물

느려진 구글 크롬 속도 2배 빨라지는 3가지 설정 방법 (2026년 최신 가이드)

카카오톡 용량 줄이기! 대화방 파일 삭제로 스마트폰 용량 확보법 (1분 해결)

업무 속도 3배 빨라지는 윈도우 기본 캡처 도구 단축키 및 200% 활용 꿀팁