Categories: '교육'

쿠팡 API를 활용한 워드프레스 자동 상품 포스팅 시스템 구축하기

쿠팡 API를 활용한 워드프레스 자동 상품 포스팅 시스템 구축하기 l 안녕하세요! 이번 글에서는 쿠팡 API를 활용해 상품 데이터를 자동으로 가져오고, 이를  워드프레스(WordPress) 에 게시하는 자동화 시스템을 구축하는 방법을 소개합니다. 이 코드는 쿠팡 상품 데이터를 기반으로 블로그 콘텐츠를 작성하고 싶은 분들께 유용할 것입니다. 특히, 블로그 운영자 온라인 마케터들에게 추천드립니다!

쿠팡 API를 활용한 워드프레스 자동 상품 포스팅 시스템 구축하기

쿠팡 API를 활용한 워드프레스 자동 상품 포스팅 시스템 구축하기

이 시스템의 주요 기능

  1. 쿠팡 API 연동:
    • 검색 키워드를 입력하면 관련 상품 데이터를 가져옵니다.
    • 상품명, 가격, 순위, 배송 정보 등 유용한 데이터를 제공합니다.
  2. 워드프레스 포스팅 자동화:
    • 가져온 데이터를 기반으로 WordPress에 자동으로 게시합니다.
    • 카테고리와 태그를 설정해 SEO에 최적화된 포스트를 생성합니다.
  3. HMAC 인증 방식:
    • API 호출 시 보안을 강화하기 위해 HMAC 인증 방식을 적용했습니다.
  4. 유연한 사용자 입력:
    • 동적인 키워드 검색이 가능하며, 입력에 따라 결과를 실시간으로 처리합니다.

코드 설명

1. 쿠팡 API 설정

쿠팡 API는 데이터를 가져오는 핵심 역할을 합니다. 쿠팡 파트너스 계정에서 API 키를 발급받아 환경 변수에 등록합니다.

access_key = os.getenv("COUPANG_ACCESS_KEY") secret_key = os.getenv("COUPANG_SECRET_KEY")
def generate_hmac(self, method, url, secret_key, access_key): ... signature = hmac.new(bytes(secret_key, "utf-8"), message.encode("utf-8"), hashlib.sha256).hexdigest() return f"CEA algorithm=HmacSHA256, access-key={access_key}, signed-date={timestamp}, signature={signature}"

2. 상품 데이터 가져오기

검색 키워드를 입력하면 해당 키워드와 관련된 상품 데이터를 가져옵니다. 예를 들어, “노트북”을 검색하면 연관된 노트북 상품 리스트가 출력됩니다.

API에서 제공하는 데이터는 다음과 같은 정보를 포함합니다

product_data = mgr.get_products_data(method, authorization, keyword, limit) print(f"{len(product_data)}개의 상품 데이터를 가져왔습니다.")
  • 상품명
  • 가격
  • 로켓배송 여부
  • 무료 배송 여부
  • 상품 URL 등

3. 워드프레스에 게시하기

상품 데이터를 가져온 뒤, 이를 워드프레스 블로그에 게시합니다. HTML을 사용해 보기 좋은 형태로 구성하였으며, 카테고리와 태그도 추가할 수 있습니다.

post = WordPressPost() post.title = f"추천 상품: {product_name}" post.content = f""" <h1>{product_name}</h1> <p>가격: {product_price}원</p> <p>순위: {product_rank}위</p> <img src="{product_image}" alt="{product_name}"> <p><a href="{product_url}" target="_blank">상품 보러가기</a></p> """ post.terms_names = { 'post_tag': [f"{keyword} 추천", f"{keyword} 순위"], 'category': ['Coupangs'] } wp_client.call(posts.NewPost(post))

게시된 결과는 워드프레스 관리자 페이지에서 바로 확인할 수 있습니다.


4. 자동화와 효율성

코드에는 서버 부하를 방지하기 위해 게시 후 일정 시간 대기하는 로직이 포함되어 있습니다. 이 기능은 대량의 데이터를 처리할 때 유용합니다.

time.sleep(2) # 서버 부하 방지 대기

이 코드를 활용하는 방법

  1. 환경 변수 설정:
    • COUPANG_ACCESS_KEY와 COUPANG_SECRET_KEY를 환경 변수로 설정합니다.
  2. 의존성 설치:
    • 필요한 라이브러리를 설치합니다.
  3. 코드 실행:
    • 아래 명령어로 코드를 실행합니다.
    • 검색 키워드를 입력하면 데이터가 가져와지고 자동으로 게시됩니다.
pip install requests wordpress-xmlrpc

활용 방안

이 시스템은 단순히 쿠팡 데이터를 게시하는 것에 그치지 않고, 다양한 목적으로 확장 가능합니다.

  1. 블로그 수익화:
    • 쿠팡 API에서 제공하는 상품 링크는 파트너스 수익과 연동됩니다.
    • 게시된 글을 통해 방문자가 구매를 하면 수익을 얻을 수 있습니다.
  2. SEO 최적화:
    • 인기 키워드를 기반으로 콘텐츠를 자동 생성해 검색 트래픽을 유도할 수 있습니다.
  3. 자동화된 리뷰 블로그:
    • 이 코드를 활용해 리뷰 블로그를 자동으로 운영할 수 있습니다.

마무리

이번 코드를 통해 쿠팡 상품 데이터를 활용한 자동화 블로그를 만들 수 있는 방법을 알아보았습니다. 이 시스템은 반복 작업을 줄이고 블로그 운영을 더 효율적으로 만들어줍니다. 여러분의 워드프레스 블로그에 적용해 새로운 방식으로 콘텐츠를 만들어보세요!

import datetime
import hmac
import hashlib
import os
import time
import requests
import json
import urllib.parse
from wordpress_xmlrpc import Client
from wordpress_xmlrpc import WordPressPost
from wordpress_xmlrpc.methods import posts


class CupangMgr:
    DOMAIN = "https://api-gateway.coupang.com"

    # HMAC 인증정보 생성
    def generate_hmac(self, method, url, secret_key, access_key):
        path, *query = url.split("?")
        os.environ["TZ"] = "GMT+0"
        timestamp = time.strftime('%y%m%d') + 'T' + time.strftime('%H%M%S') + 'Z'
        message = timestamp + method + path + (query[0] if query else "")
        signature = hmac.new(bytes(secret_key, "utf-8"), message.encode("utf-8"), hashlib.sha256).hexdigest()
        return f"CEA algorithm=HmacSHA256, access-key={access_key}, signed-date={timestamp}, signature={signature}"

    # 상품 데이터 검색
    def get_products_data(self, request_method, authorization, keyword, limit):
        url = f"{self.DOMAIN}/v2/providers/affiliate_open_api/apis/openapi/products/search?keyword={urllib.parse.quote(keyword)}&limit={limit}"
        response = requests.request(method=request_method, url=url, headers={
            "Authorization": authorization,
            "Content-Type": "application/json;charset=UTF-8"
        })
        if response.status_code != 200:
            raise Exception(f"API 호출 실패: {response.status_code}, {response.text}")
        return response.json().get('data', {}).get('productData', [])

    # WordPress 포스트 생성 및 게시
    def post_to_wordpress(self, product, client):
        product_id = str(product['productId'])
        product_name = product['productName']
        product_price = str(product['productPrice'])
        product_image = product['productImage']
        product_url = product['productUrl']
        keyword = product['keyword']
        rank = str(product['rank'])
        is_rocket = product.get('isRocket', False)
        is_free_shipping = product.get('isFreeShipping', False)

        rocket_text = "로켓배송 가능" if is_rocket else "로켓배송 가능 여부는 링크를 확인하세요."
        shipping_text = "배송비 무료" if is_free_shipping else "배송비는 확인 필요"

        post = WordPressPost()
        post.title = f"가성비 노트북 {product_name}"
        post.slug = product_name
        post.content = f"""
        <p>{product_name} 상품 소개입니다.</p>
        <p>검색 키워드: {keyword}, 추천 순위: {rank}위</p>
        <h2>판매가격</h2>
        <p>{product_price}원 (링크 확인 필요)</p>
        <h2>배송 정보</h2>
        <p>{shipping_text}</p>
        <p>{rocket_text}</p>
        <h2>상품 링크</h2>
        <p><a href="{product_url}">상품 보기</a></p>
        <h2>상품 이미지</h2>
        <p><img src="{product_image}" alt="{product_name}"></p>
        """
        post.terms_names = {
            'post_tag': [f"{keyword} 추천", f"{keyword} 순위", f"{keyword} 가격비교"],
            'category': ['Coupangs']
        }
        post.post_status = 'publish'

        client.call(posts.NewPost(post))
        print(f"'{product_name}' 포스트 게시 완료")


if __name__ == '__main__':
    try:
        # API 키 설정
        access_key = os.getenv("COUPANG_ACCESS_KEY")
        secret_key = os.getenv("COUPANG_SECRET_KEY")
        if not access_key or not secret_key:
            raise ValueError("쿠팡 API 키가 설정되지 않았습니다.")

        keyword = input("검색할 키워드를 입력하세요: ")
        limit = int(input("가져올 상품 개수를 입력하세요 (최대 30): "))

        # WordPress 설정
        wp_url = "https://워드프레스주소/xmlrpc.php"
        wp_user = "워드프레스ID"
        wp_password = "워드프레스비밀번호"
        client = Client(wp_url, wp_user, wp_password)

        # API 호출 및 게시
        cupang_mgr = CupangMgr()
        method = "GET"
        url_path = f"/v2/providers/affiliate_open_api/apis/openapi/products/search?keyword={urllib.parse.quote(keyword)}&limit={limit}"
        authorization = cupang_mgr.generate_hmac(method, url_path, secret_key, access_key)
        products = cupang_mgr.get_products_data(method, authorization, keyword, limit)

        if not products:
            print("상품 데이터가 없습니다.")
        else:
            for product in products:
                cupang_mgr.post_to_wordpress(product, client)
                time.sleep(5)  # 서버 부하 방지를 위해 5초 대기

    except Exception as e:
        print(f"오류 발생: {e}")

코드와 관련된 질문이나 추가적인 기능 요청이 있다면 댓글로 남겨주세요. 

2024.04.01 – [분류 전체보기] – 온라인 가격 시장 조사 with 파이썬

온라인 가격 시장 조사 with 파이썬

온라인 가격 시장 조사를 하려면 여러 사이트를 전전하게 됩니다. 네이버, 쿠팡 등 여러 플랫폼에 가격을 조사하다 보면, 온라인 가격 시장 조사가 거의 노가다 (?) 처럼 되버리죠. 사실 내가 원

aboda.kr

 

urjent

Share
Published by
urjent

Recent Posts

박문성 해설위원 김병지 대표의 공개 저격 논란과 법적 대응 쟁점 분석

김병지 강원FC 대표이사가 박문성 해설위원을 향해 정치적 행보 의혹과 과거 행적에 대한 해명을 요구하며 공개적인…

26분 ago

SK 하이닉스 성과급 지급 방식 변경과 자사주 60% 지급안 찬반 투표 쟁점

SK 하이닉스 노사가 성과급의 60%를 자사주로 지급하고 나머지 40%를 현금으로 지급하는 내용의 임금 및 단체협약…

3시간 ago

법인명의 황제사택 1,097채 적발과 국세청의 고가 법인주택 전수조사 결과

고가 법인주택 10채 중 4채 이상이 사주 일가가 사적으로 사용하는 이른바 법인명의 황제사택으로 이용되고 있다는…

3시간 ago

김옥숙 자택 압수수색 단행된 노태우 전 대통령 비자금 의혹 수사 쟁점

서울중앙지검 범죄수익환수부가 2026년 8월 21일 오전부터 노태우 전 대통령의 부인 김옥숙 여사가 머무는 서울 서대문구…

3일 ago

추성훈 격투기 은퇴전 11월 고척스카이돔 블랙컴뱃 17 출전 확정

종합격투기 선수이자 방송인인 추성훈이 오는 11월 21일 서울 구로구 고척스카이돔에서 열리는 블랙컴뱃 17 대회에 출전하여…

3일 ago

두리랜드 임채무 대표가 190억 빚에도 발달장애인에게 문을 연 사연

배우 임채무 대표가 운영하는 경기도 양주의 놀이공원 두리랜드가 발달장애인들을 위해 시설의 문을 활짝 열었습니다. 임…

3일 ago