UNPKG

sometrend-mcp-server

Version:

TM2 기반의 썸트렌드(sometrend) MCP 서버 - 트렌드 분석 및 데이터 처리

442 lines (423 loc) 15.9 kB
/** * TM2 MCP 프롬프트 정의 * * - 평판 분석 * : 기업 · 기관에 대한 긍부정 성향과 연관키워드를 분석하여 이미지 제고를 위한 커뮤니케이션 전략 수립에 활용 * - 여론 분석 * : 온라인 · 소셜 상에서 사람들이 자유롭게 표현하고 소통하는 담론들을 분석하여 관심 주제에 대한 인지도 의견 파악에 활용 * - 브랜드 분석 * : 자사와 경쟁사 브랜드에 대한 인지도, 긍부정 성향, 연관키워드 등을 분석하여 브랜드 포지셔닝 전략 수립에 활용 * - 위기 이슈 관리 * : 위험 · 부정적 이슈를 조기에 포착하고 확산도를 분석하여 신속하고 효과적인 위기 이슈 대응 전략 수립에 활용 * - 마케팅 분석 * : 마케팅 요소(4P : Product, Price, Place, Promotion) 대한 여론을 분석하여 마케팅 전략 수립 · 성과 평가에 활용 * - 경쟁사 비교 분석 * : 브랜드 언급 점유율 분석을 통해 동종산업 현황을 파악하고, 강약점 분석을 통해 비교 우위 전략 수립에 활용 * - 상품 분석 * : 온라인 상에 언급된 소비자들의 구매결정요소(Key Buying Factor)들을 분석하여 상품 개선 · 신상품 개발에 활용 * - 공공 · 금융 · 기타 * : 정책에 대한 여론을 수렴하여 반영하거나, 투자자들의 심리 실시간 마켓 동향을 파악 하는 다양한 분야에서 활용 */ import type { PromptArgument, PromptDefinition, PromptCategory, PromptStatistics, PromptConstants, PromptTemplates } from '../types/prompts.js'; // === 기본 분석 프롬프트 정의 === export const BASIC_PROMPT_DEFINITIONS: PromptDefinition[] = [ { name: "analyze_social_trend", description: "소셜 미디어 트렌드 종합 분석을 위한 프롬프트", arguments: [ { name: "keyword", description: "분석할 키워드", required: true }, { name: "period", description: "분석 기간 (예: 최근 1개월, 3개월)", required: false }, { name: "focus", description: "분석 초점 (언급량, 감성, 연관어 등)", required: false } ] as const }, { name: "keyword_comparison", description: "여러 키워드의 비교 분석 프롬프트", arguments: [ { name: "keywords", description: "비교할 키워드들 (쉼표로 구분)", required: true }, { name: "metric", description: "비교 기준 (언급량, 감성, 연관어)", required: false } ] }, { name: "sentiment_analysis", description: "키워드 감성 분석 전문 프롬프트", arguments: [ { name: "keyword", description: "감성 분석할 키워드", required: true }, { name: "timeframe", description: "분석 시간 범위", required: false } ] }, { name: "association_analysis", description: "연관어 분석 전문 프롬프트", arguments: [ { name: "keyword", description: "연관어를 분석할 키워드", required: true }, { name: "category", description: "분류체계 기준 (선택사항)", required: false } ] }, { name: "crisis_monitoring", description: "위기 모니터링 및 이슈 탐지 프롬프트", arguments: [ { name: "keyword", description: "모니터링할 키워드", required: true }, { name: "threshold", description: "위기 감지 임계값", required: false } ] } ]; // === TM2 전문 분석 시나리오 프롬프트 === export const EXTENDED_PROMPT_DEFINITIONS: PromptDefinition[] = [ { name: "reputation_analysis", description: "평판 분석 - 기업·기관에 대한 긍부정 성향과 연관키워드를 분석하여 이미지 제고를 위한 커뮤니케이션 전략 수립에 활용", arguments: [ { name: "organization", description: "분석할 기업이나 기관명", required: true }, { name: "analysis_period", description: "분석 기간 (예: 최근 3개월, 6개월)", required: false }, { name: "focus_area", description: "중점 분석 영역 (제품, 서비스, 경영진, 전반적 이미지 등)", required: false }, { name: "benchmark_targets", description: "비교 대상 기업/기관 (선택사항)", required: false } ] }, { name: "public_opinion_analysis", description: "여론 분석 - 온라인·소셜 상에서 사람들이 자유롭게 표현하고 소통하는 담론들을 분석하여 관심 주제에 대한 인지도 및 의견 파악에 활용", arguments: [ { name: "topic", description: "분석할 여론 주제 또는 이슈", required: true }, { name: "target_demographic", description: "타겟 인구층 (연령대, 지역, 성별 등)", required: false }, { name: "opinion_scope", description: "의견 분석 범위 (찬반, 인지도, 관심도, 우려사항 등)", required: false }, { name: "regional_focus", description: "지역별 분석 여부", required: false } ] }, { name: "brand_analysis", description: "브랜드 분석 - 자사와 경쟁사 브랜드에 대한 인지도, 긍부정 성향, 연관키워드 등을 분석하여 브랜드 포지셔닝 전략 수립에 활용", arguments: [ { name: "brand_name", description: "분석할 주요 브랜드명", required: true }, { name: "competitor_brands", description: "경쟁사 브랜드들 (쉼표로 구분)", required: false }, { name: "positioning_focus", description: "포지셔닝 분석 초점 (품질, 가격, 이미지, 서비스 등)", required: false }, { name: "market_segment", description: "시장 세그먼트 (예: 프리미엄, 대중, 저가 등)", required: false } ] }, { name: "crisis_issue_management", description: "위기 이슈 관리 - 위험·부정적 이슈를 조기에 포착하고 확산도를 분석하여 신속하고 효과적인 위기 이슈 대응 전략 수립에 활용", arguments: [ { name: "organization_or_brand", description: "모니터링할 조직/브랜드명", required: true }, { name: "risk_keywords", description: "위기 관련 키워드들 (사고, 논란, 클레임 등)", required: false }, { name: "alert_sensitivity", description: "알림 민감도 (높음, 보통, 낮음)", required: false }, { name: "response_priority", description: "대응 우선순위 기준 (확산속도, 영향도, 심각도)", required: false } ] }, { name: "marketing_analysis", description: "마케팅 분석 - 마케팅 요소(4P: Product, Price, Place, Promotion)에 대한 여론을 분석하여 마케팅 전략 수립·성과 평가에 활용", arguments: [ { name: "product_or_service", description: "분석할 제품이나 서비스명", required: true }, { name: "marketing_element", description: "분석할 마케팅 요소 (제품, 가격, 유통, 프로모션, 전체)", required: false }, { name: "campaign_period", description: "마케팅 캠페인 기간", required: false }, { name: "target_market", description: "타겟 시장 또는 고객층", required: false } ] }, { name: "competitor_comparison_analysis", description: "경쟁사 비교 분석 - 브랜드별 언급 점유율 분석을 통해 동종산업 내 현황을 파악하고, 강약점 분석을 통해 비교 우위 전략 수립에 활용", arguments: [ { name: "primary_brand", description: "주요 분석 대상 브랜드", required: true }, { name: "competitor_list", description: "경쟁사 브랜드 목록 (쉼표로 구분)", required: true }, { name: "comparison_metrics", description: "비교 지표 (언급량, 점유율, 감성, 연관어, 전체)", required: false }, { name: "industry_category", description: "업종 카테고리 (선택사항)", required: false } ] }, { name: "product_analysis", description: "상품 분석 - 온라인 상에 언급된 소비자들의 구매결정요소(Key Buying Factor)들을 분석하여 상품 개선·신상품 개발에 활용", arguments: [ { name: "product_name", description: "분석할 상품명", required: true }, { name: "analysis_focus", description: "분석 초점 (구매요인, 만족도, 불만사항, 개선요구, 전체)", required: false }, { name: "product_category", description: "상품 카테고리 (전자제품, 식품, 의류, 화장품 등)", required: false }, { name: "lifecycle_stage", description: "제품 라이프사이클 단계 (출시, 성장, 성숙, 쇠퇴)", required: false } ] }, { name: "public_finance_analysis", description: "공공·금융·기타 분석 - 정책에 대한 여론을 수렴하여 반영하거나, 투자자들의 심리 및 실시간 마켓 동향을 파악하는 등 다양한 분야에서 활용", arguments: [ { name: "analysis_subject", description: "분석 대상 (정책명, 금융상품, 시장 등)", required: true }, { name: "analysis_type", description: "분석 유형 (정책여론, 투자심리, 시장동향, 규제반응)", required: false }, { name: "stakeholder_group", description: "이해관계자 그룹 (일반시민, 투자자, 기업, 전문가)", required: false }, { name: "impact_scope", description: "영향 범위 (국가적, 지역적, 업계별, 개인적)", required: false } ] } ]; // === 통합 분석 프롬프트 === export const STRATEGIC_PROMPT_DEFINITIONS: PromptDefinition[] = [ { name: "comprehensive_brand_monitoring", description: "종합적 브랜드 모니터링 - 평판, 경쟁사 비교, 위기 감지를 통합한 전방위적 브랜드 분석", arguments: [ { name: "brand_name", description: "모니터링할 브랜드명", required: true }, { name: "monitoring_scope", description: "모니터링 범위 (평판, 경쟁사, 위기, 전체)", required: false }, { name: "alert_settings", description: "알림 설정 (즉시, 일간, 주간)", required: false } ] }, { name: "strategic_market_analysis", description: "전략적 시장 분석 - 시장 동향, 소비자 인사이트, 경쟁 환경을 종합한 전략 수립용 분석", arguments: [ { name: "market_or_industry", description: "분석할 시장이나 업종", required: true }, { name: "strategic_focus", description: "전략적 초점 (신규진입, 시장확장, 포지셔닝, 혁신)", required: false }, { name: "timeframe", description: "분석 기간 및 예측 범위", required: false } ] } ]; // === 모든 프롬프트 정의 통합 === export const ALL_PROMPT_DEFINITIONS: PromptDefinition[] = [ ...BASIC_PROMPT_DEFINITIONS, ...EXTENDED_PROMPT_DEFINITIONS, ...STRATEGIC_PROMPT_DEFINITIONS ]; // === 카테고리별 프롬프트 분류 === export const PROMPT_CATEGORIES: PromptCategory[] = [ { name: "기본 분석", description: "소셜 미디어 기본 분석 프롬프트", prompts: BASIC_PROMPT_DEFINITIONS }, { name: "TM2 전문 분석", description: "TM2 특화 분석 시나리오 프롬프트", prompts: EXTENDED_PROMPT_DEFINITIONS }, { name: "전략 분석", description: "통합적이고 전략적인 분석 프롬프트", prompts: STRATEGIC_PROMPT_DEFINITIONS } ]; // === 기존 호환성을 위한 별칭 === export const PROMPT_DEFINITIONS = ALL_PROMPT_DEFINITIONS; // === 유틸리티 함수들 === /** * 모든 프롬프트 정의를 반환하는 함수 * @returns 모든 프롬프트 정의 배열 */ export function getPromptDefinitions(): PromptDefinition[] { return ALL_PROMPT_DEFINITIONS; } /** * 특정 이름의 프롬프트를 찾는 함수 * @param name 프롬프트 이름 * @returns 프롬프트 정의 또는 undefined */ export function getPromptByName(name: string): PromptDefinition | undefined { return ALL_PROMPT_DEFINITIONS.find(prompt => prompt.name === name); } /** * 특정 카테고리의 프롬프트들을 반환하는 함수 * @param categoryName 카테고리 이름 * @returns 해당 카테고리의 프롬프트 배열 */ export function getPromptsByCategory(categoryName: string): PromptDefinition[] { const category = PROMPT_CATEGORIES.find(cat => cat.name === categoryName); return category ? category.prompts : []; }