Skip to content

bullpeng72/Lecture_forge

Repository files navigation

LectureForge ๐ŸŽ“

AI-Powered Lecture Material Generator using Multi-Agent Pipeline System

Python 3.11+ Version License: MIT Status Test Coverage

๐Ÿš€ v0.5.3 | ํŒจํ‚ค์ง• ์•ˆ์ •ํ™” โ€” edit TemplateNotFound ์žฌ๋ฐœ ๋ฐฉ์ง€, PyPI wheel ๊ฒ€์ฆ ์ ˆ์ฐจ ๊ฐ•ํ™”

PDF, ์›นํŽ˜์ด์ง€, ์ธํ„ฐ๋„ท ๊ฒ€์ƒ‰์—์„œ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ๊ณ ํ’ˆ์งˆ ๊ฐ•์˜์ž๋ฃŒ๋ฅผ ์ž๋™ ์ƒ์„ฑํ•˜๋Š” AI ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ํ†ต๊ณ„: 12๊ฐœ ์—์ด์ „ํŠธ | 9๊ฐœ ๋„๊ตฌ | 9๊ฐœ CLI ๋ช…๋ น | 1,436+ ํ…Œ์ŠคํŠธ (~48% ์ปค๋ฒ„๋ฆฌ์ง€) | ~$0.035/60๋ถ„ ๊ฐ•์˜ | Python 3.11 ๊ถŒ์žฅ

๋ฐ์ดํ„ฐ ์œ„์น˜: ~/Documents/LectureForge/ (์ผ๋ฐ˜ ํด๋”, Finder/ํƒ์ƒ‰๊ธฐ์—์„œ ๋ฐ”๋กœ ์ ‘๊ทผ)


๐Ÿ“‹ ๋ชฉ์ฐจ


โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

์ปจํ…์ธ  ์ƒ์„ฑ

  • ๐Ÿ“š ๋ฉ€ํ‹ฐ์†Œ์Šค ์ˆ˜์ง‘: PDF, URL, ์›น ๊ฒ€์ƒ‰์„ ํ†ตํ•œ ํฌ๊ด„์  ์ •๋ณด ์ˆ˜์ง‘
  • ๐Ÿ“ Location-based ์ด๋ฏธ์ง€ ๋งค์นญ: RAG ์ปจํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์ž๋™ ์ด๋ฏธ์ง€ ๋ฐฐ์น˜ (+750% ํ™œ์šฉ๋ฅ )
  • ๐Ÿ–ผ๏ธ ๋Œ€ํ™”ํ˜• ์ด๋ฏธ์ง€ ํŽธ์ง‘: ์ƒ์„ฑ๋œ ๊ฐ•์˜์˜ ์ด๋ฏธ์ง€ ์‚ญ์ œ/๊ต์ฒด (Vector DB ๊ธฐ๋ฐ˜ ๋Œ€์•ˆ ๊ฒ€์ƒ‰)
  • ๐ŸŽจ ๊ตฌ์กฐํ™”๋œ HTML ์ถœ๋ ฅ: Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ, ๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค, ์ฝ”๋“œ ํ•˜์ด๋ผ์ดํŒ…
  • ๐ŸŽฌ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ์Šฌ๋ผ์ด๋“œ: Reveal.js ๊ธฐ๋ฐ˜ ์ž๋™ ๋ณ€ํ™˜ (v0.3.0 ๋Œ€ํญ ๊ฐœ์„ )

ํ’ˆ์งˆ ๋ณด์ฆ

  • โœ… 6์ฐจ์› ํ’ˆ์งˆ ํ‰๊ฐ€: ์™„์„ฑ๋„, ํ๋ฆ„, ์‹œ๊ฐ„, ๋‚œ์ด๋„, ์‹œ๊ฐ์ž๋ฃŒ, ์ •ํ™•์„ฑ
  • ๐Ÿ”„ ์ž๋™ ๊ฐœ์„ : ํ’ˆ์งˆ ๊ธฐ์ค€ ๋ฏธ๋‹ฌ ์‹œ ์ตœ๋Œ€ 3ํšŒ ์ž๋™ ์ˆ˜์ •
  • ๐Ÿง  RMC ์ž๊ธฐ๊ฒ€ํ†  (v0.3.8+): ์—์ด์ „ํŠธ ๋‚ด๋ถ€ 2๋‹จ๊ณ„ ์ž๊ธฐ๋ฐ˜์„ฑ (Layer 1 ๊ฒ€ํ†  + Layer 2 ๊ฒ€ํ† ์˜ ๊ฒ€ํ† )
    • CurriculumDesigner: ์„น์…˜ ์ˆœ์„œ ๋…ผ๋ฆฌ์„ฑ, ํ•™์Šต๋ชฉํ‘œ ์ปค๋ฒ„๋ฆฌ์ง€, ์„ ์ˆ˜ ๋‚ด์šฉ ์ˆœ์„œ ์ž๋™ ๊ฒ€์ฆ ๋ฐ ์ˆ˜์ •
    • ContentWriter: ๊ฐœ๋… ๋น„์•ฝ, ์„ค๋ช… ๋ชจํ˜ธ์„ฑ, ํ๋ฆ„ ๋‹จ์ ˆ ๋“ฑ ์˜๋ฏธ๋ก ์  ํ’ˆ์งˆ ๊ฒ€ํ†  ํ›„ ์ˆ˜์ •
    • QAAgent: ๊ฐ ์ฃผ์žฅ์„ ์†Œ์Šค ์ปจํ…์ŠคํŠธ์™€ ๋Œ€์กฐ โ†’ ํ• ๋ฃจ์‹œ๋„ค์ด์…˜ ํ•ญ๋ชฉ ์ œ๊ฑฐ ๋˜๋Š” ๊ฒฝ๊ณ  ํ‘œ์‹œ
  • ๐Ÿงช ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€: 1,436+ ํ…Œ์ŠคํŠธ ํ•จ์ˆ˜ (70๊ฐœ ํŒŒ์ผ, ~48% ์ปค๋ฒ„๋ฆฌ์ง€)

์ง€์‹ ๊ด€๋ฆฌ

  • ๐Ÿ—„๏ธ RAG ๊ธฐ๋ฐ˜ ์ง€์‹์ฐฝ๊ณ : ChromaDB ๋ฒกํ„ฐ DB๋กœ ๋Œ€ํ™”ํ˜• Q&A ์ง€์›
  • ๐ŸŒ ๋‹ค๊ตญ์–ด ์ง€์›: ํ•œ์˜ ํ˜ผํ•ฉ PDF ์ง€์›, ์ž๋™ ์–ธ์–ด ๊ฐ์ง€, Cross-lingual ๊ฒ€์ƒ‰ (v0.3.2+)
  • ๐ŸŽฏ ๊ณ ๊ธ‰ RAG ํ’ˆ์งˆ (v0.3.5+):
    • 400๋‹จ์–ด ๊ตฌ์กฐํ™” ๋‹ต๋ณ€ (5๊ฐœ Markdown ์„น์…˜ ๊ฐ•์ œ)
    • 15+15 ๋“€์–ผ ์ฟผ๋ฆฌ ๊ฒ€์ƒ‰ (๋‹ค๊ตญ์–ด, top-12 ๊ฒฐ๊ณผ)
    • Rich Markdown ํŒจ๋„ ๋ Œ๋”๋ง (ํ„ฐ๋ฏธ๋„์—์„œ ์•„๋ฆ„๋‹ค์šด ์ถœ๋ ฅ)
    • ๋™์  ์‹ ๋ขฐ๋„ ์ ์ˆ˜ (ChromaDB L2 ๊ฑฐ๋ฆฌ ์˜ฌ๋ฐ”๋ฅธ ๋ณ€ํ™˜)
  • โšก ์ฟผ๋ฆฌ ์บ์‹ฑ: ๋™์ผ ์งˆ๋ฌธ 60% ๋น ๋ฅธ ์‘๋‹ต
  • ๐Ÿ’ฌ ์†Œ์Šค ์ธ์šฉ: ์ž๋™ ์ฐธ์กฐ ๋ฐ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ ์ œ๊ณต

์•ˆ์ •์„ฑ & ์„ฑ๋Šฅ

  • ๐Ÿ”„ ์ž๋™ ์žฌ์‹œ๋„: API ์‹คํŒจ ์‹œ ์ง€์ˆ˜ ๋ฐฑ์˜คํ”„ (์ตœ๋Œ€ 3ํšŒ)
  • ๐Ÿ’ฐ ๋น„์šฉ ์ถ”์ : ์‹ค์‹œ๊ฐ„ ํ† ํฐ ์‚ฌ์šฉ๋Ÿ‰ ๋ฐ ๋น„์šฉ ์ถ”์ •
  • ๐Ÿ”ง ํƒ€์ž… ํžŒํŠธ: ~70% ํƒ€์ž… ์•ˆ์ •์„ฑ (340/489 ํ•จ์ˆ˜)
  • ๐ŸŽฏ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ: ๊ตฌ์กฐํ™”๋œ ์˜ˆ์™ธ ์‹œ์Šคํ…œ (9๊ฐœ ์นดํ…Œ๊ณ ๋ฆฌ)
  • ๐Ÿ“ ํ”„๋กฌํ”„ํŠธ ๊ด€๋ฆฌ: ํ…œํ”Œ๋ฆฟ ๊ธฐ๋ฐ˜ ํ”„๋กฌํ”„ํŠธ ์‹œ์Šคํ…œ

๐Ÿš€ ์ตœ๊ทผ ๊ฐœ์„ ์‚ฌํ•ญ (v0.5.3)

  • ๐Ÿ› edit TemplateNotFound ์žฌ๋ฐœ ๋ฐฉ์ง€: server.py์—์„œ Path(__file__) ์ ˆ๋Œ€๊ฒฝ๋กœ๋กœ index.html ์ง์ ‘ ์ฝ๊ธฐ โ€” pipx/PyPI ๋ถˆ์™„์ „ wheel์—์„œ๋„ ๋™์ž‘
  • ๐ŸŽจ ์Šฌ๋ผ์ด๋“œ ํƒ€์ดํ‹€: ์ƒ์„ฑ์ผ ํ‘œ์‹œ + ๊ฐ€์šด๋ฐ ์ •๋ ฌ
  • ๐Ÿ”’ PyPI ๋ฐฐํฌ ๊ฒ€์ฆ ๊ฐ•ํ™”: unzip -l dist/*.whl | grep templates/editor ํ•„์ˆ˜ ๋‹จ๊ณ„ DEPLOYMENT_GUIDE.md์— ์ถ”๊ฐ€

์ „์ฒด ๋ณ€๊ฒฝ ์ด๋ ฅ์€ ์•„๋ž˜ ๋ณ€๊ฒฝ ์ด๋ ฅ ์ฐธ์กฐ


๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘

1๏ธโƒฃ ์„ค์น˜

๋ฐฉ๋ฒ• 1: pipx๋กœ ์„ค์น˜ (๊ฐ€์žฅ ๊ฐ„ํŽธ โญโญ)

# pipx ์„ค์น˜ (์•„์ง ์—†๋Š” ๊ฒฝ์šฐ)
pip install pipx
pipx ensurepath

# lecture-forge ์„ค์น˜ (๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์—์„œ ์ž๋™ ์„ค์น˜)
pipx install lecture-forge

# playwright ์„ค์น˜ (pipx ํ™˜๊ฒฝ์— ์ถ”๊ฐ€)
pipx inject lecture-forge playwright
pipx runpip lecture-forge install playwright
playwright install chromium

# ์‚ฌ์šฉ
lecture-forge create

pipx์˜ ์žฅ์ :

  • โœ… ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์—์„œ ์ž๋™ ์„ค์น˜
  • โœ… ์‹œ์Šคํ…œ ์ „์—ญ์—์„œ lecture-forge ๋ช…๋ น ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • โœ… ๋‹ค๋ฅธ Python ํ”„๋กœ์ ํŠธ์™€ ์˜์กด์„ฑ ์ถฉ๋Œ ์—†์Œ
  • โœ… conda/venv ํ™˜๊ฒฝ ๊ด€๋ฆฌ ๋ถˆํ•„์š”

๋ฐฉ๋ฒ• 2: PyPI + conda ํ™˜๊ฒฝ (๊ถŒ์žฅ โญ)

# Python 3.11 ํ™˜๊ฒฝ ์ƒ์„ฑ (๊ฐ•๋ ฅ ๊ถŒ์žฅ)
conda create -n lecture-forge python=3.11
conda activate lecture-forge

# PyPI์—์„œ ์„ค์น˜
pip install lecture-forge

# ์›น ์Šคํฌ๋ž˜ํ•‘์šฉ ๋ธŒ๋ผ์šฐ์ € ์„ค์น˜
playwright install chromium

๋ฐฉ๋ฒ• 3: ๊ฐœ๋ฐœ ์„ค์น˜ (์†Œ์Šค ์ฝ”๋“œ ์ˆ˜์ • ์‹œ)

# Git ํด๋ก 
git clone https://github.com/bullpeng72/Lecture_forge.git
cd Lecture_forge

# Python 3.11 ํ™˜๊ฒฝ ์ƒ์„ฑ
conda create -n lecture-forge python=3.11
conda activate lecture-forge

# ๋กœ์ปฌ ์†Œ์Šค์—์„œ ์„ค์น˜
pip install -e .

# ์›น ์Šคํฌ๋ž˜ํ•‘์šฉ ๋ธŒ๋ผ์šฐ์ € ์„ค์น˜
playwright install chromium

Python ๋ฒ„์ „ ํ˜ธํ™˜์„ฑ:

  • โœ… Python 3.11: ๊ฐ•๋ ฅ ๊ถŒ์žฅ - ๋ชจ๋“  ์˜์กด์„ฑ ์™„๋ฒฝ ์ง€์›
  • โœ… Python 3.12: ์™„๋ฒฝ ์ง€์› - v0.3.3๋ถ€ํ„ฐ ๊ณต์‹ ์ง€์›
  • โœ… Python 3.13: ์ง€์›๋จ - v0.3.8๋ถ€ํ„ฐ ๊ฒ€์ฆ ์™„๋ฃŒ

Python 3.11, 3.12, 3.13 ๋ชจ๋‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ ํ™˜๊ฒฝ ์„ค์ •

๋ฐฉ๋ฒ• 1: ๋Œ€ํ™”ํ˜• ์„ค์ • (๊ถŒ์žฅ โญ)

# ๋Œ€ํ™”ํ˜• ์„ค์ • ๋งˆ๋ฒ•์‚ฌ ์‹คํ–‰
lecture-forge init

์ด ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค:

  • โœ… ํ”Œ๋žซํผ๋ณ„ ์ตœ์  ์œ„์น˜์— .env ํŒŒ์ผ ์ž๋™ ์ƒ์„ฑ
    • Windows: %USERPROFILE%\Documents\LectureForge\.env
    • Mac/Linux: ~/Documents/LectureForge/.env
  • โœ… ํ•„์ˆ˜ API ํ‚ค ์ž…๋ ฅ ์•ˆ๋‚ด (OpenAI, Serper)
  • โœ… ์„ ํƒ์  ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰ API ์„ค์ • (Pexels, Unsplash)
  • โœ… ํŒŒ์ผ ๊ถŒํ•œ ์ž๋™ ์„ค์ • (Unix/Mac: 600)

๋ฐฉ๋ฒ• 2: ์ˆ˜๋™ ์„ค์ •

# .env ํŒŒ์ผ ์ƒ์„ฑ (ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ์‹œ)
cp .env.example .env

.env ํŒŒ์ผ์„ ์—ด์–ด ๋‹ค์Œ ํ•ญ๋ชฉ์„ ์„ค์ •ํ•˜์„ธ์š”:

ํ•„์ˆ˜ API ํ‚ค:

# OpenAI API (ํ•„์ˆ˜)
OPENAI_API_KEY=sk-proj-...

# ๊ฒ€์ƒ‰ API (ํ•„์ˆ˜)
SERPER_API_KEY=...                # ๋ฌด๋ฃŒ: 2,500ํšŒ/์›”

์„ ํƒ ์‚ฌํ•ญ:

# ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰ API (์„ ํƒ)
PEXELS_API_KEY=...                # ๋ฌด๋ฃŒ ๋ฌด์ œํ•œ
UNSPLASH_ACCESS_KEY=...           # ๋ฌด๋ฃŒ: 50ํšŒ/์‹œ๊ฐ„

# ๊ฒ€์ƒ‰ ๋ฐ ํฌ๋กค๋ง ์„ค์ • (๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ถฉ๋ถ„)
SEARCH_NUM_RESULTS=10             # ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ˆ˜ (์ตœ๋Œ€ 100)
DEEP_CRAWLER_MAX_PAGES=10         # ํฌ๋กค๋ง ํŽ˜์ด์ง€ ์ˆ˜
IMAGE_SEARCH_PER_PAGE=10          # ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ˆ˜

# ํ’ˆ์งˆ ์„ค์ •
QUALITY_THRESHOLD=80              # ํ’ˆ์งˆ ์ž„๊ณ„๊ฐ’ (70-90)
MAX_ITERATIONS=3                  # ์ตœ๋Œ€ ๊ฐœ์„  ๋ฐ˜๋ณต ํšŸ์ˆ˜

๐Ÿ’ก ๋” ๋งŽ์€ ์„ค์ • ์˜ต์…˜์€ .env.example ํŒŒ์ผ ์ฐธ์กฐ

.env ํŒŒ์ผ ์œ„์น˜

LectureForge๋Š” ๋‹ค์Œ ์ˆœ์„œ๋กœ .env ํŒŒ์ผ์„ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค:

  1. ํ™˜๊ฒฝ ๋ณ€์ˆ˜: LECTURE_FORGE_ENV_FILE๋กœ ์ง€์ •ํ•œ ๊ฒฝ๋กœ
  2. ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ: ./.env
  3. ์‚ฌ์šฉ์ž ๋””๋ ‰ํ† ๋ฆฌ (๊ถŒ์žฅ):
    • Windows: %USERPROFILE%\Documents\LectureForge\.env
    • Mac/Linux: ~/Documents/LectureForge/.env

API ํ‚ค ํš๋“:

3๏ธโƒฃ ์ฒซ ๊ฐ•์˜ ์ƒ์„ฑ

lecture-forge create

๋Œ€ํ™”ํ˜•์œผ๋กœ ๊ฐ•์˜ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ž๋™์œผ๋กœ ๊ฐ•์˜์ž๋ฃŒ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค! ๐ŸŽ‰


๐Ÿ’ป ์‚ฌ์šฉ๋ฒ•

๋ช…๋ น์–ด ๊ฐœ์š”

๋ช…๋ น์–ด ์„ค๋ช… ์ฃผ์š” ์˜ต์…˜
init ์ดˆ๊ธฐ ์„ค์ • --path
create ๊ฐ•์˜ ์ƒ์„ฑ --interactive, --image-search, --quality-level, --existing-kb
translate ์˜๋ฌธ PDF โ†’ ํ•œ๊ตญ์–ด ๊ฐ•์˜์ž๋ฃŒ (v0.4.1+) --no-translate, --with-diagrams, --audience-level
chat Q&A ๋ชจ๋“œ --knowledge-base
edit ์›น ๊ธฐ๋ฐ˜ ๊ฐ•์˜ ํŽธ์ง‘๊ธฐ (v0.5.0+) --port, --no-browser
edit-images ์ด๋ฏธ์ง€ ํŽธ์ง‘ (CLI) --output
improve ๊ฐ•์˜ ํ–ฅ์ƒ / ์žฌํ‰๊ฐ€ --to-slides, --re-evaluate
cleanup ์ง€์‹๋ฒ ์ด์Šค ๊ด€๋ฆฌ --all (-a)
home ํด๋” ์—ด๊ธฐ (v0.3.1+) outputs, data, kb, env

๋น ๋ฅธ ์‹คํ–‰ ์˜ˆ์ œ

# ๐Ÿš€ ์ดˆ๊ธฐ ์„ค์ • (์ฒ˜์Œ ํ•œ ๋ฒˆ๋งŒ)
lecture-forge init

# ๐ŸŽ“ ๊ฐ•์˜ ์ƒ์„ฑ (๋Œ€ํ™”ํ˜• - ๊ฐ€์žฅ ๊ฐ„๋‹จ)
lecture-forge create

# ๐ŸŽ“ ๊ณ ํ’ˆ์งˆ ๊ฐ•์˜ (์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰ ํฌํ•จ)
lecture-forge create --image-search --quality-level strict

# ๐Ÿ’ฌ Q&A ๋ชจ๋“œ (์ž๋™์œผ๋กœ ์ตœ์‹  ์ง€์‹๋ฒ ์ด์Šค ์„ ํƒ)
lecture-forge chat

# ๐ŸŒ ์˜๋ฌธ PDF ๋ฒˆ์—ญ (ํ•œ๊ตญ์–ด ๊ฐ•์˜์ž๋ฃŒ ์ƒ์„ฑ)
lecture-forge translate paper.pdf
lecture-forge translate paper.pdf --no-translate   # ์›๋ฌธ ๊ตฌ์กฐ ํ™•์ธ (๋ฒˆ์—ญ ์—†์Œ)

# ๐ŸŽจ ์Šฌ๋ผ์ด๋“œ ๋ณ€ํ™˜
lecture-forge improve outputs/lecture.html --to-slides

# ๐Ÿ–ผ๏ธ ์ด๋ฏธ์ง€ ํŽธ์ง‘
lecture-forge edit-images outputs/lecture.html

# ๐Ÿงน ์ง€์‹๋ฒ ์ด์Šค ์ •๋ฆฌ (๋Œ€ํ™”ํ˜• ์„ ํƒ)
lecture-forge cleanup

# ๐Ÿ“‚ ํด๋” ์—ด๊ธฐ (๊ฐ•์˜ ๊ฒฐ๊ณผ๋ฌผ ํ™•์ธ)
lecture-forge home outputs

๋ช…๋ น์–ด ์ƒ์„ธ ๊ฐ€์ด๋“œ

๐Ÿš€ init - ์ดˆ๊ธฐ ์„ค์ •

๊ธฐ๋ณธ ์‚ฌ์šฉ:

lecture-forge init

๋Œ€ํ™”ํ˜• ๋งˆ๋ฒ•์‚ฌ๊ฐ€ API ํ‚ค ์ž…๋ ฅ์„ ์•ˆ๋‚ดํ•˜๊ณ  ์ž๋™์œผ๋กœ .env ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์˜ต์…˜:

์˜ต์…˜ ์„ค๋ช… ์‚ฌ์šฉ ์˜ˆ
--path PATH ์ปค์Šคํ…€ ๋””๋ ‰ํ† ๋ฆฌ ์ง€์ • --path /custom/path

๊ธฐ๋ณธ ์ €์žฅ ์œ„์น˜:

  • Windows: C:\Users\<username>\Documents\LectureForge\.env
  • Mac/Linux: ~/Documents/LectureForge/.env

์˜ˆ์ œ:

# ๊ธฐ๋ณธ ์œ„์น˜์— ์„ค์ • (๊ถŒ์žฅ)
lecture-forge init

# ์ปค์Šคํ…€ ๋””๋ ‰ํ† ๋ฆฌ ์‚ฌ์šฉ
lecture-forge init --path /my/config/dir

# ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ์ƒ์„ฑ
lecture-forge init --path .

ํ•˜๋Š” ์ผ:

  1. ํ•„์ˆ˜ API ํ‚ค ์ž…๋ ฅ (OpenAI, Serper)
  2. ์„ ํƒ์  ์ด๋ฏธ์ง€ API ์„ค์ • (Pexels, Unsplash)
  3. .env ํŒŒ์ผ ์ž๋™ ์ƒ์„ฑ
  4. ๊ธฐ๋ณธ ์„ค์ • ๊ฐ’ ์ž๋™ ์„ค์ •
  5. ํŒŒ์ผ ๊ถŒํ•œ ๋ณด์•ˆ ์„ค์ • (Unix/Mac)

๐Ÿ“š create - ๊ฐ•์˜ ์ƒ์„ฑ

๊ธฐ๋ณธ ์‚ฌ์šฉ:

lecture-forge create

๋Œ€ํ™”ํ˜•์œผ๋กœ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ž๋™์œผ๋กœ ๊ฐ•์˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์˜ต์…˜:

์˜ต์…˜ ์„ค๋ช… ์‚ฌ์šฉ ์˜ˆ
-c, --config FILE YAML ์„ค์ • ํŒŒ์ผ ์‚ฌ์šฉ --config lecture.yaml
-i, --interactive ์ƒ์„ฑ ์ค‘ ๋Œ€ํ™”ํ˜• Q&A ๋ชจ๋“œ ํ™œ์„ฑํ™” --interactive
--image-search ์›น ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰ ํ™œ์„ฑํ™” Pexels (๊ธฐ๋ณธ ํ™œ์„ฑํ™”) --no-image-search
--quality-level LEVEL ํ’ˆ์งˆ ๊ธฐ์ค€ ์„ค์ • --quality-level strict
-o, --output FILE ์ถœ๋ ฅ ํŒŒ์ผ๋ช… ์ง€์ • (ํ™•์žฅ์ž ์ œ์™ธ) --output my_lecture
--async-mode Async I/O ์‚ฌ์šฉ (70% ๋น ๋ฆ„, ์‹คํ—˜์ ) --async-mode
--include-pdf-images PDF ์ด๋ฏธ์ง€ ์ถ”์ถœ ๋ฐ location-based ์ž๋™ ๋ฐฐ์น˜ (๊ธฐ๋ณธ ํ™œ์„ฑํ™”) --no-include-pdf-images
--auto-describe-images PDF ์ด๋ฏธ์ง€ GPT-4o-mini ์„ค๋ช… ์ž๋™ ์ƒ์„ฑ (๊ธฐ๋ณธ ํ™œ์„ฑํ™”) --no-auto-describe-images
--existing-kb PATH ๊ธฐ์กด ์ง€์‹๋ฒ ์ด์Šค ์žฌ์‚ฌ์šฉ ๋˜๋Š” ํ™•์žฅ --existing-kb data/vector_db/...
--kb-mode MODE KB ์‚ฌ์šฉ ๋ฐฉ์‹: reuse_only(์ฝ๊ธฐ ์ „์šฉ, ๊ธฐ๋ณธ๊ฐ’) / extend(ํ™•์žฅ) --kb-mode extend

ํ’ˆ์งˆ ๋ ˆ๋ฒจ:

  • lenient (70์ ): ๋น ๋ฅธ ์ดˆ์•ˆ
  • balanced (80์ ): ๊ธฐ๋ณธ๊ฐ’ โœ…
  • strict (90์ ): ๊ณ ํ’ˆ์งˆ

์˜ˆ์ œ:

# ๊ธฐ๋ณธ ์ƒ์„ฑ
lecture-forge create

# ๊ณ ํ’ˆ์งˆ + ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰
lecture-forge create --image-search --quality-level strict

# Async ๋ชจ๋“œ (70% ๋น ๋ฆ„, ์‹คํ—˜์ )
lecture-forge create --async-mode

# YAML ์„ค์ • ์‚ฌ์šฉ
lecture-forge create --config my_config.yaml

๐Ÿ’ฌ chat - Q&A ๋ชจ๋“œ

๊ธฐ๋ณธ ์‚ฌ์šฉ:

lecture-forge chat

์ž๋™์œผ๋กœ ์ตœ์‹  ์ง€์‹๋ฒ ์ด์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์˜ต์…˜:

์˜ต์…˜ ์„ค๋ช… ์‚ฌ์šฉ ์˜ˆ
--knowledge-base PATH ํŠน์ • ์ง€์‹๋ฒ ์ด์Šค ์ง€์ • -kb ./data/vector_db/AI_xxx

๋Œ€ํ™”ํ˜• ๋ช…๋ น์–ด:

  • /help: ๋„์›€๋ง ํ‘œ์‹œ
  • /exit, /quit: ์ข…๋ฃŒ
  • Ctrl+C: ๊ฐ•์ œ ์ข…๋ฃŒ

์˜ˆ์ œ:

# ์ž๋™ ์„ ํƒ
lecture-forge chat

# ํŠน์ • ์ง€์‹๋ฒ ์ด์Šค ์‚ฌ์šฉ
lecture-forge chat -kb ./data/vector_db/lecture_20260209_123456

โœ๏ธ edit - ์›น ๊ธฐ๋ฐ˜ ๊ฐ•์˜ ํŽธ์ง‘๊ธฐ (v0.5.0+)

๊ธฐ๋ณธ ์‚ฌ์šฉ:

lecture-forge edit outputs/lecture.html

๋กœ์ปฌ Flask ์„œ๋ฒ„(๊ธฐ๋ณธ ํฌํŠธ 5757)๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ž๋™์œผ๋กœ ์—ฝ๋‹ˆ๋‹ค.

์˜ต์…˜:

์˜ต์…˜ ์„ค๋ช… ์‚ฌ์šฉ ์˜ˆ
--port INTEGER ์„œ๋ฒ„ ํฌํŠธ ์ง€์ • (๊ธฐ๋ณธ: 5757) --port 8080
--no-browser ๋ธŒ๋ผ์šฐ์ € ์ž๋™ ์˜คํ”ˆ ์—†์ด ์„œ๋ฒ„๋งŒ ์‹คํ–‰ --no-browser

3-ํŒจ๋„ ์—๋””ํ„ฐ ๊ตฌ์„ฑ:

  • ์™ผ์ชฝ ํŒจ๋„: ์„น์…˜ ๋ชฉ๋ก โ€” ์„น์…˜ ์ถ”๊ฐ€ยท์‚ญ์ œยท์ˆœ์„œ ๋ณ€๊ฒฝ
  • ์ค‘์•™ ํŒจ๋„: Markdown ํŽธ์ง‘๊ธฐ (EasyMDE) โ€” HTML โ†” Markdown ์ž๋™ ๋ณ€ํ™˜
  • ์˜ค๋ฅธ์ชฝ ํŒจ๋„: ์ด๋ฏธ์ง€ ๊ฐค๋Ÿฌ๋ฆฌ โ€” ๋Œ€์•ˆ ๊ฒ€์ƒ‰ (Vector DB), ๊ต์ฒด, ์—…๋กœ๋“œ

์˜ˆ์ œ:

# ๊ธฐ๋ณธ ์‹คํ–‰ (ํฌํŠธ 5757, ๋ธŒ๋ผ์šฐ์ € ์ž๋™ ์˜คํ”ˆ)
lecture-forge edit outputs/my_lecture.html

# ์ปค์Šคํ…€ ํฌํŠธ
lecture-forge edit outputs/my_lecture.html --port 8080

# ์„œ๋ฒ„๋งŒ ์‹œ์ž‘ (์›๊ฒฉ ์ ‘์† ๋“ฑ)
lecture-forge edit outputs/my_lecture.html --no-browser

โš ๏ธ Reveal.js ์Šฌ๋ผ์ด๋“œ ํŒŒ์ผ(*_slides.html)์€ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


๐Ÿ–ผ๏ธ edit-images - ์ด๋ฏธ์ง€ ํŽธ์ง‘

๊ธฐ๋ณธ ์‚ฌ์šฉ:

lecture-forge edit-images outputs/lecture.html

์˜ต์…˜:

์˜ต์…˜ ์„ค๋ช… ์‚ฌ์šฉ ์˜ˆ
--output FILE ์ถœ๋ ฅ ํŒŒ์ผ ๊ฒฝ๋กœ -o outputs/edited.html

๋Œ€ํ™”ํ˜• ๋ช…๋ น์–ด:

๋ช…๋ น์–ด ์„ค๋ช… ์˜ˆ์‹œ
d <๋ฒˆํ˜ธ> ์ด๋ฏธ์ง€ ์‚ญ์ œ d 3
u <๋ฒˆํ˜ธ> ์‚ญ์ œ ์ทจ์†Œ u 3
r <๋ฒˆํ˜ธ> ์ด๋ฏธ์ง€ ๊ต์ฒด (Vector DB ๊ฒ€์ƒ‰) r 5
s ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ €์žฅ s
/exit, /quit (๋˜๋Š” q) ์ข…๋ฃŒ (์ €์žฅ ์•ˆ ํ•จ) /exit
h ๋„์›€๋ง h

์˜ˆ์ œ:

# ๊ธฐ๋ณธ (์›๋ณธ_edited.html๋กœ ์ €์žฅ)
lecture-forge edit-images outputs/my_lecture.html

# ์ถœ๋ ฅ ํŒŒ์ผ ์ง€์ •
lecture-forge edit-images outputs/my_lecture.html -o outputs/final.html

๐ŸŒ translate - ์˜๋ฌธ PDF โ†’ ํ•œ๊ตญ์–ด ๊ฐ•์˜์ž๋ฃŒ (v0.4.1+)

๊ธฐ๋ณธ ์‚ฌ์šฉ:

lecture-forge translate paper.pdf

์˜์–ด PDF์—์„œ ์ฑ•ํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ถ”์ถœํ•˜๊ณ , ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•˜์—ฌ HTML ๊ฐ•์˜์ž๋ฃŒ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์˜ต์…˜:

์˜ต์…˜ ์„ค๋ช… ์‚ฌ์šฉ ์˜ˆ
--output FILE ์ถœ๋ ฅ ํŒŒ์ผ๋ช… ์ง€์ • (ํ™•์žฅ์ž ์ œ์™ธ) -o my_lecture_ko
--quality-level LEVEL ํ’ˆ์งˆ ๊ธฐ์ค€: lenient(70) / balanced(80) / strict(90) --quality-level strict
--audience-level LEVEL ๋Œ€์ƒ ์ˆ˜์ค€: beginner / intermediate / advanced --audience-level beginner
--no-translate ๋ฒˆ์—ญ ์—†์ด ์›๋ฌธ ๊ตฌ์กฐ๋งŒ ์ถ”์ถœ (๊ตฌ์กฐ ๋””๋ฒ„๊น…์šฉ, ๋น ๋ฆ„) --no-translate
--with-slides ์Šฌ๋ผ์ด๋“œ ๋ณ€ํ™˜๋„ ํ•จ๊ป˜ ์ˆ˜ํ–‰ --with-slides
--with-diagrams Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ ์ž๋™ ์ƒ์„ฑ (๊ธฐ๋ณธ OFF) --with-diagrams

๊ตฌ์กฐ ์ถ”์ถœ ์šฐ์„ ์ˆœ์œ„:

  1. PDF TOC โ€” ๊ฐ€์žฅ ์ •ํ™•, ํ•™์ˆ  PDF 80%+ ์ ์šฉ
  2. ํฐํŠธ ํฌ๊ธฐ ๋ถ„์„ โ€” ๋ณธ๋ฌธ๋ณด๋‹ค ํฐ ํฐํŠธ ์ž๋™ ๊ฐ์ง€
  3. ํŽ˜์ด์ง€ ๊ทธ๋ฃน (ํด๋ฐฑ) โ€” ๊ท ๋“ฑ ํŽ˜์ด์ง€ ๋ฒ”์œ„ ๋ถ„ํ• 

๋ฒˆ์—ญ ํŠน์ง•:

  • ๊ธฐ์ˆ  ์šฉ์–ด: ํ•œ๊ตญ์–ด(English) ํ˜•์‹ ์œ ์ง€ (์˜ˆ: ์‹ ๊ฒฝ๋ง(Neural Network))
  • ์ฝ”๋“œ ๋ธ”๋ก: __CODE_BLOCK_N__ ํ”Œ๋ ˆ์ด์Šคํ™€๋”๋กœ ์›๋ฌธ ๋ณด์กด
  • AI/ML ํ‘œ์ค€ ์šฉ์–ด ์‚ฌ์ „ 25๊ฐœ ์ ์šฉ (์ผ๊ด€๋œ ๋ฒˆ์—ญ)
  • PDF ์•„ํ‹ฐํŒฉํŠธ ์ž๋™ ์ œ๊ฑฐ (ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ, ์›Œํ„ฐ๋งˆํฌ ๋“ฑ)

์˜ˆ์ œ:

# ๊ธฐ๋ณธ ๋ฒˆ์—ญ (โ†’ paper_ko.html)
lecture-forge translate paper.pdf

# ์ถœ๋ ฅ ํŒŒ์ผ๋ช… ์ง€์ •
lecture-forge translate paper.pdf -o my_lecture_ko

# ์›๋ฌธ ๊ตฌ์กฐ ํ™•์ธ (๋ฒˆ์—ญ ์—†์Œ, ๋น ๋ฆ„)
lecture-forge translate paper.pdf --no-translate

# ๊ณ ํ’ˆ์งˆ + ์Šฌ๋ผ์ด๋“œ ๋ณ€ํ™˜
lecture-forge translate paper.pdf --quality-level strict --with-slides

# ์ดˆ๊ธ‰ ๋Œ€์ƒ ๋ฒˆ์—ญ
lecture-forge translate paper.pdf --audience-level beginner

# Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ ์ƒ์„ฑ ํฌํ•จ (๊ธฐ๋ณธ OFF)
lecture-forge translate paper.pdf --with-diagrams

๐ŸŽจ improve - ๊ฐ•์˜ ํ–ฅ์ƒ

๊ธฐ๋ณธ ์‚ฌ์šฉ:

lecture-forge improve outputs/lecture.html --to-slides

์˜ต์…˜:

์˜ต์…˜ ์„ค๋ช… ์‚ฌ์šฉ ์˜ˆ
--to-slides Reveal.js ์Šฌ๋ผ์ด๋“œ ๋ณ€ํ™˜ (*_slides.html) โ€” ์„น์…˜๋ณ„ LLM ์žฌ์ž‘์„ฑ ๊ธฐ๋ณธ ํฌํ•จ (โ‰ค35์ž, ๋ง์ค„์ž„ํ‘œ ์—†์Œ) --to-slides
--with-notes ์Šฌ๋ผ์ด๋“œ๋ณ„ ๋ฐœํ‘œ์ž ๋…ธํŠธ ์ž๋™ ์ƒ์„ฑ (LLM) --with-notes
--re-evaluate KB ๊ธฐ๋ฐ˜ ํ’ˆ์งˆ ์žฌํ‰๊ฐ€ + ๋ฏธ๋ฐ˜์˜ ๋‚ด์šฉ ๋ณด์ถฉ ์ถ”๊ฐ€ (*_enhanced.html) --re-evaluate
--quality-level LEVEL ์žฌํ‰๊ฐ€ ํ’ˆ์งˆ ๊ธฐ์ค€: lenient(70) / balanced(80) / strict(90) --quality-level strict
--kb PATH KB ๊ฒฝ๋กœ ์ˆ˜๋™ ์ง€์ • (HTML ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์—†๋Š” ๊ธฐ์กด ํŒŒ์ผ์šฉ fallback) --kb /path/to/vector_db/...

์˜ˆ์ œ:

# ์Šฌ๋ผ์ด๋“œ ๋ณ€ํ™˜ (๊ธฐ๋ณธ)
lecture-forge improve outputs/lecture.html --to-slides

# ๋ฐœํ‘œ์ž ๋…ธํŠธ ํฌํ•จ (๋ธŒ๋ผ์šฐ์ €์—์„œ Sํ‚ค)
lecture-forge improve outputs/lecture.html --to-slides --with-notes

# KB ๊ธฐ๋ฐ˜ ํ’ˆ์งˆ ์žฌํ‰๊ฐ€ + ๋ณด์ถฉ (โ†’ *_enhanced.html)
lecture-forge improve outputs/lecture.html --re-evaluate

# ์—„๊ฒฉํ•œ ๊ธฐ์ค€์œผ๋กœ ์žฌํ‰๊ฐ€
lecture-forge improve outputs/lecture.html --re-evaluate --quality-level strict

# ๊ธฐ์กด ํŒŒ์ผ (๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์—†์Œ) โ€” KB ๊ฒฝ๋กœ ์ˆ˜๋™ ์ง€์ •
lecture-forge improve outputs/lecture.html --re-evaluate --kb ~/Documents/LectureForge/data/vector_db/MyTopic_...

# ์žฌํ‰๊ฐ€ + ์Šฌ๋ผ์ด๋“œ ๋ณ€ํ™˜ ๋™์‹œ ์ ์šฉ
lecture-forge improve outputs/lecture.html --re-evaluate --to-slides

๐Ÿงน cleanup - ์ง€์‹๋ฒ ์ด์Šค ๊ด€๋ฆฌ

๊ธฐ๋ณธ ์‚ฌ์šฉ:

lecture-forge cleanup

๋Œ€ํ™”ํ˜•์œผ๋กœ ์‚ญ์ œํ•  ์ง€์‹๋ฒ ์ด์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์˜ต์…˜:

์˜ต์…˜ ์„ค๋ช… ์‚ฌ์šฉ ์˜ˆ
-a, --all ๋ชจ๋“  ์ง€์‹๋ฒ ์ด์Šค ์‚ญ์ œ (โš ๏ธ ์ฃผ์˜!) --all

์˜ˆ์ œ:

# ๋Œ€ํ™”ํ˜• ์„ ํƒ (์•ˆ์ „)
lecture-forge cleanup

# ์ „์ฒด ์‚ญ์ œ (๋ณต๊ตฌ ๋ถˆ๊ฐ€๋Šฅ!)
lecture-forge cleanup --all

๐Ÿ“ค ์ถœ๋ ฅ ๊ฒฐ๊ณผ

๊ฐ•์˜ ์ƒ์„ฑ ์™„๋ฃŒ ํ›„ ๋‹ค์Œ ํŒŒ์ผ๋“ค์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค:

outputs/
โ”œโ”€โ”€ [์ฃผ์ œ]_[๋‚ ์งœ์‹œ๊ฐ„].html           # ๐Ÿ“„ HTML ๊ฐ•์˜์ž๋ฃŒ
โ””โ”€โ”€ [์ฃผ์ œ]_[๋‚ ์งœ์‹œ๊ฐ„]_slides.html   # ๐ŸŽฌ ์Šฌ๋ผ์ด๋“œ (--to-slides ์‚ฌ์šฉ ์‹œ)

data/
โ””โ”€โ”€ vector_db/
    โ””โ”€โ”€ [์ฃผ์ œ]_[๋‚ ์งœ์‹œ๊ฐ„]/           # ๐Ÿ—„๏ธ ์ง€์‹๋ฒ ์ด์Šค (Q&A์šฉ)
        โ”œโ”€โ”€ chroma.sqlite3
        โ””โ”€โ”€ ...

ํฌํ•จ ๋‚ด์šฉ:

  • โœ… HTML ๊ฐ•์˜์ž๋ฃŒ: ์ด๋ฏธ์ง€, Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ, ์ฝ”๋“œ ํ•˜์ด๋ผ์ดํŒ…, ๊ฒ€์ƒ‰ ์ธ๋ฑ์Šค
  • โœ… ์ง€์‹๋ฒ ์ด์Šค: ChromaDB ๋ฒกํ„ฐ DB (๋Œ€ํ™”ํ˜• Q&A ์ง€์›)
  • โœ… ํ†ต๊ณ„ ์ •๋ณด: ํ’ˆ์งˆ ์ ์ˆ˜, ํ† ํฐ ์‚ฌ์šฉ๋Ÿ‰, ์˜ˆ์ƒ ๋น„์šฉ
  • โœ… ์Šฌ๋ผ์ด๋“œ: Reveal.js ํ”„๋ ˆ์  ํ…Œ์ด์…˜ (์„ ํƒ ์‚ฌํ•ญ)

๐Ÿ”ง ๊ณ ๊ธ‰ ์„ค์ • (.env ํŒŒ์ผ)

๋” ๋งŽ์€ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ .env ํŒŒ์ผ์—์„œ ๋‹ค์Œ ์„ค์ •์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

# ๊ฒ€์ƒ‰ ๋ฐ ํฌ๋กค๋ง
SEARCH_NUM_RESULTS=20              # ๊ธฐ๋ณธ: 10, ์ตœ๋Œ€: 100
DEEP_CRAWLER_MAX_PAGES=30          # ๊ธฐ๋ณธ: 10
DEEP_CRAWLER_MAX_DEPTH=3           # ๊ธฐ๋ณธ: 2

# ์ด๋ฏธ์ง€
IMAGE_SEARCH_PER_PAGE=15           # ๊ธฐ๋ณธ: 10
MAX_IMAGES_PER_SEARCH=20           # ๊ธฐ๋ณธ: 10

# ํ’ˆ์งˆ
QUALITY_THRESHOLD=90               # ๊ธฐ๋ณธ: 80 (70-90)
MAX_ITERATIONS=5                   # ๊ธฐ๋ณธ: 3

# ์„ฑ๋Šฅ
CHUNK_SIZE=800                     # ๊ธฐ๋ณธ: 1000 (์ž‘์„์ˆ˜๋ก ์ •๋ฐ€)
WEB_SCRAPER_TIMEOUT=60             # ๊ธฐ๋ณธ: 30์ดˆ

๐Ÿ’ก ์ „์ฒด ์„ค์ • ๋ชฉ๋ก: .env.example ํŒŒ์ผ ์ฐธ์กฐ (15+ ํ™˜๊ฒฝ๋ณ€์ˆ˜)


๐Ÿ—๏ธ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜

Multi-Agent ํŒŒ์ดํ”„๋ผ์ธ (12๊ฐœ ์ „๋ฌธ ์—์ด์ „ํŠธ)

flowchart TD
    CLI["๐Ÿ–ฅ๏ธ CLI Interface<br/>์ž…๋ ฅ ์ˆ˜์ง‘, ์ง„ํ–‰ ์ƒํ™ฉ, Q&A ์ธํ„ฐ๋ž™์…˜"]
    Orchestrator["โš™๏ธ Pipeline Orchestrator<br/>์—์ด์ „ํŠธ ์กฐ์œจ ๋ฐ ํƒœ์Šคํฌ ๊ด€๋ฆฌ"]
    Phase12["๐Ÿ“š Phase 1-2<br/>Collection & Analysis"]
    KB["๐Ÿ—„๏ธ Knowledge Base<br/>Vector DB + RAG Caching"]
    Phase34["โœ๏ธ Phase 3-4<br/>Generation & Quality QA"]
    Output["๐Ÿ“ค Output<br/>HTML + Slides"]

    CLI --> Orchestrator
    Orchestrator --> Phase12
    Orchestrator --> KB
    Phase12 -->|์ €์žฅ| KB
    KB -->|RAG Query| Phase34
    Phase34 -->|RAG Query| KB
    Phase34 --> Output

    style CLI fill:#e1f5ff
    style Orchestrator fill:#fff4e1
    style Phase12 fill:#e8f5e9
    style KB fill:#f3e5f5
    style Phase34 fill:#fff9c4
    style Output fill:#ffebee
Loading

12๊ฐœ ์ „๋ฌธ ์—์ด์ „ํŠธ

# ์—์ด์ „ํŠธ ์—ญํ•  ํŒŒ์ผ
1 Content Collector ๐Ÿ“š ํ…์ŠคํŠธ ์ˆ˜์ง‘ ๋ฐ ๋ฒกํ„ฐํ™” content_collector.py
2 Image Collector ๐Ÿ–ผ๏ธ ์ด๋ฏธ์ง€ ์ˆ˜์ง‘ ๋ฐ Vision AI ๋ถ„์„ image_collector.py
3 Content Analyzer ๐Ÿ” ๋‚ด์šฉ ๋ถ„์„ ๋ฐ ํ† ํ”ฝ ํด๋Ÿฌ์Šคํ„ฐ content_analyzer.py
4 Curriculum Designer ๐Ÿ“‹ ๊ฐ•์˜ ๊ตฌ์กฐ ์„ค๊ณ„ curriculum_designer.py
5 Content Writer โœ๏ธ RAG ๊ธฐ๋ฐ˜ ์ปจํ…์ธ  ์ƒ์„ฑ content_writer.py
6 Content Enhancer ๐Ÿ”ง KB ๊ธฐ๋ฐ˜ ์ฝ˜ํ…์ธ  ๋ณด๊ฐ•ยท์žฌํ‰๊ฐ€ content_enhancer.py
7 Diagram Generator ๐Ÿ“Š Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ ์ƒ์„ฑ diagram_generator.py
8 Quality Evaluator โœ… 6์ฐจ์› ํ’ˆ์งˆ ํ‰๊ฐ€ quality_evaluator.py
9 Revision Agent ๐Ÿ”„ ์ž๋™/๋ฐ˜์ž๋™ ์ˆ˜์ • revision_agent.py
10 Q&A Agent ๐Ÿค– ์ง€์‹์ฐฝ๊ณ  ๊ธฐ๋ฐ˜ ๋Œ€ํ™” (RAG ์บ์‹ฑ) qa_agent.py
11 HTML Assembler ๐ŸŽจ ์ตœ์ข… HTML ์ƒ์„ฑ html_assembler.py
12 PDF Translator ๐ŸŒ ์˜๋ฌธ PDF โ†’ ํ•œ๊ตญ์–ด ๊ฐ•์˜์ž๋ฃŒ pdf_translator.py

9๊ฐœ ๋„๊ตฌ (Tools)

# ๋„๊ตฌ ์—ญํ•  ํŒŒ์ผ
1 PDF Parser ๐Ÿ“„ PDF ํ…์ŠคํŠธ ์ถ”์ถœ pdf_parser.py
2 Image Extractor ๐Ÿ–ผ๏ธ PDF/HTML ์ด๋ฏธ์ง€ ์ถ”์ถœ image_extractor.py
3 Web Scraper ๐ŸŒ ์›น ํŽ˜์ด์ง€ ์Šคํฌ๋ž˜ํ•‘ web_scraper.py
4 Playwright Crawler ๐ŸŽญ ๋™์  ์›น ํฌ๋กค๋ง playwright_crawler.py
5 Deep Web Crawler ๐Ÿ•ท๏ธ ๋‹ค์ธต ์›น ํฌ๋กค๋ง (Hada.io) deep_web_crawler.py
6 Search Tool ๐Ÿ” Serper ๊ฒ€์ƒ‰ API search_tool.py
7 Image Search ๐ŸŽจ Pexels/Unsplash ๊ฒ€์ƒ‰ image_search.py
8 PDF Image Describer ๐Ÿ“ GPT-4o Vision ์ด๋ฏธ์ง€ ์„ค๋ช… pdf_image_describer.py
9 Image Editor โœ‚๏ธ ๋Œ€ํ™”ํ˜• ์ด๋ฏธ์ง€ ํŽธ์ง‘ image_editor.py

ํ’ˆ์งˆ ํ‰๊ฐ€ ์‹œ์Šคํ…œ (6์ฐจ์›)

%%{init: {'theme':'base', 'themeVariables': { 'pie1':'#e8f5e9', 'pie2':'#bbdefb', 'pie3':'#fff9c4', 'pie4':'#f8bbd0', 'pie5':'#ffccbc', 'pie6':'#d1c4e9'}}}%%
pie title ํ’ˆ์งˆ ํ‰๊ฐ€ ๊ฐ€์ค‘์น˜ ๋ถ„ํฌ
    "๋‚ด์šฉ ์™„์„ฑ๋„ (ํ•™์Šต ๋ชฉํ‘œ)" : 25
    "๋…ผ๋ฆฌ์  ํ๋ฆ„ (์—ฐ๊ฒฐ์„ฑ)" : 20
    "๋‚œ์ด๋„ ์ ํ•ฉ์„ฑ (๋ ˆ๋ฒจ)" : 20
    "์‹œ๊ฐ์ž๋ฃŒ ํ’ˆ์งˆ (์ด๋ฏธ์ง€)" : 15
    "์‹œ๊ฐ„ ์ ํ•ฉ์„ฑ (๋ถ„๋Ÿ‰)" : 10
    "๊ธฐ์ˆ ์  ์ •ํ™•์„ฑ (๊ฒ€์ฆ)" : 10
Loading
์ฐจ์› ๊ฐ€์ค‘์น˜ ํ‰๊ฐ€ ๊ธฐ์ค€ ์„ธ๋ถ€ ํ•ญ๋ชฉ
๐Ÿ“ ๋‚ด์šฉ ์™„์„ฑ๋„ 25% ํ•™์Šต ๋ชฉํ‘œ ๋‹ฌ์„ฑ๋„ ์ฃผ์ œ ์ปค๋ฒ„๋ฆฌ์ง€, ๊นŠ์ด, ์˜ˆ์ œ
๐Ÿ”— ๋…ผ๋ฆฌ์  ํ๋ฆ„ 20% ์„น์…˜ ๊ฐ„ ์—ฐ๊ฒฐ์„ฑ ๊ตฌ์กฐ, ์ „๊ฐœ, ์‘์ง‘์„ฑ
๐ŸŽฏ ๋‚œ์ด๋„ ์ ํ•ฉ์„ฑ 20% ์ˆ˜๊ฐ•์ƒ ๋ ˆ๋ฒจ ์ผ์น˜ ์šฉ์–ด, ๋ณต์žก๋„, ์‚ฌ์ „ ์ง€์‹
๐Ÿ–ผ๏ธ ์‹œ๊ฐ์ž๋ฃŒ ํ’ˆ์งˆ 15% ์ด๋ฏธ์ง€/๋‹ค์ด์–ด๊ทธ๋žจ ์ถฉ๋ถ„์„ฑ ๊ด€๋ จ์„ฑ, ํ’ˆ์งˆ, ๋ฐฐ์น˜
โฑ๏ธ ์‹œ๊ฐ„ ์ ํ•ฉ์„ฑ 10% ๊ฐ•์˜ ์‹œ๊ฐ„ vs ๋ถ„๋Ÿ‰ ๋‹จ์–ด ์ˆ˜, ๋ฐ€๋„, ํŽ˜์ด์‹ฑ
โœ… ๊ธฐ์ˆ ์  ์ •ํ™•์„ฑ 10% ์‚ฌ์‹ค ๊ด€๊ณ„ ๊ฒ€์ฆ ์ฝ”๋“œ, ๊ฐœ๋…, ์šฉ์–ด

ํ•ฉ๊ฒฉ ๊ธฐ์ค€: 80์  ์ด์ƒ (์ž๋™ ๋ฐ˜๋ณต ๊ฐœ์„ , ์ตœ๋Œ€ 3ํšŒ)


โ“ FAQ

์„ค์น˜ ๋ฐ ์„ค์ •

Q: ์–ด๋–ค Python ๋ฒ„์ „์ด ํ•„์š”ํ•œ๊ฐ€์š”?

A: Python 3.11, 3.12, 3.13 ๋ชจ๋‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • โœ… Python 3.11: ์™„๋ฒฝ ์ง€์› (๊ถŒ์žฅ)
  • โœ… Python 3.12: ์™„๋ฒฝ ์ง€์› (v0.3.3+)
  • โœ… Python 3.13: ์ง€์›๋จ (v0.3.8+, ๊ฒ€์ฆ ์™„๋ฃŒ)
# ๋ฒ„์ „ ํ™•์ธ
python --version

# Python 3.11 ํ™˜๊ฒฝ ์ƒ์„ฑ (๊ถŒ์žฅ)
conda create -n lecture-forge python=3.11
conda activate lecture-forge
pip install lecture-forge
Q: API ํ‚ค๊ฐ€ ๊ผญ ํ•„์š”ํ•œ๊ฐ€์š”?

A:

  • ํ•„์ˆ˜: OpenAI API, Serper API
  • ์„ ํƒ: Pexels API, Unsplash API (์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰์šฉ)

์ด๋ฏธ์ง€ API ์—†์ด๋„ PDF/์›น ์ด๋ฏธ์ง€๋งŒ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

Q: ๋น„์šฉ์ด ์–ผ๋งˆ๋‚˜ ๋“œ๋‚˜์š”?

A: ์‹ค์ œ ์ธก์ • ๋น„์šฉ (v0.2.4+ ๊ธฐ์ค€):

  • 60๋ถ„ ๊ฐ•์˜: ์•ฝ $0.035
  • 180๋ถ„ ๊ฐ•์˜: ์•ฝ $0.105

(GPT-4o-mini ์‚ฌ์šฉ. ๋ณด์ˆ˜์  ์ด๋ก  ์ถ”์ •: $0.22/180๋ถ„)

์ƒ์„ฑ ์™„๋ฃŒ ํ›„ ์ •ํ™•ํ•œ ๋น„์šฉ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Q: .env ํŒŒ์ผ ์„ค์ •์„ ๋ฐ”๊พธ๋ ค๋ฉด?

A: .env ํŒŒ์ผ์„ ์—ด์–ด ์›ํ•˜๋Š” ๊ฐ’์„ ์ˆ˜์ •ํ•˜์„ธ์š”:

# ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ฆ๊ฐ€
SEARCH_NUM_RESULTS=20

# ํฌ๋กค๋ง ๋ฒ”์œ„ ํ™•๋Œ€
DEEP_CRAWLER_MAX_PAGES=30

# ํƒ€์ž„์•„์›ƒ ์ฆ๊ฐ€
WEB_SCRAPER_TIMEOUT=60

๋ณ€๊ฒฝ ํ›„ ์žฌ์‹œ์ž‘ํ•˜๋ฉด ๋ฐ”๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ•

Q: ์˜คํ”„๋ผ์ธ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ๊ฐ€์š”?

A:

  • ์ƒ์„ฑ ์‹œ: API ํ•„์š” (OpenAI, Serper ๋“ฑ)
  • ์ƒ์„ฑ ํ›„: HTML ํŒŒ์ผ๊ณผ ์ง€์‹์ฐฝ๊ณ ๋Š” ์˜คํ”„๋ผ์ธ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • Chat ๋ชจ๋“œ: ์ง€์‹์ฐฝ๊ณ ๋Š” ์˜คํ”„๋ผ์ธ ์ž‘๋™ํ•˜์ง€๋งŒ LLM API๋Š” ํ•„์š”
Q: ํ’ˆ์งˆ ๋ ˆ๋ฒจ์˜ ์ฐจ์ด๋Š”?

A:

๋ ˆ๋ฒจ ์ž„๊ณ„๊ฐ’ ์šฉ๋„ ์‹œ๊ฐ„
lenient 70์  ๋น ๋ฅธ ์ดˆ์•ˆ ์งง์Œ
balanced 80์  ๊ธฐ๋ณธ๊ฐ’ โœ… ๋ณดํ†ต
strict 90์  ๊ณ ํ’ˆ์งˆ ํ”„๋กœ๋•์…˜ ๊น€

์ž„๊ณ„๊ฐ’ ๋ฏธ๋‹ฌ ์‹œ ์ตœ๋Œ€ 3ํšŒ ์ž๋™ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

Q: Chat ๋ชจ๋“œ ์ข…๋ฃŒ ๋ฐฉ๋ฒ•์€?

A: ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜ ์‚ฌ์šฉ:

  • /exit ๋˜๋Š” /quit (๊ถŒ์žฅ)
  • Ctrl+C (๊ฐ•์ œ ์ข…๋ฃŒ)
Q: ์ด๋ฏธ์ง€๊ฐ€ ์ œ๋Œ€๋กœ ๋งค์นญ๋˜์ง€ ์•Š์œผ๋ฉด?

A: v0.2.0์˜ Location-based ๋งค์นญ์ด ์ž๋™์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค:

  1. PDF ์ด๋ฏธ์ง€: 85% ์ž๋™ ๋งค์นญ (ํŽ˜์ด์ง€ ๊ธฐ๋ฐ˜)
  2. ์›น ์ด๋ฏธ์ง€: ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ๋ณด์™„
  3. ์ˆ˜๋™ ํŽธ์ง‘: lecture-forge edit-images๋กœ ๊ต์ฒด ๊ฐ€๋Šฅ

๊ธฐ์ˆ ์  ์งˆ๋ฌธ

Q: ํ…Œ์ŠคํŠธ๋Š” ์–ด๋–ป๊ฒŒ ์‹คํ–‰ํ•˜๋‚˜์š”?
# ์ „์ฒด ํ…Œ์ŠคํŠธ
pytest tests/ -v

# ์ปค๋ฒ„๋ฆฌ์ง€ ํ™•์ธ
pytest tests/ --cov=lecture_forge --cov-report=html

# ํŠน์ • ํ…Œ์ŠคํŠธ
pytest tests/unit/agents/test_content_writer.py -v

# ํŠน์ • ์—์ด์ „ํŠธ๋งŒ
pytest tests/unit/agents/ -v
Q: API ํ˜ธ์ถœ์ด ์‹คํŒจํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?

A: v0.2.0๋ถ€ํ„ฐ ์ž๋™ ์žฌ์‹œ๋„ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์ตœ๋Œ€ 3ํšŒ ์žฌ์‹œ๋„
  • ์ง€์ˆ˜ ๋ฐฑ์˜คํ”„: 2์ดˆ โ†’ 4์ดˆ โ†’ 10์ดˆ
  • ์ผ์‹œ์  ์˜ค๋ฅ˜ ์ž๋™ ๋ณต๊ตฌ
  • OpenAI, Serper, Pexels, Unsplash ๋ชจ๋‘ ์ง€์›
Q: RAG ์ฟผ๋ฆฌ ์บ์‹ฑ์€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”?

A:

  • ์ฟผ๋ฆฌ์™€ ๊ฒฐ๊ณผ ๊ฐœ์ˆ˜๋ฅผ MD5 ํ•ด์‹œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์บ์‹œ
  • ๋™์ผ ์งˆ๋ฌธ์€ 60% ๋น ๋ฅธ ์‘๋‹ต
  • ์บ์‹œ ํžˆํŠธ/๋ฏธ์Šค ํ†ต๊ณ„ ์ž๋™ ์ถ”์ 
  • ์„ธ์…˜ ๋™์•ˆ ์œ ์ง€ (ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ ์‹œ ์ดˆ๊ธฐํ™”)
Q: ์„ค์ •์„ ํ™˜๊ฒฝ๋ณ„๋กœ ๋‹ค๋ฅด๊ฒŒ ํ•˜๋ ค๋ฉด?

A: .env ํŒŒ์ผ์„ ํ™˜๊ฒฝ๋ณ„๋กœ ๋ถ„๋ฆฌํ•˜์„ธ์š”:

# ๊ฐœ๋ฐœ ํ™˜๊ฒฝ
.env.development

# ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ
.env.production

# ์‚ฌ์šฉ
cp .env.production .env
lecture-forge create

๐Ÿ“ ๋ณ€๊ฒฝ ์ด๋ ฅ

v0.5.x (2026-02-26 ~ 2026-03-05) - ๐ŸŒ ์›น ํŽธ์ง‘๊ธฐ ยท ์•ˆ์ •์„ฑ & ๋น„์šฉ ๊ฐœ์„ 

  • ๐Ÿ› edit TemplateNotFound ์žฌ๋ฐœ ๋ฐฉ์ง€ (v0.5.3): server.py์—์„œ Path(__file__) ์ ˆ๋Œ€๊ฒฝ๋กœ๋กœ index.html ์ง์ ‘ ์ฝ๊ธฐ
  • ๐ŸŽจ ์Šฌ๋ผ์ด๋“œ ํƒ€์ดํ‹€ ๊ฐœ์„  (v0.5.3): ์ƒ์„ฑ์ผ ํ‘œ์‹œ + ๊ฐ€์šด๋ฐ ์ •๋ ฌ
  • ๐Ÿ”’ PyPI ๋ฐฐํฌ ๊ฒ€์ฆ ๊ฐ•ํ™” (v0.5.3): wheel ๋‚ด์šฉ ํ•„์ˆ˜ ํ™•์ธ ์ ˆ์ฐจ ์ถ”๊ฐ€ (unzip -l dist/*.whl | grep templates/editor)
  • ๐ŸŒ ์›น ๊ธฐ๋ฐ˜ ๊ฐ•์˜ ํŽธ์ง‘๊ธฐ (edit ๋ช…๋ น์–ด, v0.5.0): 3-ํŒจ๋„ SPA ์—๋””ํ„ฐ (ํฌํŠธ 5757) โ€” ์„น์…˜ CRUD, Markdown ํŽธ์ง‘ (EasyMDE), ์ด๋ฏธ์ง€ ๊ฐค๋Ÿฌ๋ฆฌยท๋Œ€์•ˆ ๊ฒ€์ƒ‰
  • ๐Ÿ“ฆ ์˜์กด์„ฑ ์ถ”๊ฐ€: flask>=3.0.0, markdownify>=0.12.1 ยท CLI ๋ช…๋ น์–ด 8๊ฐœ โ†’ 9๊ฐœ
  • ๐Ÿ› ๋ฒ„๊ทธ์ˆ˜์ • (v0.5.1): edit TemplateNotFound, improve --to-slides IndexError
  • ๐Ÿ”ง BaseAgent max_tokens ์ „์—ญํ™” (v0.5.2): MAX_LLM_TOKENS (๊ธฐ๋ณธ 4096) ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ œ์–ด
  • ๐Ÿ”’ RMC ๋ฃจํ”„ ์ƒํ•œ (v0.5.2): MAX_RMC_ROUNDS (๊ธฐ๋ณธ 1) โ€” ๋ฌดํ•œ ๋ฐ˜๋ณต ๋ฐฉ์ง€
  • โšก ๋‹ค์ด์–ด๊ทธ๋žจ ๋ณ‘๋ ฌ ์ƒ์„ฑ (v0.5.2): ThreadPoolExecutor๋กœ ์„น์…˜๋‹น ๋‹ค์ค‘ ๋‹ค์ด์–ด๊ทธ๋žจ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ
  • ๐Ÿ†” HTML ์„น์…˜ ID ์ค‘๋ณต ๋ฐฉ์ง€ (v0.5.2): ์ƒ์„ฑ ์‹œ์  ์ค‘๋ณต ์ œ๊ฑฐ (_2, _3 suffix)

v0.4.x (2026-02-22 ~ 2026-02-25) - ๐Ÿ” ๋ณด๊ฐ•ยท๋ฒˆ์—ญยท์•„ํ‚คํ…์ฒ˜ ์ •๋ฆฌ

  • ๐Ÿ” ๊ฒ€์ƒ‰ ์ปค๋ฒ„๋ฆฌ์ง€ (v0.4.0): ์„น์…˜ ์ „์ฒด ์ธ๋ฑ์‹ฑ, --re-evaluate HTML ํ†ต๊ณ„ ์ž๋™ ์—…๋ฐ์ดํŠธ, --to-slides ๊ธฐ๋ณธ LLM ์žฌ์ž‘์„ฑ (โ‰ค35์ž)
  • ๐ŸŒ translate ๋ช…๋ น์–ด (v0.4.1): PDF ์•„ํ‹ฐํŒฉํŠธ ์ œ๊ฑฐ, TOC ๊ฐ์ง€, AI/ML ์šฉ์–ด์‚ฌ์ „ 25๊ฐœ, --with-diagrams opt-in
  • ๐Ÿ—๏ธ ์•„ํ‚คํ…์ฒ˜ ์ •๋ฆฌ (v0.4.3): agents/ โ†’ cli/ import ์œ„๋ฐ˜ ์ œ๊ฑฐ, config ์•ˆ์ „ ํŒŒ์‹ฑ, ํ…Œ์ŠคํŠธ 36๊ฐœ ์ถ”๊ฐ€

v0.3.x (2026-02-12 ~ 2026-02-20) - ๊ธฐ๋ฐ˜ ๊ธฐ๋Šฅ ๊ตฌ์ถ•

  • ๐Ÿง  RMC ์ž๊ธฐ๊ฒ€ํ†  (v0.3.8): CurriculumDesignerยทContentWriterยทQAAgent 2๋‹จ๊ณ„ ์ž๊ธฐ๋ฐ˜์„ฑ, ํ• ๋ฃจ์‹œ๋„ค์ด์…˜ ํ•ญ๋ชฉ ์ œ๊ฑฐ, Python 3.13 ๊ฒ€์ฆ
  • ๐Ÿ–ผ๏ธ UI & ์Šฌ๋ผ์ด๋“œ (v0.3.7): Lightbox ํด๋ฆญ ํ™•๋Œ€, ํ•œ๊ตญ์–ด ์„œ๋ธŒ์ŠคํŠธ๋ง ๊ฒ€์ƒ‰, Mermaid ์ „์ฒด ๋„ˆ๋น„, API ์ˆ˜์ •
  • ๐Ÿ”ง ์ฝ”๋“œ ํ’ˆ์งˆ (v0.3.6): make_api_retry() ํŒฉํ† ๋ฆฌ, BaseImageSearchTool, RAG ํŒŒ๋ผ๋ฏธํ„ฐ ํ™˜๊ฒฝ๋ณ€์ˆ˜ํ™”, Chat ๋กœ๊ทธ
  • ๐ŸŽฏ RAG ํ’ˆ์งˆ (v0.3.5): 400๋‹จ์–ด ๊ตฌ์กฐํ™” ๋‹ต๋ณ€, 15+15 ๋“€์–ผ์ฟผ๋ฆฌ(top-12), ChromaDB ์‹ ๋ขฐ๋„ ์ˆ˜์ •, Rich ๋ Œ๋”๋ง
  • โšก Async I/O (v0.3.4): --async-mode, httpx ๋ณ‘๋ ฌ ์ˆ˜์ง‘ 70% ํ–ฅ์ƒ
  • โŒจ๏ธ ์ž…๋ ฅ ์‹œ์Šคํ…œ (v0.3.3): prompt-toolkit, ํ•œ๊ตญ์–ด ์™„๋ฒฝ ์ง€์›, ํžˆ์Šคํ† ๋ฆฌยท์ž๋™์™„์„ฑ
  • ๐ŸŒ ๋‹ค๊ตญ์–ด (v0.3.2): langdetect, Cross-lingual ๋“€์–ผ์ฟผ๋ฆฌ, ์ง€๋Šฅํ˜• ์žฌ๋žญํ‚น
  • ๐Ÿ“‚ ๋””๋ ‰ํ† ๋ฆฌ (v0.3.1): ~/Documents/LectureForge/, home ์ปค๋งจ๋“œ, ์ž๋™ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜
  • ๐ŸŽจ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ (v0.3.0): Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ, ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ(9๊ฐœ), ์Šฌ๋ผ์ด๋“œ ์ตœ์ ํ™”

v0.2.x (2026-02-09 ~ 2026-02-12) - ํ’ˆ์งˆยท์•ˆ์ •์„ฑ

  • โšก RAG ์ฟผ๋ฆฌ ์บ์‹ฑ(60%), ์ž๋™ API ์žฌ์‹œ๋„(์ง€์ˆ˜ ๋ฐฑ์˜คํ”„), Config ๋ฆฌํŒฉํ† ๋ง(15+ ํ™˜๊ฒฝ๋ณ€์ˆ˜)
  • ๐Ÿ› ์ด๋ฏธ์ง€ ํฌ๊ธฐ ๋ฒ„๊ทธ ์ˆ˜์ •(์›๋ณธ ๋ณด์กด), Visual scoreยท์Šฌ๋ผ์ด๋“œ ๋ฒ„๊ทธ ์ˆ˜์ •, Full HD WebP ์ง€์›
  • ๐Ÿงช 77+ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ, ํƒ€์ž… ํžŒํŠธ 40% โ†’ 75%

v0.1.0 (2026-02-08) - ๐ŸŽ‰ Initial Release

  • 10๊ฐœ ์ „๋ฌธ ์—์ด์ „ํŠธ, ๋ฉ€ํ‹ฐ์†Œ์Šค ์ˆ˜์ง‘ (PDFยทURLยท๊ฒ€์ƒ‰)
  • Location-based ์ด๋ฏธ์ง€ ๋งค์นญ (+750%), ChromaDB ์ง€์‹์ฐฝ๊ณ 
  • 6์ฐจ์› ํ’ˆ์งˆ ํ‰๊ฐ€, HTML ์ถœ๋ ฅ, Reveal.js ์Šฌ๋ผ์ด๋“œ ๋ณ€ํ™˜

๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ๋‹ค์Œ ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ผ์ฃผ์„ธ์š”:

  1. ์ด์Šˆ ์ƒ์„ฑ: ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋จผ์ € ๋…ผ์˜
  2. ํฌํฌ & ๋ธŒ๋žœ์น˜: feature ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
  3. ํ…Œ์ŠคํŠธ ์ž‘์„ฑ: ์ƒˆ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
  4. PR ์ œ์ถœ: ๋ณ€๊ฒฝ์‚ฌํ•ญ ์„ค๋ช…๊ณผ ํ•จ๊ป˜ ์ œ์ถœ

์ž์„ธํ•œ ๋‚ด์šฉ์€ CONTRIBUTING.md๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.


๐Ÿ“„ ๋ผ์ด์„ ์Šค

MIT License - ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ์ฐธ์กฐ


๐Ÿ“ž ์ง€์› ๋ฐ ๋ฌธ์˜


๐Ÿ™ ๊ฐ์‚ฌ์˜ ๋ง

์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋“ค์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค:

  • LangChain - Multi-Agent ํ”„๋ ˆ์ž„์›Œํฌ
  • ChromaDB - ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • OpenAI - GPT-4o ๋ชจ๋ธ
  • Serper - ๊ฒ€์ƒ‰ API
  • Pexels & Unsplash - ์ด๋ฏธ์ง€ API

Made with โค๏ธ by Sungwoo Kim
โญ ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด GitHub Star๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”!

About

AI based lecture auto-generation system

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors