문맥 키워드 추천 API
문맥 키워드 추천 API는 특정한 문서(텍스트)에서 중요한 키워드를 찾아 주는 API 서비스입니다. 문맥에서 중요도에 따라 특정 단어를 키워드로 만들어 주는 서비스로서 추출된 키워드를 통해 자동 태깅 및 문맥 검색 광고, 관련 문서 검색 등에 사용할 수 있습니다.
요청 변수 (Request Parameters) #
- 공통 인증 변수: 모든 API 서비스 요청시 공통적으로 넣어야 할 변수는 아래와 같습니다.
인증 파라미터 #
- 인증에 사용되는 공통 파라미터를 설명합니다.
| 요청 변수 | 값 | 설명 |
| apikey | 40 byte hexadecimal string (필수) | 모든 오픈 API 호출에 공통으로 사용되는 인증키 입니다. Daum 회원이면, apikey를 발급 받을 수 있습니다. 오픈 API는 검색, UCC, 디앤샵 API로 구분됩니다. 나중에 다른 API가 추가될 수 도 있습니다. 각 API별로 Daum 회원은 하나의 apikey 만을 발급받을 수 있습니다. 그리고, 이 apikey로는 허가된 API만 호출 할 수 있습니다. 예) apikey=4125603e35da5d8820b07dc7b19050dbc838336b |
| apid | 20 byte hexadecimal string | 오픈 API를 이용하여 어플리케이션 이나 웹 사이트를 작성한 개발자 분들은 프로그램 등록을 할 수 있습니다. apid 는 등록된 프로그램에 대해서 오픈 API 인증 시스템에서 제공한 프로그램 아이디 입니다. 일부 오픈 API는 apid 파라미터를 필수로 요구하는 경우가 있습니다. 등록된 프로그램은 이 DNA 사이트를 통해서 홍보되며, 개발자 본인의 의사에 따라 다른 사용자가 다운받아 설치할 수 있게 됩니다. 예) apid=ba8c53ab7970189d93a7 |
서명 인증 파라미터 #
- 서명된 오픈 API는 인증키가 다른 사용자에 의해서 도용 되는 것을 보호해 줍니다.
- 서명은 필수적인 파라미터가 아닙니다. 그러나, 일부 오픈 API는 반드시 서명을 요구합니다.
- 서명에 사용되는 파라미터를 설명합니다.
| 이름 | 값 | 설명 |
| ts | YYYYMMDDhhmmss | 오픈 API를 호출하는 시간. UTC Time 으로 변환되서 전달되어야 합니다. 서명 값(sig)을 전달할 때 반드시 포함되어야 합니다. 예, ts=20060501153010 |
| nonce | 16 byte hexadecimal string | 랜덤한 8byte binary 값. ts 와 함께 서명의 재 사용여부를 확인하는데 사용됩니다. 서명 값(sig)을 전달할 때 반드시 포함되어야 합니다. 예, nonce=bd149ae021feb132 |
| sigalg | "hmacsha1" | 서명에 사용하는 알고리즘 이름. "hmacsha1" 으로 고정되어 있습니다. 실제 사용하는 알고리즘은 RFC 2014 에 정의되어 있는 HMACSHA-1 입니다. 서명 값(sig)을 전달할 때 반드시 포함되어야 합니다. |
| sig | 40 byte hexadecimal string | 오픈 API 호출 URL 전체에 대해서 서명키로 서명한 값. 예) sig=b45de8a31aed6e58b831dd72087bb4ed71fcaf98 |
- 서명 값 만들기 & 소스 예제 코드 : HowToSign
- 서비스 인증 변수: 본 서비스에서 사용되는 변수는 아래와 같습니다.
| 요청 변수 | 값 | 설명 |
| q | string (필수) | 검색을 뭔하는 내용 |
| output | string : RSS(기본), JSON, XML | 결과 출력할 방식을 지정합니다 |
| sort | string : POINT(기본), LOCATION, WEIGHT, LENGTH | 결과의 정렬순서를 지정합니다 POINT : 키워드에 주어진 포인트가 큰 것을 우선으로 정렬합니다. LOCATION : 문서상에서 먼저나타나는 순서로 정렬합니다.(오름차순) WEIGHT : 키워드에 주어진 "포인트 X 나타난 횟수"가 큰 순서로 정렬합니다.( 중복그룹핑 요청을 경우 유용합니다.) LENGTH : 키워드의 길이가 긴 순서로 정렬을 합니다. |
| group | string : YES(기본),NO | 문서상에서 반복해서 나타나는 키워드를 그룹핑해서 결과를 보여줍니다. |
| result | integer : 1~65535, 0:제한없음(기본) | 결과의 개수를 제한합니다. |
| requestor | string | 요청자를 입력합니다 |
| docId | string | 문서아이디를 입력합니다 |
| title | string | 문서제목을 입력합니다 |
+ (기본) 값이 지정되지 않았을 때 혹은 허용하는 값이 아닐 떄, 취하는 값을 의미합니다.
+ 파라미터 변수는 모두 소문자, 파라미터에 들어가는 옵션은 모두 대문자입니다.
샘플 URL
테스트페이지
테스트페이지
http://apis.daum.net/suggest/keyword?&encode=EUC-KR&q='다우 지수는 전일대비 무려 283.86포인트(2.09%) 치솟은 1만3861.73을 기록하며 사상 최고치를 갈아치웠다.다우 구성 종목중 알코아(6.8%), 인텔(5.8%), 머크(3.9%), 하니웰(2.9%), 캐터필라(2.4%) 등의 상승세가 두드러졌다.대형주 중심의 S&P500 지수도 1547.91로 전일대비 28.94포인트(1.91%) 급등하며 역시 사상 최고치를 경신했다 기술주 중심의 나스닥 지수는 49.94포인트(1.88%) 급등한 2701.73으로 마쳤다. 6년반만의 최고치다.업종별로는 금속(3.3%), 반도체(2.9%), 은행(2.5%), 증권(2.3%), 오일(1.9%) 등의 상승폭이 컸다. 한편 미국 국채수익률은 이틀 연속 상승 마감했다.(가격 하락) 국채 10년물 수익률은 5.12%로 전일대비 3.4bp 올랐다.장중 한때 11개월 최고치에 올라서기도 했던 국제 유가는 BP의 휘팅 정유시설 재가동 소식에 하락 마감했다. 이날 뉴욕상품거래소(NYMEX)에서 거래된 서부 텍사스산 중질유(WTI) 8월물 인도분 가격은 전일대비 배럴당 6센트 떨어진 72.50달러에 마쳤다.
출력 방식 (Response Method) #
- XML방식으로 제공 가능합니다.
- JSON방식으로 제공 가능합니다.
- RSS방식으로 제공 가능합니다.
출력 결과 (Response Elements) #
- XML 출력 결과
| 출력 변수 | 값 | 설명 |
| requestor | string | 요청자 |
| title | string | 요청자가 입력한 문서제목 |
| docID | string | 요청자가 입력한 문서ID |
| date | string | 요청시간 |
| group | string | 그룹핑여부(true/false) |
| itemcount | integer | Item 수 |
| item | - | Item |
| keyword | string | 제안 Keyword |
| score | string | 제안 Keyword에 부여되어 있는 점수 |
| count | string | 문서에서 나타낸 횟수 |
| locations | -- | 문서내의 위치정보들 |
| location | integer | 문서내에서 위치 |
- JSON 출력 결과
| 출력 변수 | 값 | 설명 |
| requestor | string | 요청자 |
| title | string | 요청자가 입력한 문서제목 |
| docID | string | 요청자가 입력한 문서ID |
| date | string | 요청시간 |
| group | string | 그룹핑여부(true/false) |
| itemcount | integer | Item 수 |
| item | - | Item |
| keyword | string | 제안 Keyword |
| score | string | 제안 Keyword에 부여되어 있는 점수 |
| count | string | 문서에서 나타낸 횟수 |
| locations | -- | 문서내의 위치정보들 |
| location | integer | 문서내에서 위치 |
- RSS
| 출력 변수 | 값 | 설명 |
| item | - | - |
| title | string | 제안 Keyword |
| description | string | Keyword에 대한 간단한 설명(가중치,발견횟수,위치 |
| pubData | -- | 결과생서시간 |
출력 결과 샘플 페이지 #
* XML 출력 결과 예
<daum service="search"> <requestor>이데일리</requestor> <title>뉴욕 증시 일제 급등..다우 283p↑ `사상 최고`</title> <docID>ED200707130533</docID> <date>2007-07-13 14:50:17</date> <group>true</group> <itemcount>5</itemcount> <item> <keyword>알코아</keyword> <score>2.9078</score> <count>4</count> <locations> <location>523</location> <location>2146</location> <location>2367</location> <location>2434</location> </locations> </item> <item> <keyword>국채수익률</keyword> <score>7.8945</score> <count>1</count> <locations> <location>810</location> </locations> </item> <item> <keyword>s&p500지수</keyword> <score>2.757</score> <count>2</count> <locations> <location>117</location> <location>602</location> </locations> </item> <item> <keyword>다우지수</keyword> <score>2.3641</score> <count>2</count> <locations> <location>60</location> <location>443</location> </locations> </item> <item> <keyword>나스닥</keyword> <score>1.8174</score> <count>1</count> <locations> <location>675</location> </locations> </item> </daum>
* JSON 출력 결과 예
{
"requestor": "이데일리" ,
"title": "뉴욕 증시 일제 급등..다우 283p↑ `사상 최고`" ,
"docID": "ED200707130533" ,
"date": 2007-07-13 15:00:12 ,
"group": true ,
"itemCount": 5 ,
"items":
[
{
"keyword" : "알코아" ,
"score" : 2.9078 ,
"count" : 4 ,
"locations" :
[
523 ,
2146 ,
2367 ,
2434
]
} ,
{
"keyword" : "국채수익률" ,
"score" : 7.8945 ,
"count" : 1 ,
"locations" :
[
810
]
} ,
{
"keyword" : "s&p500지수" ,
"score" : 2.757 ,
"count" : 2 ,
"locations" :
[
117 ,
602
]
} ,
{
"keyword" : "다우지수" ,
"score" : 2.3641 ,
"count" : 2 ,
"locations" :
[
60 ,
443
]
} ,
{
"keyword" : "나스닥" ,
"score" : 1.8174 ,
"count" : 1 ,
"locations" :
[
675
]
}
]
}
* RSS 출력 결과 예
<rss version="2.0"> <channel> <title>Result of Keyword Extration</title> <link>http://api.daum.net</link> <description>Daum Open API search result</description> <language>ko</language> <copyright>Daum Communications</copyright> <docs>http://blogs.law.harvard.edu/tech</docs> <item> <title>알코아</title> <description>가중치 :2.9078 발견횟수 :4 위치 : 523, 2146, 2367, 2434</description> <pubDate>200707131503</pubDate> </item> <item> <title>국채수익률</title> <description>가중치 :7.8945 발견횟수 :1 위치 : 810</description> <pubDate>200707131503</pubDate> </item> <item> <title>s&p500지수</title> <description>가중치 :2.757 발견횟수 :2 위치 : 117, 602</description> <pubDate>200707131503</pubDate> </item> <item> <title>다우지수</title> <description>가중치 :2.3641 발견횟수 :2 위치: 60, 443</description> <pubDate>200707131503</pubDate> </item> <item> <title>나스닥</title> <description>가중치 :1.8174 발견횟수 :1 위치 : 675</description> <pubDate>200707131503</pubDate> </item> </channel> </rss>
오류 메시지 #
- 공통 오류 메시지는 다음과 같습니다.
오류는 다음과 같은 XML로 전달됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<apierror>
<code></code>
<message></message>
<dcode></code>
<dmessage></dmessage>
</apierror>
오류 XML의 각 항목은 아래와 같은 값을 가집니다.
| 오류 코드 (code|dcode) | 오류(message) | 상세 오류(dmessage) | 설명 |
| 10 | | invalid request | 오픈 API 호출이 공통 호출 규약에 맞지 않은 경우에 전달된다. | |
| 10 | 11 | invalid request | apikey missing | apikey 파라미터가 없음 |
| 10 | 12 | invalid request | Missing auth parameter 'ts'. | ts 파라미터가 없음 |
| 10 | 13 | invalid request | Missing auth parameter 'nonce'. | nonce 파라미터가 없음 |
| 10 | 14 | invalid request | Missing auth parameter 'sigalg'. | sigalg 파라미터가 없음 |
| 10 | 15 | invalid request | Missing auth parameter 'sig'. | sig 파라미터가 없음 |
| 10 | 18 | invalid request | Missing parameter 'apid'. | apid 파라미터가 없음 |
| 20 | | unknown ap instance | 프로그램 인증 실패. | |
| 20 | 21 | unknown ap instance | invalid apikey | 유효하지 않은 apikey |
| 20 | 22 | unknown ap instance | unregistered apikey | 등록되지 않은 apikey |
| 20 | 23 | unknown ap instance | unregistered apid | 등록되지 않은 apid |
| 20 | 24 | unknown ap instance | Signature sigkey is not valid. | 유효하지 않은 서명키 |
| 20 | 25 | unknown ap instance | invalid apid | 유효하지 않은 apid |
| 20 | 26 | unknown ap instance | SignatureKey is not issued to this apikey. | apikey 해당하지 않는 서명키 |
| 20 | 27 | unknown ap instance | ts, nonce are reused. | ts,nonce 재사용 오류 |
| 20 | 28 | unknown ap instance | Unsupported Sign Algorithm. | 지원하지 않는 서명 알고리즘 |
| 30 | | unknown daumuser | apikey 소유자의 Daum 인증 실패. | |
| 40 | | access denied | 서비스 접근 거부 | |
| 40 | 41 | access denied | valid api call but traffic overed | 하루 api 호출 traffic 초과 |
| 40 | 42 | access denied | apikey does not match api category | 이 apikey 로 호출할 수 있는 api 가 아님 |
| 40 | 43 | access denied | unsigned call | 서명되지 않은 호출 |
| 40 | 44 | access denied | unregistered ip | 등록되지 않은 IP 주소 |
| 40 | 45 | access denied | apid doesnot use api | 프로그램이 이 api를 사용하고 있지 않음 |
| 404 | no such api | 해당 오픈 API 서비스가 없음 | |
| 500 | system error | 오픈 API 서비스 내부 시스템 에러. | |
| 504 | service timeout | 오픈 API 서비스 연결 실패. 서비스 시스템 과부하 또는 장애로 인한 서비스 연결 실패. | |
| 100 | | service api runtime error | 오픈 API 서비스 실행 오류. 101~299 값을 가지며, 각 API 에서 정의함. |
- 이 서비스의 오류 메시지는 다음과 같습니다.
| 오류 코드(dcode) | 오류 설명(dmessage) |
| 101 : Service is not Available | 서비스가 준비되어 있지 않습니다. 관리자에게 문의하시길바랍니다. |
| 102 : Now on preparing Service. | 서비스가 준비중입니다. 잠시 후 다시 이용바랍니다. |
| 110 : No Input | 사용자 요청에 입력값이 없습니다. 확인 후 다시 이용바랍니다. |
트래픽 제한 #
- 오픈 API는 하나의 apikey에 대해서 하루 5,000 회의 호출 만을 허용합니다.
- 트래픽 제어는 보안을 위한 측면이 크며, 증가 추이에 따라 트래픽 허용 수를 늘리는 정책을 사용할 예정입니다.
- 상용 서비스를 위해 또는 사용자 증가로 인하여 허용 traffic 수를 늘리고자 할때에는 어플리케이션 등록을 마치고, 해당 apid에 대해 별도로 traffic 을 조정할 수 있습니다.
샘플 코드 #
(준비중)



