SHUKLAO/call-with-ai-agent

๐Ÿ—ฃ๏ธ Next.js์™€ ElevenLabs๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ AI ์—์ด์ „ํŠธ์™€ ์‹ค์‹œ๊ฐ„ ์Œ์„ฑ ๋Œ€ํ™”๋ฅผ ํ†ตํ•ด ์ƒํ˜ธ์ž‘์šฉ์ ์ด๊ณ  ๋ฐ˜์‘์„ฑ ๋†’์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

call-with-ai-agent๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

์ด ์Šคํ‚ฌ์€ Next.js์™€ ElevenLabs์˜ ์Œ์„ฑ ํ•ฉ์„ฑ ๋ฐ ์ธ์‹ API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ AI ์—์ด์ „ํŠธ์™€ ์‹ค์‹œ๊ฐ„ ์Œ์„ฑ ๋Œ€ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๋งˆ์ดํฌ๋ฅผ ํ†ตํ•ด ๋ง์„ ํ•˜๋ฉด AI๊ฐ€ ์ด๋ฅผ ์ธ์‹ํ•˜๊ณ  ์ž์—ฐ์Šค๋Ÿฌ์šด ์Œ์„ฑ์œผ๋กœ ์‘๋‹ตํ•˜๋Š” ๋ชฐ์ž…ํ˜• ๊ฒฝํ—˜์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์Œ์„ฑ ๊ธฐ๋ฐ˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋ ค๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์œ ์šฉํ•˜๋ฉฐ, Next.js์˜ ํ’€์Šคํƒ ๊ธฐ๋Šฅ๊ณผ ElevenLabs์˜ ๊ณ ํ’ˆ์งˆ ์Œ์„ฑ ๊ธฐ์ˆ ์„ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค. SKILL.md ๋ฌธ์„œ๋Š” ์„ค์น˜, ์„ค์ •, ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ๋ฐ ์ฃผ์š” API ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์•ˆ๋‚ด๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์Œ์„ฑ ๋Œ€ํ™” ๊ธฐ๋Šฅ์„ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.

์ง€์› ๋Œ€์ƒ~Claude Code~Codex CLI~Cursor
npx skills add SHUKLAO/call-with-ai-agent

Installed? Explore more ์ฝ”๋”ฉ & ๊ฐœ๋ฐœ skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli ยท View all 6 โ†’

์ฆ๊ฒจ ์‚ฌ์šฉํ•˜๋Š” AI์—๊ฒŒ ๋ฌผ์–ด๋ณด๊ธฐ

์ด ์—์ด์ „ํŠธ ์Šคํ‚ฌ์ด ๋ฏธ๋ฆฌ ๋กœ๋“œ๋œ ์ƒˆ ์ฑ„ํŒ…์„ ์—ฝ๋‹ˆ๋‹ค.

๋ฌธ์„œ

call-with-ai-agent์€(๋Š”) ๋ฌด์—‡์„ ํ•˜๋‚˜์š”?

๐Ÿ—ฃ๏ธ Next.js์™€ ElevenLabs๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ AI ์—์ด์ „ํŠธ์™€ ์‹ค์‹œ๊ฐ„ ์Œ์„ฑ ๋Œ€ํ™”๋ฅผ ํ†ตํ•ด ์ƒํ˜ธ์ž‘์šฉ์ ์ด๊ณ  ๋ฐ˜์‘์„ฑ ๋†’์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์š”

์ด ํ”„๋กœ์ ํŠธ๋Š” Next.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ElevenLabs์˜ ์Œ์„ฑ API๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ AI ์—์ด์ „ํŠธ์™€ ์ž์—ฐ์–ด๋กœ ์Œ์„ฑ ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•ด WebSocket ๋˜๋Š” HTTP ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž์˜ ์Œ์„ฑ ์ž…๋ ฅ์„ ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  AI์˜ ์‘๋‹ต์„ ๋‹ค์‹œ ์Œ์„ฑ์œผ๋กœ ํ•ฉ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ

  • ์‹ค์‹œ๊ฐ„ ์Œ์„ฑ ๋Œ€ํ™”: ๋งˆ์ดํฌ๋ฅผ ํ†ตํ•ด ๋งํ•˜๋ฉด AI๊ฐ€ ์ฆ‰์‹œ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.
  • ๊ณ ํ’ˆ์งˆ ์Œ์„ฑ ํ•ฉ์„ฑ: ElevenLabs์˜ ๋‹ค์–‘ํ•œ ์Œ์„ฑ ๋ชจ๋ธ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Next.js ํ†ตํ•ฉ: ํ’€์Šคํƒ React ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์„œ๋ฒ„ ๋ฐ ํด๋ผ์ด์–ธํŠธ ๋กœ์ง์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ€๋Šฅ: ์Œ์„ฑ ์†๋„, ํ†ค, ์–ธ์–ด ๋“ฑ์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค์น˜ ๋ฐฉ๋ฒ•

  1. ์ €์žฅ์†Œ๋ฅผ ํด๋ก ํ•ฉ๋‹ˆ๋‹ค:

    git clone https://github.com/SHUKLAO/call-with-ai-agent.git
    cd call-with-ai-agent
    
  2. ์˜์กด์„ฑ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค:

    npm install
    # ๋˜๋Š”
    yarn install
    
  3. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค: .env.local ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ๋‹ค์Œ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค:

    ELEVENLABS_API_KEY=your_elevenlabs_api_key
    NEXT_PUBLIC_ELEVENLABS_VOICE_ID=your_voice_id
    

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  1. ๊ฐœ๋ฐœ ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค:

    npm run dev
    
  2. ๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:3000์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

  3. ๋งˆ์ดํฌ ๊ถŒํ•œ์„ ํ—ˆ์šฉํ•˜๊ณ  "๋Œ€ํ™” ์‹œ์ž‘" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ๋งˆ์ดํฌ์— ๋Œ€๊ณ  ๋งํ•˜๋ฉด AI ์—์ด์ „ํŠธ๊ฐ€ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.

API ์—”๋“œํฌ์ธํŠธ

  • POST /api/voice/transcribe: ์Œ์„ฑ ํŒŒ์ผ์„ ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • POST /api/voice/synthesize: ํ…์ŠคํŠธ๋ฅผ ์Œ์„ฑ์œผ๋กœ ํ•ฉ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • GET /api/voice/stream: ์‹ค์‹œ๊ฐ„ ์Œ์„ฑ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์œ„ํ•œ WebSocket ์—”๋“œํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค.

์ฃผ์š” ์˜์กด์„ฑ

  • Next.js โ€“ React ๊ธฐ๋ฐ˜ ์›น ํ”„๋ ˆ์ž„์›Œํฌ
  • ElevenLabs โ€“ AI ์Œ์„ฑ ํ•ฉ์„ฑ API
  • WebSocket โ€“ ์‹ค์‹œ๊ฐ„ ํ†ต์‹ 

๋ผ์ด์„ ์Šค

MIT

๊ด€๋ จ ์Šคํ‚ฌ