@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 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. For recent content or 'today's results', use get_current_korean_time first. (๋„ค์ด๋ฒ„ ์›น๋ฌธ์„œ ๊ฒ€์ƒ‰ - ํ•œ๊ตญ ์›น์‚ฌ์ดํŠธ ์ข…ํ•ฉ ๊ฒ€์ƒ‰, ์ตœ๊ทผ ์ฝ˜ํ…์ธ ๋‚˜ ์˜ค๋Š˜ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์„ ๋•Œ๋Š” ๋จผ์ € get_current_korean_time์œผ๋กœ ํ˜„์žฌ ์‹œ๊ฐ„์„ ํ™•์ธํ•˜์„ธ์š”)",
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. For today's news or current events, use get_current_korean_time first to understand what 'today' means. (๋„ค์ด๋ฒ„ ๋‰ด์Šค ๊ฒ€์ƒ‰ - ์ตœ์‹  ๋‰ด์Šค์™€ ์‹œ์‚ฌ ์ •๋ณด, ์˜ค๋Š˜ ๋‰ด์Šค๋ฅผ ์ฐพ์„ ๋•Œ๋Š” ๋จผ์ € get_current_korean_time์œผ๋กœ ํ˜„์žฌ ์‹œ๊ฐ„์„ ํ™•์ธํ•˜์„ธ์š”)",
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. For recent posts or 'today's content', use get_current_korean_time first. (๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ ๊ฒ€์ƒ‰ - ์‹ค์ œ ์‚ฌ์šฉ์ž ํ›„๊ธฐ์™€ ๊ฐœ์ธ์  ๊ฒฝํ—˜, ์ตœ๊ทผ ๊ธ€์ด๋‚˜ ์˜ค๋Š˜ ๋‚ด์šฉ์„ ์ฐพ์„ ๋•Œ๋Š” ๋จผ์ € get_current_korean_time์œผ๋กœ ํ˜„์žฌ ์‹œ๊ฐ„์„ ํ™•์ธํ•˜์„ธ์š”)",
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. For recent images or current visual content, use get_current_korean_time first. (๋„ค์ด๋ฒ„ ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰ - ์‹œ๊ฐ์  ์ปจํ…์ธ  ๋ฐœ๊ฒฌ, ์ตœ๊ทผ ์ด๋ฏธ์ง€๋‚˜ ํ˜„์žฌ ์‹œ๊ฐ ์ž๋ฃŒ๋ฅผ ์ฐพ์„ ๋•Œ๋Š” ๋จผ์ € get_current_korean_time์œผ๋กœ ํ˜„์žฌ ์‹œ๊ฐ„์„ ํ™•์ธํ•˜์„ธ์š”)",
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. For recent questions or current discussions, use get_current_korean_time first. (๋„ค์ด๋ฒ„ ์ง€์‹iN ๊ฒ€์ƒ‰ - ์งˆ๋ฌธ๊ณผ ๋‹ต๋ณ€, ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์‹, ์ตœ๊ทผ ์งˆ๋ฌธ์ด๋‚˜ ํ˜„์žฌ ํ† ๋ก ์„ ์ฐพ์„ ๋•Œ๋Š” ๋จผ์ € get_current_korean_time์œผ๋กœ ํ˜„์žฌ ์‹œ๊ฐ„์„ ํ™•์ธํ•˜์„ธ์š”)",
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. For current definitions or recent updates, use get_current_korean_time for context. (๋„ค์ด๋ฒ„ ์ง€์‹๋ฐฑ๊ณผ ๊ฒ€์ƒ‰ - ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด์™€ ์ •์˜, ํ˜„์žฌ ์ •์˜๋‚˜ ์ตœ๊ทผ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐพ์„ ๋•Œ๋Š” get_current_korean_time์œผ๋กœ ์ƒํ™ฉ์„ ํŒŒ์•…ํ•˜์„ธ์š”)",
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. For current business hours or today's availability, use get_current_korean_time first. (๋„ค์ด๋ฒ„ ์ง€์—ญ ๊ฒ€์ƒ‰ - ์ง€์—ญ ์—…์ฒด์™€ ์žฅ์†Œ ์ •๋ณด, ํ˜„์žฌ ์˜์—…์‹œ๊ฐ„์ด๋‚˜ ์˜ค๋Š˜ ์ด์šฉ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ๋•Œ๋Š” ๋จผ์ € get_current_korean_time์œผ๋กœ ํ˜„์žฌ ์‹œ๊ฐ„์„ ํ™•์ธํ•˜์„ธ์š”)",
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. For recent discussions or current community topics, use get_current_korean_time first. (๋„ค์ด๋ฒ„ ์นดํŽ˜๊ธ€ ๊ฒ€์ƒ‰ - ์ปค๋ฎค๋‹ˆํ‹ฐ ํ† ๋ก ๊ณผ ์ „๋ฌธ ์ •๋ณด, ์ตœ๊ทผ ๋…ผ์˜๋‚˜ ํ˜„์žฌ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ฃผ์ œ๋ฅผ ์ฐพ์„ ๋•Œ๋Š” ๋จผ์ € get_current_korean_time์œผ๋กœ ํ˜„์žฌ ์‹œ๊ฐ„์„ ํ™•์ธํ•˜์„ธ์š”)",
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. For current trend analysis or 'recent trends', use get_current_korean_time to determine proper date ranges. (๋„ค์ด๋ฒ„ ๋ฐ์ดํ„ฐ๋žฉ ๊ฒ€์ƒ‰์–ด ํŠธ๋ Œ๋“œ ๋ถ„์„, ํ˜„์žฌ ํŠธ๋ Œ๋“œ๋‚˜ ์ตœ๊ทผ ๋™ํ–ฅ ๋ถ„์„ ์‹œ get_current_korean_time์œผ๋กœ ์ ์ ˆํ•œ ๋‚ ์งœ ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•˜์„ธ์š”)",
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. For current period analysis, use get_current_korean_time to set proper date ranges. (๋„ค์ด๋ฒ„ ์‡ผํ•‘ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ํŠธ๋ Œ๋“œ ๋ถ„์„ - ๋จผ์ € find_category ๋„๊ตฌ๋กœ ์นดํ…Œ๊ณ ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ฐพ๊ณ , ํ˜„์žฌ ๊ธฐ๊ฐ„ ๋ถ„์„์‹œ get_current_korean_time์œผ๋กœ ์ ์ ˆํ•œ ๋‚ ์งœ ๋ฒ”์œ„ ์„ค์ •)",
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 ์‚ฌ์šฉ์ž๊ฐ€ ๋” ๋งŽ์ด ๊ตฌ๋งคํ•˜๋Š” ์นดํ…Œ๊ณ ๋ฆฌ๋Š”?' For current device trends, use get_current_korean_time to set proper analysis period. (๊ธฐ๊ธฐ๋ณ„ ์‡ผํ•‘ ํŠธ๋ Œ๋“œ ๋ถ„์„ - ๋จผ์ € find_category ๋„๊ตฌ๋กœ ์นดํ…Œ๊ณ ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ฐพ๊ณ , ํ˜„์žฌ ๊ธฐ๊ธฐ ํŠธ๋ Œ๋“œ ๋ถ„์„์‹œ get_current_korean_time์œผ๋กœ ์ ์ ˆํ•œ ๋ถ„์„ ๊ธฐ๊ฐ„ ์„ค์ •)",
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: 'ํ™”์žฅํ’ˆ ์‡ผํ•‘์—์„œ ๋‚จ๋…€ ๋น„์œจ์€?' For current gender trends, use get_current_korean_time to set proper analysis period. (์„ฑ๋ณ„ ์‡ผํ•‘ ํŠธ๋ Œ๋“œ ๋ถ„์„ - ๋จผ์ € find_category ๋„๊ตฌ๋กœ ์นดํ…Œ๊ณ ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ฐพ๊ณ , ํ˜„์žฌ ์„ฑ๋ณ„ ํŠธ๋ Œ๋“œ ๋ถ„์„์‹œ get_current_korean_time์œผ๋กœ ์ ์ ˆํ•œ ๋ถ„์„ ๊ธฐ๊ฐ„ ์„ค์ •)",
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: '๊ฐœ๋ฐœ ๋„๊ตฌ๋Š” ์–ด๋А ์—ฐ๋ น๋Œ€๊ฐ€ ๋งŽ์ด ๊ตฌ๋งคํ•˜๋‚˜?' For current age trends, use get_current_korean_time to set proper analysis period. (์—ฐ๋ น๋ณ„ ์‡ผํ•‘ ํŠธ๋ Œ๋“œ - ๋จผ์ € find_category ๋„๊ตฌ๋กœ ์นดํ…Œ๊ณ ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ฐพ๊ณ , ํ˜„์žฌ ์—ฐ๋ น ํŠธ๋ Œ๋“œ ๋ถ„์„์‹œ get_current_korean_time์œผ๋กœ ์ ์ ˆํ•œ ๋ถ„์„ ๊ธฐ๊ฐ„ ์„ค์ •)",
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. For current keyword trends, use get_current_korean_time to set proper analysis period. (์นดํ…Œ๊ณ ๋ฆฌ ๋‚ด ํ‚ค์›Œ๋“œ ๋น„๊ต - ๋จผ์ € find_category ๋„๊ตฌ๋กœ ์นดํ…Œ๊ณ ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ฐพ๊ณ , ํ˜„์žฌ ํ‚ค์›Œ๋“œ ํŠธ๋ Œ๋“œ ๋ถ„์„์‹œ get_current_korean_time์œผ๋กœ ์ ์ ˆํ•œ ๋ถ„์„ ๊ธฐ๊ฐ„ ์„ค์ •)",
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
- * KST is UTC+9
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
- * KST is UTC+9
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
- const now = new Date();
31
- // Convert to KST (UTC+9)
32
- const kstOffset = 9 * 60 * 60 * 1000; // 9 hours in milliseconds
33
- const kstTime = new Date(now.getTime() + kstOffset + (now.getTimezoneOffset() * 60 * 1000));
34
- const year = kstTime.getUTCFullYear();
35
- const month = String(kstTime.getUTCMonth() + 1).padStart(2, '0');
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isnow890/naver-search-mcp",
3
- "version": "1.0.49",
3
+ "version": "1.0.50",
4
4
  "description": "Naver Search MCP Server",
5
5
  "main": "dist/src/index.js",
6
6
  "module": "./src/index.ts",