v2.2.322: 네이버 트렌드 — 구체적 모델명 제안 + ratio 라벨 명확화

- /naver-shopping(keywords 후보), /naver-trend(discover) 프롬프트에
  "카테고리명 반복 금지, 브랜드+모델명 위주 제안" 지시 추가
- ratio 는 CTR(%) 이 아니라 구간 내 최댓값=100 상대지수임을 표 헤더/
  디스클레이머에 명시(네이버 API 자체가 CTR 미제공)
This commit is contained in:
2026-08-06 10:53:53 +09:00
parent 61246bb0cb
commit 769cf01a99
12 changed files with 36 additions and 27 deletions
+2 -2
View File
@@ -24,7 +24,7 @@ import type { CommonFilters, TimeUnit } from './naverApi';
type Webview = Parameters<typeof chunk>[0];
const DISCLAIMER = '⚠️ 이 순위는 네이버 전체 실시간 인기 순위가 아니라, 후보군 내에서 실제 네이버 데이터랩 API로 검증한 상대 비교치입니다.';
const DISCLAIMER = '⚠️ 이 순위는 네이버 전체 실시간 인기 순위가 아니라, 후보군 내에서 실제 네이버 데이터랩 API로 검증한 상대 비교치입니다. "ratio"는 조회 구간 내 최댓값을 100으로 둔 상대 지수이며, 실제 클릭수·노출수 기반 클릭률(CTR, %)이 아닙니다 — 네이버 데이터랩 API 자체가 CTR을 제공하지 않습니다.';
function ymd(d: Date): string {
return d.toISOString().slice(0, 10);
@@ -50,7 +50,7 @@ function buildFilters(intent: { device?: 'pc' | 'mo'; gender?: 'm' | 'f'; ages?:
function formatRankedTable(result: RankedResult, itemLabel: string): string {
if (result.items.length === 0) return '_(결과 없음)_\n';
const lines: string[] = [];
lines.push(`| # | ${itemLabel} | 최근 ratio |`);
lines.push(`| # | ${itemLabel} | 최근 ratio(0~100, 상대지수) |`);
lines.push('|---|---|---|');
result.items.forEach((it, i) => {
const label = it.path && it.path !== it.name ? `${it.name} _(${it.path})_` : it.name;
+2
View File
@@ -148,6 +148,7 @@ const SHOPPING_SYSTEM_PROMPT = `당신은 네이버 쇼핑인사이트(분야별
- "mode": scope="category"일 때 — 구체적인 분야명을 하나 이상 언급했으면 "compare", "요즘 뜨는 분야가 뭐야"처럼 분야 자체를 탐색하고 싶으면 "discover". scope="keywords"면 항상 "discover".
- "categories": scope="category"·mode="compare"면 사용자가 언급한 분야명 그대로(정규화 말고 원문 그대로) 배열로. scope="category"·mode="discover"면 후보 분야를 최대 9개 제안(3개씩 순차 조회하므로 3의 배수 권장). scope="keywords"면 사용자가 언급한 분야명(보통 1개)만 넣기.
- "keywords": scope="keywords"일 때만 사용 — 그 분야 맥락에 맞는 검색어/상품 후보를 당신의 지식으로 최대 10개 제안(개별 순위를 매기려면 키워드 1개=API 그룹 1개라 5개씩 순차 조회함을 감안). scope="category"면 빈 배열.
⚠️ **구체적인 상품/모델명 위주로 제안하세요** — "노트북", "이어폰"처럼 categories 에 이미 들어간 분야명이나 그 상위 카테고리명 자체를 반복하지 말 것(정보 가치 없음). 대신 "맥북 에어 M3", "그램 17 2024", "갤럭시북4 프로" 처럼 실제 검색될 법한 브랜드+모델/제품라인명을 제안. 특정 브랜드로 편중되지 않게 여러 브랜드를 섞을 것.
${COMMON_FIELDS_PROMPT}
⚠️ 반드시 아래 JSON 형식 정확히 한 번:
@@ -206,6 +207,7 @@ const SEARCH_TREND_SYSTEM_PROMPT = `당신은 네이버 검색어트렌드 API
- "mode": 사용자가 구체적인 검색어를 하나 이상 언급했으면 "compare". "인기 검색어"/"요즘 뜨는 키워드"/"top N" 처럼 키워드를 직접 지목하지 않고 탐색을 원하면 "discover".
- "keywords": mode="compare"면 사용자가 언급한 검색어를 그대로 배열로. mode="discover"면 질문 맥락(주제/카테고리/타겟)에 맞는 검색어 후보를 당신의 지식으로 최대 10개 제안(개별 순위를 매기려면 키워드 1개=API 그룹 1개라 5개씩 순차 조회함을 감안).
⚠️ 질문이 특정 상품군(가전/패션/뷰티 등)을 가리키면 그 상위 카테고리명 자체를 반복하지 말고 **구체적인 상품/모델명**(브랜드+제품라인명, 예: "맥북 에어 M3", "다이슨 에어랩")을 우선 제안 — 일반 명사만 나열하면 사용자가 얻을 정보가 없다. 여러 브랜드를 섞을 것.
${COMMON_FIELDS_PROMPT}
- "ages" 값은 검색어트렌드 전용 코드(1=0~12세,2=13~18세,3=19~24세,4=25~29세,5=30~34세,6=35~39세,7=40~44세,8=45~49세,9=50~54세,10=55~59세,11=60세이상)를 사용하세요 — 쇼핑인사이트의 10/20/30 대 코드와 다릅니다.