github analyzed bc52876

MongLong0214/stock-ai-newsletter

github

Korean stock market theme lifecycle analysis for 250+ KOSPI/KOSDAQ investment themes

maintainer
MongLong0214
license
first seen
2026-06-03
last seen
2026-06-03
releases · 30d
0
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged dynamic code execution in MongLong0214/stock-ai-newsletter
  2. HIGH code analysis flagged dynamic code execution in MongLong0214/stock-ai-newsletter
  3. HIGH code analysis flagged dynamic code execution in MongLong0214/stock-ai-newsletter
  4. HIGH code analysis flagged dynamic code execution ×2 in MongLong0214/stock-ai-newsletter
capabilities 0 tools
transport stdio · http verified reported listed in the official MCP registry counts 0 tools · 0 res · 0 prompts permission surface via code analysis

no tools enumerated yet for this server.

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit bc52876 · analyzer v18 · 11h ago

skills & prompt files 4

danger signals1

code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

filesystem 15

  • fs MongLong0214-stock-ai-newsletter-bc52876/lib/crash-alert-to-image.ts :3 import { existsSync } from 'fs';
  • fs MongLong0214-stock-ai-newsletter-bc52876/lib/og-image-response.ts :2 import { readFile } from 'node:fs/promises';
  • fs MongLong0214-stock-ai-newsletter-bc52876/scripts/generate-blog-post.ts :4 import { existsSync } from 'fs';
  • fs MongLong0214-stock-ai-newsletter-bc52876/scripts/prepare-newsletter.ts :4 import { existsSync } from 'fs';
  • fs MongLong0214-stock-ai-newsletter-bc52876/scripts/send-newsletter.ts :4 import { existsSync } from 'fs';
  • fs MongLong0214-stock-ai-newsletter-bc52876/scripts/send-test-email.ts :4 import { existsSync } from 'fs';
  • fs MongLong0214-stock-ai-newsletter-bc52876/scripts/tli/ops/run-level4-calibration.ts :4 import { mkdirSync, writeFileSync } from 'node:fs'
  • fs MongLong0214-stock-ai-newsletter-bc52876/scripts/tli/ops/run-level4-certification.ts :4 import { mkdirSync, writeFileSync } from 'node:fs'
  • fs MongLong0214-stock-ai-newsletter-bc52876/scripts/tli/ops/run-level4-drift.ts :4 import { mkdirSync, writeFileSync } from 'node:fs'
  • fs MongLong0214-stock-ai-newsletter-bc52876/scripts/tli/ops/run-level4-weight-tuning.ts :4 import { mkdirSync, writeFileSync } from 'node:fs'
  • fs MongLong0214-stock-ai-newsletter-bc52876/scripts/tli/research/backtest-comparisons.ts :3 import { mkdir, writeFile } from 'node:fs/promises'
  • fs MongLong0214-stock-ai-newsletter-bc52876/scripts/tli/research/comparison-v4-baselines.ts :1 import { existsSync } from 'node:fs'
  • fs MongLong0214-stock-ai-newsletter-bc52876/scripts/tli/research/optimizer/dump-data.ts :1 import { readFileSync, writeFileSync } from 'node:fs'
  • fs MongLong0214-stock-ai-newsletter-bc52876/scripts/tli/research/optimizer/evaluate.ts :3 import { readFileSync } from 'node:fs'
  • fs MongLong0214-stock-ai-newsletter-bc52876/scripts/update-archive-data.ts :4 import { existsSync, writeFileSync, mkdirSync } from 'fs';

network 18

  • net MongLong0214-stock-ai-newsletter-bc52876/app/archive/_hooks/use-stock-prices.ts :81 * 재시도 로직을 포함한 fetch (모듈 레벨)
  • net MongLong0214-stock-ai-newsletter-bc52876/app/archive/_utils/api/kis/client.ts :38 return await fetch(url, { ...options, signal: controller.signal });
  • net MongLong0214-stock-ai-newsletter-bc52876/app/blog/_services/http-client.ts :3 import { Agent, fetch as undiciFetch } from 'undici';
  • net MongLong0214-stock-ai-newsletter-bc52876/app/blog/_services/serp-api.ts :73 const res = await fetch(url, {
  • net MongLong0214-stock-ai-newsletter-bc52876/app/themes/[id]/_apis/index.ts :5 const res = await fetch(`/api/tli/themes/${id}`)
  • net MongLong0214-stock-ai-newsletter-bc52876/app/themes/[id]/_components/stock-list-kis.ts :84 const response = await fetch(`/api/stock/price?tickers=${chunk.join(',')}`, {
  • net MongLong0214-stock-ai-newsletter-bc52876/app/themes/_apis/index.ts :5 const res = await fetch('/api/tli/scores/ranking')
  • net MongLong0214-stock-ai-newsletter-bc52876/lib/indexnow.ts :25 const response = await fetch(INDEXNOW_ENDPOINT, {
  • net MongLong0214-stock-ai-newsletter-bc52876/lib/market-data/kis-market-assessment.ts :321 return await fetch(url, { ...options, signal: controller.signal });
  • net MongLong0214-stock-ai-newsletter-bc52876/mcp/.smithery/shttp/module.js :42 `}var ii=class{constructor(e=Cg.stdin,r=Cg.stdout){this._stdin=e,this._stdout=r,this._readBuffer=new si,this._started=!1,this._ondata=n=>{this._readBuffer.append(n),this.processReadBuffer()},this._one
  • net MongLong0214-stock-ai-newsletter-bc52876/mcp/dist/fetch-helper.js :50 const response = await fetch(url.toString(), {
  • net MongLong0214-stock-ai-newsletter-bc52876/mcp/src/fetch-helper.ts :80 const response = await fetch(url.toString(), {
  • net MongLong0214-stock-ai-newsletter-bc52876/scripts/mcp-stats.ts :20 const res = await fetch(`${SUPABASE_URL}/rest/v1/rpc/get_mcp_analytics_stats`, {
  • net MongLong0214-stock-ai-newsletter-bc52876/scripts/tli/collectors/naver-autocomplete.ts :21 const res = await fetch(url, {
  • net MongLong0214-stock-ai-newsletter-bc52876/scripts/tli/collectors/naver-datalab.ts :78 const response = await fetch('https://openapi.naver.com/v1/datalab/search', {
  • net MongLong0214-stock-ai-newsletter-bc52876/scripts/tli/collectors/naver-finance-theme-list.ts :17 const res = await fetch(url, { signal: AbortSignal.timeout(30000) })
  • net MongLong0214-stock-ai-newsletter-bc52876/scripts/tli/collectors/naver-finance-themes.ts :26 const res = await fetch(url, { signal: AbortSignal.timeout(30000) });
  • net MongLong0214-stock-ai-newsletter-bc52876/scripts/tli/collectors/naver-news.ts :56 const res = await fetch(`https://openapi.naver.com/v1/search/news.json?${params}`, {

secrets 26

  • secrets MongLong0214-stock-ai-newsletter-bc52876/app/api/admin/mcp-stats/route.ts :5 const ADMIN_SECRET = process.env.ADMIN_SECRET
  • secrets MongLong0214-stock-ai-newsletter-bc52876/app/api/admin/tli/comparison-v4/promote/route.ts :10 const ADMIN_SECRET = process.env.ADMIN_SECRET
  • secrets MongLong0214-stock-ai-newsletter-bc52876/app/api/cron/send-newsletter/route.ts :8 process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY || 'placeholder-key',
  • secrets MongLong0214-stock-ai-newsletter-bc52876/app/api/cron/send-recommendations/route.ts :39 if (!process.env.CRON_SECRET || !verifyBearerToken(authHeader, process.env.CRON_SECRET)) {
  • secrets MongLong0214-stock-ai-newsletter-bc52876/app/archive/_utils/api/kis/client.ts :87 KIS_APP_KEY: process.env.KIS_APP_KEY || '',
  • secrets MongLong0214-stock-ai-newsletter-bc52876/app/archive/_utils/api/kis/token-storage.ts :18 const supabaseKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY;
  • secrets MongLong0214-stock-ai-newsletter-bc52876/app/archive/_utils/cache/stock-price.ts :39 const supabaseKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY;
  • secrets MongLong0214-stock-ai-newsletter-bc52876/app/blog/_services/serp-api.ts :18 const apiKey = process.env.SERP_API_KEY;
  • secrets MongLong0214-stock-ai-newsletter-bc52876/app/llms.txt/route.ts :16 process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY || 'placeholder-key',
  • secrets MongLong0214-stock-ai-newsletter-bc52876/app/themes/(list)/page.tsx :53 process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY || 'placeholder-key',
  • secrets MongLong0214-stock-ai-newsletter-bc52876/lib/_utils/env-validator.ts :24 KIS_APP_KEY: process.env.KIS_APP_KEY,
  • secrets MongLong0214-stock-ai-newsletter-bc52876/lib/env.ts :19 NEXT_PUBLIC_SUPABASE_ANON_KEY: process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY,
  • secrets MongLong0214-stock-ai-newsletter-bc52876/lib/indexnow.ts :2 const INDEXNOW_KEY = process.env.INDEXNOW_KEY || ''
  • secrets MongLong0214-stock-ai-newsletter-bc52876/lib/market-data/kis-market-assessment.ts :281 const apiKey = process.env.SERP_API_KEY;
  • secrets MongLong0214-stock-ai-newsletter-bc52876/lib/sendgrid.ts :17 const apiKey = process.env.SENDGRID_API_KEY;
  • secrets MongLong0214-stock-ai-newsletter-bc52876/lib/supabase.ts :4 const supabaseAnonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY;
  • secrets MongLong0214-stock-ai-newsletter-bc52876/lib/supabase/server-client.ts :21 const serviceRoleKey = process.env.SUPABASE_SERVICE_ROLE_KEY;
  • secrets MongLong0214-stock-ai-newsletter-bc52876/lib/twitter.ts :6 const apiKey = process.env.TWITTER_API_KEY;
  • secrets MongLong0214-stock-ai-newsletter-bc52876/scripts/mcp-stats.ts :7 const SERVICE_KEY = process.env.SUPABASE_SERVICE_ROLE_KEY
  • secrets MongLong0214-stock-ai-newsletter-bc52876/scripts/prepare-newsletter.ts :19 if (!process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY) {
  • secrets MongLong0214-stock-ai-newsletter-bc52876/scripts/send-newsletter.ts :20 if (!process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY) {
  • secrets MongLong0214-stock-ai-newsletter-bc52876/scripts/tli/collectors/naver-datalab.ts :41 const clientSecret = process.env.NAVER_CLIENT_SECRET
  • secrets MongLong0214-stock-ai-newsletter-bc52876/scripts/tli/collectors/naver-news.ts :37 const clientSecret = process.env.NAVER_CLIENT_SECRET
  • secrets MongLong0214-stock-ai-newsletter-bc52876/scripts/tli/research/optimizer/dump-data.ts :44 const key = process.env.SUPABASE_SERVICE_ROLE_KEY ?? ''
  • secrets MongLong0214-stock-ai-newsletter-bc52876/scripts/tli/shared/supabase-admin.ts :6 const serviceRoleKey = process.env.SUPABASE_SERVICE_ROLE_KEY || '';
  • secrets MongLong0214-stock-ai-newsletter-bc52876/scripts/update-archive-data.ts :26 if (!process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY) {

tool registrations 15

  • get_theme_ranking MongLong0214-stock-ai-newsletter-bc52876/mcp/.smithery/shttp/module.js :42
  • get_theme_detail MongLong0214-stock-ai-newsletter-bc52876/mcp/.smithery/shttp/module.js :42
  • get_theme_history MongLong0214-stock-ai-newsletter-bc52876/mcp/.smithery/shttp/module.js :42
  • search_themes MongLong0214-stock-ai-newsletter-bc52876/mcp/.smithery/shttp/module.js :42
  • get_stock_theme MongLong0214-stock-ai-newsletter-bc52876/mcp/.smithery/shttp/module.js :42
  • compare_themes MongLong0214-stock-ai-newsletter-bc52876/mcp/dist/tools/compare-themes.js :9
  • get_market_summary MongLong0214-stock-ai-newsletter-bc52876/mcp/dist/tools/get-market-summary.js :8
  • get_methodology MongLong0214-stock-ai-newsletter-bc52876/mcp/dist/tools/get-methodology.js :33
  • get_predictions MongLong0214-stock-ai-newsletter-bc52876/mcp/dist/tools/get-predictions.js :9
  • get_theme_changes MongLong0214-stock-ai-newsletter-bc52876/mcp/dist/tools/get-theme-changes.js :14
  • get_theme_detail MongLong0214-stock-ai-newsletter-bc52876/mcp/dist/tools/get-theme-detail.js :13
  • get_theme_history MongLong0214-stock-ai-newsletter-bc52876/mcp/dist/tools/get-theme-history.js :11
  • get_theme_ranking MongLong0214-stock-ai-newsletter-bc52876/mcp/dist/tools/get-theme-ranking.js :23
  • search_stocks MongLong0214-stock-ai-newsletter-bc52876/mcp/dist/tools/search-stocks.js :10
  • search_themes MongLong0214-stock-ai-newsletter-bc52876/mcp/dist/tools/search-themes.js :9

declared dependencies 51

  • @fontsource/noto-sans-kr@^5.2.9
  • @google/genai@^1.30.0
  • @radix-ui/react-slot@^1.2.3
  • @radix-ui/react-tooltip@^1.2.8
  • @sendgrid/mail@^8.1.6
  • @supabase/supabase-js@^2.75.0
  • @tanstack/react-query@^5.90.20
  • @vercel/analytics@^1.5.0
  • @vercel/speed-insights@^1.2.0
  • canvas@^3.2.0
  • cheerio@^1.1.2
  • class-variance-authority@^0.7.1
  • clsx@^2.1.1
  • date-fns@^4.1.0
  • date-fns-tz@^3.2.0
  • disposable-email-domains-js@^1.18.0
  • domhandler@^5.0.3
  • dotenv@^17.2.3
  • framer-motion@^12.23.22
  • google-auth-library@^10.5.0
  • lucide-react@^0.545.0
  • next@15.5.7
  • radix-ui@^1.4.3
  • react@19.1.0
  • react-dom@19.1.0
  • recharts@^2.15.4
  • rehype-sanitize@^6.0.0
  • rehype-stringify@^10.0.1
  • remark@^15.0.1
  • remark-gfm@^4.0.1
  • remark-rehype@^11.1.2
  • tailwind-merge@^3.4.0
  • twitter-api-v2@^1.27.0
  • undici@^7.21.0
  • unified@^11.0.5
  • zod@^4.1.12
  • @eslint/eslintrc@^3
  • @tailwindcss/postcss@^4
  • @testing-library/jest-dom@^6.9.1
  • @testing-library/react@^16.3.2
  • @types/node@^20
  • @types/react@^19
  • @types/react-dom@^19
  • eslint@^9
  • eslint-config-next@15.5.7
  • playwright@^1.57.0
  • tailwindcss@^4
  • tsx@^4.20.6
  • tw-animate-css@^1.4.0
  • typescript@^5
  • vitest@^4.0.18