0.8 C
Seoul
토요일, 12월 21, 2024

spot_img

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

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

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

쿠팡 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 파이썬

쿠팡, C커머스 공세에 1분기 어닝 쇼크 (feat. 시간외거래 6% 하락)

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

Related Articles

Stay Connected

18,393FansLike
128,393FollowersFollow
81,934SubscribersSubscribe

Latest Articles