Naver 광고 API 사용법
블로그 관련 사이트를 제작하면서 키워드 품질 검사를 해야 하는데, 국내에서는 여전히 네이버가 1위를 달리고 있기 때문에 네이버 포털에서 검색량 체크를 해보려고 합니다. 자체적으로 데이터를 수집하기에는 엄두가 안나서 네이버 광고 API를 사용하기로 결정했습니다.
네이버 광고 API 사용법을 정리한 문서가 있지만 샘플 코드로 제공되는게 Java, PHP, C# 3가지 정도가 나와있습니다. 어차피 원리는 동일하니 우리는 Javascript로 키워드 API를 사용해보겠습니다.
Naver 광고 API 사용법 사이트
네이버 깃 페이지로 호스팅되어 있는 searchad-apidoc 으로 접속합니다. 개발자들을 위한 문서라고 하기에는 정말 불친절하게 되어 있습니다.
키워드 품질을 가져오기 위해서는 RelKwdStat 항목에서 가져올 수 있습니다. 한달에 PC, mobile에서 얼마정도의 클릭이 발생되었는지 바로 확인할 수 있습니다.
네이버 광고 API 받아오기
네이버 광고 API를 사용하기 위해서는 먼저 네이버 광고 사이트에서 API 신청을 하고 클라이언트키와 비밀키를 발급받으셔야 합니다.
네이버 검색광고 페이지에서 도구 > API 사용관리 탭으로들어갑니다.
API 키를 발급받으면 엑세스라이선스와 비밀키 두개의 암호를 제공해줍니다.
네이버 광고 API 사이트에서 알려준대로 여기까지 완성된 겁니다.
네이버 광고 API 서명 생성하기
네이버 광고 API를 호출하기 위해서는 API 시크릿 키 뿐만 아니라 서명을 생성해야 합니다. 알고리즘은 sha256-hmac 알고리즘을 사용합니다.
Node.js 환경에서 sha256-hmac 서명을 생성하기 위해서 Crypto-JS 모듈을 설치합니다.
$ npm install crypto-js
네이버 광고 API를 사용하기 위해서 클라이언트 ID, Access Key, Custormer ID 까지 받아왔습니다. 마지막으로 API 요청을 해줘야 되니 axios 모듈을 설치합니다. 통상 request 모듈을 많이 사용해왔었는데, 현재 deprecated 되기도 했고, 비동기 모듈 사용이 불가해서 axios 사용을 추천드립니다.
$ npm install axios
네이버 광고 API 요청하기
API 요청을 위해 axios, CryptoJS 모듈을 가져옵니다
const axios = require('axios');
const CryptoJS = require('crypto-js')
/**
* API key
*/
const accessKey = "Your AccessKey";
const secretKey = "Your SecretKey";
const CUSTOMER_ID = 'Your CUstomer ID'
/**
* Create Signature
*/
const method = "GET";
const api_url = "/keywordstool";
const keyword = 'netflix'
const timestamp = Date.now() + '';
const hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, secretKey);
hmac.update(timestamp + '.' + method + '.' + api_url);
const hash = hmac.finalize();
const Xsignature = hash.toString(CryptoJS.enc.Base64);
API Key를 설정하고, Xsignature 서명을 생성해줍니다.
서명까지 생성이 완료 되었으면, axios 함수를 실행해서 키워드 데이터를 가져옵니다.
axios({
url: `https://api.naver.com/keywordstool?hintKeywords=${encodeURI(keyword)}&showDetail=1`,
method: method,
headers: {
'X-Timestamp': timestamp,
'X-API-KEY': accessKey,
'X-API-SECRET': secretKey,
'X-CUSTOMER': CUSTOMER_ID,
'X-Signature': Xsignature
}
})
.then(res=>console.log(res.data))
.catch(err=>console.error(err))
키워드로 netflix를 입력했고, 현재 월 클릭량이 12300 정도 나오는 것을 확인할 수 있습니다.
'Programming' 카테고리의 다른 글
Github CLI Install Ubuntu 22.04 (0) | 2023.02.09 |
---|---|
Nginx Docker 웹 서버 배포하기 (0) | 2023.01.31 |
CI/CD #5 배포 구성하기 Github Actions EC2 Docker .env 생성하기 [추가자료] (0) | 2023.01.20 |
Docker Hub 사용법 (push pull) (1) | 2023.01.19 |
React 정적 웹 페이지 배포하기(S3, AWS CodePipeline, 환경변수) (0) | 2023.01.19 |
댓글