--- title: YouTube Script Extractor emoji: ๐ŸŽฌ colorFrom: red colorTo: yellow sdk: docker app_port: 7860 --- # ๐ŸŽฌ YouTube Script Extractor YouTube ์˜์ƒ์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”์ถœํ•˜๊ณ , AI๋กœ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ## โœจ ์ฃผ์š” ๊ธฐ๋Šฅ - **์ž๋™ ์Šคํฌ๋ฆฝํŠธ ์ถ”์ถœ** โ€” YouTube URL๋งŒ ์ž…๋ ฅํ•˜๋ฉด ์Œ์„ฑ์„ ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜ - **AI ๋งˆํฌ๋‹ค์šด ์ •๋ฆฌ** โ€” LLM์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ตฌ์กฐํ™”๋œ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ์ •๋ฆฌ - **๋‹ค๊ตญ์–ด ๋ฒˆ์—ญ** โ€” 14๊ฐœ ์–ธ์–ด ์ง€์› (ํ•œ๊ตญ์–ด, ์˜์–ด, ์ผ๋ณธ์–ด ๋“ฑ) - **ํ‚คํ”„๋ ˆ์ž„ ๋ถ„์„ (CV)** โ€” ์˜์ƒ์˜ ํ•ต์‹ฌ ์žฅ๋ฉด์„ ์ถ”์ถœํ•˜๊ณ  Vision AI๋กœ ๋ถ„์„ - **Smart Mix** โ€” ํŒŒ์ดํ”„๋ผ์ธ ๋‹จ๊ณ„๋ณ„๋กœ ๋‹ค๋ฅธ LLM์„ ์ง€์ • ๊ฐ€๋Šฅ - **์›น UI + CLI** โ€” ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜ UI์™€ ์ปค๋งจ๋“œ๋ผ์ธ ๋ชจ๋‘ ์ง€์› ## ๐Ÿค– ์ง€์› LLM | ๋ชจ๋ธ | ๊ฐ€๊ฒฉ | Vision | ๋น„๊ณ  | |------|------|--------|------| | Ollama (๋กœ์ปฌ) | ๋ฌด๋ฃŒ | โŒ | ์ธํ„ฐ๋„ท ๋ถˆํ•„์š” | | Gemini 2.5 Flash-Lite | $0.10/1Mํ† ํฐ | โœ… | โญ ์ตœ์ €๊ฐ€ | | Gemini 3.1 Flash-Lite | $0.25/1Mํ† ํฐ | โœ… | ์ตœ์‹  ๋ชจ๋ธ | | GPT-4o-mini | $0.15/1Mํ† ํฐ | โœ… | OpenAI | | Claude Sonnet 4.6 | $3/1Mํ† ํฐ | โœ… | ๊ณ ํ’ˆ์งˆ | | Claude Opus 4.6 | $5/1Mํ† ํฐ | โœ… | ์ตœ๊ณ  ํ’ˆ์งˆ | ## ๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘ ### 1. ์„ค์น˜ ```bash git clone https://huggingface.co/spaces/YOUR_USERNAME/youtube-script-extractor cd youtube-script-extractor # ffmpeg ์„ค์น˜ (macOS) brew install ffmpeg # Python ์˜์กด์„ฑ ์„ค์น˜ pip install -r requirements.txt ``` ### 2. API ํ‚ค ์„ค์ • ```bash cp .env.example .env # .env ํŒŒ์ผ์„ ์—ด์–ด ์‚ฌ์šฉํ•  LLM์˜ API ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” ``` ### 3. ์‹คํ–‰ ```bash # ์›น UI (์ถ”์ฒœ) chmod +x run ./run # ๋˜๋Š” ์ง์ ‘ ์‹คํ–‰ python3 web.py ``` ๋ธŒ๋ผ์šฐ์ €์—์„œ `http://localhost:8000` ์ ‘์† ### CLI ๋ชจ๋“œ ```bash ./run "https://www.youtube.com/watch?v=VIDEO_ID" ./run "https://www.youtube.com/watch?v=VIDEO_ID" --mode local --format srt ``` ## โš™๏ธ ์„ค์ • `.env` ํŒŒ์ผ์—์„œ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค: ```env # ํ•„์ˆ˜: Whisper API์šฉ OPENAI_API_KEY=sk-proj-... # ์„ ํƒ: ์‚ฌ์šฉํ•˜๋Š” LLM๋งŒ ์„ค์ • GOOGLE_API_KEY=... # Gemini ANTHROPIC_API_KEY=... # Claude # ๊ธฐ๋ณธ ์„ค์ • DEFAULT_MODE=api # api ๋˜๋Š” local DEFAULT_MODEL=base # Whisper ๋ชจ๋ธ (tiny/base/small/medium/large) PORT=8000 ``` ## ๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ``` โ”œโ”€โ”€ run # ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ (์„ค์น˜ + ์‹คํ–‰) โ”œโ”€โ”€ web.py # FastAPI ์›น ์„œ๋ฒ„ โ”œโ”€โ”€ cli.py # CLI ์ธํ„ฐํŽ˜์ด์Šค โ”œโ”€โ”€ transcriber.py # ์Œ์„ฑ ์ถ”์ถœ + STT + ํ‚คํ”„๋ ˆ์ž„ ์ถ”์ถœ โ”œโ”€โ”€ formatter.py # LLM ํ˜ธ์ถœ + ๋งˆํฌ๋‹ค์šด ์ •๋ฆฌ + ๋ฒˆ์—ญ โ”œโ”€โ”€ templates/ โ”‚ โ””โ”€โ”€ index.html # ์›น UI โ”œโ”€โ”€ requirements.txt # Python ์˜์กด์„ฑ โ”œโ”€โ”€ .env.example # ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํ…œํ”Œ๋ฆฟ โ””โ”€โ”€ output/ # ์ถ”์ถœ ๊ฒฐ๊ณผ๋ฌผ (git ์ œ์™ธ) ``` ## ๐Ÿ”ง Smart Mix (๋‹จ๊ณ„๋ณ„ LLM ์„ ํƒ) ์›น UI์˜ โš™ ๋ฒ„ํŠผ์œผ๋กœ ํŒŒ์ดํ”„๋ผ์ธ ๋‹จ๊ณ„๋ณ„ LLM์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: - **MD ์ •๋ฆฌ** โ€” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๊ตฌ์กฐํ™” (์ €๋ ดํ•œ ๋ชจ๋ธ OK) - **๋ฒˆ์—ญ** โ€” ๋‹ค๊ตญ์–ด ๋ฒˆ์—ญ (์ €๋ ดํ•œ ๋ชจ๋ธ OK) - **ํ‚คํ”„๋ ˆ์ž„ ๋ถ„์„** โ€” Vision AI๋กœ ํ™”๋ฉด ๋ถ„์„ (Vision ์ง€์› ๋ชจ๋ธ ํ•„์š”) ## ๐Ÿ“‹ ์š”๊ตฌ์‚ฌํ•ญ - Python 3.9+ - ffmpeg - API ํ‚ค (์‚ฌ์šฉํ•˜๋ ค๋Š” LLM์— ๋”ฐ๋ผ) ## ๐Ÿ“„ License MIT