[Open Source] ๋กœ์ปฌ LLMยท์‚ฌ๋žŒ ๊ฒ€ํ†  ๊ธฐ๋ฐ˜ ๋ณด์•ˆ ๋ธ”๋กœ๊ทธ ์ž๋™ํ™” (auto-sec-blogger)

ยท

๐Ÿ“‹ ๊ฐœ์š”

๋ณด์•ˆยท๊ธฐ์ˆ  ๋‰ด์Šค๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜์ง‘ํ•˜๊ณ , ๋กœ์ปฌ LLM(Ollama Gemma4) ์œผ๋กœ ๊ธ€ ์ดˆ์•ˆ์„ ์ž‘์„ฑํ•œ ๋’ค, ์‚ฌ๋žŒ์ด ๊ฒ€ํ† ยท์Šน์ธํ•œ ๊ธ€๋งŒ GitHub Pages ๋ธ”๋กœ๊ทธ์— ๋ฐœํ–‰ํ•˜๋Š” ์ง€๋Šฅํ˜• ์—์ด์ „ํŠธ auto-sec-blogger๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋ณด๊ณ  ๊ณ„์‹  ์ด ๋ธ”๋กœ๊ทธ๊ฐ€ ๋ฐ”๋กœ ์ด ๋„๊ตฌ๋กœ ์šด์˜๋ฉ๋‹ˆ๋‹ค.

GitHub ์ €์žฅ์†Œ: https://github.com/rebugui/auto-sec-blogger

๐ŸŽฏ ์ œ์ž‘ ๋ฐฐ๊ฒฝ

๋งค์ผ ์Ÿ์•„์ง€๋Š” ๋ณด์•ˆ ๋‰ด์Šค๋ฅผ ์‚ฌ๋žŒ์ด ์ผ์ผ์ด ์ •๋ฆฌํ•ด ๊ธ€๋กœ ์“ฐ๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  LLM์— ์ „๋ถ€ ๋งก๊ฒจ ์ž๋™ ๋ฐœํ–‰ํ•˜๋ฉด ํ’ˆ์งˆยท์‚ฌ์‹ค์„ฑ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ƒ์„ฑ์€ ์ž๋™, ๊ณต๊ฐœ๋Š” ์‚ฌ๋žŒ ์Šน์ธ์ด๋ผ๋Š” Human-in-the-Loop ์›์น™์œผ๋กœ ์„ค๊ณ„ํ–ˆ๊ณ , ํด๋ผ์šฐ๋“œ ๋น„์šฉยทํ”„๋ผ์ด๋ฒ„์‹œ๋ฅผ ํ”ผํ•˜๋ ค ์™ธ๋ถ€ ํ˜ธ์ถœ ์—†๋Š” ๋กœ์ปฌ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ—๏ธ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์กฐ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
๋‰ด์Šค ์ˆ˜์ง‘ (Google News ยท arXiv ยท HackerNews ยท Hada.io)
    โ†“
Ollama Gemma4 ํ‰๊ฐ€/์„ ๋ณ„ (์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์ ์ˆ˜ ยท round-robin)
    โ†“
Ollama Gemma4 ๊ธ€ ์ž‘์„ฑ (๋ฉ€ํ‹ฐ ํŽ˜๋ฅด์†Œ๋‚˜: ๋ณด์•ˆ/AI/DevOps/CVE)
    โ†“
Notion ์ €์žฅ (์ดˆ์•ˆ ์ž‘์„ฑ์ค‘ โ†’ ๊ฒ€ํ† ์ค‘)
    โ†“
[์‚ฌ๋žŒ ๊ฒ€ํ† ] ๊ฒ€ํ† ์ค‘ โ†’ ๊ฒ€ํ†  ์™„๋ฃŒ ๋กœ ์Šน์ธ
    โ†“
Hugo content/post ์ƒ์„ฑ โ†’ git push โ†’ GitHub Pages ๋ฐฐํฌ

ํ•ต์‹ฌ ์„ค๊ณ„

  • ๋กœ์ปฌ LLM: gemma4:e4b (OpenAI ํ˜ธํ™˜ localhost:11434), ์™ธ๋ถ€ ํด๋ผ์šฐ๋“œ ํ˜ธ์ถœ ์—†์Œ
  • ๊ฒฌ๊ณ ํ•œ ์„ ๋ณ„: ์นดํ…Œ๊ณ ๋ฆฌ ํ›„๋ณด ์ œํ•œ + ์ฒญํฌ ๋ถ„ํ•  + json_mode + ๋ณต๊ตฌ ํŒŒ์‹ฑ์œผ๋กœ LLM ์‘๋‹ต ์ž˜๋ฆผ์— ๋Œ€๋น„
  • ๋ฉ€ํ‹ฐ ํŽ˜๋ฅด์†Œ๋‚˜ ์ž‘์„ฑ: ๋ณด์•ˆยทAI/MLยทDevOpsยทCVE ์ „๋ฌธ๊ฐ€ ํ†ค, Mermaid ๋‹ค์ด์–ด๊ทธ๋žจยทํ‘œ ํฌํ•จ
  • ์ƒํƒœ ๊ด€๋ฆฌ: Notion์—์„œ ์ดˆ์•ˆโ†’๊ฒ€ํ† ์ค‘โ†’๊ฒ€ํ†  ์™„๋ฃŒโ†’๊ฒŒ์‹œ ์™„๋ฃŒ ์ถ”์ , ์ค‘๋ณต ๋ฐœํ–‰ ๋ฐฉ์ง€

โš–๏ธ ๋ผ์ด์„ ์Šค / ๋ฐœํ–‰ ๋Œ€์ƒ

MIT License. ๋ฐœํ–‰ ๋Œ€์ƒ์€ GitHub Pages(Hugo) ์ „์šฉ์ž…๋‹ˆ๋‹ค. ๋„ค์ด๋ฒ„ยทํ‹ฐ์Šคํ† ๋ฆฌ ์ž๋™ ๋ฐœํ–‰๋„ ๊ฒ€ํ† ํ–ˆ์œผ๋‚˜, ๋‘ ํ”Œ๋žซํผ ๋ชจ๋‘ ๊ธ€์“ฐ๊ธฐ ์‹œ ์บก์ฐจ(๋„ค์ด๋ฒ„ ์ž๋™๋“ฑ๋ก๋ฐฉ์ง€ / ํ‹ฐ์Šคํ† ๋ฆฌ DKAPTCHA ์ง€๋„ ์บก์ฐจ)๋กœ ๋ด‡ ๋ฐœํ–‰์„ ์ฐจ๋‹จํ•ด ์ œ์™ธํ–ˆ์Šต๋‹ˆ๋‹ค.

โš ๏ธ ์ฃผ์˜์‚ฌํ•ญ

  • ๋กœ์ปฌ Gemma4 ์ž‘์„ฑ์€ ๋А๋ฆด ์ˆ˜ ์žˆ์–ด ์Šค์ผ€์ค„๋Ÿฌ ํƒ€์ž„์•„์›ƒ์„ ๋„‰๋„‰ํžˆ(์˜ˆ: 1800์ดˆ) ๋‘๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • Notion ํ† ํฐยท๋ธ”๋กœ๊ทธ DB IDยทGitHub ํ† ํฐ ๋“ฑ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •์ด ์„ ํ–‰๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์™„์ „ ์ž๋™ ๋ฐœํ–‰์„ ์›ํ•˜๋ฉด AUTO_PUBLISH_STATUS=๊ฒ€ํ† ์ค‘์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์œผ๋‚˜, ํ’ˆ์งˆ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ๋žŒ ๊ฒ€ํ† ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿš€ ์‹คํ–‰ ๋ฐฉ๋ฒ•

1
2
3
4
5
6
7
8
9
# ์„ค์น˜
pip3 install -r scripts/requirements.txt
ollama pull gemma4:e4b

# ํŒŒ์ดํ”„๋ผ์ธ (Notion ์ดˆ์•ˆ๊นŒ์ง€)
python3 scripts/intelligence_pipeline.py --max-articles 3

# ์Šน์ธ๋œ ๊ธ€ ๋ฐœํ–‰ (1๊ฑด ํ…Œ์ŠคํŠธ)
AUTO_PUBLISH_MAX=1 python3 scripts/auto_publish_approved.py

๐Ÿ’ฌ ํ”ผ๋“œ๋ฐฑ

๊ฐœ์„  ์ œ์•ˆยท๋ฒ„๊ทธยทํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. GitHub Issues ๋กœ ์•Œ๋ ค ์ฃผ์„ธ์š”.