Skip to main content

AI-powered lecture material generator using CrewAI

Project description

LectureForge Pro ๐ŸŽ“

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

Python 3.11+ Version License: MIT Status Test Coverage

๐Ÿš€ v0.2.1 Beta Release | Bug Fixes & Improvements

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

ํ•ต์‹ฌ ํ†ต๊ณ„: 10๊ฐœ ์—์ด์ „ํŠธ | 9๊ฐœ ๋„๊ตฌ | 2,896์ค„ CLI | 53+ ํ…Œ์ŠคํŠธ (45-50% ์ปค๋ฒ„๋ฆฌ์ง€) | $0.22/๊ฐ•์˜


๐Ÿ“‹ ๋ชฉ์ฐจ


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

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

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

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

  • โœ… 6์ฐจ์› ํ’ˆ์งˆ ํ‰๊ฐ€: ์™„์„ฑ๋„, ํ๋ฆ„, ์‹œ๊ฐ„, ๋‚œ์ด๋„, ์‹œ๊ฐ์ž๋ฃŒ, ์ •ํ™•์„ฑ
  • ๐Ÿ”„ ์ž๋™ ๊ฐœ์„ : ํ’ˆ์งˆ ๊ธฐ์ค€ ๋ฏธ๋‹ฌ ์‹œ ์ตœ๋Œ€ 3ํšŒ ์ž๋™ ์ˆ˜์ •
  • ๐Ÿงช ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€: 53+ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ (45-50% ์ปค๋ฒ„๋ฆฌ์ง€)

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

  • ๐Ÿ—„๏ธ RAG ๊ธฐ๋ฐ˜ ์ง€์‹์ฐฝ๊ณ : ChromaDB ๋ฒกํ„ฐ DB๋กœ ๋Œ€ํ™”ํ˜• Q&A ์ง€์›
  • โšก ์ฟผ๋ฆฌ ์บ์‹ฑ: ๋™์ผ ์งˆ๋ฌธ 60% ๋น ๋ฅธ ์‘๋‹ต
  • ๐Ÿ’ฌ ์†Œ์Šค ์ธ์šฉ: ์ž๋™ ์ฐธ์กฐ ๋ฐ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ ์ œ๊ณต

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

  • ๐Ÿ”„ ์ž๋™ ์žฌ์‹œ๋„: API ์‹คํŒจ ์‹œ ์ง€์ˆ˜ ๋ฐฑ์˜คํ”„ (์ตœ๋Œ€ 3ํšŒ)
  • ๐Ÿ’ฐ ๋น„์šฉ ์ถ”์ : ์‹ค์‹œ๊ฐ„ ํ† ํฐ ์‚ฌ์šฉ๋Ÿ‰ ๋ฐ ๋น„์šฉ ์ถ”์ •
  • ๐Ÿ”ง ํƒ€์ž… ํžŒํŠธ: 75% ํƒ€์ž… ์•ˆ์ •์„ฑ

๐Ÿš€ v0.2.0 ๊ฐœ์„ ์‚ฌํ•ญ

์„ฑ๋Šฅ ํ–ฅ์ƒ โšก

  • RAG ์ฟผ๋ฆฌ ์บ์‹ฑ: MD5 ๊ธฐ๋ฐ˜ ๋ฉ”๋ชจ๋ฆฌ ์บ์‹œ๋กœ ๋ฐ˜๋ณต ์งˆ๋ฌธ 60% ๊ณ ์†ํ™”
  • ์บ์‹œ ํ†ต๊ณ„: ํžˆํŠธ/๋ฏธ์Šค ๋น„์œจ ์ถ”์  ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง

์•ˆ์ •์„ฑ ๊ฐœ์„  ๐Ÿ”„

  • ์ž๋™ ์žฌ์‹œ๋„ ๋กœ์ง: OpenAI, Serper, Pexels/Unsplash API ์ž๋™ ์žฌ์‹œ๋„ (3ํšŒ)
  • ์ง€์ˆ˜ ๋ฐฑ์˜คํ”„: 2์ดˆ โ†’ 4์ดˆ โ†’ 10์ดˆ ๋Œ€๊ธฐ๋กœ ์ผ์‹œ์  ์˜ค๋ฅ˜ ๋ณต๊ตฌ

ํ’ˆ์งˆ ๋ณด์ฆ ๐Ÿงช

  • 53+ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ: ์ „์ฒด 10๊ฐœ ์—์ด์ „ํŠธ ํ…Œ์ŠคํŠธ ์™„๋ฃŒ
  • 45-50% ์ปค๋ฒ„๋ฆฌ์ง€: pytest ๊ธฐ๋ฐ˜ ์ž๋™ํ™” ํ…Œ์ŠคํŠธ
  • ํƒ€์ž… ํžŒํŠธ 75%: 40% โ†’ 75% ํ–ฅ์ƒ

์„ค์ • ์‹œ์Šคํ…œ ๊ฐœ์„  ๐Ÿ”ง

  • Config ๋ฆฌํŒฉํ† ๋ง: ๋ชจ๋“  ํ•˜๋“œ์ฝ”๋”ฉ ์ œ๊ฑฐ, .env ๊ธฐ๋ฐ˜ ์ค‘์•™ ์ง‘์ค‘์‹ ์„ค์ •
  • 15+ ํ™˜๊ฒฝ๋ณ€์ˆ˜: ๊ฒ€์ƒ‰, ํฌ๋กค๋ง, ์ด๋ฏธ์ง€, ํƒ€์ž„์•„์›ƒ ๋“ฑ ๋ชจ๋“  ์„ค์ • ์กฐ์ • ๊ฐ€๋Šฅ
  • ํ™˜๊ฒฝ๋ณ„ ์„ค์ •: ๊ฐœ๋ฐœ/์Šคํ…Œ์ด์ง•/ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ ๋ถ„๋ฆฌ ์ง€์›
  • ๋Ÿฐํƒ€์ž„ Config ๊ฒ€์ฆ: --help ์ •์ƒ ์ž‘๋™

ํ†ต๊ณ„ ๋น„๊ต

๋ฉ”ํŠธ๋ฆญ v0.1.0 v0.2.0 ๊ฐœ์„ 
ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 15% 45-50% +200%
ํƒ€์ž… ํžŒํŠธ 40% 75% +87%
ํ…Œ์ŠคํŠธ๋œ ์—์ด์ „ํŠธ 3/10 10/10 +233%
RAG ์„ฑ๋Šฅ Baseline +60% ์บ์‹ฑ
API ์•ˆ์ •์„ฑ ์ˆ˜๋™ ์ž๋™ 3ํšŒ ์žฌ์‹œ๋„
์„ค์ • ๋ฐฉ์‹ ํ•˜๋“œ์ฝ”๋”ฉ .env ๊ธฐ๋ฐ˜ ์œ ์—ฐ์„ฑ

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

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

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

# ํŒจํ‚ค์ง€ ์„ค์น˜
pip install -e .

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

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

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

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

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

  • โœ… ํ”Œ๋žซํผ๋ณ„ ์ตœ์  ์œ„์น˜์— .env ํŒŒ์ผ ์ž๋™ ์ƒ์„ฑ
    • Windows: %LOCALAPPDATA%\lecture-forge\.env
    • Mac/Linux: ~/.lecture-forge/.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: %LOCALAPPDATA%\lecture-forge\.env
    • Mac/Linux: ~/.lecture-forge/.env

API ํ‚ค ํš๋“:

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

lecture-forge create

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


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

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

๋ช…๋ น์–ด ์„ค๋ช… ์ฃผ์š” ์˜ต์…˜
init ์ดˆ๊ธฐ ์„ค์ • --path
create ๊ฐ•์˜ ์ƒ์„ฑ --image-search, --quality-level
chat Q&A ๋ชจ๋“œ --knowledge-base
edit-images ์ด๋ฏธ์ง€ ํŽธ์ง‘ --output
improve ๊ฐ•์˜ ํ–ฅ์ƒ --to-slides
cleanup ์ง€์‹๋ฒ ์ด์Šค ๊ด€๋ฆฌ --all

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

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

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

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

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

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

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

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

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

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

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

lecture-forge init

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

์˜ต์…˜:

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

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

  • Windows: C:\Users\<username>\AppData\Local\lecture-forge\.env
  • Mac/Linux: ~/.lecture-forge/.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

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

์˜ต์…˜:

์˜ต์…˜ ์„ค๋ช… ์‚ฌ์šฉ ์˜ˆ
--config FILE YAML ์„ค์ • ํŒŒ์ผ ์‚ฌ์šฉ --config lecture.yaml
--image-search ์›น ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰ ํ™œ์„ฑํ™” (Pexels/Unsplash) --image-search
--quality-level LEVEL ํ’ˆ์งˆ ๊ธฐ์ค€ ์„ค์ • --quality-level strict
--output FILE ์ถœ๋ ฅ ํŒŒ์ผ๋ช… ์ง€์ • --output my_lecture.html
--include-pdf-images PDF ์ด๋ฏธ์ง€ ํฌํ•จ (๋น„๊ถŒ์žฅ, Location-based๊ฐ€ ๋” ์ข‹์Œ) --include-pdf-images

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

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

์˜ˆ์ œ:

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

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

# 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: ์ข…๋ฃŒ
  • /clear: ์ฑ„ํŒ… ๊ธฐ๋ก ์ง€์šฐ๊ธฐ
  • /sources: ๋งˆ์ง€๋ง‰ ๋‹ต๋ณ€์˜ ์ถœ์ฒ˜ ํ‘œ์‹œ

์˜ˆ์ œ:

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

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

๐Ÿ–ผ๏ธ 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
q ์ข…๋ฃŒ (์ €์žฅ ์•ˆ ํ•จ) q
h ๋„์›€๋ง h

์˜ˆ์ œ:

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

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

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

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

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

์˜ต์…˜:

์˜ต์…˜ ์„ค๋ช… ์‚ฌ์šฉ ์˜ˆ
--to-slides Reveal.js ์Šฌ๋ผ์ด๋“œ ๋ณ€ํ™˜ --to-slides
--enhance-pdf-images PDF ์ด๋ฏธ์ง€ ์„ค๋ช… ์ถ”๊ฐ€ (๋ ˆ๊ฑฐ์‹œ) --enhance-pdf-images
--source-pdf FILE ์›๋ณธ PDF ๊ฒฝ๋กœ (๋ ˆ๊ฑฐ์‹œ์šฉ) --source-pdf doc.pdf

โš ๏ธ ์ฃผ์˜: --enhance-pdf-images๋Š” ๋ ˆ๊ฑฐ์‹œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. v0.2.0๋ถ€ํ„ฐ๋Š” Location-based ๋งค์นญ์ด ์ž๋™์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ:

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

# PDF ์ด๋ฏธ์ง€ ๋ณด๊ฐ• (๋ ˆ๊ฑฐ์‹œ)
lecture-forge improve outputs/lecture.html --enhance-pdf-images --source-pdf original.pdf

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

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

lecture-forge cleanup

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

์˜ต์…˜:

์˜ต์…˜ ์„ค๋ช… ์‚ฌ์šฉ ์˜ˆ
--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+ ํ™˜๊ฒฝ๋ณ€์ˆ˜)


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

์ƒ์„ฑ๋œ ๊ฐ•์˜์˜ ์ด๋ฏธ์ง€๋ฅผ ๋Œ€ํ™”ํ˜•์œผ๋กœ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ

  • ์ด๋ฏธ์ง€ ์‚ญ์ œ: ์›ํ•˜์ง€ ์•Š๋Š” ์ด๋ฏธ์ง€ ์ œ๊ฑฐ
  • ์ด๋ฏธ์ง€ ๊ต์ฒด: Vector DB์—์„œ ๋Œ€์•ˆ ์ด๋ฏธ์ง€ ์ž๋™ ๊ฒ€์ƒ‰ ๋ฐ ๊ต์ฒด
  • ๋ฏธ๋ฆฌ๋ณด๊ธฐ: ๋ณ€๊ฒฝ ์ „ ๋ชจ๋“  ์ด๋ฏธ์ง€ ์ƒํƒœ ํ™•์ธ
  • ์•ˆ์ „ํ•œ ์ €์žฅ: ์›๋ณธ ๋ฐฑ์—… ํ›„ ์ƒˆ ํŒŒ์ผ ์ƒ์„ฑ

์‚ฌ์šฉ๋ฒ•

# ์ด๋ฏธ์ง€ ํŽธ์ง‘ ๋ชจ๋“œ ์‹œ์ž‘
lecture-forge edit-images outputs/lecture.html

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

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

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

์ž‘๋™ ๋ฐฉ์‹

  1. HTML ๋ถ„์„: ๊ฐ•์˜ ํŒŒ์ผ์˜ ๋ชจ๋“  ์ด๋ฏธ์ง€ ์ถ”์ถœ ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ˆ˜์ง‘
  2. ๋Œ€ํ™”ํ˜• ํŽธ์ง‘: ํ…Œ์ด๋ธ” ํ˜•์‹์œผ๋กœ ์ด๋ฏธ์ง€ ๋ชฉ๋ก ํ‘œ์‹œ ๋ฐ ํŽธ์ง‘
  3. ๋Œ€์•ˆ ๊ฒ€์ƒ‰: Vector DB๋ฅผ ํ™œ์šฉํ•œ ๊ด€๋ จ ์ด๋ฏธ์ง€ ์ž๋™ ์ œ์•ˆ (RAG ๊ธฐ๋ฐ˜)
  4. ๋ณ€๊ฒฝ ์ ์šฉ: ์‚ญ์ œ/๊ต์ฒด ์ž‘์—… ์ผ๊ด„ ์ ์šฉ ๋ฐ ์ƒˆ ํŒŒ์ผ ์ƒ์„ฑ

์˜ˆ์ œ

๐Ÿ“ธ ๊ฐ•์˜ ์ด๋ฏธ์ง€ ํŽธ์ง‘ ๋ชจ๋“œ
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”

HTML: my_lecture.html
์ด ์ด๋ฏธ์ง€: 25๊ฐœ

โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ ๋ฒˆํ˜ธ  โ”ƒ ์„ค๋ช…                               โ”ƒ ์„น์…˜              โ”ƒ ํŽ˜์ด์ง€   โ”ƒ ์ƒํƒœ      โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚  1   โ”‚ Neural network architecture       โ”‚ 1. Introduction  โ”‚  5     โ”‚ ์œ ์ง€      โ”‚
โ”‚  2   โ”‚ Backpropagation diagram           โ”‚ 2. Core Concepts โ”‚  12    โ”‚ ๐Ÿ—‘๏ธ ์‚ญ์ œ   โ”‚
โ”‚  3   โ”‚ Training process flowchart        โ”‚ 2. Core Concepts โ”‚  15    โ”‚ ๐Ÿ”„ ๊ต์ฒด   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๋ช…๋ น ์ž…๋ ฅ: r 3
๐Ÿ” ์ด๋ฏธ์ง€ 3 ๋Œ€์•ˆ ๊ฒ€์ƒ‰ ์ค‘...
โœ… 5๊ฐœ ๋Œ€์•ˆ ์ด๋ฏธ์ง€ ๋ฐœ๊ฒฌ
์„ ํƒ: 1
โœ… ์ด๋ฏธ์ง€ 3 ๊ต์ฒด ์˜ˆ์ •

๋ช…๋ น ์ž…๋ ฅ: s
๐Ÿ’พ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ €์žฅ๋จ: outputs/my_lecture_edited.html

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

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

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  CLI Interface (์ž…๋ ฅ ์ˆ˜์ง‘, ์ง„ํ–‰ ์ƒํ™ฉ, Q&A ์ธํ„ฐ๋ž™์…˜)                โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                         โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚    Pipeline Orchestrator        โ”‚
        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                         โ”‚
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚                                       โ”‚
โ”Œโ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Phase 1-2     โ”‚                   โ”‚  Knowledge Base โ”‚
โ”‚  Collection    โ”‚โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚  (Vector DB)    โ”‚
โ”‚  & Analysis    โ”‚                   โ”‚  + RAG Caching  โ”‚
โ””โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
    โ”‚                                       โ”‚
โ”Œโ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                          โ”‚
โ”‚  Phase 3-4     โ”‚โ—€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚  Generation    โ”‚         (RAG Query)
โ”‚  & Quality QA  โ”‚
โ””โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
    โ”‚
โ”Œโ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Output        โ”‚
โ”‚  HTML + Slides โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

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

# ์—์ด์ „ํŠธ ์—ญํ•  ํŒŒ์ผ
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 Diagram Generator ๐Ÿ“Š Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ ์ƒ์„ฑ diagram_generator.py
7 Quality Evaluator โœ… 6์ฐจ์› ํ’ˆ์งˆ ํ‰๊ฐ€ quality_evaluator.py
8 Revision Agent ๐Ÿ”„ ์ž๋™/๋ฐ˜์ž๋™ ์ˆ˜์ • revision_agent.py
9 Q&A Agent ๐Ÿค– ์ง€์‹์ฐฝ๊ณ  ๊ธฐ๋ฐ˜ ๋Œ€ํ™” (RAG ์บ์‹ฑ) qa_agent.py
10 HTML Assembler ๐ŸŽจ ์ตœ์ข… HTML ์ƒ์„ฑ html_assembler.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์ฐจ์›)

์ฐจ์› ๊ฐ€์ค‘์น˜ ํ‰๊ฐ€ ๊ธฐ์ค€
๋‚ด์šฉ ์™„์„ฑ๋„ 25% ํ•™์Šต ๋ชฉํ‘œ ๋‹ฌ์„ฑ๋„
๋…ผ๋ฆฌ์  ํ๋ฆ„ 20% ์„น์…˜ ๊ฐ„ ์—ฐ๊ฒฐ์„ฑ
์‹œ๊ฐ„ ์ ํ•ฉ์„ฑ 10% ๊ฐ•์˜ ์‹œ๊ฐ„ vs ๋ถ„๋Ÿ‰
๋‚œ์ด๋„ ์ ํ•ฉ์„ฑ 20% ์ˆ˜๊ฐ•์ƒ ๋ ˆ๋ฒจ ์ผ์น˜
์‹œ๊ฐ์ž๋ฃŒ ํ’ˆ์งˆ 15% ์ด๋ฏธ์ง€/๋‹ค์ด์–ด๊ทธ๋žจ ์ถฉ๋ถ„์„ฑ
๊ธฐ์ˆ ์  ์ •ํ™•์„ฑ 10% ์‚ฌ์‹ค ๊ด€๊ณ„ ๊ฒ€์ฆ

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


โ“ FAQ

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

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

A: Python 3.11 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

python --version  # Python 3.11+ ํ™•์ธ
Q: API ํ‚ค๊ฐ€ ๊ผญ ํ•„์š”ํ•œ๊ฐ€์š”?

A:

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

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

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

A: 180๋ถ„ ๊ฐ•์˜ ๊ธฐ์ค€ ์•ฝ $0.22 (GPT-4o-mini ์‚ฌ์šฉ).

  • ์ž…๋ ฅ ํ† ํฐ: ~580K ($0.15)
  • ์ถœ๋ ฅ ํ† ํฐ: ~155K ($0.07)

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

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
  • 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.2.1 (2026-02-10) - Bug Fixes & Improvements ๐Ÿ›

๋ฒ„๊ทธ ์ˆ˜์ •

  • ๐Ÿ› Visual score ํ•ญ์ƒ 0์œผ๋กœ ํ‘œ์‹œ๋˜๋Š” ๋ฌธ์ œ ์ˆ˜์ • (์ด๋ฏธ์ง€ ์นด์šดํŒ… ๋กœ์ง ์ถ”๊ฐ€)
  • ๐Ÿ› ํ’ˆ์งˆ ํ‰๊ฐ€ ๋ฌดํ•œ ๋ฐ˜๋ณต ๋ฌธ์ œ ํ•ด๊ฒฐ (์„น์…˜๋ณ„ ์ž„๊ณ„๊ฐ’ ์™„ํ™” + ์กฐ๊ธฐ ์ข…๋ฃŒ)
  • ๐Ÿ› ์Šฌ๋ผ์ด๋“œ orphaned heading ๋ฌธ์ œ ๊ฐœ์„  (look-ahead ๋กœ์ง ์ ์šฉ)

๊ฐœ์„ ์‚ฌํ•ญ

  • โœจ CLI ๋„์›€๋ง ํ…์ŠคํŠธ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ (์ค„๋ฐ”๊ฟˆ ๊ฐœ์„ )
  • โœจ Reveal.js ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค ์„ค๋ช… ์ถ”๊ฐ€ (--to-slides ๋„์›€๋ง)
  • โœจ ์Šฌ๋ผ์ด๋“œ ๊ตฌ์„ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ์„  (max_items_per_slide 3โ†’4)
  • โœจ ํ’ˆ์งˆ ํ‰๊ฐ€ ํšจ์œจ์„ฑ ํ–ฅ์ƒ (3์  ๋ฏธ๋งŒ ๊ฐœ์„  ์‹œ ์กฐ๊ธฐ ์ข…๋ฃŒ)

๋ฌธ์„œ

  • ๐Ÿ“š INPUT_LIMITS_ANALYSIS.md์— ๋ฉ€ํ‹ฐ์†Œ์Šค ์ „๋žต ์ƒ์„ธ ๋ถ„์„ ์ถ”๊ฐ€ (Section 8)
  • ๐Ÿ“– README.md ๋ฐ CLAUDE.md v0.2.1 ์ •๋ณด ์—…๋ฐ์ดํŠธ

v0.2.0 (2026-02-09) - Enhanced Quality Release ๐Ÿš€

์„ฑ๋Šฅ ํ–ฅ์ƒ

  • โšก RAG ์ฟผ๋ฆฌ ์บ์‹ฑ (60% ์„ฑ๋Šฅ ํ–ฅ์ƒ)
  • ๐Ÿ”„ ์ž๋™ API ์žฌ์‹œ๋„ ๋กœ์ง (์ง€์ˆ˜ ๋ฐฑ์˜คํ”„)

ํ’ˆ์งˆ ๊ฐœ์„ 

  • ๐Ÿงช 53+ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ (45-50% ์ปค๋ฒ„๋ฆฌ์ง€)
  • ๐Ÿ”ง ํƒ€์ž… ํžŒํŠธ 75% ์ปค๋ฒ„๋ฆฌ์ง€ (40% โ†’ 75%)
  • ๐Ÿ› Config ๊ฒ€์ฆ ๋Ÿฐํƒ€์ž„ ์ด๋™
  • ๐Ÿ› Bare except ์•ˆํ‹ฐํŒจํ„ด ์ˆ˜์ •

์„ค์ • ๊ด€๋ฆฌ

  • ๐Ÿ”ง Config ๋ฆฌํŒฉํ† ๋ง: ๋ชจ๋“  ํ•˜๋“œ์ฝ”๋”ฉ ์ œ๊ฑฐ, .env ๊ธฐ๋ฐ˜ ์„ค์ • ์‹œ์Šคํ…œ ๋„์ž…
  • โš™๏ธ 15+ ํ™˜๊ฒฝ๋ณ€์ˆ˜: ๊ฒ€์ƒ‰, ํฌ๋กค๋ง, ์ด๋ฏธ์ง€, ํƒ€์ž„์•„์›ƒ ๋“ฑ ๋ชจ๋“  ์„ค์ • ์กฐ์ • ๊ฐ€๋Šฅ
  • ๐ŸŽ›๏ธ ์œ ์—ฐํ•œ ๋ฐฐํฌ: ๊ฐœ๋ฐœ/ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ๋ณ„ ์„ค์ • ๋ถ„๋ฆฌ ์ง€์›

๋ฌธ์„œ

  • ๐Ÿ“š CLAUDE.md, README.md, INPUT_LIMITS_ANALYSIS.md ์—…๋ฐ์ดํŠธ
  • ๐Ÿ“– Config ๊ธฐ๋ฐ˜ ์„ค์ • ๊ฐ€์ด๋“œ ์ถ”๊ฐ€

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

  • ๐Ÿค– 10๊ฐœ ์ „๋ฌธ ์—์ด์ „ํŠธ ์‹œ์Šคํ…œ
  • ๐Ÿ“š ๋ฉ€ํ‹ฐ์†Œ์Šค ์ปจํ…์ธ  ์ˆ˜์ง‘ (PDF, URL, ๊ฒ€์ƒ‰)
  • ๐Ÿ“ Location-based ์ด๋ฏธ์ง€ ๋งค์นญ (+750% ํ™œ์šฉ๋ฅ )
  • ๐Ÿ—„๏ธ ChromaDB ๋ฒกํ„ฐ DB ๊ธฐ๋ฐ˜ ์ง€์‹์ฐฝ๊ณ 
  • โœ… 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 LectureForge Team
โญ ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด GitHub Star๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lecture_forge-0.2.1.tar.gz (178.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lecture_forge-0.2.1-py3-none-any.whl (160.1 kB view details)

Uploaded Python 3

File details

Details for the file lecture_forge-0.2.1.tar.gz.

File metadata

  • Download URL: lecture_forge-0.2.1.tar.gz
  • Upload date:
  • Size: 178.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for lecture_forge-0.2.1.tar.gz
Algorithm Hash digest
SHA256 33fbbe34da646d4a2b42b500e5625c2bd0ccaa39e6f35cbf69e9b2a9669680bc
MD5 5178037fbaeff031ff8301229a86d7da
BLAKE2b-256 f93ca698025f8c0fa0f73f96ec4908f46bfde89cefb8d56184ae65570bc83b60

See more details on using hashes here.

File details

Details for the file lecture_forge-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: lecture_forge-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 160.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for lecture_forge-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3f40dc2c25b50c9632da5b95bc3dddb37dad005ecd0b8c06128c9012d34fe3fc
MD5 e88843bc56132754f1c87fec0fbdc430
BLAKE2b-256 5cc4fed4a80e851fdf55436fa3e4e2a9f8ec0bee54cee67f4f69170521db10b4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page