GitHub - sansan0/TrendRadar: โญAI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.๐ฏ ๅๅซไฟกๆฏ่ฟ่ฝฝ๏ผไฝ ็ AI ่ๆ ็ๆงๅฉๆไธ็ญ็น็ญ้ๅทฅๅ ท๏ผ่ๅๅคๅนณๅฐ็ญ็น + RSS ่ฎข้ ๏ผๆฏๆๅ ณ้ฎ่ฏ็ฒพๅ็ญ้ใAI ็ฟป่ฏ + AI ๅๆ็ฎๆฅ็ดๆจๆๆบ๏ผไนๆฏๆๆฅๅ ฅ MCP ๆถๆ๏ผ่ต่ฝ AI ่ช็ถ่ฏญ่จๅฏน่ฏๅๆใๆ ๆๆดๅฏไธ่ถๅฟ้ขๆต็ญใๆฏๆ Docker ๏ผๆฐๆฎๆฌๅฐ/ไบ็ซฏ่ชๆใ้ๆๅพฎไฟก/้ฃไนฆ/้้/Telegram/้ฎไปถ/ntfy/bark/slack ็ญๆธ ้ๆบ่ฝๆจ้ใ
ํต์ฌ ํฌ์ธํธ
- 1TrendRadar๋ ๋ค์ํ ํ๋ซํผ์ ๋ด์ค ๋ฐ RSS ํผ๋๋ฅผ AI๋ก ํตํฉ ๋ถ์ํ์ฌ ๊ฐ์ธํ๋ ํธ๋ ๋ ๋ชจ๋ํฐ๋ง ๋ฐ ์๋ฆผ์ ์ ๊ณตํ๋ ์คํ์์ค ์๋ฃจ์ ์ ๋๋ค.
- 2์ด ์์คํ ์ ํค์๋ ๊ธฐ๋ฐ์ ์ ๊ตํ ์ฝํ ์ธ ํํฐ๋ง, AI ๋ฒ์ญ ๋ฐ ์ฌ์ธต ๋ถ์ ๋ฆฌํฌํธ ์์ฑ, ๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ ๋ฉ์์ง ์ฑ๋๋ก์ ์ค๋งํธ ํธ์ ์๋ฆผ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค.
- 3Docker, GitHub Actions ๋ฑ ๋ค์ํ ํ๊ฒฝ์ ์์ฝ๊ฒ ๋ฐฐํฌ ๊ฐ๋ฅํ๋ฉฐ, ์ ๋ณด ๊ณผ๋ถํ๋ฅผ ์ค์ด๊ณ ๊ด์ฌ ๋ถ์ผ์ ํต์ฌ ์ ๋ณด๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ ํ๋ ๋ฐ ๊ธฐ์ฌํฉ๋๋ค.
TrendRadar๋ AI ๊ธฐ๋ฐ์ ๊ณต๊ฐ ์ฌ๋ก ๋ฐ ํธ๋ ๋ ๋ชจ๋ํฐ๋ง ์์คํ ์ผ๋ก, ๋ค์ํ ํ๋ซํผ์ ์ ๋ณด๋ฅผ ์ง๊ณํ๊ณ , RSS ๊ตฌ๋ ์ ์ง์ํ๋ฉฐ, ์ค๋งํธ ์๋ฆผ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์ ๋ณด ๊ณผ๋ถํ๋ฅผ ํด์ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์ด ํ๋ก์ ํธ๋ ์ฌ์ฉ์ ์ ์ ๊ฐ๋ฅํ ํค์๋ ๊ธฐ๋ฐ ํํฐ๋ง, AI ๋ฒ์ญ, AI ๋ถ์ ์์ฝ ๋ฑ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ํตํด ๋ด์ค ๋ชจ๋ํฐ๋ง์ ์๋ํํฉ๋๋ค. Docker ๋ฐฐํฌ๋ฅผ ์ง์ํ๋ฉฐ, ๋ฐ์ดํฐ๋ ๋ก์ปฌ ๋๋ ํด๋ผ์ฐ๋์ ์ ์ฅํ ์ ์์ต๋๋ค. WeChat, Feishu, DingTalk, Telegram, Email, ntfy, Bark, Slack ๋ฑ ๋ค์ํ ์๋ฆผ ์ฑ๋์ ํตํฉํ์ฌ ์ค์๊ฐ ํธ์ ์๋ฆผ์ ๋ณด๋ ๋๋ค.
ํต์ฌ ๊ธฐ๋ฅ ๋ฐ ๋ฐฉ๋ฒ๋ก :
- ๋ฐ์ดํฐ ์์ง ๋ฐ ํตํฉ (Multi-platform Aggregation & RSS Feed Support):
newsnowํ๋ก์ ํธ์ API๋ฅผ ์ฌ์ฉํ์ฌ Zhihu, Douyin, Bilibili Hot Search, Wallstreetcn, Baidu Hot Search, CaiLianShe Popular, The Paper, Phoenix New Media, JinRiTouTiao, Weibo ๋ฑ 11๊ฐ ์ฃผ์ ํ๋ซํผ์ ์ค์๊ฐ ์ธ๊ธฐ ๊ฒ์์ด ๋ฐ ๋ด์ค๋ฅผ ์ง๊ณํฉ๋๋ค.- v4.5.0๋ถํฐ๋ RSS/Atom ๊ตฌ๋ ์ ์ง์ํ์ฌ ์ฌ์ฉ์๊ฐ ์ง์ ํ RSS ์์ค์ ๋ด์ฉ์ ํค์๋๋ณ๋ก ๊ทธ๋ฃนํํ์ฌ ์ธ๊ธฐ ๊ฒ์์ด์ ๋์ผํ ํ์์ผ๋ก ํตํฉํฉ๋๋ค. ์ด๋ก์จ ์ธ๋ถ ์ ๋ณด์๊ณผ ํ๋ซํผ ์ธ๊ธฐ ๊ฒ์์ด๋ฅผ ํ๋์ ๋ณด๊ณ ์๋ก ํตํฉํ์ฌ ๋ณผ ์ ์์ต๋๋ค.
- ์ฝํ
์ธ ํํฐ๋ง ๋ฐ ๊ฐ์ธํ (Precise Content Filtering):
config/frequency_words.txtํ์ผ์ ํตํด ์ฌ์ฉ์ ์ ์ ํค์๋(์: AI, BYD, ๊ต์ก ์ ์ฑ )๋ฅผ ์ค์ ํ์ฌ ๊ด์ฌ ์๋ ์ ๋ณด๋ง ํํฐ๋งํฉ๋๋ค.- ๊ธฐ๋ณธ ๋ฌธ๋ฒ: ํค์๋,
+(ํ์ ํฌํจ),!(์ ์ธ)๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์กํ ํํฐ๋ง ๊ท์น์ ์ ์ํฉ๋๋ค. - ์ ๊ท์ ๋ฌธ๋ฒ (v4.7.0):
/pattern/ํ์์ ์ฌ์ฉํ์ฌ ์ ๊ท์ ๋งค์นญ์ ์ง์ํ๋ฉฐ, ๋ฌธ๋ฒ์ผ๋ก ๋ณต์กํ ์ ๊ท์์ ์๊ธฐ ์ฌ์ด ์ด๋ฆ์ ๋ถ์ฌํ ์ ์์ต๋๋ค. - ์ ์ญ ํํฐ๋ง (v3.5.0):
[GLOBAL_FILTER]์์ญ์ ํตํด ๊ด๊ณ , ๋ง์ผํ , ์ ํ์ง ์ฝํ ์ธ ๋ฑ ์์น ์๋ ๋ด์ฉ์ ์ ์ญ์ ์ผ๋ก ํํฐ๋งํ ์ ์์ต๋๋ค.
- ํซ์คํ ์๊ณ ๋ฆฌ์ฆ ๋ฐ ํธ๋ ๋ ๋ถ์ (Hotspot Algorithm & Trend Analysis):
- TrendRadar๋ ์์ง๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ์ ์ ์๋ ๊ฐ์ค์น(์ธ ๊ฐ์ง ๋น์จ ์กฐ์ ๊ฐ๋ฅ)๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ํ๋ซํผ์ ์ธ๊ธฐ ๊ฒ์์ด๋ฅผ ์ฌ์ ๋ ฌํ์ฌ ๊ฐ์ธํ๋ ํซ์คํ ๋ชฉ๋ก์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ๋จ์ํ ํ๋ซํผ๋ณ ์์๊ฐ ์๋ ์ฌ์ฉ์ ๊ด์ ์์์ ์ค์๋๋ฅผ ๋ฐ์ํฉ๋๋ค.
- ์ค์๊ฐ ํธ๋ ๋ ์ถ์ : ๊ฐ ๋ด์ค ํญ๋ชฉ์ ์ฒซ ๋ฑ์ฅ๋ถํฐ ๋ง์ง๋ง ๋ฑ์ฅ๊น์ง์ ์๊ฐ ๋ฒ์, ์๊ฐ๋๋ณ ์์ ๋ณํ, ์ถํ ๋น๋๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
- ์ ๊ท ํซ์คํ ๊ฐ์ง: ์๋ก์ด ํธ๋ ๋ ์ฃผ์ ๋ฅผ ์ค์๊ฐ์ผ๋ก ์๋ณํ๊ณ
๐๋งํฌ๋ก ํ์ํฉ๋๋ค. - ์ง์์ฑ ๋ถ์: ์ผํ์ฑ ํซ์คํ๊ณผ ์ง์์ ์ผ๋ก ๋ฐ์ ํ๋ ์ฌ์ธต ๋ด์ค๋ฅผ ๊ตฌ๋ณํฉ๋๋ค.
- ๊ต์ฐจ ํ๋ซํผ ๋น๊ต: ๋์ผํ ๋ด์ค๊ฐ ๋ค๋ฅธ ํ๋ซํผ์์ ๋ณด์ด๋ ์์ ๋ณํ๋ฅผ ํตํด ๋ฏธ๋์ด์ ๊ด์ฌ๋ ์ฐจ์ด๋ฅผ ํ์ ํฉ๋๋ค.
- ์ค๋งํธ ํธ์ ์ ๋ต (Smart Push Strategy):
- ์ธ ๊ฐ์ง ํธ์ ๋ชจ๋:
daily(์ผ์ผ ์์ฝ): ๋งค์ผ ์ง์ ๋ ์๊ฐ์ ๋ชจ๋ ๋งค์นญ๋ ๋ด์ค(์ด์ ํธ์๋ ๋ด์ฉ ํฌํจ)๋ฅผ ์์ฝํ์ฌ ํธ์ํฉ๋๋ค.current(ํ์ฌ ๋ชฉ๋ก): ๋งค ์๊ฐ ํ์ฌ์ ์ธ๊ธฐ ๊ฒ์์ด ๋ชฉ๋ก์ ํธ์ํฉ๋๋ค(์ง์์ ์ผ๋ก ๋ชฉ๋ก์ ์๋ ํญ๋ชฉ์ ๋งค๋ฒ ๋ํ๋ฉ๋๋ค).incremental(์ฆ๋ถ ๋ชจ๋ํฐ๋ง): ์ง๋ ์คํ ์ดํ ์๋ก ์ถ๊ฐ๋ ๋ด์ฉ๋ง ํธ์ํ์ฌ ์ค๋ณต์ ์ต์ํํฉ๋๋ค.
- ํธ์ ์๊ฐ ์ฐฝ ์ ์ด (v2.1.0): ํน์ ์๊ฐ ๋ฒ์(์: 09:00-18:00) ๋ด์์๋ง ํธ์๊ฐ ์ด๋ฃจ์ด์ง๋๋ก ์ค์ ํ์ฌ ๋น์ ๋ฌด ์๊ฐ์ ์๋ฆผ์ ๋ฐฉ์งํฉ๋๋ค.
- ์ฝํ ์ธ ์์ ์ค์ (v3.5.0): 'ํซ์คํ ํค์๋ ํต๊ณ'์ '์ ๊ท ํซ์คํ ๋ด์ค'์ ํ์ ์์๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
- ํ์ ๋ชจ๋ ์ ํ (v4.6.0):
keyword(ํค์๋๋ณ ๊ทธ๋ฃนํ)์platform(ํ๋ซํผ๋ณ ๊ทธ๋ฃนํ) ๋ ๊ฐ์ง ํ์ ๋ชจ๋๋ฅผ ์ง์ํฉ๋๋ค.
- ์ธ ๊ฐ์ง ํธ์ ๋ชจ๋:
- AI ๋ถ์ ๊ธฐ๋ฅ (v3.0.0, v5.0.0, v5.2.0, v5.3.0, v5.4.0):
- MCP (Model Context Protocol) ๊ธฐ๋ฐ AI ๋ถ์ ์๋ฒ: AI ๋ํ ๋ชจ๋ธ(
DeepSeek,OpenAI,Google Gemini, ๋ฐOpenAI ํธํ API)์ ํ์ฉํ์ฌ ํธ์ ์ฝํ ์ธ ๋ฅผ ์ฌ์ธต ๋ถ์ํฉ๋๋ค. - LiteLLM ํตํฉ (v5.3.0): ๋ค์ํ AI ์ ๊ณต์
์ฒด๋ฅผ ๋จ์ผ ์ธํฐํ์ด์ค๋ก ํตํฉํ์ฌ ๋ชจ๋ธ ๊ด๋ฆฌ์ ์ ์ฐ์ฑ์ ๋์์ต๋๋ค.
model: "provider/model_name"ํ์์ ์ฌ์ฉํ๋ฉฐ, ์๋ ์ฌ์๋(num_retries) ๋ฐ ๋์ฒด ๋ชจ๋ธ(fallback_models) ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. - AI ๋ถ์ ๋ชจ๋ (v5.4.0):
follow_report,daily,current,incremental๋ค ๊ฐ์ง AI ๋ถ์ ๋ชจ๋๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์ดํ ์ ์์ต๋๋ค. ๋ํ, AI ๋ถ์ ์๊ฐ ์ฐฝ์ ์ ์ดํ๊ณ ์ผ์ผ ๋น๋๋ฅผ ์ ํํ ์ ์์ต๋๋ค. - ๋ถ์ ๋ฅ๋ ฅ:
- ํ ํฝ ํธ๋ ๋ ๋ถ์: ํซ์คํ ์ถ์ , ์๋ช ์ฃผ๊ธฐ, ํญ๋ฐ ๊ฐ์ง, ํธ๋ ๋ ์์ธก.
- ๋ฐ์ดํฐ ํต์ฐฐ: ํ๋ซํผ ๋น๊ต, ํ๋ ํต๊ณ, ํค์๋ ๋์ ์ถํ.
- ๊ฐ์ฑ ๋ถ์: ์ฌ๋ก ์ ๊ธ์ ์ /๋ถ์ ์ , ๋ ผ์ ๋๋ ์ฐ๋ ค ๊ฐ์ ์ ์ ๋ฐํ๊ฒ ํฌ์ฐฉํฉ๋๋ค.
- ์ ์ฌ ๋ด์ค ์ฐพ๊ธฐ, ์ค๋งํธ ์์ฝ ์์ฑ, ๊ณผ๊ฑฐ ๊ด๋ จ ๋ด์ค ๊ฒ์, ๋ค์ค ๋ชจ๋ ๊ฒ์.
- ์ฌ์ฉ์ ์ ์ ํ๋กฌํํธ:
config/ai_analysis_prompt.txtํ์ผ์ ํตํด AI ๋ถ์์ ์ญํ ๊ณผ ์ถ๋ ฅ ํ์์ ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค. - AI ๋ฒ์ญ ๊ธฐ๋ฅ (v5.2.0): ํธ์ ์ฝํ
์ธ ๋ฅผ ์ํ๋ ์ธ์ด(English, Korean, Japanese, French ๋ฑ)๋ก ๋ฒ์ญํ ์ ์์ผ๋ฉฐ,
ai_translation_prompt.txt๋ฅผ ํตํด ๋ฒ์ญ ์คํ์ผ์ ์ฌ์ฉ์ ์ ์ํฉ๋๋ค. AI ๋ถ์ ๊ธฐ๋ฅ๊ณผ ๋์ผํ ๋ชจ๋ธ ์ค์ ์ ๊ณต์ ํฉ๋๋ค.
- MCP (Model Context Protocol) ๊ธฐ๋ฐ AI ๋ถ์ ์๋ฒ: AI ๋ํ ๋ชจ๋ธ(
- ์ ์ฐํ ์ ์ฅ ์ํคํ
์ฒ (v4.0.0):
- ๋ค์ค ์คํ ๋ฆฌ์ง ๋ฐฑ์๋ ์ง์:
- ๋ก์ปฌ SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค: Docker/๋ก์ปฌ ํ๊ฒฝ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก, ๋ฐ์ดํฐ๊ฐ ๋ก์ปฌ์ ์ ์ฅ๋ฉ๋๋ค.
- ์๊ฒฉ ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง (S3 ํธํ ํ๋กํ ์ฝ): GitHub Actions ํ๊ฒฝ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก, Cloudflare R2์ ๊ฐ์ S3 ํธํ ์๋น์ค๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ฐ๋์ ์ ์ฅํ ์ ์์ต๋๋ค.
- ์๋ ๋ฐฑ์๋ ์ ํ: ์คํ ํ๊ฒฝ์ ๋ฐ๋ผ ์๋์ผ๋ก ์ ์ฅ ๋ฐฉ์์ ์ ํํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๊ฐ ์ต์ ํ๋์ด ๋ฐ์ดํฐ ํจ์จ์ฑ๊ณผ ์ฟผ๋ฆฌ ์ฑ๋ฅ์ด ํฅ์๋์์ต๋๋ค.
- ๋ค์ค ์คํ ๋ฆฌ์ง ๋ฐฑ์๋ ์ง์:
- ๋ค์ค ์ฑ๋ ๋ฐ ๋ค์ค ๊ณ์ ํธ์ (Multi-channel & Multi-account Push):
- WeChat, Feishu, DingTalk, Telegram, Email, ntfy, Bark, Slack ๋ฑ ๋ค์ํ ๋ฉ์์ง ๋ฐ ์ด๋ฉ์ผ ์ฑ๋์ ํตํด ์๋ฆผ์ ๋ณด๋ผ ์ ์์ต๋๋ค.
- v3.5.0๋ถํฐ ๋ชจ๋ ํธ์ ์ฑ๋์ด ๋ค์ค ๊ณ์ ๊ตฌ์ฑ์ ์ง์ํ์ฌ, ์ธ๋ฏธ์ฝ๋ก (
;)์ผ๋ก ์ฌ๋ฌ ๊ณ์ ์ ๊ตฌ๋ถํ์ฌ ๋์์ ์ฌ๋ฌ ๊ทธ๋ฃน์ด๋ ์ฅ์น๋ก ํธ์ํ ์ ์์ต๋๋ค.
- ๋ฐฐํฌ ์ต์
:
- GitHub Actions: ์๋ฒ ์์ด GitHub์ ๋ฆฌ์์ค๋ฅผ ํ์ฉํ์ฌ ์ฃผ๊ธฐ์ ์ผ๋ก ํฌ๋กค๋งํ๊ณ ์๊ฒฉ ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
- Docker ๋ฐฐํฌ: ๋ค์ค ์ํคํ
์ฒ ์ปจํ
์ด๋ํ๋ ์คํ์ ์ง์ํ๋ฉฐ, ๋ฐ์ดํฐ๋ ๋ก์ปฌ์ ์ ์ฅ๋ฉ๋๋ค. MCP ์๋น์ค๋ ๋ณ๋์ Docker ์ด๋ฏธ์ง(
wantcat/trendradar-mcp)๋ก ์ ๊ณต๋์ด AI ๋ถ์ ๊ธฐ๋ฅ์ HTTP ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ ๊ณตํฉ๋๋ค. - ๋ก์ปฌ ์คํ: Windows/Mac/Linux ํ๊ฒฝ์์ ์ง์ ์คํํ ์ ์์ต๋๋ค.
- ์น ์๋ฒ ์ง์ (v3.5.0): ๋ด์ฅ๋ ์น ์๋ฒ๋ฅผ ํตํด ์์ฑ๋ HTML ๋ณด๊ณ ์์ ๋ธ๋ผ์ฐ์ ๋ก ์ ๊ทผํ ์ ์์ต๋๋ค.
TrendRadar๋ ๋จ์ํ ์ ๋ณด ์ง๊ณ๋ฅผ ๋์ด์ ๊ฐ์ธํ๋ ์ ๋ณด ์๋น๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ฉฐ, AI๋ฅผ ํ์ฉํ ์ฌ์ธต ๋ถ์์ ํตํด ์ฌ์ฉ์๊ฐ ์ค์ํ ํธ๋ ๋๋ฅผ ๋น ๋ฅด๊ณ ํจ๊ณผ์ ์ผ๋ก ํ์ ํ ์ ์๋๋ก ๋์ต๋๋ค.