검색 최적화(SEO)와 IT 기술로 여는 온라인 비즈니스 인사이트
쿠팡상품 자동 노출 완벽 적용 방법 목록(카테고리) 페이지용
Home /

쿠팡상품 자동 노출 완벽 적용 방법 목록(카테고리) 페이지용

쿠팡 파트너스 상품을 블로그에 자동으로 노출하고 싶다면, Google Apps Script(GAS)를 활용한 자동화가 가장 쉽고 안전한 방법입니다. 목록 페이지 전용 스크립트 적용법부터 API 연동까지 한 번에 정리했습니다.


쿠팡 파트너스 상품을 내 블로그에 자동으로 노출시키면 수익 증대는 물론 방문자의 편의도 높일 수 있죠.

하지만 단순히 자바스크립트를 블로그에 넣는 것만으로는 한계가 있습니다.
왜 Google Apps Script(GAS)를 활용해야 할까요?

이 글에서는 쿠팡상품 자동 노출에 최적화된, 특히 목록(카테고리) 페이지에서만 동작하는 GAS 활용법과 기본 코드를 제3탄으로 설명합니다. 초보자도 쉽게 따라 할 수 있도록 핵심만 정리했으니 끝까지 읽고 바로 적용해 보세요!

쿠팡상품 자동 노출 쉽게 구현하는 방법

Google Apps Script(GAS)는 자바스크립트만 지원하는 도구입니다. “그냥 내 블로그나 웹사이트에 자바스크립트를 쓰면 되지, 왜 써야 할까?”라는 의문이 생길 수 있죠.

하지만 GAS는 단순한 자바스크립트 실행기가 아닙니다.서버처럼 작동하는 도구이기 때문에, 웹사이트에서 할 수 없는 여러 작업들을 대신해줍니다.

Google Apps Script를 사용하는 이유

1. 서버 없이도 API처럼 사용할 수 있음

  • 일반 웹사이트는 데이터를 불러오기 위해 외부 서버가 필요합니다.
  • GAS는 별도의 서버 없이, 자바스크립트 함수를 API처럼 URL로 제공해 줍니다.
  • 예: https://script.google.com/macros/s/앱ID/exec?keyword=키워드

2. 중요한 정보(비밀 키 등)를 감출 수 있음

  • HTML에 직접 자바스크립트를 넣으면 누구나 코드를 볼 수 있습니다.
  • GAS는 서버에서 실행되므로 코드가 외부에 노출되지 않습니다.
  • 예: 쿠팡 파트너스 API 키를 숨기고 안전하게 중계 가능

3. Google 서비스와 쉽게 연동됨

  • GAS는 Google Sheets, Gmail, Docs 등과 자연스럽게 연결됩니다.
  • 예: 시트에 저장된 상품 데이터를 GAS로 JSON으로 만들어 블로그에 보여주기

4. 서버 비용이 들지 않음

  • GAS는 별도 호스팅 없이 Google 클라우드에서 실행됩니다.
  • 트래픽이 많지 않은 개인 블로그나 간단한 API에는 무료로 충분히 사용 가능합니다.

정리하면…

Google Apps Script는 단순한 자바스크립트 실행 도구가 아니라, 서버 없이도 외부 데이터를 가져오고 가공해서 보여줄 수 있는 강력한 도구입니다.

블로그나 웹사이트에 “나만의 데이터 API”를 만들고 싶을 때, GAS를 활용하면 비용 없이도 손쉽게 구현할 수 있습니다.

특히, 쿠팡 상품 자동 노출, 시트 데이터 불러오기, 외부 API 가공 등에 최적화된 선택입니다.

그렇다면 쿠팡에서 제공하는 API 기능을 이용하기 위해서는, 반드시 위 조건에 맞는 웹앱 플랫폼 또는 서버리스 플랫폼이 필요합니다.
Google Apps Script 사용 방법은 이 링크(쿠팡 파트너스 상품 자동 등록 수익화! 블로그에 상품 자동 등록하는 방법)를 참고하세요.

해당 사이트에 아래 코드를 적용하면 되며, 변경할 부분만 수정한 후 전체 코드를 복사해서 붙여넣기 하시면 됩니다.
아주 간단하죠?

쿠팡 상품 자동화 적용시 변경할 코드

// ==== 설정값 (본인의 정보로 변경) ====
// 쿠팡 API Access Key
const COUPANG_ACCESS_KEY = " ACCESS KEY";
// 쿠팡 API Secret Key
const COUPANG_SECRET_KEY = " SECRET KEY";
// 쿠팡 파트너스 ID (예: lptag=AF1234567 중 AF1234567)
const COUPANG_AFFILIATE_ID = " AF1234567";

GAS에 적용할 전체 코드

위 코드를 수정해서 복사 후 사용하시면 됩니다.

// ==== 설정값 (본인의 정보로 변경) ====
const COUPANG_ACCESS_KEY = " ACCESS KEY";
const COUPANG_SECRET_KEY = " SECRET KEY";
const COUPANG_AFFILIATE_ID = " AF1234567";

const COUPANG_API_BASE_URL = "https://api-gateway.coupang.com";
const PRODUCT_SEARCH_API_PATH = "/v2/providers/affiliate_open_api/apis/openapi/products/search";

function getCoupangApiDate() {
const date = new Date();
const year = date.getUTCFullYear().toString().substring(2);
const month = (date.getUTCMonth() + 1).toString().padStart(2, '0');
const day = date.getUTCDate().toString().padStart(2, '0');
const hours = date.getUTCHours().toString().padStart(2, '0');
const minutes = date.getUTCMinutes().toString().padStart(2, '0');
const seconds = date.getUTCSeconds().toString().padStart(2, '0');
const datetime = `$year}$month}$day}T$hours}$minutes}$seconds}Z`;
return datetime;
}

function generateCoupangSignature(method, uri, secretKey, accessKey) {
const parts = uri.split('?');
const path = parts[0];
const query = (parts.length === 2) ? parts[1] : '';
const datetime = getCoupangApiDate();
const stringToSign = `$datetime}$method}$path}$query}`;
const signatureBytes = Utilities.computeHmacSha256Signature(stringToSign, secretKey);
const signatureHex = bytesToHex(signatureBytes);
return `CEA algorithm=HmacSHA256, access-key=$accessKey}, signed-date=$datetime}, signature=$signatureHex}`;
}

function bytesToHex(bytes) {
return Array.from(bytes, b = ('0' + (b & 0xFF).toString(16)).slice(-2)).join('');
}

function fetchCoupangProducts(limit = 10, keyword = null) {
if (!keyword) throw new Error("검색 키워드가 필요합니다.");
const method = 'GET';
const encodedKeyword = encodeURIComponent(keyword);
const uri = `$PRODUCT_SEARCH_API_PATH}?keyword=$encodedKeyword}&limit=$limit}`;
const url = COUPANG_API_BASE_URL + uri;
const options = {
method: method,
headers: { 'Authorization': generateCoupangSignature(method, uri, COUPANG_SECRET_KEY, COUPANG_ACCESS_KEY) },
muteHttpExceptions: true
};
const response = UrlFetchApp.fetch(url, options);
return JSON.parse(response.getContentText());
}

function doGet(e) {
try {
const keyword = e.parameter.keyword;
const limit = parseInt(e.parameter.limit) || 10;
if (!keyword) return createJsonResponse({ error: "검색 키워드 필요" });
return createJsonResponse(fetchCoupangProducts(limit, keyword));
} catch (error) {
return createJsonResponse({ error: error.message });
}
}

function createJsonResponse(data) {
return ContentService.createTextOutput(JSON.stringify(data)).setMimeType(ContentService.MimeType.JSON);
}

아래 코드는 사용할 블로그 사이트에 적용하는 코드입니다. 코드 자체도 아주 간단합니다.

먼저 위에서 만든 구글 스크립트 코드를 실행하면, API 호출에 사용할 주소(URL)가 생성됩니다.
그 주소만 복사해서 아래 코드의 해당 위치에 붙여 넣으시면 됩니다.

노출할 상품 갯수도 이 코드 내에서 쉽게 수정할 수 있습니다.

  • 수정할 부분: API 주소(URL)
  • 노출할 상품 개수

이 두 가지만 바꾸면 바로 사용 가능합니다.

쿠팡 상품 자동 노출을 위해 변경할 코드

script
const API_URL_POST = 'Google Apps Script (GAS) 주소 입력';
const LIMIT_POST = 3;
/script

이 코드는 콘텐츠 페이지에서만 쿠팡 파트너스 상품이 노출되도록 작성했습니다.
그 이유는 각각 다른 코드가 뒤섞이면 관리가 복잡해지고, 나중에 수정하기 어려워지기 때문입니다.

비유하자면, 국밥처럼 재료를 따로따로 넣어 만드는 게 아니라 비빔밥처럼 모든 재료를 한꺼번에 섞으면 간단하지만,
관리 측면에서는 국밥처럼 각 재료가 분리되어 있는 게 더 편하다는 뜻입니다.

또한, 매번 다른 코드를 실행하지 않고, 일관된 코드를 유지하기 위함이기도 합니다.

노출 위치는 기본적으로 h3 태그 아래로 설정했습니다.
필요에 따라 위치를 변경하셔도 무방합니다.

블로그 사이트 콘텐츠에 적용할 코드

script
const API_URL_H3 = 'GAS 주소';
const LIMIT_H3 = 3;
// ... 생략 (위 본문의 JavaScript 로직 적용) ...
/script

블로그 사이트 목록(카테고리)에 적용할 코드

script
const API_URL_POST = 'GAS 주소';
const LIMIT_POST = 3;
// ... 생략 (위 본문의 JavaScript 로직 적용) ...
/script

적용 태그 예시 ⬇ 아래 광고 확인해보세요!

p class="shoptag"짜장면/p


Q. 자동화 스크립트를 적용했는데 상품이 검색 엔진에 노출되지 않으면 어떻게 하나요?

A. 검색 노출 상태를 점검하기 위해 가장 먼저 구글 서치콘솔의 ‘URL 검사’ 도구를 사용하세요. ‘실제 페이지 테스트’를 통해 스크립트가 실행된 후의 최종 HTML에 상품 정보가 포함되어 있는지 확인해야 합니다. 만약 렌더링 결과에 상품이 보이지 않는다면 GAS의 실행 권한 설정이나 API 할당량을 점검해 보시기 바랍니다.

Q. 검색 엔진이 자바스크립트로 생성된 쿠팡 상품을 읽어갈 수 있나요?

A. 최신 구글 검색 엔진은 자바스크립트를 렌더링하여 내용을 색인하지만, 실행 속도가 느리거나 오류가 있으면 생략될 수 있습니다. 상품 노출 상태 점검 시 페이지 로딩 속도를 최적화하고, 검색 봇이 접근할 때 API 호출이 지연되지 않도록 관리하는 것이 중요합니다.

Q. 검색 노출 순위에 부정적인 영향을 미치지는 않을까요?

A. 단순히 상품만 나열하는 것이 아니라, 본문의 핵심 주제와 연관된 상품이 노출되도록 키워드 설정을 정교하게 하는 것이 핵심입니다. 검색 노출 상태 점검을 주기적으로 진행하며, 사용자 경험을 해치지 않는 위치(예: h3 태그 하단 등)에 배치하여 체류 시간을 유지한다면 긍정적인 효과를 기대할 수 있습니다.

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다