chatfire-AI/huobao-drama
chatfire-AI/huobao-drama has 17,241 GitHub stars and 3,211 forks. GitHot measured +36 stars in 24 hours and +252 in 7 days. Last checked 2026-11-11 15:49 UTC. Last push 2026-11-01.
์ด ์์น๋ฅผ ์ธก์ ํ๋ ๋ฐฉ๋ฒ
๐ฌ ็ซๅฎ็ญๅง - AI ๊ธฐ๋ฐ ์ฌ์ธ์ ๋จํธ ๋๋ผ๋ง ์์ฑ ํ๋ซํผ. โํ ๋ฌธ์ฅ์ผ๋ก ๋จํธ ๋๋ผ๋ง ์ ์ฒด๋ฅผ ์์ฑํ๊ณ , ๋๋ณธ๋ถํฐ ์์ฑ ์์๊น์ง ๋ชจ๋ ๊ณผ์ ์ ์๋ํํฉ๋๋ค.โ
์ธก์ ๋ ์คํ ์ฆ๊ฐ
- in 24h
- +36
- in 7 days
- +252
- in 15 days
- ์ ๋ฐ์ดํธ ์ง์ฐ
- in 1 month
- ์ ๋ฐ์ดํธ ์ง์ฐ
์๋ก ๊ฒน์น๋ ๊ธฐ๊ฐ์ ์์ฆ๊ฐ๋์ด๋ฉฐ ์ผ๋ณ ํฉ๊ณ๊ฐ ์๋๋๋ค. ์ธก์ ๊ฐ์ด ์์ผ๋ฉด ๋น์ ๋ก๋๋ค. ์คํ๋ ๊ด์ฌ๋๋ฅผ ๋ํ๋ด๋ฉฐ ํ์ง์ ๋ณด์ฅํ์ง ์์ต๋๋ค.
README.ko.md
Original๐ฌ Huobao Drama - AI ์๋๋ผ๋ง ์์ฑ ํ๋ซํผ
TypeScript ํ์คํ ๊ธฐ๋ฐ AI ์๋๋ผ๋ง ์๋ ์ ์ ํ๋ซํผ
ไธญ่ฑๅ่ฏญ | English | ็ฎไฝไธญๆ | ๆฅๆฌ่ช | ํ๊ตญ์ด
๊ธฐ๋ฅ โข ๋น ๋ฅธ ์์ โข ํํ ๋ฆฌ์ผ โข ๋ฐ์คํฌํฑ ์ฑ โข ๋ฐฐํฌ
๐ Huobao API Key ๋ฐ๊ธฐ ๐ ๋ฐ๋ก ๋ณด๊ธฐ
ํ ์คํธ ยท ์ด๋ฏธ์ง ยท ์์ ๋ชจ๋ AI ๊ธฐ๋ฅ, Key ํ๋๋ก ํ์ฑํ
๋ฐฐํฌ ํ ใ์ค์ โ ็ซๅฎๅฟซๆท ์ค์ ใ์ Key ๋ฅผ ๋ถ์ฌ๋ฃ์ผ๋ฉด ์ถ์ฒ ์ค์ 3๊ฐ๊ฐ ํ ๋ฒ์ ์ ๋ ฅ๋ฉ๋๋ค
๐ฅ ๋ฐ์คํฌํฑ ์ฑ ๋ค์ด๋ก๋ (macOS / Windows)
๐ ๊ณต์ ์น์ฌ์ดํธ
๐ ํ๋ก์ ํธ ์๊ฐ
Huobao Drama๋ AI ๊ธฐ๋ฐ ์๋๋ผ๋ง ์๋ ์ ์ ํ๋ซํผ์ผ๋ก, ๊ฐ๋ณธ ์์ฑ, ์บ๋ฆญํฐ ๋์์ธ, ์คํ ๋ฆฌ๋ณด๋ ์ ์๋ถํฐ ์์ ํฉ์ฑ๊น์ง ์ ๊ณผ์ ์ ์๋ํํฉ๋๋ค.
๐ฏ ํต์ฌ ๊ฐ์น
- ๐ค AI ๊ธฐ๋ฐ๏ผ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ๋ก ๊ฐ๋ณธ์ ๋ถ์ํ์ฌ ์บ๋ฆญํฐ, ์ฅ๋ฉด, ์คํ ๋ฆฌ๋ณด๋ ์ ๋ณด๋ฅผ ์ถ์ถ
- ๐จ ์ง๋ฅํ ์ฐฝ์๏ผAI ์ด๋ฏธ์ง ์์ฑ์ผ๋ก ์บ๋ฆญํฐ ์ด๋ฏธ์ง์ ์ฅ๋ฉด ๋ฐฐ๊ฒฝ ์ ์
- ๐น ์์ ์์ฑ๏ผํ ์คํธโ์์ ๋ฐ ์ด๋ฏธ์งโ์์ ๋ชจ๋ธ๋ก ์คํ ๋ฆฌ๋ณด๋ ์์ ์๋ ์์ฑ
- ๐ ์ํฌํ๋ก๏ผ์์ด๋์ด๋ถํฐ ์์ฑ ์์๊น์ง ์๋๋ผ๋ง ์ ์ ์ ๊ณผ์ ์ ํ ๊ณณ์์ ์๋ฃ
๐ ๏ธ ๊ธฐ์ ์ํคํ ์ฒ
frontend/ โ Nuxt 3 + Vue 3 + TypeScript (์์ CSS, UI ํ๋ ์์ํฌ ์์)
backend/ โ Hono + Drizzle ORM + Mastra AI Agents + better-sqlite3
backend/workspace/skills/ โ Agent ์คํฌ ์ ์ (SKILL.md, UI์์ ์จ๋ผ์ธ ํธ์ง ๊ฐ๋ฅ)
desktop/ โ Electron ๋ฐ์คํฌํฑ ๋ฒ์ (๋ฉ์ธ ํ๋ก์ธ์ค + esbuild ๋ฒ๋ค + electron-builder๋ก dmg/exe ์์ฑ)
data/ โ ์์ฑ๋ ์์
๊ณผ SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค
โจ ๊ธฐ๋ฅ
๐ญ ์บ๋ฆญํฐ ๊ด๋ฆฌ
- โ AI ์บ๋ฆญํฐ ์ด๋ฏธ์ง ์์ฑ
- โ ์บ๋ฆญํฐ ์ผ๊ด ์์ฑ
- โ ์บ๋ฆญํฐ ์ด๋ฏธ์ง ์ ๋ก๋ ๋ฐ ๊ด๋ฆฌ
๐ฌ ์์ ์์
- โ AI ์์ ์์ ์๋ ์์ฑ
- โ ์ฅ๋ฉด ์ค๋ช ๋ฐ ์์ ํ๋กฌํํธ ์์ฑ
- โ ์์ ๋ณ ์์ ์ผ๊ด ์์ฑ
๐ฅ ์์ ์์ฑ
- โ ํ ์คํธโ์์ ์๋ ์์ฑ
- โ FFmpeg ์ท ๋จ์ ํฉ์ฑ ๋ฐ ์๋ง ์ฒ๋ฆฌ
- โ ์ํผ์๋ ์ ์ฒด ๋ณํฉ ๋ฐ ๋ฉ์ถ
๐ฆ ์์ ๊ด๋ฆฌ
- โ ์์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํตํฉ ๊ด๋ฆฌ
- โ ๋ก์ปฌ ์คํ ๋ฆฌ์ง ์ง์
- โ ์์ ์งํ ์ํฉ ์ถ์
๐ค AI Agents
4๊ฐ์ Mastra Agent ๋ด์ฅ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ ๊ณผ Skill ํ์ฅ ์ง์:
| Agent | ์ญํ |
|---|---|
script_rewriter |
์์ค โ ํ์ํ๋ ๊ฐ๋ณธ ๋ฆฌ๋ผ์ดํ |
extractor |
์บ๋ฆญํฐ / ์ฅ๋ฉด / ์ํ ์ง๋ฅํ ์ถ์ถ ๋ฐ ์ค๋ณต ์ ๊ฑฐ |
storyboard_breaker |
๊ฐ๋ณธ โ ์คํ ๋ฆฌ๋ณด๋ ์ํ์ค ๋ถํด |
prompt_generator |
์บ๋ฆญํฐ/์ฅ๋ฉด/์ํ ์ด๋ฏธ์ง ํ๋กฌํํธ + ์คํ ๋ฆฌ๋ณด๋ ์์ ํ๋กฌํํธ ์์ฑ |
๐ ๋ค๊ตญ์ด UI
์ธํฐํ์ด์ค๋ ไธญๆ / English / ๆฅๆฌ่ช / ํ๊ตญ์ด 4๊ฐ ์ธ์ด๋ฅผ ๋ด์ฅํ๊ณ , AI ์์ฑ ์ฝํ ์ธ ์ ์ธ์ด๋ฅผ ์ ์ญ์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค.
๐ ๋ฉํฐ ํ๋ก๋ฐ์ด๋ ์ง์
| ์ ํ | ์ง์ ํ๋ก๋ฐ์ด๋ |
|---|---|
| ํ ์คํธ | OpenAI(ํธํ API), Gemini |
| ์ด๋ฏธ์ง | OpenAI, Gemini, Volcano Engine |
| ์์ | Volcano Engine Seedance 2.0(Standard / Fast / Mini), MiniMax H3, Alibaba Bailian Wan 3.0(Prime / Standard) |
๐ ๋น ๋ฅธ ์์
๐ ํ๊ฒฝ ์๊ตฌ ์ฌํญ
| ์ํํธ์จ์ด | ๋ฒ์ | ์ค๋ช |
|---|---|---|
| Node.js | 20+ | ํ๋ฐํธ์๋/๋ฐฑ์๋ ์คํ ํ๊ฒฝ |
| npm | 9+ | ํจํค์ง ๊ด๋ฆฌ ๋๊ตฌ |
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์น ๋ถํ์๏ผSQLite ๋ด์ฅ(ํ๋ก์ ํธ ๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ์ ๋จ์ผ ํ์ผ)์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ ์ค์น๊ฐ ํ์ ์์ต๋๋ค. FFmpeg ์ค์น ๋ถํ์๏ผ
ffmpeg-static/ffprobe-staticnpm ํจํค์ง์ ๋ฐ์ด๋๋ฆฌ๊ฐ ๋ด์ฅ๋์ด ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
โ๏ธ ํ๊ฒฝ ๋ณ์
์ค์ ํ์ผ ์์ด ํ๊ฒฝ ๋ณ์๋ก ์ค์ ํฉ๋๋ค(๋ชจ๋ ๊ธฐ๋ณธ๊ฐ์ด ์์ด ๋ก์ปฌ ๊ฐ๋ฐ์ ๋ฌด์ค์ ์ผ๋ก ์์ ๊ฐ๋ฅ):
| ๋ณ์ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
|---|---|---|
SQLITE_PATH |
<์ ์ฅ์>/data/huobao.sqlite3 |
SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ ์์น |
PORT |
5679 |
๋ฐฑ์๋ ์๋น์ค ํฌํธ |
STORAGE_PATH |
<์ ์ฅ์>/data/static |
์์ฑ ํ์ผ ์ ์ฅ ๋๋ ํฐ๋ฆฌ |
HUOBAO_DATA_DIR |
โ | ๋ฐ์คํฌํฑ ๋ฒ์ ์์ Electron ๋ฉ์ธ ํ๋ก์ธ์ค๊ฐ ์ฃผ์ (userData ๋ฐ์ดํฐ ๋ฃจํธ) |
WORKSPACE_PATH |
backend/workspace |
Agent ์คํฌ/ํ๋กฌํํธ ๋๋ ํฐ๋ฆฌ(๋ฐ์คํฌํฑ ๋ฒ์ ์ userData์ ์ฐ๊ธฐ ๊ฐ๋ฅํ ๋ณต์ฌ๋ณธ) |
FRONTEND_DIST |
frontend/dist |
ํ๋ฐํธ์๋ ์ ์ ๋น๋ ๋๋ ํฐ๋ฆฌ |
FFMPEG_BIN / FFPROBE_BIN |
npm ๋ด์ฅ ๋ฐ์ด๋๋ฆฌ | ์ฌ์ฉ์ ์ง์ ffmpeg/ffprobe ์คํ ํ์ผ ๊ฒฝ๋ก |
PUBLIC_BASE_URL |
โ | Seedance๊ฐ ๋ก์ปฌ ์ฐธ์กฐ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ๋ ํ์ํ ๊ณต๊ฐ ์ฃผ์(์๋ฒ ๋ฐฐํฌ์ฉ) |
์ค๋ช ๏ผAI ์๋น์ค์ API Key, Base URL, ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๋ ๋ชจ๋ ์น UI์ ใ์ค์ ใ ํ์ด์ง์์ ์ค์ ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํฉ๋๋ค. ์ค์ ํ์ผ์ด๋ ํ๊ฒฝ ๋ณ์๋ก ๊ด๋ฆฌํ์ง ์์ต๋๋ค.
๐ฅ ์ค์น
# ์ ์ฅ์ ํด๋ก
git clone https://github.com/chatfire-AI/huobao-drama.git
cd huobao-drama
# ๋ฐฑ์๋ ์์กด์ฑ ์ค์น
cd backend && npm install
# ํ๋ฐํธ์๋ ์์กด์ฑ ์ค์น
cd ../frontend && npm install
๐ฏ ์คํ
๋ฐฉ๋ฒ 1: ๊ฐ๋ฐ ๋ชจ๋(๊ถ์ฅ)
ํ๋ฐํธ์๋์ ๋ฐฑ์๋๋ฅผ ๋ถ๋ฆฌํ์ฌ ํซ ๋ฆฌ๋ก๋ ์ง์:
# ํฐ๋ฏธ๋ 1: ๋ฐฑ์๋
cd backend
npm run dev
# ํฐ๋ฏธ๋ 2: ํ๋ฐํธ์๋
cd frontend
npm run dev
- ํ๋ฐํธ์๋ ์ฃผ์:
http://localhost:3013 - ๋ฐฑ์๋ API:
http://localhost:5679/api/v1 - ํ๋ฐํธ์๋๊ฐ
/api์/static์ ๋ฐฑ์๋๋ก ์๋ ํ๋ก์
๋ฐฉ๋ฒ 2: ๋จ์ผ ์๋น์ค ๋ชจ๋
๋ฐฑ์๋๊ฐ API์ ํ๋ฐํธ์๋ ์ ์ ํ์ผ์ ๋ชจ๋ ์ ๊ณต:
# 1. ํ๋ฐํธ์๋ ๋น๋
cd frontend && npm run generate
# 2. ๋น๋ ์ฐ์ถ๋ฌผ์ ๋ฐฑ์๋๊ฐ ์ฝ๋ ๋๋ ํฐ๋ฆฌ๋ก ๋ณต์ฌ
# (generate ์ฐ์ถ๋ฌผ์ .output/public, ๋ฐฑ์๋๋ frontend/dist๋ฅผ ์ฝ์)
cp -r .output/public dist
# 3. ๋ฐฑ์๋ ์์
cd ../backend && npm start
์ ์: http://localhost:5679
๐๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค
SQLite ๋ด์ฅ(better-sqlite3 + WAL ๋ชจ๋). ์ต์ด ์์ ์ ํ
์ด๋ธ ์๋ ์์ฑ(๋ฉฑ๋ฑ DDL ์ฌ์ + ์๋ ๋ฐ์ดํฐ). ๊ธฐ๋ณธ ํ์ผ์ data/huobao.sqlite3์ด๋ฉฐ SQLITE_PATH๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅ. ๋ฐ์คํฌํฑ ๋ฒ์ ์ ๋ฐ์ดํฐ๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ(~/Library/Application Support/HuobaoDrama/data/)์ ์ ์ฅ๋ฉ๋๋ค.
๊ตฌ๋ฒ์ MySQL์์ ๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์ :
์์ ์ ์๋ ๋ง์ด๊ทธ๋ ์ด์
(๊ถ์ฅ): MySQL์ด ๋ช
์์ ์ผ๋ก ์ค์ ๋์ด ์๊ณ (DATABASE_URL ๋๋ MYSQL_HOST) SQLite๊ฐ ๋น์ด ์์ผ๋ฉด, ๋ฐฑ์๋ ์์ ์ ์๋์ผ๋ก ๊ฐ์งํ์ฌ ๋ชจ๋ ํ
์ด๋ธ์ ํ ๋ฒ๋ง ๊ฐ์ ธ์ต๋๋ค(ํ
์ด๋ธ๋ณ ํ ์ ๊ฒ์ฆ, ๋จ์ผ ํธ๋์ญ์
์์์ ์ฐ๊ธฐ, ์คํจ ์ ์๋ ๋กค๋ฐฑ ํ ๋ค์ ์์ ๋ ์ฌ์๋, ์ฑ๊ณต ์ .mysql-imported ๋ง์ปค๋ฅผ ๊ธฐ๋กํ์ฌ ์ค๋ณต ๋ฐฉ์ง). MYSQL_AUTO_IMPORT=false๋ก ๋นํ์ฑํํ ์ ์์ต๋๋ค.
# ์๋ ์คํ๋ ๊ฐ๋ฅ(๋์ DB๊ฐ ๋น์ด ์์ง ์์ผ๋ฉด --force ํ์, ์ฐ๊ธฐ ์ ์๋ ๋ฐฑ์
)
cd backend && npx tsx scripts/import-mysql-to-sqlite.ts
๋ง์ด๊ทธ๋ ์ด์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ง ํฌํจํฉ๋๋ค. ๊ตฌ ๋ฐฐํฌ์
data/static/์๋ ์ด๋ฏธ์ง/์์ ๋ฑ ๋ฏธ๋์ด ํ์ผ์ ์๋์ผ๋ก ๋ณต์ฌํด์ผ ํ๋ฉฐ, ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ธฐ์กด ์์ฌ์ ์ ๊ทผํ ์ ์์ต๋๋ค.
๐ ์ฒซ ์ฌ์ฉ: AI ์๋น์ค ์ค์
์์ ํ ๋ชจ๋ AI ๊ธฐ๋ฅ(ํ ์คํธ/์ด๋ฏธ์ง/์์)์ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ ๋ชจ๋ธ ์๋น์ค๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. ๋ฏธ์ค์ ์ ํ์ด์ง ์๋จ์ ๋ฐฐ๋๋ก ์๋ดํฉ๋๋ค:
- ใ์ค์ ใ ํ์ด์ง ์ด๊ธฐ
- ใ็ซๅฎๅฟซๆท ์ค์ ใ์ Huobao API Key ๋ถ์ฌ๋ฃ๊ธฐ(api.firemux.com์์ ๋ฐ๊ธ). ํ ์คํธ, ์ด๋ฏธ์ง, ์์ ์ถ์ฒ ์ค์ 3๊ฐ๊ฐ ํ ๋ฒ์ ์ ๋ ฅ๋ฉ๋๋ค
- ๋๋ ใ์๋ ํ ํ๋ฆฟใ์ผ๋ก ํ๋ก๋ฐ์ด๋๋ณ ์ถ๊ฐ. ์ฐ๊ฒฐ ํ ์คํธ ์ง์
์ค์ ์ด ์๋ฃ๋๋ฉด ๋ฐฐ๋๊ฐ ์๋์ผ๋ก ์ฌ๋ผ์ง๊ณ ์ํผ์๋ ์ ์์ ์์ํ ์ ์์ต๋๋ค.
๐ ๊ทธ๋ฆผ ํํ ๋ฆฌ์ผ
์์ค๋ถํฐ ์์ฑ ์ํผ์๋๊น์ง์ ์ ์ฒด ์ ์ ํ๋ฆ์ ๋๋ค. ์ผ์ชฝ ์งํ ํ์์ค์ด ํญ์ ํ์ฌ ๋จ๊ณ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
1๋จ๊ณ ยท ํ๋ก์ ํธ ์์ฑ
ํ์์ "์ ํ๋ก์ ํธ"๋ฅผ ํด๋ฆญํ๊ณ ํ๋ฉด ๋น์จ(16:9 ๊ฐ๋ก / 9:16 ์ธ๋ก, ์์ฑ ํ ๋ณ๊ฒฝ ๋ถ๊ฐ)๊ณผ ํํ(3D / ์ค์ฌ ๋ฑ, ๋ชจ๋ ์ด๋ฏธ์ง ํ๋กฌํํธ์ ์ฃผ์ )์ ์ ํํฉ๋๋ค.
2๋จ๊ณ ยท AI ์๋น์ค ์ค์ (์ต์ด)
์ค์ ํ์ด์ง์ "ํ๋ฐ์ค ๋น ๋ฅธ ์ค์ "์ API ํค๋ฅผ ๋ถ์ฌ๋ฃ์ผ๋ฉด ์ถ์ฒ ์ค์ 3์ข ์ ํ ๋ฒ์ ๋ฑ๋กํฉ๋๋ค. ์๋ ํ ํ๋ฆฟ์ผ๋ก ์ง์ ์ถ๊ฐํ ์๋ ์์ต๋๋ค. ์ฌ์ฉ ๋ชจ๋ธ์ ์๋จ ๋ฐ์์ ์ธ์ ๋ ์ ํ ๊ฐ๋ฅํฉ๋๋ค(5๋จ๊ณ ์ฐธ๊ณ ).
3๋จ๊ณ ยท ๋๋ณธ ๋จ๊ณ
์ ์ ํ๋ฉด์ **์๋ฌธ(์์ค)**์ ๋ถ์ฌ๋ฃ๊ณ "AI ์ฌ์์ฑ"์ ์คํํ๋ฉด ์ดฌ์์ฉ ๋๋ณธ์ด ์์ฑ๋ฉ๋๋ค โ ์ํผ์๋๋ณ ๋ถํ ๋ฐ ์ฅ๋ฉดยท์บ๋ฆญํฐ ์ฃผ์ ํฌํจ. ๋ชจ๋ธ๊ณผ ํค์ ๋ฐ๊ฟ๊ฐ๋ฉฐ ์ฌ์์ฑํ ์ ์์ต๋๋ค.
4๋จ๊ณ ยท ์์ ์ ์
๋๋ณธ์ ์ถ์ถ์ ์คํํ๋ฉด ์บ๋ฆญํฐ / ์ฅ๋ฉด / ์ํ ๋ชฉ๋ก์ด ์๋ ์์ฑ๋ฉ๋๋ค. ๊ฐ ํญ๋ชฉ์ "์ด๋ฏธ์ง ์์ฑ"์ผ๋ก ์ผ๊ด์ฑ ์๋ ์ฐธ์กฐ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค(์ผ๊ด ์์ฑ ์ง์). ์ด ์ด๋ฏธ์ง๋ค์ ์์ ์์ฑ ์ ์ฐธ์กฐ ์์ฌ๋ก ์ฃผ์ ๋ฉ๋๋ค.
5๋จ๊ณ ยท ์คํ ๋ฆฌ๋ณด๋์ ์์
"์์ ์ ์" ํ์ด์ง์์ ๋จผ์ ์คํ ๋ฆฌ๋ณด๋ ๋ถํ ์ ์คํํ์ธ์(AI๊ฐ ์ปท์ ๋๋๊ณ ์์ ํ๋กฌํํธ ์์ฑ). ๊ทธ ํ:
- ์๋จ ๋ฐ์์ ์์ ๋ชจ๋ธ ์ ํ(Seedance / Wan 3.0 / MiniMax ๋ฑ). ํด์๋์ ๊ธธ์ด ์ต์ ์ ๋ชจ๋ธ์ ์ฐ๋๋ฉ๋๋ค
- ์ค๋ฅธ์ชฝ์์ ๊ฐ ์ปท์ ํ๋กฌํํธ๋ฅผ ํ์ธยท์กฐ์ (
@์บ๋ฆญํฐ๋ช์ฐธ์กฐ๋ ์๋์ผ๋ก ์ฐธ์กฐ ์ด๋ฏธ์ง์ ๋งคํ) - "์ผ๊ด ์์ ์์ฑ"์ผ๋ก ์์ ์์. ์คํจํ ์์ ์ ์ํด๋ฆญ ์ฌ์๋
6๋จ๊ณ ยท ๋ณํฉ๊ณผ ๋ด๋ณด๋ด๊ธฐ
์ปท์ ์ ํ(ํธ๋ฒ๋ก ๊ฐ ํด๋ฆฝ ๋ฏธ๋ฆฌ๋ณด๊ธฐ)ํ๊ณ "๋ณํฉ ์์"์ ๋๋ฅด๋ฉด FFmpeg์ด ์์ฑ ์ํผ์๋๋ฅผ ์๋ ํฉ์ฑํฉ๋๋ค. ์จ๋ผ์ธ ์ฌ์ยท๋ค์ด๋ก๋ ๊ฐ๋ฅ. ์๋ฃ ํ "์๋ฃ ํ์"๋ฅผ ๋๋ฅด๋ฉด ์งํ ํ์์ค์ด ์ผ์ง๋๋ค.
์ํผ์๋ ๋ชฉ๋ก์์ ๊ฐ ํ์ ์ ์ ํํฉ์ ํ์ธํ๊ณ "์ ์ ์ด๊ธฐ"๋ก ์ด์ด์ ์์ ํ ์ ์์ต๋๋ค:
๐ฆ ๋ฐฐํฌ
๐ฅ๏ธ ๋ฐ์คํฌํฑ ์ฑ(๊ถ์ฅ)
โฌ๏ธ ๋น๋๋ ์ค์น ํ์ผ: GitHub Releases ยท ์ค๊ตญ์ฉ ๋ฏธ๋ฌ(Tencent COS)
| ํ๋ซํผ | ๋ค์ด๋ก๋ ํ์ผ |
|---|---|
| macOS(Apple Silicon, M ์๋ฆฌ์ฆ) | HuobaoDrama-4.0.5-arm64.dmg |
| macOS(Intel) | HuobaoDrama-4.0.5.dmg |
| Windows | HuobaoDrama.Setup.4.0.5.exe |
์ค๊ตญ ๋ณธํ ์์๋ GitHub์ด ๋ถ์์ ํ๋ฏ๋ก Tencent COS ๋ฏธ๋ฌ๋ฅผ ์ด์ฉํ์ธ์. ์ฑ ๋ด ์ ๋ฐ์ดํฐ๋ COS๋ฅผ ์ฐ์ ํ๊ณ GitHub์ผ๋ก ํด๋ฐฑํฉ๋๋ค.
์ปค๋งจ๋๋ผ์ธ ์ค์น(๊ถ์ฅ, ๋ณต๊ตฌ ๋ถํ์): curl๋ก ๋ค์ด๋ก๋ํ๋ฉด macOS ๊ฒฉ๋ฆฌ ์์ฑ์ด ๋ถ์ง ์์ "์์๋จ" ๊ฒฝ๊ณ ์์ด ๋ฐ๋ก ์คํ๋ฉ๋๋ค(Apple Silicon์ -arm64.dmg, Intel์ ์ผ๋ฐ dmg ์ฌ์ฉ):
curl -L -o /tmp/HuobaoDrama.dmg https://installer.chatfire.site/huobao-drama/v4.0.5/HuobaoDrama-4.0.5-arm64.dmg \
&& hdiutil attach -nobrowse /tmp/HuobaoDrama.dmg \
&& cp -R /Volumes/HuobaoDrama*/HuobaoDrama.app /Applications/ \
&& hdiutil detach /Volumes/HuobaoDrama*
๋น๋ ๋ถํ์ โ dmg/exe๋ฅผ ๋ค์ด๋ก๋ํด ๋ฐ๋ก ์ค์นํ๋ฉด ๋ฉ๋๋ค. ์ค์น๋ ํด๋ผ์ด์ธํธ๋ ๋ด์ฅ ์ ๋ฐ์ดํฐ๋ก ์๋ ์ ๋ฐ์ดํธ๋ฉ๋๋ค. (์์ค์์ ์ง์ ํจํค์งํ๋ ค๋ฉด ์๋ ๋ช ๋ น์ ์ฐธ์กฐํ์ธ์.)
๋๋ธํด๋ฆญ ์ค์น๋ก ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ ๋ฐ์คํฌํฑ ๋ฒ์ (macOS + Windows). ๋ฐ์ดํฐ๋ฒ ์ด์ค(SQLite), ์์ฑ๋ ๋ฏธ๋์ด ํ์ผ, Agent ์คํฌ์ ๋ชจ๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ์ ์ ์ฅ๋๋ฉฐ ์ฑ์ ์ญ์ ํํ๋ ๋ฐ์ดํฐ์ ์ํฅ์ด ์์ต๋๋ค.
# ์์ปค๋งจ๋ ํจํค์ง(ํ๋ฐํธ์๋ generate โ ๋ฐฑ์๋ esbuild โ electron-builder)
npm run dist # macOS dmg(arm64 + Intel)
npm run dist:win # Windows NSIS ์ค์น ํ๋ก๊ทธ๋จ(win-x64, macOS์์ ํฌ๋ก์ค ๋น๋ ๊ฐ๋ฅ)
# ์ฐ์ถ๋ฌผ
# desktop/release/HuobaoDrama-<๋ฒ์ >-arm64.dmg (Apple Silicon)
# desktop/release/HuobaoDrama-<๋ฒ์ >.dmg (Intel)
# desktop/release/HuobaoDrama Setup <๋ฒ์ >.exe (Windows)
์ค์น ์๋ด:
macOS ๋ฏธ์๋ช ํจํค์ง๋ ์ฒซ ์คํ ์ "App์ด ์์๋์ด ์ด ์ ์์ต๋๋ค"๋ผ๋ ๋ฉ์์ง๊ฐ ๋ฐ ์ ์์ต๋๋ค(Apple Silicon์์ ํํจ). ์ด๋ Gatekeeper ๊ฒฉ๋ฆฌ ์์ฑ ๋๋ฌธ์ด๋ฉฐ ํ์ผ์ด ์ค์ ๋ก ์์๋ ๊ฒ์ ์๋๋๋ค. ๋ณต๊ตฌ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง์ ๋๋ค:
- dmg์ ๋ณต๊ตฌ ์คํฌ๋ฆฝํธ ํฌํจ: ์ฑ์ "์์ฉ ํ๋ก๊ทธ๋จ"์ผ๋ก ๋๋๊ทธํ ํ dmg ์ฐฝ ํ๋จ์ "ๅฆๆ็คบๅทฒๆๅ่ฏทๅๅปๆ.command"๋ฅผ ๋๋ธํด๋ฆญํ๋ฉด ์๋์ผ๋ก ๋ณต๊ตฌ๋ฉ๋๋ค;
- ๋๋ ํฐ๋ฏธ๋์์
sudo xattr -cr /Applications/HuobaoDrama.app์คํ.
๋ณต๊ตฌ๋ ์ฒ์ ํ ๋ฒ๋ง ํ์ํ๋ฉฐ, ์ดํ์๋ ์ ์ ์คํ๋๊ณ ์ฑ ๋ด ์๋ ์ ๋ฐ์ดํธ์๋ ์ํฅ์ด ์์ต๋๋ค.
Windows ๋ฏธ์๋ช ํจํค์ง๋ SmartScreen์์ ใ์ถ๊ฐ ์ ๋ณด โ ์คํใ ์ ํ
์ฌ์ฉ์ ๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ:
~/Library/Application Support/HuobaoDrama/(๋ฐ์ดํฐ๋ฒ ์ด์ค, ์์ฑ๋ ๋ฏธ๋์ด, ์จ๋ผ์ธ ํธ์งํ ์คํฌ ๋ณต์ฌ๋ณธ)FFmpeg/FFprobe ๋ฐ์ด๋๋ฆฌ ๋ด์ฅ, ์์คํ ์ค์น ๋ถํ์
Electron์ 37.x๋ก ๊ณ ์ : better-sqlite3์ win32 ํ๋ฆฌ๋น๋๊ฐ ํด๋น ABI๊น์ง๋ง ์ง์(ํฌ๋ก์ค ํจํค์ง ์ ์ปดํ์ผ ๋ถํ์์ ํต์ฌ)
์ฑ ๋ด ์ธ๋ถ ๋งํฌ(ใapi.firemux.com์์ Key ๋ฐ๊ธฐใ ๋ฑ)๋ ์์คํ ๋ธ๋ผ์ฐ์ ๋ก ๋ฐ๋ก ์ด๋ฆฝ๋๋ค
๐ ์ฑ ๋ด ์ ๋ฐ์ดํธ(Apple ์๋ช ๋ถํ์)
๋ฐ์คํฌํฑ ๋ฒ์ ์๋ ์ ๋ฐ์ดํฐ๊ฐ ๋ด์ฅ๋์ด ์์ต๋๋ค(Tauri์ ๋๋ฅ ๋ฐฉ์: macOS ๋๋ ํฐ๋ฆฌ ๊ต์ฒด / Windows ์ฌ์ผ๋ฐํธ ์ค์น, ๋ก์ปฌ sha256 ๊ฒ์ฆ). ์ ๋ฒ์ ๋ฆด๋ฆฌ์ค ์ ์ฐจ:
# 1. desktop/package.json์ version์ ์์ ํ ํ ํจํค์ง
npm run dist # macOS(dmg + ์
๋ฐ์ดํธ์ฉ zip ์ฐ์ถ)
npm run dist:win # Windows(Setup.exe ์ฐ์ถ)
# 2. ๋ฒ์ ๋งค๋ํ์คํธ release/latest.json ์์ฑ(ํ๋ซํผ๋ณ sha256 ํฌํจ)
cd desktop && npm run feed
# 3. ๋ฆด๋ฆฌ์ค: latest.json + ์ค์น ํจํค์ง + zip์ GitHub Release์ ์
๋ก๋(ํ๊ทธ๋ v1.0.1 ํ์)
์ค์น๋ ํด๋ผ์ด์ธํธ๋ ์์ ํ ๋งค๋ํ์คํธ๋ฅผ ์๋์ผ๋ก ํ์ธํ๊ณ (ใ์ค์ โ ์ ๋ณด ๋ฐ ์
๋ฐ์ดํธใ์์ ์๋ ํ์ธ๋ ๊ฐ๋ฅ), ์ ๋ฒ์ ์ ๋ฐ๊ฒฌํ๋ฉด ๋ค์ด๋ก๋ ๋ฐ ์ค์น๋ฅผ ์๋ดํฉ๋๋ค. ๋งค๋ํ์คํธ ์ฃผ์๋ HUOBAO_UPDATE_FEED ํ๊ฒฝ ๋ณ์๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
๋ฐ์คํฌํฑ ๋ฒ์ ๊ฐ๋ฐ ๋๋ฒ๊น :
npm run build:frontend # ํ๋ฐํธ์๋ ์ ์ ์ฐ์ถ๋ฌผ(frontend/.output/public)
cd desktop && npm run dev # ๋ฐฑ์๋ ๋ฒ๋ค ํ Electron ์ฐฝ์ผ๋ก ์คํ
์๋ ค์ง ์ ํ: Seedance ์์ ๋ชจ๋ธ์ด ๋ก์ปฌ ์ฐธ์กฐ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด
PUBLIC_BASE_URL๊ณต๊ฐ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค. ๋ฐ์คํฌํฑ ๋ฒ์ ์๋ ๊ณต๊ฐ ์ง์ ์ ์ด ์์ด ํด๋น ์๋๋ฆฌ์ค์์๋ ๋ช ํํ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค. ํ ์คํธโ์์/์ด๋ฏธ์ง ์์ฑ ๋ฑ ๋๋จธ์ง ๊ธฐ๋ฅ์๋ ์ํฅ์ด ์์ต๋๋ค.
๐ญ ์๋ฒ ๋ฐฐํฌ
# 1. ํ๋ฐํธ์๋ ๋น๋
cd frontend && npm run generate
# 2. ๋น๋ ์ฐ์ถ๋ฌผ ๋ณต์ฌ(generate ์ฐ์ถ๋ฌผ์ frontend/.output/public, ๋ฐฑ์๋๋
# frontend/dist๋ฅผ ์ฝ์. ์ด ๋จ๊ณ๋ฅผ ์๋ตํ๋ฉด API๋ ์ ์์ด์ง๋ง ํ์ด์ง๊ฐ 404)
cp -r .output/public dist && cd ..
# 3. ๋ฐฑ์๋ ์์
cd backend && npm start
์๋ฒ์ ์ ๋ก๋ํ ํ์ผ:
backend/ # ๋ฐฑ์๋ ์์ค + node_modules
backend/workspace/skills/ # Agent ์คํฌ ํ์ผ
frontend/dist/ # ํ๋ฐํธ์๋ ๋น๋ ์ฐ์ถ๋ฌผ
data/ # ๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ(์ต์ด ์คํ ์ ์๋ ์์ฑ)
Nginx ๋ฆฌ๋ฒ์ค ํ๋ก์
server {
listen 80;
server_name your-domain.com;
# ์ฐธ์กฐ ์์/์ค๋์ค ์
๋ก๋ ์ต๋ 50MB
client_max_body_size 100m;
# ์์ฑ๋ ์ด๋ฏธ์ง/์์์ ๋์คํฌ์์ ์ง์ ์๋น(Node๋ฅผ ๊ฑฐ์น์ง ์์):
# sendfile ์ ๋ก ์นดํผ + ์ฅ๊ธฐ ์บ์
# (ํ์ผ์ uuid ๋ช
๋ช
, ๋ด์ฉ ๋ถ๋ณ์ด๋ฏ๋ก immutable ์บ์ ์์ )
location /static/ {
alias /path/to/huobao-drama/data/static/;
sendfile on;
tcp_nopush on;
expires 1y;
add_header Cache-Control "public, immutable";
}
location / {
proxy_pass http://localhost:5679;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
๋ฏธ๋์ด ๋ก๋ฉ ์ต์ ํ: ์ด๋ฏธ์ง ์์ฑ ์ ๋ฐฑ์๋๊ฐ ๋ชฉ๋ก ํ์ด์ง์ฉ 400px ์ธ๋ค์ผ(
*_thumb.webp)์ ์๋ ์์ฑํ๊ณ , ์์์ ํฌ์คํฐ ํ๋ ์(*_poster.jpg)์ ์ปค๋ฒ๋ก ์ถ์ถํฉ๋๋ค. ํ๋ฐํธ์๋๋ ํฐ ์ด๋ฏธ์ง๋ฅผ ์ด๊ฑฐ๋ ์ฌ์ํ ๋๋ง ์๋ณธ ํ์ผ์ ๋ก๋ํฉ๋๋ค. ๊ธฐ์กด ํ์ผ์backend/์์npm run backfill-artwork๋ฅผ ์คํํด ์ผ๊ด ๋ณด์ํ ์ ์์ต๋๋ค.
๐ณ Docker ๋ฐฐํฌ(์ฑ ๋ด ์ ๋ฐ์ดํธ ํฌํจ)
๋ฐฉ๋ฒ A โ ์ฌ์ ๋น๋ ์ด๋ฏธ์ง(ํด๋ก ยท๋น๋ ๋ถํ์): ๋ฉํฐ ์ํคํ
์ฒ(linux/amd64 + linux/arm64), x86 ์๋ฒ์ ARM ๋๋ฐ์ด์ค ์๋ ๋งค์นญ
docker pull huobao/huobao-drama:4.0.6
docker run -d \
--name huobao-drama \
-p 5679:5679 \
-v huobao-data:/app/data \
--restart unless-stopped \
huobao/huobao-drama:4.0.6
๋ฐฉ๋ฒ B โ docker compose(์์ค ๋น๋ + Watchtower ์ธ์ฑ ์
๋ฐ์ดํธ): ์ ์ฅ์ ๋ฃจํธ์ ์ฌ์ธ์ Dockerfile(ํ๋ฐํธ์๋ generate + ๋ฐฑ์๋ ์์กด์ฑ/๋ฐํ์ 3๋จ๊ณ, ๋ฐฑ์๋๋ ์๋ฒ ๋ฐฐํฌ์ ๋์ผํ๊ฒ tsx๋ก ์คํ)๊ณผ docker-compose.yml(์ฑ + Watchtower)์ ์ ๊ณตํฉ๋๋ค:
# 1. ํ๊ฒฝ ์ค์ (Watchtower ํ ํฐ, app๊ณผ watchtower ์์ชฝ์ด ์ผ์นํด์ผ ํจ)
cp .env.example .env # WATCHTOWER_TOKEN ์์
# 2. ๋น๋ ๋ฐ ์์(๋ฆด๋ฆฌ์ค ์ ๋ฒ์ ์ ์ฃผ์
ํ์ฌ ใ์ ๋ณด ๋ฐ ์
๋ฐ์ดํธใ ๋น๊ต์ ์ฌ์ฉ)
HUOBAO_VERSION=4.0.5 docker compose up -d --build
# 3. http://localhost:5679 ์ ์
- ๋ฐ์ดํฐ ์์ํ: ๋ค์๋ ๋ณผ๋ฅจ
huobao-data๋ฅผ/app/data์ ๋ง์ดํธ(SQLite + ์์ฑ๋ ์ด๋ฏธ์ง/์์ + workspace/skills). ์ด๋ฏธ์ง ์ ๋ฐ์ดํธ ์์๋ ๋ฐ์ดํฐ ์ ์ง - ์ฑ ๋ด ์
๋ฐ์ดํธ: compose์ Watchtower ์ฌ์ด๋์นด ํฌํจ(
--label-enable๋ก ๋ผ๋ฒจ์ด ์ง์ ๋ ์ปจํ ์ด๋๋ง ์ ๋ฐ์ดํธ,--cleanup์ผ๋ก ๊ตฌ ์ด๋ฏธ์ง ์ ๋ฆฌ, ๋งค์ผ ์์ฒด ์ ๊ฒ). ใ์ค์ โ ์ ๋ณด ๋ฐ ์ ๋ฐ์ดํธใ์์ ์ ๋ฒ์ ํ์ธ ๋ฐ ใ์ง๊ธ ์ ๋ฐ์ดํธใ ๊ฐ๋ฅ โ ๋ฐฑ์๋๊ฐ Watchtower HTTP API๋ฅผ ํตํด ํธ๋ฆฌ๊ฑฐํ์ฌ ์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ ์ปจํ ์ด๋๋ฅผ ์ฌ์์ฑํฉ๋๋ค. ๋ช ๋ถ ํ ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ๋ฉด ์๋ฃ - ์๋ ๋ชจ๋:
docker-compose.yml์์ app์HUOBAO_WATCHTOWER_*ํ๊ฒฝ ๋ณ์ 2๊ฐ(๋๋ watchtower ์๋น์ค ์ ์ฒด)๋ฅผ ์ญ์ ํ๋ฉด ใ์ ๋ณด ๋ฐ ์ ๋ฐ์ดํธใ๋ ์ ๋ฒ์ ์๋ฆผ + ์๋ ๋ช ๋ นdocker compose pull && docker compose up -d์ผ๋ก ์ ํ๋ฉ๋๋ค - ์ด๋ฏธ์ง ๋ฆด๋ฆฌ์ค:
docker buildx build --platform linux/amd64,linux/arm64 --build-arg HUOBAO_VERSION=x.y.z -t huobao/huobao-drama:x.y.z -t huobao/huobao-drama:latest --push .. ๋ฒ์ ๋งค๋ํ์คํธ๋ ๋ฐ์คํฌํฑ ๋ฒ์ ๊ณผ GitHub Releases์latest.json์ ๊ณต์ (HUOBAO_UPDATE_FEED๋ก ์ฌ์ ์ ๊ฐ๋ฅ)
๐จ ๊ธฐ์ ์คํ
๋ฐฑ์๋
- ๋ฐํ์: Node.js 20+
- ์น ํ๋ ์์ํฌ: Hono
- ORM: Drizzle ORM + better-sqlite3(WAL ๋ชจ๋)
- AI Agent: Mastra + AI SDK(OpenAI ํธํ)
- ์์ ์ฒ๋ฆฌ: FFmpeg(fluent-ffmpeg + ๋ด์ฅ ๋ฐ์ด๋๋ฆฌ)
- ์ด๋ฏธ์ง ์ฒ๋ฆฌ: Sharp
๋ฐ์คํฌํฑ
- ์ ธ: Electron(utilityProcess๊ฐ ๋ฐฑ์๋๋ฅผ ํธ์คํ , BrowserWindow๋ ๋์ผ ์ถ์ฒ๋ก ๋ก๋)
- ํจํค์ง: esbuild(๋ฐฑ์๋ ๋จ์ผ ํ์ผ ๋ฒ๋ค) + electron-builder(dmg arm64/x64, NSIS win-x64)
ํ๋ฐํธ์๋
- ํ๋ ์์ํฌ: Nuxt 3(SPA ๋ชจ๋)
- ์ธ์ด: Vue 3 + TypeScript
- ๋ผ์ฐํ : ํ์ผ ๋ผ์ฐํ (Vue Router 4)
- ์คํ์ผ: ์์ CSS + CSS Variables
- ์์ด์ฝ: Lucide Vue
- i18n: vue-i18n(ไธญๆ / English / ๆฅๆฌ่ช / ํ๊ตญ์ด)
๐ ์์ฃผ ๋ฌป๋ ์ง๋ฌธ
Q: ๋ฐ์คํฌํฑ ๋ฒ์ ์ ๋ฐ์ดํฐ๋ ์ด๋์ ์ ์ฅ๋๋์?
A: ~/Library/Application Support/HuobaoDrama/data/(SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค + ์์ฑ๋ ์ด๋ฏธ์ง/์์)์ ์ ์ฅ๋๋ฉฐ, ์จ๋ผ์ธ ํธ์งํ ์คํฌ์ ๋ณต์ฌ๋ณธ์ ๊ฐ์ ์์ค์ workspace/ ๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค. ๊ฐ๋ฐ ๋ชจ๋์์๋ ์ ์ฅ์์ data/ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Q: ๊ตฌ๋ฒ์ MySQL ๋ฐ์ดํฐ๋ฅผ SQLite๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ค๋ฉด?
A: MySQL์ ์ฐ๊ฒฐ ๊ฐ๋ฅํ ์ํ(ํ๊ฒฝ ๋ณ์ ๋๋ backend/.env)๋ฅผ ์ ์งํ๊ณ cd backend && npx tsx scripts/import-mysql-to-sqlite.ts๋ฅผ ์คํํ์ธ์. ์คํฌ๋ฆฝํธ๊ฐ ์๋์ผ๋ก ํ
์ด๋ธ์ ์์ฑํ๊ณ ํ
์ด๋ธ๋ณ๋ก ๊ฐ์ ธ์ค๋ฉฐ ํ ์๋ฅผ ๊ฒ์ฆํฉ๋๋ค(๋์ DB๊ฐ ๋น์ด ์์ง ์์ผ๋ฉด --force ํ์, ์ฐ๊ธฐ ์ ์๋ ๋ฐฑ์
).
Q: FFmpeg๊ฐ ์ค์น๋์ง ์์๊ฑฐ๋ ์ฐพ์ ์ ์๋ค๊ณ ๋์ต๋๋ค?
A: ์ค์นํ ํ์๊ฐ ์์ต๋๋ค. ํ๋ก์ ํธ์ ffmpeg-static / ffprobe-static ๋ฐ์ด๋๋ฆฌ๊ฐ ๋ด์ฅ๋์ด ์์ต๋๋ค(๋ฐ์คํฌํฑ ๋ฒ์ ์๋ ํฌํจ). ์์คํ
PATH์ FFmpeg์ ์ถฉ๋ํ์ง ์์ผ๋ฉฐ, FFMPEG_BIN/FFPROBE_BIN์ผ๋ก ๋ช
์์ ์ผ๋ก ์ง์ ํ ์๋ ์์ต๋๋ค.
Q: ํ์ด์ง ์๋จ์ ใ๋ชจ๋ธ ๋ฏธ์ค์ ใ์ด ํ์๋ฉ๋๋ค?
A: ์ ์์ ์ธ ์ฒซ ๋ฐฐํฌ ์๋ด์ ๋๋ค. ใ์ค์ ใ ํ์ด์ง์์ ใ็ซๅฎๅฟซๆท ์ค์ ใ์ API Key๋ฅผ ๋ถ์ฌ๋ฃ์ด ํ ๋ฒ์ ์ ๋ ฅํ๊ฑฐ๋, ใ์๋ ํ ํ๋ฆฟใ์ผ๋ก ํ๋ก๋ฐ์ด๋๋ฅผ ์ถ๊ฐํ์ธ์. ํ ์คํธ, ์ด๋ฏธ์ง, ์์ 3๊ฐ์ง ๋ชจ๋์ ํ์ฑํ๋ ์ค์ ์ด ์์ผ๋ฉด ๋ฐฐ๋๊ฐ ์๋์ผ๋ก ์ฌ๋ผ์ง๋๋ค.
Q: ํ๋ฐํธ์๋๊ฐ ๋ฐฑ์๋ API์ ์ฐ๊ฒฐ๋์ง ์์ต๋๋ค?
A: ๋ฐฑ์๋๊ฐ ์์๋์๋์ง, ํฌํธ๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ์ธ์. ๊ฐ๋ฐ ๋ชจ๋์ ํ๋ก์ ์ค์ ์ frontend/nuxt.config.ts์ ์์ต๋๋ค.
Q: ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ด ์์ฑ๋์ง ์์์ต๋๋ค?
A: ๋ฐฑ์๋๋ ์ต์ด ์์ ์ ๋ชจ๋ ํ ์ด๋ธ์ ์๋์ผ๋ก ์์ฑํฉ๋๋ค. ๋ก๊ทธ์์ ์ด๊ธฐํ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ํ์ธํ์ธ์.
๐ ์ ๋ฐ์ดํธ ๋ก๊ทธ
v4.0.0 (2026-08)
๐ฅ๏ธ ๋ฐ์คํฌํฑ ์ฑ + ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์
- Electron ๋ฐ์คํฌํฑ ๋ฒ์ (macOS dmg, arm64/x64 ๋์ผ ์ํคํ
์ฒ)
- ๋๋ธํด๋ฆญ ์ค์น, ์ฆ์ ์ฌ์ฉ: ์๋ ํฌํธ ์ ํ, ๋จ์ผ ์ธ์คํด์ค ์ ๊ธ, ์ถฉ๋ ๋ถ๋ฆฌ๋ ๋ฐฑ์๋ ์๋ธํ๋ก์ธ์ค
- ์ฌ์ฉ์ ๋ฐ์ดํฐ ๋ถ๋ฆฌ: SQLite DB / ์์ฑ๋ ๋ฏธ๋์ด / ์คํฌ ๋ณต์ฌ๋ณธ ๋ชจ๋ userData ๋๋ ํฐ๋ฆฌ์ ์ ์ฅ
- FFmpeg/FFprobe ํฌํจ ๋ฐฐํฌ. workspace ์คํฌ ํ ํ๋ฆฟ์ ์ฒซ ์์ ์ ๋ณต์ฌ, ์ ๊ทธ๋ ์ด๋ ์ ๋๋ฝ๋ถ๋ง ๋ณด์ถฉํ๊ณ ๋ฎ์ด์ฐ์ง ์์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ MySQL์์ SQLite๋ก ์์ ๋ง์ด๊ทธ๋ ์ด์
(better-sqlite3 + WAL)
- ๋น์ฆ๋์ค ์ฝ๋ ๋ณ๊ฒฝ ์ ๋ก(Drizzle ์ฟผ๋ฆฌ ๊ณ์ธต์ ๋ณธ์ง์ ์ผ๋ก ์ด์ ๊ฐ๋ฅ), ๋ฉฑ๋ฑ DDL ์ฌ์
- 1ํ์ฉ ๊ฐ์ ธ์ค๊ธฐ ์คํฌ๋ฆฝํธ
import-mysql-to-sqlite.ts์ถ๊ฐ(ํ ์ด๋ธ๋ณ ํ ์ ๊ฒ์ฆ + ์๋ ๋ฐฑ์ )
- ๋ฐฑ์๋ esbuild ๋จ์ผ ํ์ผ ๋ฒ๋ค(externals: sharp/better-sqlite3/ffmpeg ๋ฐ์ด๋๋ฆฌ ํจํค์ง)
- Docker/MySQL ๋ฐฐํฌ ๋ฐฉ์ ์ ๊ฑฐ(git ํ์คํ ๋ฆฌ์์ ๋ณต๊ตฌ ๊ฐ๋ฅ)
v3.1.0 (2026-09)
- Alibaba Bailian Wan 3.0 ๋์์ ๋ชจ๋ธ ์ถ๊ฐ(Prime / ํ์ค, ๊ณต์ input.media/parameters ํ๋ผ๋ฏธํฐ ์ง์)
- ์์ ๋ ์๋จ ๋ฐ์ ํด์๋ ์ ํ๊ธฐ ์ถ๊ฐ, ์ ๊ณต์ฌ๋ณ ๋ค์ดํฐ๋ธ ๋จ๊ณ ํ์(Seedance 480p/720p, MiniMax 768P/2K, Wan 480P/720P/1080P)
- ๊ธฐ๋ณธ ๋์์ ๋ชจ๋ธ์ Seedance 2.0 Mini๋ก ๋ณ๊ฒฝ
- ๋์์ ๋ชจ๋ธ ์ ํ ์ ์ ๊ณต์ฌ/๋ชจ๋ธ ๋ถ์ผ์น๋ก ์ธํ ์์ฑ ์ค๋ฅ ์์
- ๋ฐฐ์น ๋์์: ์ ํ ๋ชจ๋ + ์์ฑ ์ ํ์ธ(์ ์/์ด ๊ธธ์ด/๋ชจ๋ธ/ํด์๋), ์คํจ ์์ ์ํด๋ฆญ ์ฌ์๋
- ์คํ ๋ฆฌ๋ณด๋ ๊ธธ์ด๋ฅผ ๋์์ ์์ฑ ํ๋ผ๋ฏธํฐ ์์ญ์์ ์ง์ ํธ์งยท์ ์ฅ, ๋จ๊ฑด/๋ฐฐ์น ์์ฑ์ ํต์ผ ์ ์ฉ
- ์ค์ฌ/๋ฏผ๊ฐ ์ฝํ ์ธ ์ฌ์ฌ ์คํจ ์ ๋ชจ๋ธ ์ ํ ํ ์ฌ์๋ ์๋ด
v3.0.0 (2026-08)
๐ ๋ฐฐํฌ ๋ฐ ๊ฒฝํ ์ต์ ํ
- Docker ๋ฐฐํฌ ์ค๋น ๊ฐ์
- MySQL / ์ฑ ํฌ์ค ์ฒดํฌ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋น ํ ์ฑ ์์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๊ธฐํ์ ์ฌ์๋ ์ถ๊ฐ, ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์์ ์ฒซ ๋ฐฐํฌ ๋ฌด์ธ ์๋ฃ
- ์์คํ FFmpeg ์์กด ์ ๊ฑฐ, ๋ด์ฅ ๋ฐ์ด๋๋ฆฌ๋ก ์ ๋ฉด ์ ํ
- Agent skills ๋๋ ํฐ๋ฆฌ ๋ณผ๋ฅจ ์์ํ(์ค์ ํ์ด์ง ์จ๋ผ์ธ ํธ์ง ์ ์ค ๋ฐฉ์ง)
docker/init.sql๋ฐ ๋ฉ์ถ ์คํฌ๋ฆฝํธ ์ถ๊ฐ(DBA ๊ฒํ / ์ฌ์ ํ ์ด๋ธ ์์ฑ)
- ์ฒซ ์ฌ์ฉ ๊ฐ์ด๋
- AI ์๋น์ค ๋ฏธ์ค์ ์ ์ฌ์ดํธ ์๋จ ๋ฐฐ๋๋ก ์ค์ ํ์ด์ง ์๋ด
- ์ค์ ํ์ด์ง์ ใ็ซๅฎๅฟซๆท ์ค์ ใ ์ถ๊ฐ: Key ํ๋๋ก ํ ์คํธ/์ด๋ฏธ์ง/์์ ์ถ์ฒ ์ค์ 3๊ฐ ์ ๋ ฅ
- ๋ชจ๋ธ ๋ฏธ์ค์ ์ค๋ฅ์ ์ค๊ตญ์ดํ ๋ฐ ์ค์ ํ์ด์ง ์๋ด
- ์์ ๋ชจ๋ธ ๊ธฐ๋ณธ๊ฐ์ Seedance 2.0 Fast๋ก ์กฐ์
- ํ๋ก๋ฐ์ด๋ ํตํฉ: OpenAI / Gemini / Volcano Engine๋ง ์ ์ง
- ์ํฌ๋ฒค์น: ์์ ๋ชฉ๋ก ๋๋ก์ด, ํ์ดํ๋ผ์ธ ๋์น์ ์ํ, ์ ํ์ ๋ณํฉ(๋ณํฉ ์ ์์ ํ์ผ ์กด์ฌ ๊ฒ์ฆ)
- ์์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐํธ, @๋ฉ์ ์ต์ ํ, ์ํผ์๋ ๋ชฉ๋ก ์ฌ๊ตฌ์ฑ
v2.0.0 (2026-04)
๐ ๋๊ท๋ชจ ์ ๋ฐ์ดํธ
- ํ๋ก์ ํธ๋ฅผ TypeScript ๊ธฐ์ ์คํ์ผ๋ก ์ ๋ฉด ๋ง์ด๊ทธ๋ ์ด์
- ๋ฐฑ์๋: Hono + Drizzle ORM + mysql2
- ํ๋ฐํธ์๋: Nuxt 3 + Vue 3
- AI Agent: Mastra ํ๋ ์์ํฌ
- ์ํผ์๋ ์ํฌ๋ฒค์น UI์ ์ ์ ํ๋ก์ฐ ์ฌ๊ตฌ์ถ
- ๋ ์ปดํฉํธํ ์ฝ์ ๋ ์ด์์
- ์คํ ๋ฆฌ๋ณด๋ ํธ์ง ์์ญ ์ฌ๊ตฌ์ถ
- ์ท ์ด๋ฏธ์ง, ์์, ํฉ์ฑ, ๋ฉ์ถ ํ๋ฉด ์ฌ๊ตฌ์ถ
- Docker ๋ฐฐํฌ ์ง์ ์ถ๊ฐ, ํ๋ฐํธ์๋์ ๋ฐฑ์๋๋ฅผ ๋จ์ผ ์ด๋ฏธ์ง๋ก ํตํฉ
- ๋ฐํ์ Skill ๋ก๋ฉ ๋ฉ์ปค๋์ฆ ์ถ๊ฐ
- ๋ฉํฐ ํ๋ก๋ฐ์ด๋ ๋ฏธ๋์ด ์ด๋ํฐ ํ์ฅ
- ์ด๋ฏธ์ง: OpenAI, Gemini, Volcano Engine, Alibaba
- ์์: Volcano Engine/Seedance, Vidu, Alibaba
- ๋ก์ปฌ ํ์ผ ์ฒ๋ฆฌ ๋ฐ ์ฐธ์กฐ ์ด๋ฏธ์ง ์จ๋๋งจ๋ ํธ๋์ค์ฝ๋ฉ ์ต์ ํ
v1.0.4 (2026-01-27)
- ๋ก์ปฌ ์คํ ๋ฆฌ์ง ์ ๋ต ๋์ ์ผ๋ก ์ธ๋ถ ๋ฆฌ์์ค ๋งํฌ ์คํจ ํํผ
- Base64 ์ฐธ์กฐ ์ด๋ฏธ์ง ์๋ฒ ๋๋ ์ ์ก
- ์ท ์ ํ ์ํ ๋ฆฌ์ ๋ฌธ์ ์์
- ์ฅ๋ฉด์ ์ฑํฐ ๋ง์ด๊ทธ๋ ์ด์ ์ถ๊ฐ
v1.0.3 (2026-01-16)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋์ ์ ๊ทผ ์ฑ๋ฅ ์ต์ ํ
- Docker ํฌ๋ก์ค ํ๋ซํผ host.docker.internal ์ง์
v1.0.2 (2026-01-14)
- ์์ ์์ฑ API ์๋ต ํ์ฑ ๋ฌธ์ ์์
- OpenAI Sora ์์ ์๋ํฌ์ธํธ ์ค์ ์ถ๊ฐ
- ์ค๋ฅ ์ฒ๋ฆฌ ๋ฐ ๋ก๊ทธ ์ถ๋ ฅ ์ต์ ํ
๐ ๋ผ์ด์ ์ค
์ด ํ๋ก์ ํธ๋ CC BY-NC-SA 4.0(์ ์์ํ์-๋น์๋ฆฌ-๋์ผ์กฐ๊ฑณ๊ฒฝ๋ณ๊ฒฝํ๋ฝ 4.0 ๊ตญ์ ) ๋ผ์ด์ ์ค๋ฅผ ์ฑํํ๊ณ ์์ต๋๋ค.
- โ ๊ฐ์ธ ์ฌ์ฉ, ํ์ตยท์ฐ๊ตฌ, ๋น์๋ฆฌ ํ๋ก์ ํธ๋ ์์ ๋กญ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ
- โ ์์ ๋ฐ ์ฌ๋ฐฐํฌ ๊ฐ๋ฅ, ๋จ ์ ์์ ํ์์ ๋์ผ ๋ผ์ด์ ์ค๋ก ๊ณต์ ํ์
- โ ์์ ์ ์ฌ์ฉ ๊ธ์ง โ ์ ์์์ ์๋ฉด ํ๊ฐ ์์ด ์ด ํ๋ก์ ํธ์ ์ ๋ถ ๋๋ ์ผ๋ถ๋ฅผ ์ด๋ ํ ์์ ์ ๋ชฉ์ (์ ๋ฃ ์๋น์ค, ์์ ๋ฐฐํฌ, ์ฌํ๋งค ๋ฑ)์ผ๋ก๋ ์ฌ์ฉํ ์ ์์ต๋๋ค
๋ผ์ด์ ์ค ์ ๋ฌธ์ LICENSE๋ฅผ ์ฐธ์กฐํ์ธ์.
๐ค ๊ธฐ์ฌ ๊ฐ์ด๋
Issue์ Pull Request๋ฅผ ํ์ํฉ๋๋ค!
- ์ด ํ๋ก์ ํธ๋ฅผ Fork
- ๊ธฐ๋ฅ ๋ธ๋์น ์์ฑ(
git checkout -b feature/AmazingFeature) - ๋ณ๊ฒฝ ์ฌํญ ์ปค๋ฐ(
git commit -m 'Add some AmazingFeature') - ๋ธ๋์น ํธ์(
git push origin feature/AmazingFeature) - Pull Request ์์ฑ
์์ฃผ ์ฐ๋ ๊ฒ์ฌ ๋ช ๋ น:
cd backend && npm run typecheck
cd ../frontend && npm run build
๐ฌ WeChat ๊ทธ๋ฃน
QR ์ฝ๋๋ฅผ ์ค์บํ์ฌ WeChat ๊ทธ๋ฃน์ ์ฐธ์ฌํ์ธ์:
"AI๊ฐ ๋ ์ฐฝ์์ ์ธ ์ผ์ ๋๊ฒ ํ์"
๐ ๊ด๋ จ ๋งํฌ
์ด ํ๋ก์ ํธ๋ LINUX DO ์ปค๋ฎค๋ํฐ์ ๋งํฌ ์น์ธ์ ๋ฐ์์ต๋๋ค.
- LINUX DO โ ์ง์ ํ ์คํ์์ค ์ ์ , ํจ๊ป ๋ง๋ค๊ณ ๊ณต์ ํ๋ ๊ธฐ์ ์ปค๋ฎค๋ํฐ
๊ด๋ จ ํ๋ก์ ํธ ์ดํด๋ณด๊ธฐ
ytdl-org/youtube-dl
YouTube.com ๋ฐ ๊ธฐํ ๋์์ ์ฌ์ดํธ์์ ๋์์์ ๋ค์ด๋ก๋ํ๋ ๋ช ๋ น์ค ํ๋ก๊ทธ๋จ
141,539 ์คํexcalidraw/excalidraw
์๊ทธ๋ฆผ ์คํ์ผ์ ๋ค์ด์ด๊ทธ๋จ์ ์ค์ผ์นํ๋ ๊ฐ์ ํ์ดํธ๋ณด๋
135,492 ์คํgodotengine/godot
Godot Engine โ ๋ฉํฐํ๋ซํผ 2D ๋ฐ 3D ๊ฒ์ ์์ง
120,003 ์คํmrdoob/three.js
JavaScript 3D ๋ผ์ด๋ธ๋ฌ๋ฆฌ.
118,122 ์คํ