@isnow890/naver-search-mcp 1.0.49 โ 1.0.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/index.js +14 -14
- package/dist/src/utils/date.utils.d.ts +6 -1
- package/dist/src/utils/date.utils.js +12 -9
- package/package.json +1 -1
package/dist/src/index.js
CHANGED
|
@@ -80,7 +80,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
80
80
|
const client = NaverSearchClient.getInstance();
|
|
81
81
|
client.initialize(credentials);
|
|
82
82
|
server.registerTool("search_webkr", {
|
|
83
|
-
description: "๐ Search Korean web documents and general content. Comprehensive search across Korean websites and online content. Find articles, information, and documents from various Korean sources.
|
|
83
|
+
description: "๐ Search Korean web documents and general content. Comprehensive search across Korean websites and online content. Find articles, information, and documents from various Korean sources. (๋ค์ด๋ฒ ์น๋ฌธ์ ๊ฒ์ - ํ๊ตญ ์น์ฌ์ดํธ ์ข
ํฉ ๊ฒ์)",
|
|
84
84
|
inputSchema: SearchArgsSchema.shape,
|
|
85
85
|
}, async (args) => {
|
|
86
86
|
const result = await searchToolHandlers.search_webkr(args);
|
|
@@ -89,7 +89,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
89
89
|
};
|
|
90
90
|
});
|
|
91
91
|
server.registerTool("search_news", {
|
|
92
|
-
description: "๐ฐ Search latest Korean news articles from major outlets. Perfect for current events, breaking news, and recent developments. Covers politics, economy, society, and international news.
|
|
92
|
+
description: "๐ฐ Search latest Korean news articles from major outlets. Perfect for current events, breaking news, and recent developments. Covers politics, economy, society, and international news. (๋ค์ด๋ฒ ๋ด์ค ๊ฒ์ - ์ต์ ๋ด์ค์ ์์ฌ ์ ๋ณด)",
|
|
93
93
|
inputSchema: SearchArgsSchema.shape,
|
|
94
94
|
}, async (args) => {
|
|
95
95
|
const result = await searchToolHandlers.search_news(args);
|
|
@@ -98,7 +98,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
98
98
|
};
|
|
99
99
|
});
|
|
100
100
|
server.registerTool("search_blog", {
|
|
101
|
-
description: "โ๏ธ Search personal blogs and reviews for authentic user experiences. Great for product reviews, personal stories, detailed tutorials, and real user opinions. Find genuine Korean perspectives.
|
|
101
|
+
description: "โ๏ธ Search personal blogs and reviews for authentic user experiences. Great for product reviews, personal stories, detailed tutorials, and real user opinions. Find genuine Korean perspectives. (๋ค์ด๋ฒ ๋ธ๋ก๊ทธ ๊ฒ์ - ์ค์ ์ฌ์ฉ์ ํ๊ธฐ์ ๊ฐ์ธ์ ๊ฒฝํ)",
|
|
102
102
|
inputSchema: SearchArgsSchema.shape,
|
|
103
103
|
}, async (args) => {
|
|
104
104
|
const result = await searchToolHandlers.search_blog(args);
|
|
@@ -107,7 +107,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
107
107
|
};
|
|
108
108
|
});
|
|
109
109
|
server.registerTool("search_image", {
|
|
110
|
-
description: "๐ผ๏ธ Search for images with Korean context and relevance. Find visual content, infographics, charts, and photos related to your search terms. Great for visual research and content discovery.
|
|
110
|
+
description: "๐ผ๏ธ Search for images with Korean context and relevance. Find visual content, infographics, charts, and photos related to your search terms. Great for visual research and content discovery. (๋ค์ด๋ฒ ์ด๋ฏธ์ง ๊ฒ์ - ์๊ฐ์ ์ปจํ
์ธ ๋ฐ๊ฒฌ)",
|
|
111
111
|
inputSchema: SearchArgsSchema.shape,
|
|
112
112
|
}, async (args) => {
|
|
113
113
|
const result = await searchToolHandlers.search_image(args);
|
|
@@ -116,7 +116,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
116
116
|
};
|
|
117
117
|
});
|
|
118
118
|
server.registerTool("search_kin", {
|
|
119
|
-
description: "โ Search Naver KnowledgeiN for Q&A and community-driven answers. Find solutions to problems, get expert advice, and discover community insights on various topics.
|
|
119
|
+
description: "โ Search Naver KnowledgeiN for Q&A and community-driven answers. Find solutions to problems, get expert advice, and discover community insights on various topics. (๋ค์ด๋ฒ ์ง์iN ๊ฒ์ - ์ง๋ฌธ๊ณผ ๋ต๋ณ, ์ปค๋ฎค๋ํฐ ์ง์)",
|
|
120
120
|
inputSchema: SearchArgsSchema.shape,
|
|
121
121
|
}, async (args) => {
|
|
122
122
|
const result = await searchToolHandlers.search_kin(args);
|
|
@@ -125,7 +125,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
125
125
|
};
|
|
126
126
|
});
|
|
127
127
|
server.registerTool("search_encyc", {
|
|
128
|
-
description: "๐ Search Naver Encyclopedia for authoritative knowledge and definitions. Best for academic research, getting reliable information, and understanding Korean concepts and terminology.
|
|
128
|
+
description: "๐ Search Naver Encyclopedia for authoritative knowledge and definitions. Best for academic research, getting reliable information, and understanding Korean concepts and terminology. (๋ค์ด๋ฒ ์ง์๋ฐฑ๊ณผ ๊ฒ์ - ์ ๋ขฐํ ์ ์๋ ์ ๋ณด์ ์ ์)",
|
|
129
129
|
inputSchema: SearchArgsSchema.shape,
|
|
130
130
|
}, async (args) => {
|
|
131
131
|
const result = await searchToolHandlers.search_encyc(args);
|
|
@@ -134,7 +134,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
134
134
|
};
|
|
135
135
|
});
|
|
136
136
|
server.registerTool("search_local", {
|
|
137
|
-
description: "๐ Search for local businesses, restaurants, and places in Korea. Find location information, reviews, contact details, and business hours for Korean establishments.
|
|
137
|
+
description: "๐ Search for local businesses, restaurants, and places in Korea. Find location information, reviews, contact details, and business hours for Korean establishments. (๋ค์ด๋ฒ ์ง์ญ ๊ฒ์ - ์ง์ญ ์
์ฒด์ ์ฅ์ ์ ๋ณด)",
|
|
138
138
|
inputSchema: NaverLocalSearchParamsSchema.shape,
|
|
139
139
|
}, async (args) => {
|
|
140
140
|
const result = await searchToolHandlers.search_local(args);
|
|
@@ -143,7 +143,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
143
143
|
};
|
|
144
144
|
});
|
|
145
145
|
server.registerTool("search_cafearticle", {
|
|
146
|
-
description: "โ Search Naver Cafe articles for community discussions and specialized content. Find niche communities, hobby groups, and specialized discussions on various topics.
|
|
146
|
+
description: "โ Search Naver Cafe articles for community discussions and specialized content. Find niche communities, hobby groups, and specialized discussions on various topics. (๋ค์ด๋ฒ ์นดํ๊ธ ๊ฒ์ - ์ปค๋ฎค๋ํฐ ํ ๋ก ๊ณผ ์ ๋ฌธ ์ ๋ณด)",
|
|
147
147
|
inputSchema: SearchArgsSchema.shape,
|
|
148
148
|
}, async (args) => {
|
|
149
149
|
const result = await searchToolHandlers.search_cafearticle(args);
|
|
@@ -153,7 +153,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
153
153
|
});
|
|
154
154
|
// Register datalab tools
|
|
155
155
|
server.registerTool("datalab_search", {
|
|
156
|
-
description: "๐ Analyze search keyword trends over time using Naver DataLab. Track popularity changes, seasonal patterns, and compare multiple keywords. Perfect for market research and trend analysis.
|
|
156
|
+
description: "๐ Analyze search keyword trends over time using Naver DataLab. Track popularity changes, seasonal patterns, and compare multiple keywords. Perfect for market research and trend analysis. (๋ค์ด๋ฒ ๋ฐ์ดํฐ๋ฉ ๊ฒ์์ด ํธ๋ ๋ ๋ถ์)",
|
|
157
157
|
inputSchema: DatalabSearchSchema.shape,
|
|
158
158
|
}, async (args) => {
|
|
159
159
|
const result = await datalabToolHandlers.datalab_search(args);
|
|
@@ -162,7 +162,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
162
162
|
};
|
|
163
163
|
});
|
|
164
164
|
server.registerTool("datalab_shopping_category", {
|
|
165
|
-
description: "๐๏ธ STEP 2: Analyze shopping category trends over time. Use find_category first to get category codes. BUSINESS CASES: Market size analysis, seasonal trend identification, category performance comparison. EXAMPLE: Compare 'ํจ์
์๋ฅ' vs 'ํ์ฅํ' trends over 6 months.
|
|
165
|
+
description: "๐๏ธ STEP 2: Analyze shopping category trends over time. Use find_category first to get category codes. BUSINESS CASES: Market size analysis, seasonal trend identification, category performance comparison. EXAMPLE: Compare 'ํจ์
์๋ฅ' vs 'ํ์ฅํ' trends over 6 months. (๋ค์ด๋ฒ ์ผํ ์นดํ
๊ณ ๋ฆฌ๋ณ ํธ๋ ๋ ๋ถ์ - ๋จผ์ find_category ๋๊ตฌ๋ก ์นดํ
๊ณ ๋ฆฌ ์ฝ๋๋ฅผ ์ฐพ์ผ์ธ์)",
|
|
166
166
|
inputSchema: DatalabShoppingSchema.shape,
|
|
167
167
|
}, async (args) => {
|
|
168
168
|
const result = await datalabToolHandlers.datalab_shopping_category(args);
|
|
@@ -171,7 +171,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
171
171
|
};
|
|
172
172
|
});
|
|
173
173
|
server.registerTool("datalab_shopping_by_device", {
|
|
174
|
-
description: "๐ฑ Analyze shopping trends by device (PC vs Mobile). Use find_category first. BUSINESS CASES: Mobile commerce strategy, responsive design priority, device-specific campaigns. EXAMPLE: 'PC ์ฌ์ฉ์๊ฐ ๋ ๋ง์ด ๊ตฌ๋งคํ๋ ์นดํ
๊ณ ๋ฆฌ๋?'
|
|
174
|
+
description: "๐ฑ Analyze shopping trends by device (PC vs Mobile). Use find_category first. BUSINESS CASES: Mobile commerce strategy, responsive design priority, device-specific campaigns. EXAMPLE: 'PC ์ฌ์ฉ์๊ฐ ๋ ๋ง์ด ๊ตฌ๋งคํ๋ ์นดํ
๊ณ ๋ฆฌ๋?' (๊ธฐ๊ธฐ๋ณ ์ผํ ํธ๋ ๋ ๋ถ์ - ๋จผ์ find_category ๋๊ตฌ๋ก ์นดํ
๊ณ ๋ฆฌ ์ฝ๋๋ฅผ ์ฐพ์ผ์ธ์)",
|
|
175
175
|
inputSchema: DatalabShoppingDeviceSchema.pick({
|
|
176
176
|
startDate: true,
|
|
177
177
|
endDate: true,
|
|
@@ -186,7 +186,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
186
186
|
};
|
|
187
187
|
});
|
|
188
188
|
server.registerTool("datalab_shopping_by_gender", {
|
|
189
|
-
description: "๐ฅ Analyze shopping trends by gender (Male vs Female). Use find_category first. BUSINESS CASES: Gender-targeted marketing, product positioning, demographic analysis. EXAMPLE: 'ํ์ฅํ ์ผํ์์ ๋จ๋
๋น์จ์?'
|
|
189
|
+
description: "๐ฅ Analyze shopping trends by gender (Male vs Female). Use find_category first. BUSINESS CASES: Gender-targeted marketing, product positioning, demographic analysis. EXAMPLE: 'ํ์ฅํ ์ผํ์์ ๋จ๋
๋น์จ์?' (์ฑ๋ณ ์ผํ ํธ๋ ๋ ๋ถ์ - ๋จผ์ find_category ๋๊ตฌ๋ก ์นดํ
๊ณ ๋ฆฌ ์ฝ๋๋ฅผ ์ฐพ์ผ์ธ์)",
|
|
190
190
|
inputSchema: DatalabShoppingGenderSchema.pick({
|
|
191
191
|
startDate: true,
|
|
192
192
|
endDate: true,
|
|
@@ -201,7 +201,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
201
201
|
};
|
|
202
202
|
});
|
|
203
203
|
server.registerTool("datalab_shopping_by_age", {
|
|
204
|
-
description: "๐ถ๐ฆ๐จ๐ด Analyze shopping trends by age groups (10s, 20s, 30s, 40s, 50s, 60s+). Use find_category first. BUSINESS CASES: Age-targeted products, generational preferences, lifecycle marketing. EXAMPLE: '๊ฐ๋ฐ ๋๊ตฌ๋ ์ด๋ ์ฐ๋ น๋๊ฐ ๋ง์ด ๊ตฌ๋งคํ๋?'
|
|
204
|
+
description: "๐ถ๐ฆ๐จ๐ด Analyze shopping trends by age groups (10s, 20s, 30s, 40s, 50s, 60s+). Use find_category first. BUSINESS CASES: Age-targeted products, generational preferences, lifecycle marketing. EXAMPLE: '๊ฐ๋ฐ ๋๊ตฌ๋ ์ด๋ ์ฐ๋ น๋๊ฐ ๋ง์ด ๊ตฌ๋งคํ๋?' (์ฐ๋ น๋ณ ์ผํ ํธ๋ ๋ - ๋จผ์ find_category ๋๊ตฌ๋ก ์นดํ
๊ณ ๋ฆฌ ์ฝ๋๋ฅผ ์ฐพ์ผ์ธ์)",
|
|
205
205
|
inputSchema: DatalabShoppingAgeSchema.pick({
|
|
206
206
|
startDate: true,
|
|
207
207
|
endDate: true,
|
|
@@ -216,7 +216,7 @@ export function createNaverSearchServer({ config, }) {
|
|
|
216
216
|
};
|
|
217
217
|
});
|
|
218
218
|
server.registerTool("datalab_shopping_keywords", {
|
|
219
|
-
description: "๐ Compare specific keywords within a shopping category. Use find_category first. BUSINESS CASES: Product keyword optimization, competitor analysis, search trend identification. EXAMPLE: Within 'ํจ์
' category, compare '์ํผ์ค' vs '์์ผ' vs '๋๋ ์ค' trends.
|
|
219
|
+
description: "๐ Compare specific keywords within a shopping category. Use find_category first. BUSINESS CASES: Product keyword optimization, competitor analysis, search trend identification. EXAMPLE: Within 'ํจ์
' category, compare '์ํผ์ค' vs '์์ผ' vs '๋๋ ์ค' trends. (์นดํ
๊ณ ๋ฆฌ ๋ด ํค์๋ ๋น๊ต - ๋จผ์ find_category ๋๊ตฌ๋ก ์นดํ
๊ณ ๋ฆฌ ์ฝ๋๋ฅผ ์ฐพ์ผ์ธ์)",
|
|
220
220
|
inputSchema: DatalabShoppingKeywordsSchema.shape,
|
|
221
221
|
}, async (args) => {
|
|
222
222
|
const result = await datalabToolHandlers.datalab_shopping_keywords(args);
|
|
@@ -11,7 +11,12 @@
|
|
|
11
11
|
export declare function resolveDate(dateStr: string): string;
|
|
12
12
|
/**
|
|
13
13
|
* Get current Korean Standard Time (KST) date string
|
|
14
|
-
*
|
|
14
|
+
*
|
|
15
|
+
* ์ง์ ์คํ์
์ ๋ํ์ง ์๋๋ค. now.getTime() ์ ์ด๋ฏธ UTC ๊ธฐ์ค epoch ์ด๋ผ
|
|
16
|
+
* ๊ฑฐ๊ธฐ์ 9์๊ฐ๊ณผ getTimezoneOffset() ์ ํจ๊ป ๋ํ๋ฉด ํ๋ก์ธ์ค์ ๋ก์ปฌ
|
|
17
|
+
* ํ์์กด๋งํผ ์ด์ค ๋ณด์ ๋๋ค. TZ=Asia/Seoul ์ธ ํธ์คํธ์์๋ 00:00~09:00 KST
|
|
18
|
+
* ์ฌ์ด์ ํ๋ฃจ ์ ๋ ์ง๊ฐ ๋์จ๋ค. ํ์์กด ๋ณํ์ Intl ์ ๋งก๊ธด๋ค.
|
|
19
|
+
* en-CA ๋ก์ผ์ผ์ด yyyy-mm-dd ๋ฅผ ์ค๋ค.
|
|
15
20
|
*
|
|
16
21
|
* @returns Date string in yyyy-mm-dd format
|
|
17
22
|
*/
|
|
@@ -22,19 +22,22 @@ export function resolveDate(dateStr) {
|
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
24
|
* Get current Korean Standard Time (KST) date string
|
|
25
|
-
*
|
|
25
|
+
*
|
|
26
|
+
* ์ง์ ์คํ์
์ ๋ํ์ง ์๋๋ค. now.getTime() ์ ์ด๋ฏธ UTC ๊ธฐ์ค epoch ์ด๋ผ
|
|
27
|
+
* ๊ฑฐ๊ธฐ์ 9์๊ฐ๊ณผ getTimezoneOffset() ์ ํจ๊ป ๋ํ๋ฉด ํ๋ก์ธ์ค์ ๋ก์ปฌ
|
|
28
|
+
* ํ์์กด๋งํผ ์ด์ค ๋ณด์ ๋๋ค. TZ=Asia/Seoul ์ธ ํธ์คํธ์์๋ 00:00~09:00 KST
|
|
29
|
+
* ์ฌ์ด์ ํ๋ฃจ ์ ๋ ์ง๊ฐ ๋์จ๋ค. ํ์์กด ๋ณํ์ Intl ์ ๋งก๊ธด๋ค.
|
|
30
|
+
* en-CA ๋ก์ผ์ผ์ด yyyy-mm-dd ๋ฅผ ์ค๋ค.
|
|
26
31
|
*
|
|
27
32
|
* @returns Date string in yyyy-mm-dd format
|
|
28
33
|
*/
|
|
29
34
|
export function getKoreanToday() {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const day = String(kstTime.getUTCDate()).padStart(2, '0');
|
|
37
|
-
return `${year}-${month}-${day}`;
|
|
35
|
+
return new Intl.DateTimeFormat('en-CA', {
|
|
36
|
+
timeZone: 'Asia/Seoul',
|
|
37
|
+
year: 'numeric',
|
|
38
|
+
month: '2-digit',
|
|
39
|
+
day: '2-digit',
|
|
40
|
+
}).format(new Date());
|
|
38
41
|
}
|
|
39
42
|
/**
|
|
40
43
|
* Resolve both startDate and endDate, handling "today" keyword
|